{"version":3,"file":"bundle.js","mappings":"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","sources":["webpack:///webpack/runtime/create fake namespace object","webpack:///webpack/runtime/load script","webpack:///./node_modules/next-tick/index.js","webpack:///./node_modules/numeral/locales.js","webpack:///./node_modules/numeral/numeral.js","webpack:///../src/lib/css.js","webpack:///../src/lib/dom.js","webpack:///../src/lib/class-names.js","webpack:///../src/lib/event-manager.js","webpack:///../src/process-scroll-diff.js","webpack:///../src/lib/util.js","webpack:///../src/update-geometry.js","webpack:///../src/handlers/drag-thumb.js","webpack:///../src/index.js","webpack:///../src/handlers/click-rail.js","webpack:///../src/handlers/keyboard.js","webpack:///../src/handlers/mouse-wheel.js","webpack:///../src/handlers/touch.js","webpack:///./node_modules/vanilla-lazyload/dist/lazyload.min.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt001-richtext/rt001-richtext.html","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt002-cta/rt002-cta.html","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt061-anchors/partials/anchor.html","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt063-contact-form/partials/status-msg.html","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt073-assicurazioni-form/partials/table.html","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt156-excel-to-map-search-stores-form/partials/store-card.html","webpack:///./node_modules/core-js/internals/a-callable.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/array-buffer-basic-detection.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/array-iteration-from-last.js","webpack:///./node_modules/core-js/internals/array-set-length.js","webpack:///./node_modules/core-js/internals/array-slice.js","webpack:///./node_modules/core-js/internals/array-to-reversed.js","webpack:///./node_modules/core-js/internals/array-with.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/define-built-in-accessor.js","webpack:///./node_modules/core-js/internals/define-built-in.js","webpack:///./node_modules/core-js/internals/define-global-property.js","webpack:///./node_modules/core-js/internals/delete-property-or-throw.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/document-all.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack:///./node_modules/core-js/internals/dom-exception-constants.js","webpack:///./node_modules/core-js/internals/engine-is-bun.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/engine-is-node.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/error-stack-clear.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/function-apply.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/function-bind-native.js","webpack:///./node_modules/core-js/internals/function-call.js","webpack:///./node_modules/core-js/internals/function-name.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack:///./node_modules/core-js/internals/function-uncurry-this.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/get-method.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/has-own-property.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/is-big-int-array.js","webpack:///./node_modules/core-js/internals/is-callable.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/is-null-or-undefined.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/core-js/internals/length-of-array-like.js","webpack:///./node_modules/core-js/internals/make-built-in.js","webpack:///./node_modules/core-js/internals/math-trunc.js","webpack:///./node_modules/core-js/internals/normalize-string-argument.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/schedulers-fix.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/symbol-constructor-detection.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/to-big-int.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/to-property-key.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/to-string.js","webpack:///./node_modules/core-js/internals/try-to-string.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./node_modules/core-js/internals/validate-arguments-length.js","webpack:///./node_modules/core-js/internals/weak-map-basic-detection.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/modules/es.array.push.js","webpack:///./node_modules/core-js/modules/es.array.unshift.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-last-index.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-last.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-reversed.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-sorted.js","webpack:///./node_modules/core-js/modules/es.typed-array.with.js","webpack:///./node_modules/core-js/modules/web.clear-immediate.js","webpack:///./node_modules/core-js/modules/web.dom-exception.stack.js","webpack:///./node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/core-js/modules/web.set-immediate.js","webpack:///./node_modules/core-js/modules/web.url-search-params.size.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/get mini-css chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/css loading","webpack:///webpack/runtime/jsonp chunk loading","webpack:///./node_modules/alpinejs/dist/module.esm.js","webpack:///./node_modules/@alpinejs/intersect/dist/module.esm.js","webpack:///./node_modules/@alpinejs/collapse/dist/module.esm.js","webpack:///./src/main/webpack/extensions/directives/cdialogon.js","webpack:///./src/main/webpack/libs/dictionary-provider.js","webpack:///./src/main/webpack/libs/htl-runtime/DOMFactory.js","webpack:///./node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","webpack:///./node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","webpack:///./node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","webpack:///./node_modules/date-fns/locale/en-US/_lib/localize.mjs","webpack:///./node_modules/date-fns/locale/_lib/buildMatchFn.mjs","webpack:///./node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","webpack:///./node_modules/date-fns/locale/en-US/_lib/match.mjs","webpack:///./node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","webpack:///./node_modules/date-fns/locale/en-GB/_lib/formatLong.mjs","webpack:///./node_modules/date-fns/locale/en-GB.mjs","webpack:///./node_modules/date-fns/locale/it/_lib/formatDistance.mjs","webpack:///./node_modules/date-fns/locale/it/_lib/formatLong.mjs","webpack:///./node_modules/date-fns/toDate.mjs","webpack:///./node_modules/date-fns/_lib/defaultOptions.mjs","webpack:///./node_modules/date-fns/startOfWeek.mjs","webpack:///./node_modules/date-fns/isSameWeek.mjs","webpack:///./node_modules/date-fns/locale/it/_lib/formatRelative.mjs","webpack:///./node_modules/date-fns/locale/it.mjs","webpack:///./node_modules/date-fns/locale/it/_lib/localize.mjs","webpack:///./node_modules/date-fns/locale/it/_lib/match.mjs","webpack:///./node_modules/date-fns/isValid.mjs","webpack:///./node_modules/date-fns/isDate.mjs","webpack:///./node_modules/date-fns/locale/en-US.mjs","webpack:///./node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","webpack:///./node_modules/date-fns/constants.mjs","webpack:///./node_modules/date-fns/startOfDay.mjs","webpack:///./node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","webpack:///./node_modules/date-fns/constructFrom.mjs","webpack:///./node_modules/date-fns/getDayOfYear.mjs","webpack:///./node_modules/date-fns/differenceInCalendarDays.mjs","webpack:///./node_modules/date-fns/startOfYear.mjs","webpack:///./node_modules/date-fns/startOfISOWeek.mjs","webpack:///./node_modules/date-fns/getISOWeekYear.mjs","webpack:///./node_modules/date-fns/getISOWeek.mjs","webpack:///./node_modules/date-fns/startOfISOWeekYear.mjs","webpack:///./node_modules/date-fns/getWeekYear.mjs","webpack:///./node_modules/date-fns/getWeek.mjs","webpack:///./node_modules/date-fns/startOfWeekYear.mjs","webpack:///./node_modules/date-fns/_lib/addLeadingZeros.mjs","webpack:///./node_modules/date-fns/_lib/format/lightFormatters.mjs","webpack:///./node_modules/date-fns/_lib/format/formatters.mjs","webpack:///./node_modules/date-fns/_lib/format/longFormatters.mjs","webpack:///./node_modules/date-fns/_lib/protectedTokens.mjs","webpack:///./node_modules/date-fns/format.mjs","webpack:///./src/main/webpack/libs/htl-runtime/HTMLRuntime.js","webpack:///./src/main/webpack/libs/htl-runtime/format.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/axios/lib/core/AxiosError.js","webpack:///./node_modules/axios/lib/helpers/toFormData.js","webpack:///./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/defaults/transitional.js","webpack:///./node_modules/axios/lib/platform/browser/index.js","webpack:///./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack:///./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack:///./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack:///./node_modules/axios/lib/helpers/formDataToJSON.js","webpack:///./node_modules/axios/lib/defaults/index.js","webpack:///./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/core/AxiosHeaders.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/cancel/CanceledError.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/helpers/speedometer.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/helpers/parseProtocol.js","webpack:///./node_modules/axios/lib/adapters/adapters.js","webpack:///./node_modules/axios/lib/helpers/null.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./src/main/webpack/libs/api-provider.js","webpack:///./src/main/webpack/libs/constants.js","webpack:///./src/main/webpack/libs/utils.js","webpack:///./src/main/webpack/libs/store-manager.js","webpack:///./src/main/webpack/libs/components/component.js","webpack:///./src/main/webpack/libs/register.js","webpack:///./src/main/webpack/libs/flow-manager.js","webpack:///./src/main/webpack/libs/toast-manager.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt002-cta/script.js","webpack:///./src/main/webpack/libs/components/validable-component.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt003-checkbox/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt004-radio/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt005-toggle/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt006-tag/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt008-text-field/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt009-date-picker/script.js","webpack:///./node_modules/@googlemaps/js-api-loader/dist/index.mjs","webpack:///./src/main/webpack/libs/gmaps-helper.js","webpack:///./src/main/webpack/libs/myconad-api-provider.js","webpack:///./src/main/webpack/libs/user-service.js","webpack:///./src/main/webpack/libs/tracking-manager.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt010-search-field/script.js","webpack:///./src/main/webpack/libs/ext-api-helper.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt011-select/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt012-switch/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt013-step/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt014-file-upload/script.js","webpack:///./src/main/webpack/libs/pdv-utils.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt016-map-pin/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt017-accordion/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt018-textarea/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt019-status-dot/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt020-map-info-window/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt021-store-card/script.js","webpack:///./node_modules/fast-blurhash/index.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt022-picture/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt023-insignia-card/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt024-strillo/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt025-search-alert/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt027-paginator/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt028-dynamic-image/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt029-share-links/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt030-hotspot-card/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt031-filter/script.js","webpack:///./src/main/webpack/libs/form-to-json.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt032-filter-popup/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt033-video/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt034-pin-code-field/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt035-tooltip/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt036-feedback/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt037-bookmark/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt038-category-filter/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt039-generic-tooltip/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt045-refresh-prize-coupon/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/components/layout/rl1-layout/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt050-footer/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt051-header/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt016-map-pin/scripts/html-map-pin.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt016-map-pin/scripts/cluster-pin-renderer.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt052-store-locator/scripts/styled-map.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt052-store-locator/scripts/map-dim-layer.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt052-store-locator/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt054-topbar/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt055-menu-dsk/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt056-menu-mob/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt057-store-header/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt058-store-info/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt059-advice/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt060-recipe/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt061-anchors/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt062-faq/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt063-contact-form/scripts/constants.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt063-contact-form/scripts/form-logic.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt063-contact-form/scripts/privacy.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt063-contact-form/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt064-filters/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt065-form-premio/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt066-result-premio/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt067-plays-premio/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt068-search-results/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt069-search-bar/script.js","webpack:///./node_modules/async-mutex/index.mjs","webpack:///./src/main/webpack/libs/insurances-manager.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt073-assicurazioni-form/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt074-in-this-store/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt100-hero-carta/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt100-hero/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt101-thumb-slider/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt102-carrot-banner-fmf/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt102-carrot-banner-fsf/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt102-carrot-banner-hmd/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt102-carrot-banner-hmf/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt102-carrot-banner-hsd/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt102-carrot-banner-hsf/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt102-carrot-banner/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt106-lancio/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt107-slider-mdd/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt108-select-store/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt109-container-card-text/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt110-italy-map/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt111-listing/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt112-associate-card-banner/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt113-italy-nav/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt115-ed-categories/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt117-breadcrumb/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt118-slider-card-elev-editorial/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt119-slider-card-elev-news/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt120-slider-card-elev-recipes/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt121-slider-card-elev-contents/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt122-slider-card-text/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt124-slider-card-elev-brands/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt125-banner-carousel/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt126-slider-card-spec-stores/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt127-slider-card-lanci/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt129-strillo-booking/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt130-strillo-icon-text-link/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt131-strillo-specialized-store/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt132-login-banner/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt174-embedded-flyer/datalayer-hook.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt174-embedded-flyer/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt135-insieme-cards-banner-cta/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt139-hero-collection/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt140-hero-premio/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt141-slider-card-premi/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt142-container-card-premi/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt143-container-card-nearby/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt145-map-search-stores-form/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt145-map-search-stores/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt147-two-columns-card-services/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt148-strillo-initiative/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt149-search-stores/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt153-banner-image/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt154-update-data-refresh/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt155-thankyou-simple-image-text/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt156-excel-to-map-search-stores-form/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt156-excel-to-map-search-stores/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt158-after-policy-activation/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt159-strillo-icon-text-link/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt160-strillo-collection/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt162-card-slider-premi-concorso/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt163-store-flyers/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt164-card-gallery/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt165-container-card-benefits/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt166-switch-tab-promotions/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt168-pdv-select/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt169-strillo-superbollini-balance/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt170-strillo-collection-wrapper/partials/balance-banner.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt170-strillo-collection-wrapper/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt171-rollout-dettaglio-premio/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt171-rollout-dettaglio-premio/partials/progress-banner.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt172-buoni-community-balance/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt175-store-flyer-redirect/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt202-card-elev-recipes/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt213-card-product-flyer/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt215-card-flyer/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt217-card-banner/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt218-card-premi/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt225-card-spec-stores/card-promotion.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt225-card-spec-stores/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt257-card-premio-concorso/script.js","webpack:///./src/main/webpack/libs/components/modal-component.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/ru002-modal/scripts/get-modal.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt250-select-pos-step1/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt251-select-pos-step2-map/scripts/styled-map.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt251-select-pos-step2-map/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt251-select-pos-step2/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt252-pos-list/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt253-store-locator-filters/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt254-filters/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt256-error/script.js","webpack:///./src/main/webpack/libs/enums/counter-type-enum.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt259-user-benefits/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/ru003-popup/scripts/get-popup.js","webpack:///./src/main/webpack/libs/components/popup-component.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt300-login-popup/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt301-books-reservation/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt302-add-store-popup/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt303-refresh-c-popup/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt304-refresh-confirm-popup/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt305-refresh-prize-choice/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt306-excel-to-map-card-details-popup/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt307-ean-collection-popup/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt308-cardista-ante-c-plus-popup/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/rt309-generic-popup/script.js","webpack:///./node_modules/ua-parser-js/src/main/ua-parser.mjs","webpack:///./src/main/webpack/repository/apps/conad-corporate/components/structure/rs1-page/appRedirect.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/components/structure/rs1-page/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/ru002-modal/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/ru003-popup/script.js","webpack:///./src/main/webpack/repository/apps/conad-corporate/templates/ru004-loader/script.js","webpack:///./src/main/webpack/index.js","webpack:///./src/main/webpack/load-components.js"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"ui.frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","'use strict';\n\nvar ensureCallable = function (fn) {\n\tif (typeof fn !== 'function') throw new TypeError(fn + \" is not a function\");\n\treturn fn;\n};\n\nvar byObserver = function (Observer) {\n\tvar node = document.createTextNode(''), queue, currentQueue, i = 0;\n\tnew Observer(function () {\n\t\tvar callback;\n\t\tif (!queue) {\n\t\t\tif (!currentQueue) return;\n\t\t\tqueue = currentQueue;\n\t\t} else if (currentQueue) {\n\t\t\tqueue = currentQueue.concat(queue);\n\t\t}\n\t\tcurrentQueue = queue;\n\t\tqueue = null;\n\t\tif (typeof currentQueue === 'function') {\n\t\t\tcallback = currentQueue;\n\t\t\tcurrentQueue = null;\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\t\tnode.data = (i = ++i % 2); // Invoke other batch, to handle leftover callbacks in case of crash\n\t\twhile (currentQueue) {\n\t\t\tcallback = currentQueue.shift();\n\t\t\tif (!currentQueue.length) currentQueue = null;\n\t\t\tcallback();\n\t\t}\n\t}).observe(node, { characterData: true });\n\treturn function (fn) {\n\t\tensureCallable(fn);\n\t\tif (queue) {\n\t\t\tif (typeof queue === 'function') queue = [queue, fn];\n\t\t\telse queue.push(fn);\n\t\t\treturn;\n\t\t}\n\t\tqueue = fn;\n\t\tnode.data = (i = ++i % 2);\n\t};\n};\n\nmodule.exports = (function () {\n\t// Node.js\n\tif ((typeof process === 'object') && process && (typeof process.nextTick === 'function')) {\n\t\treturn process.nextTick;\n\t}\n\n\t// queueMicrotask\n\tif (typeof queueMicrotask === \"function\") {\n\t\treturn function (cb) { queueMicrotask(ensureCallable(cb)); };\n\t}\n\n\t// MutationObserver\n\tif ((typeof document === 'object') && document) {\n\t\tif (typeof MutationObserver === 'function') return byObserver(MutationObserver);\n\t\tif (typeof WebKitMutationObserver === 'function') return byObserver(WebKitMutationObserver);\n\t}\n\n\t// W3C Draft\n\t// http://dvcs.w3.org/hg/webperf/raw-file/tip/specs/setImmediate/Overview.html\n\tif (typeof setImmediate === 'function') {\n\t\treturn function (cb) { setImmediate(ensureCallable(cb)); };\n\t}\n\n\t// Wide available standard\n\tif ((typeof setTimeout === 'function') || (typeof setTimeout === 'object')) {\n\t\treturn function (cb) { setTimeout(ensureCallable(cb), 0); };\n\t}\n\n\treturn null;\n}());\n","/*! @preserve\n * numeral.js\n * locales : 2.0.6\n * license : MIT\n * http://adamwdraper.github.com/Numeral-js/\n */\n\n(function (global, factory) {\n    if (typeof define === 'function' && define.amd) {\n        define(['numeral'], factory);\n    } else if (typeof module === 'object' && module.exports) {\n        factory(require('./numeral'));\n    } else {\n        factory(global.numeral);\n    }\n}(this, function (numeral) {\n    \n(function() {\n        numeral.register('locale', 'bg', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: { // I found these here http://www.unicode.org/cldr/charts/28/verify/numbers/bg.html\n            thousand: 'хил',\n            million: 'млн',\n            billion: 'млрд',\n            trillion: 'трлн'\n        },\n        ordinal: function (number) {\n            // google translate suggests:\n            // 1st=1-ви; 2nd=2-ри; 7th=7-ми;\n            // 8th=8-ми and many others end with -ти\n            // for example 3rd=3-ти\n            // However since I've seen suggestions that in\n            // Bulgarian the ordinal can be taken in\n            // different forms (masculine, feminine, neuter)\n            // I've opted to wimp out on commiting that to code\n            return '';\n        },\n        currency: {\n            symbol: 'лв'\n        }\n    });\n})();\n\n\n(function() {\n    \n    numeral.register('locale', 'chs', {\n        delimiters: {\n            thousands: ',',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: '千',\n            million: '百万',\n            billion: '十亿',\n            trillion: '兆'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '¥'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'cs', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'tis.',\n            million: 'mil.',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function () {\n            return '.';\n        },\n        currency: {\n            symbol: 'Kč'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'da-dk', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'mio',\n            billion: 'mia',\n            trillion: 'b'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: 'DKK'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'de-ch', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: 'CHF'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'de', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'en-au', {\n        delimiters: {\n            thousands: ',',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            var b = number % 10;\n            return (~~ (number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n        },\n        currency: {\n            symbol: '$'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'en-gb', {\n        delimiters: {\n            thousands: ',',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            var b = number % 10;\n            return (~~ (number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n        },\n        currency: {\n            symbol: '£'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'en-za', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            var b = number % 10;\n            return (~~ (number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                    (b === 2) ? 'nd' :\n                        (b === 3) ? 'rd' : 'th';\n        },\n        currency: {\n            symbol: 'R'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'es-es', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'mm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            var b = number % 10;\n            return (b === 1 || b === 3) ? 'er' :\n                (b === 2) ? 'do' :\n                    (b === 7 || b === 0) ? 'mo' :\n                        (b === 8) ? 'vo' :\n                            (b === 9) ? 'no' : 'to';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'es', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'mm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            var b = number % 10;\n            return (b === 1 || b === 3) ? 'er' :\n                (b === 2) ? 'do' :\n                (b === 7 || b === 0) ? 'mo' :\n\t\t(b === 8) ? 'vo' :\n\t\t(b === 9) ? 'no' : 'to';\n        },\n        currency: {\n            symbol: '$'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'et', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: ' tuh',\n            million: ' mln',\n            billion: ' mld',\n            trillion: ' trl'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'fi', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'M',\n            billion: 'G',\n            trillion: 'T'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'fr-ca', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'M',\n            billion: 'G',\n            trillion: 'T'\n        },\n        ordinal : function (number) {\n            return number === 1 ? 'er' : 'e';\n        },\n        currency: {\n            symbol: '$'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'fr-ch', {\n        delimiters: {\n            thousands: '\\'',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal : function (number) {\n            return number === 1 ? 'er' : 'e';\n        },\n        currency: {\n            symbol: 'CHF'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'fr', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal : function (number) {\n            return number === 1 ? 'er' : 'e';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'hu', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'E',  // ezer\n            million: 'M',   // millió\n            billion: 'Mrd', // milliárd\n            trillion: 'T'   // trillió\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: ' Ft'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'it', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'mila',\n            million: 'mil',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            return 'º';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'ja', {\n        delimiters: {\n            thousands: ',',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: '千',\n            million: '百万',\n            billion: '十億',\n            trillion: '兆'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '¥'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'lv', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: ' tūkst.',\n            million: ' milj.',\n            billion: ' mljrd.',\n            trillion: ' trilj.'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'nl-be', {\n        delimiters: {\n            thousands: ' ',\n            decimal  : ','\n        },\n        abbreviations: {\n            thousand : 'k',\n            million  : ' mln',\n            billion  : ' mld',\n            trillion : ' bln'\n        },\n        ordinal : function (number) {\n            var remainder = number % 100;\n\n            return (number !== 0 && remainder <= 1 || remainder === 8 || remainder >= 20) ? 'ste' : 'de';\n        },\n        currency: {\n            symbol: '€ '\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'nl-nl', {\n        delimiters: {\n            thousands: '.',\n            decimal  : ','\n        },\n        abbreviations: {\n            thousand : 'k',\n            million  : 'mln',\n            billion  : 'mrd',\n            trillion : 'bln'\n        },\n        ordinal : function (number) {\n            var remainder = number % 100;\n            return (number !== 0 && remainder <= 1 || remainder === 8 || remainder >= 20) ? 'ste' : 'de';\n        },\n        currency: {\n            symbol: '€ '\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'no', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: 'kr'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'pl', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'tys.',\n            million: 'mln',\n            billion: 'mld',\n            trillion: 'bln'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: 'PLN'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'pt-br', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'mil',\n            million: 'milhões',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function (number) {\n            return 'º';\n        },\n        currency: {\n            symbol: 'R$'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'pt-pt', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal : function (number) {\n            return 'º';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'ru-ua', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'тыс.',\n            million: 'млн',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function () {\n            // not ideal, but since in Russian it can taken on\n            // different forms (masculine, feminine, neuter)\n            // this is all we can do\n            return '.';\n        },\n        currency: {\n            symbol: '\\u20B4'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'ru', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'тыс.',\n            million: 'млн.',\n            billion: 'млрд.',\n            trillion: 'трлн.'\n        },\n        ordinal: function () {\n            // not ideal, but since in Russian it can taken on\n            // different forms (masculine, feminine, neuter)\n            // this is all we can do\n            return '.';\n        },\n        currency: {\n            symbol: 'руб.'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'sk', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'tis.',\n            million: 'mil.',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function () {\n            return '.';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'sl', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'mio',\n            billion: 'mrd',\n            trillion: 'trilijon'\n        },\n        ordinal: function () {\n            return '.';\n        },\n        currency: {\n            symbol: '€'\n        }\n    });\n})();\n\n\n(function() {\n    \n\n    numeral.register('locale', 'th', {\n        delimiters: {\n            thousands: ',',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: 'พัน',\n            million: 'ล้าน',\n            billion: 'พันล้าน',\n            trillion: 'ล้านล้าน'\n        },\n        ordinal: function (number) {\n            return '.';\n        },\n        currency: {\n            symbol: '฿'\n        }\n    });\n})();\n\n\n(function() {\n        var suffixes = {\n            1: '\\'inci',\n            5: '\\'inci',\n            8: '\\'inci',\n            70: '\\'inci',\n            80: '\\'inci',\n\n            2: '\\'nci',\n            7: '\\'nci',\n            20: '\\'nci',\n            50: '\\'nci',\n\n            3: '\\'üncü',\n            4: '\\'üncü',\n            100: '\\'üncü',\n\n            6: '\\'ncı',\n\n            9: '\\'uncu',\n            10: '\\'uncu',\n            30: '\\'uncu',\n\n            60: '\\'ıncı',\n            90: '\\'ıncı'\n        };\n\n    numeral.register('locale', 'tr', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'bin',\n            million: 'milyon',\n            billion: 'milyar',\n            trillion: 'trilyon'\n        },\n        ordinal: function (number) {\n            if (number === 0) {  // special case for zero\n                return '\\'ıncı';\n            }\n\n            var a = number % 10,\n                b = number % 100 - a,\n                c = number >= 100 ? 100 : null;\n\n          return suffixes[a] || suffixes[b] || suffixes[c];\n        },\n        currency: {\n            symbol: '\\u20BA'\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('locale', 'uk-ua', {\n        delimiters: {\n            thousands: ' ',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: 'тис.',\n            million: 'млн',\n            billion: 'млрд',\n            trillion: 'блн'\n        },\n        ordinal: function () {\n            // not ideal, but since in Ukrainian it can taken on\n            // different forms (masculine, feminine, neuter)\n            // this is all we can do\n            return '';\n        },\n        currency: {\n            symbol: '\\u20B4'\n        }\n    });\n})();\n\n\n(function() {\n    \n    numeral.register('locale', 'vi', {\n        delimiters: {\n            thousands: '.',\n            decimal: ','\n        },\n        abbreviations: {\n            thousand: ' nghìn',\n            million: ' triệu',\n            billion: ' tỷ',\n            trillion: ' nghìn tỷ'\n        },\n        ordinal: function () {\n            return '.';\n        },\n        currency: {\n            symbol: '₫'\n        }\n    });\n})();\n\n\n}));\n","/*! @preserve\n * numeral.js\n * version : 2.0.6\n * author : Adam Draper\n * license : MIT\n * http://adamwdraper.github.com/Numeral-js/\n */\n\n(function (global, factory) {\n    if (typeof define === 'function' && define.amd) {\n        define(factory);\n    } else if (typeof module === 'object' && module.exports) {\n        module.exports = factory();\n    } else {\n        global.numeral = factory();\n    }\n}(this, function () {\n    /************************************\n        Variables\n    ************************************/\n\n    var numeral,\n        _,\n        VERSION = '2.0.6',\n        formats = {},\n        locales = {},\n        defaults = {\n            currentLocale: 'en',\n            zeroFormat: null,\n            nullFormat: null,\n            defaultFormat: '0,0',\n            scalePercentBy100: true\n        },\n        options = {\n            currentLocale: defaults.currentLocale,\n            zeroFormat: defaults.zeroFormat,\n            nullFormat: defaults.nullFormat,\n            defaultFormat: defaults.defaultFormat,\n            scalePercentBy100: defaults.scalePercentBy100\n        };\n\n\n    /************************************\n        Constructors\n    ************************************/\n\n    // Numeral prototype object\n    function Numeral(input, number) {\n        this._input = input;\n\n        this._value = number;\n    }\n\n    numeral = function(input) {\n        var value,\n            kind,\n            unformatFunction,\n            regexp;\n\n        if (numeral.isNumeral(input)) {\n            value = input.value();\n        } else if (input === 0 || typeof input === 'undefined') {\n            value = 0;\n        } else if (input === null || _.isNaN(input)) {\n            value = null;\n        } else if (typeof input === 'string') {\n            if (options.zeroFormat && input === options.zeroFormat) {\n                value = 0;\n            } else if (options.nullFormat && input === options.nullFormat || !input.replace(/[^0-9]+/g, '').length) {\n                value = null;\n            } else {\n                for (kind in formats) {\n                    regexp = typeof formats[kind].regexps.unformat === 'function' ? formats[kind].regexps.unformat() : formats[kind].regexps.unformat;\n\n                    if (regexp && input.match(regexp)) {\n                        unformatFunction = formats[kind].unformat;\n\n                        break;\n                    }\n                }\n\n                unformatFunction = unformatFunction || numeral._.stringToNumber;\n\n                value = unformatFunction(input);\n            }\n        } else {\n            value = Number(input)|| null;\n        }\n\n        return new Numeral(input, value);\n    };\n\n    // version number\n    numeral.version = VERSION;\n\n    // compare numeral object\n    numeral.isNumeral = function(obj) {\n        return obj instanceof Numeral;\n    };\n\n    // helper functions\n    numeral._ = _ = {\n        // formats numbers separators, decimals places, signs, abbreviations\n        numberToFormat: function(value, format, roundingFunction) {\n            var locale = locales[numeral.options.currentLocale],\n                negP = false,\n                optDec = false,\n                leadingCount = 0,\n                abbr = '',\n                trillion = 1000000000000,\n                billion = 1000000000,\n                million = 1000000,\n                thousand = 1000,\n                decimal = '',\n                neg = false,\n                abbrForce, // force abbreviation\n                abs,\n                min,\n                max,\n                power,\n                int,\n                precision,\n                signed,\n                thousands,\n                output;\n\n            // make sure we never format a null value\n            value = value || 0;\n\n            abs = Math.abs(value);\n\n            // see if we should use parentheses for negative number or if we should prefix with a sign\n            // if both are present we default to parentheses\n            if (numeral._.includes(format, '(')) {\n                negP = true;\n                format = format.replace(/[\\(|\\)]/g, '');\n            } else if (numeral._.includes(format, '+') || numeral._.includes(format, '-')) {\n                signed = numeral._.includes(format, '+') ? format.indexOf('+') : value < 0 ? format.indexOf('-') : -1;\n                format = format.replace(/[\\+|\\-]/g, '');\n            }\n\n            // see if abbreviation is wanted\n            if (numeral._.includes(format, 'a')) {\n                abbrForce = format.match(/a(k|m|b|t)?/);\n\n                abbrForce = abbrForce ? abbrForce[1] : false;\n\n                // check for space before abbreviation\n                if (numeral._.includes(format, ' a')) {\n                    abbr = ' ';\n                }\n\n                format = format.replace(new RegExp(abbr + 'a[kmbt]?'), '');\n\n                if (abs >= trillion && !abbrForce || abbrForce === 't') {\n                    // trillion\n                    abbr += locale.abbreviations.trillion;\n                    value = value / trillion;\n                } else if (abs < trillion && abs >= billion && !abbrForce || abbrForce === 'b') {\n                    // billion\n                    abbr += locale.abbreviations.billion;\n                    value = value / billion;\n                } else if (abs < billion && abs >= million && !abbrForce || abbrForce === 'm') {\n                    // million\n                    abbr += locale.abbreviations.million;\n                    value = value / million;\n                } else if (abs < million && abs >= thousand && !abbrForce || abbrForce === 'k') {\n                    // thousand\n                    abbr += locale.abbreviations.thousand;\n                    value = value / thousand;\n                }\n            }\n\n            // check for optional decimals\n            if (numeral._.includes(format, '[.]')) {\n                optDec = true;\n                format = format.replace('[.]', '.');\n            }\n\n            // break number and format\n            int = value.toString().split('.')[0];\n            precision = format.split('.')[1];\n            thousands = format.indexOf(',');\n            leadingCount = (format.split('.')[0].split(',')[0].match(/0/g) || []).length;\n\n            if (precision) {\n                if (numeral._.includes(precision, '[')) {\n                    precision = precision.replace(']', '');\n                    precision = precision.split('[');\n                    decimal = numeral._.toFixed(value, (precision[0].length + precision[1].length), roundingFunction, precision[1].length);\n                } else {\n                    decimal = numeral._.toFixed(value, precision.length, roundingFunction);\n                }\n\n                int = decimal.split('.')[0];\n\n                if (numeral._.includes(decimal, '.')) {\n                    decimal = locale.delimiters.decimal + decimal.split('.')[1];\n                } else {\n                    decimal = '';\n                }\n\n                if (optDec && Number(decimal.slice(1)) === 0) {\n                    decimal = '';\n                }\n            } else {\n                int = numeral._.toFixed(value, 0, roundingFunction);\n            }\n\n            // check abbreviation again after rounding\n            if (abbr && !abbrForce && Number(int) >= 1000 && abbr !== locale.abbreviations.trillion) {\n                int = String(Number(int) / 1000);\n\n                switch (abbr) {\n                    case locale.abbreviations.thousand:\n                        abbr = locale.abbreviations.million;\n                        break;\n                    case locale.abbreviations.million:\n                        abbr = locale.abbreviations.billion;\n                        break;\n                    case locale.abbreviations.billion:\n                        abbr = locale.abbreviations.trillion;\n                        break;\n                }\n            }\n\n\n            // format number\n            if (numeral._.includes(int, '-')) {\n                int = int.slice(1);\n                neg = true;\n            }\n\n            if (int.length < leadingCount) {\n                for (var i = leadingCount - int.length; i > 0; i--) {\n                    int = '0' + int;\n                }\n            }\n\n            if (thousands > -1) {\n                int = int.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1' + locale.delimiters.thousands);\n            }\n\n            if (format.indexOf('.') === 0) {\n                int = '';\n            }\n\n            output = int + decimal + (abbr ? abbr : '');\n\n            if (negP) {\n                output = (negP && neg ? '(' : '') + output + (negP && neg ? ')' : '');\n            } else {\n                if (signed >= 0) {\n                    output = signed === 0 ? (neg ? '-' : '+') + output : output + (neg ? '-' : '+');\n                } else if (neg) {\n                    output = '-' + output;\n                }\n            }\n\n            return output;\n        },\n        // unformats numbers separators, decimals places, signs, abbreviations\n        stringToNumber: function(string) {\n            var locale = locales[options.currentLocale],\n                stringOriginal = string,\n                abbreviations = {\n                    thousand: 3,\n                    million: 6,\n                    billion: 9,\n                    trillion: 12\n                },\n                abbreviation,\n                value,\n                i,\n                regexp;\n\n            if (options.zeroFormat && string === options.zeroFormat) {\n                value = 0;\n            } else if (options.nullFormat && string === options.nullFormat || !string.replace(/[^0-9]+/g, '').length) {\n                value = null;\n            } else {\n                value = 1;\n\n                if (locale.delimiters.decimal !== '.') {\n                    string = string.replace(/\\./g, '').replace(locale.delimiters.decimal, '.');\n                }\n\n                for (abbreviation in abbreviations) {\n                    regexp = new RegExp('[^a-zA-Z]' + locale.abbreviations[abbreviation] + '(?:\\\\)|(\\\\' + locale.currency.symbol + ')?(?:\\\\))?)?$');\n\n                    if (stringOriginal.match(regexp)) {\n                        value *= Math.pow(10, abbreviations[abbreviation]);\n                        break;\n                    }\n                }\n\n                // check for negative number\n                value *= (string.split('-').length + Math.min(string.split('(').length - 1, string.split(')').length - 1)) % 2 ? 1 : -1;\n\n                // remove non numbers\n                string = string.replace(/[^0-9\\.]+/g, '');\n\n                value *= Number(string);\n            }\n\n            return value;\n        },\n        isNaN: function(value) {\n            return typeof value === 'number' && isNaN(value);\n        },\n        includes: function(string, search) {\n            return string.indexOf(search) !== -1;\n        },\n        insert: function(string, subString, start) {\n            return string.slice(0, start) + subString + string.slice(start);\n        },\n        reduce: function(array, callback /*, initialValue*/) {\n            if (this === null) {\n                throw new TypeError('Array.prototype.reduce called on null or undefined');\n            }\n\n            if (typeof callback !== 'function') {\n                throw new TypeError(callback + ' is not a function');\n            }\n\n            var t = Object(array),\n                len = t.length >>> 0,\n                k = 0,\n                value;\n\n            if (arguments.length === 3) {\n                value = arguments[2];\n            } else {\n                while (k < len && !(k in t)) {\n                    k++;\n                }\n\n                if (k >= len) {\n                    throw new TypeError('Reduce of empty array with no initial value');\n                }\n\n                value = t[k++];\n            }\n            for (; k < len; k++) {\n                if (k in t) {\n                    value = callback(value, t[k], k, t);\n                }\n            }\n            return value;\n        },\n        /**\n         * Computes the multiplier necessary to make x >= 1,\n         * effectively eliminating miscalculations caused by\n         * finite precision.\n         */\n        multiplier: function (x) {\n            var parts = x.toString().split('.');\n\n            return parts.length < 2 ? 1 : Math.pow(10, parts[1].length);\n        },\n        /**\n         * Given a variable number of arguments, returns the maximum\n         * multiplier that must be used to normalize an operation involving\n         * all of them.\n         */\n        correctionFactor: function () {\n            var args = Array.prototype.slice.call(arguments);\n\n            return args.reduce(function(accum, next) {\n                var mn = _.multiplier(next);\n                return accum > mn ? accum : mn;\n            }, 1);\n        },\n        /**\n         * Implementation of toFixed() that treats floats more like decimals\n         *\n         * Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61') that present\n         * problems for accounting- and finance-related software.\n         */\n        toFixed: function(value, maxDecimals, roundingFunction, optionals) {\n            var splitValue = value.toString().split('.'),\n                minDecimals = maxDecimals - (optionals || 0),\n                boundedPrecision,\n                optionalsRegExp,\n                power,\n                output;\n\n            // Use the smallest precision value possible to avoid errors from floating point representation\n            if (splitValue.length === 2) {\n              boundedPrecision = Math.min(Math.max(splitValue[1].length, minDecimals), maxDecimals);\n            } else {\n              boundedPrecision = minDecimals;\n            }\n\n            power = Math.pow(10, boundedPrecision);\n\n            // Multiply up by precision, round accurately, then divide and use native toFixed():\n            output = (roundingFunction(value + 'e+' + boundedPrecision) / power).toFixed(boundedPrecision);\n\n            if (optionals > maxDecimals - boundedPrecision) {\n                optionalsRegExp = new RegExp('\\\\.?0{1,' + (optionals - (maxDecimals - boundedPrecision)) + '}$');\n                output = output.replace(optionalsRegExp, '');\n            }\n\n            return output;\n        }\n    };\n\n    // avaliable options\n    numeral.options = options;\n\n    // avaliable formats\n    numeral.formats = formats;\n\n    // avaliable formats\n    numeral.locales = locales;\n\n    // This function sets the current locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    numeral.locale = function(key) {\n        if (key) {\n            options.currentLocale = key.toLowerCase();\n        }\n\n        return options.currentLocale;\n    };\n\n    // This function provides access to the loaded locale data.  If\n    // no arguments are passed in, it will simply return the current\n    // global locale object.\n    numeral.localeData = function(key) {\n        if (!key) {\n            return locales[options.currentLocale];\n        }\n\n        key = key.toLowerCase();\n\n        if (!locales[key]) {\n            throw new Error('Unknown locale : ' + key);\n        }\n\n        return locales[key];\n    };\n\n    numeral.reset = function() {\n        for (var property in defaults) {\n            options[property] = defaults[property];\n        }\n    };\n\n    numeral.zeroFormat = function(format) {\n        options.zeroFormat = typeof(format) === 'string' ? format : null;\n    };\n\n    numeral.nullFormat = function (format) {\n        options.nullFormat = typeof(format) === 'string' ? format : null;\n    };\n\n    numeral.defaultFormat = function(format) {\n        options.defaultFormat = typeof(format) === 'string' ? format : '0.0';\n    };\n\n    numeral.register = function(type, name, format) {\n        name = name.toLowerCase();\n\n        if (this[type + 's'][name]) {\n            throw new TypeError(name + ' ' + type + ' already registered.');\n        }\n\n        this[type + 's'][name] = format;\n\n        return format;\n    };\n\n\n    numeral.validate = function(val, culture) {\n        var _decimalSep,\n            _thousandSep,\n            _currSymbol,\n            _valArray,\n            _abbrObj,\n            _thousandRegEx,\n            localeData,\n            temp;\n\n        //coerce val to string\n        if (typeof val !== 'string') {\n            val += '';\n\n            if (console.warn) {\n                console.warn('Numeral.js: Value is not string. It has been co-erced to: ', val);\n            }\n        }\n\n        //trim whitespaces from either sides\n        val = val.trim();\n\n        //if val is just digits return true\n        if (!!val.match(/^\\d+$/)) {\n            return true;\n        }\n\n        //if val is empty return false\n        if (val === '') {\n            return false;\n        }\n\n        //get the decimal and thousands separator from numeral.localeData\n        try {\n            //check if the culture is understood by numeral. if not, default it to current locale\n            localeData = numeral.localeData(culture);\n        } catch (e) {\n            localeData = numeral.localeData(numeral.locale());\n        }\n\n        //setup the delimiters and currency symbol based on culture/locale\n        _currSymbol = localeData.currency.symbol;\n        _abbrObj = localeData.abbreviations;\n        _decimalSep = localeData.delimiters.decimal;\n        if (localeData.delimiters.thousands === '.') {\n            _thousandSep = '\\\\.';\n        } else {\n            _thousandSep = localeData.delimiters.thousands;\n        }\n\n        // validating currency symbol\n        temp = val.match(/^[^\\d]+/);\n        if (temp !== null) {\n            val = val.substr(1);\n            if (temp[0] !== _currSymbol) {\n                return false;\n            }\n        }\n\n        //validating abbreviation symbol\n        temp = val.match(/[^\\d]+$/);\n        if (temp !== null) {\n            val = val.slice(0, -1);\n            if (temp[0] !== _abbrObj.thousand && temp[0] !== _abbrObj.million && temp[0] !== _abbrObj.billion && temp[0] !== _abbrObj.trillion) {\n                return false;\n            }\n        }\n\n        _thousandRegEx = new RegExp(_thousandSep + '{2}');\n\n        if (!val.match(/[^\\d.,]/g)) {\n            _valArray = val.split(_decimalSep);\n            if (_valArray.length > 2) {\n                return false;\n            } else {\n                if (_valArray.length < 2) {\n                    return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx));\n                } else {\n                    if (_valArray[0].length === 1) {\n                        return ( !! _valArray[0].match(/^\\d+$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n                    } else {\n                        return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n                    }\n                }\n            }\n        }\n\n        return false;\n    };\n\n\n    /************************************\n        Numeral Prototype\n    ************************************/\n\n    numeral.fn = Numeral.prototype = {\n        clone: function() {\n            return numeral(this);\n        },\n        format: function(inputString, roundingFunction) {\n            var value = this._value,\n                format = inputString || options.defaultFormat,\n                kind,\n                output,\n                formatFunction;\n\n            // make sure we have a roundingFunction\n            roundingFunction = roundingFunction || Math.round;\n\n            // format based on value\n            if (value === 0 && options.zeroFormat !== null) {\n                output = options.zeroFormat;\n            } else if (value === null && options.nullFormat !== null) {\n                output = options.nullFormat;\n            } else {\n                for (kind in formats) {\n                    if (format.match(formats[kind].regexps.format)) {\n                        formatFunction = formats[kind].format;\n\n                        break;\n                    }\n                }\n\n                formatFunction = formatFunction || numeral._.numberToFormat;\n\n                output = formatFunction(value, format, roundingFunction);\n            }\n\n            return output;\n        },\n        value: function() {\n            return this._value;\n        },\n        input: function() {\n            return this._input;\n        },\n        set: function(value) {\n            this._value = Number(value);\n\n            return this;\n        },\n        add: function(value) {\n            var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n            function cback(accum, curr, currI, O) {\n                return accum + Math.round(corrFactor * curr);\n            }\n\n            this._value = _.reduce([this._value, value], cback, 0) / corrFactor;\n\n            return this;\n        },\n        subtract: function(value) {\n            var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n            function cback(accum, curr, currI, O) {\n                return accum - Math.round(corrFactor * curr);\n            }\n\n            this._value = _.reduce([value], cback, Math.round(this._value * corrFactor)) / corrFactor;\n\n            return this;\n        },\n        multiply: function(value) {\n            function cback(accum, curr, currI, O) {\n                var corrFactor = _.correctionFactor(accum, curr);\n                return Math.round(accum * corrFactor) * Math.round(curr * corrFactor) / Math.round(corrFactor * corrFactor);\n            }\n\n            this._value = _.reduce([this._value, value], cback, 1);\n\n            return this;\n        },\n        divide: function(value) {\n            function cback(accum, curr, currI, O) {\n                var corrFactor = _.correctionFactor(accum, curr);\n                return Math.round(accum * corrFactor) / Math.round(curr * corrFactor);\n            }\n\n            this._value = _.reduce([this._value, value], cback);\n\n            return this;\n        },\n        difference: function(value) {\n            return Math.abs(numeral(this._value).subtract(value).value());\n        }\n    };\n\n    /************************************\n        Default Locale && Format\n    ************************************/\n\n    numeral.register('locale', 'en', {\n        delimiters: {\n            thousands: ',',\n            decimal: '.'\n        },\n        abbreviations: {\n            thousand: 'k',\n            million: 'm',\n            billion: 'b',\n            trillion: 't'\n        },\n        ordinal: function(number) {\n            var b = number % 10;\n            return (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n        },\n        currency: {\n            symbol: '$'\n        }\n    });\n\n    \n\n(function() {\n        numeral.register('format', 'bps', {\n            regexps: {\n                format: /(BPS)/,\n                unformat: /(BPS)/\n            },\n            format: function(value, format, roundingFunction) {\n                var space = numeral._.includes(format, ' BPS') ? ' ' : '',\n                    output;\n\n                value = value * 10000;\n\n                // check for space before BPS\n                format = format.replace(/\\s?BPS/, '');\n\n                output = numeral._.numberToFormat(value, format, roundingFunction);\n\n                if (numeral._.includes(output, ')')) {\n                    output = output.split('');\n\n                    output.splice(-1, 0, space + 'BPS');\n\n                    output = output.join('');\n                } else {\n                    output = output + space + 'BPS';\n                }\n\n                return output;\n            },\n            unformat: function(string) {\n                return +(numeral._.stringToNumber(string) * 0.0001).toFixed(15);\n            }\n        });\n})();\n\n\n(function() {\n        var decimal = {\n            base: 1000,\n            suffixes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n        },\n        binary = {\n            base: 1024,\n            suffixes: ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\n        };\n\n    var allSuffixes =  decimal.suffixes.concat(binary.suffixes.filter(function (item) {\n            return decimal.suffixes.indexOf(item) < 0;\n        }));\n        var unformatRegex = allSuffixes.join('|');\n        // Allow support for BPS (http://www.investopedia.com/terms/b/basispoint.asp)\n        unformatRegex = '(' + unformatRegex.replace('B', 'B(?!PS)') + ')';\n\n    numeral.register('format', 'bytes', {\n        regexps: {\n            format: /([0\\s]i?b)/,\n            unformat: new RegExp(unformatRegex)\n        },\n        format: function(value, format, roundingFunction) {\n            var output,\n                bytes = numeral._.includes(format, 'ib') ? binary : decimal,\n                suffix = numeral._.includes(format, ' b') || numeral._.includes(format, ' ib') ? ' ' : '',\n                power,\n                min,\n                max;\n\n            // check for space before\n            format = format.replace(/\\s?i?b/, '');\n\n            for (power = 0; power <= bytes.suffixes.length; power++) {\n                min = Math.pow(bytes.base, power);\n                max = Math.pow(bytes.base, power + 1);\n\n                if (value === null || value === 0 || value >= min && value < max) {\n                    suffix += bytes.suffixes[power];\n\n                    if (min > 0) {\n                        value = value / min;\n                    }\n\n                    break;\n                }\n            }\n\n            output = numeral._.numberToFormat(value, format, roundingFunction);\n\n            return output + suffix;\n        },\n        unformat: function(string) {\n            var value = numeral._.stringToNumber(string),\n                power,\n                bytesMultiplier;\n\n            if (value) {\n                for (power = decimal.suffixes.length - 1; power >= 0; power--) {\n                    if (numeral._.includes(string, decimal.suffixes[power])) {\n                        bytesMultiplier = Math.pow(decimal.base, power);\n\n                        break;\n                    }\n\n                    if (numeral._.includes(string, binary.suffixes[power])) {\n                        bytesMultiplier = Math.pow(binary.base, power);\n\n                        break;\n                    }\n                }\n\n                value *= (bytesMultiplier || 1);\n            }\n\n            return value;\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('format', 'currency', {\n        regexps: {\n            format: /(\\$)/\n        },\n        format: function(value, format, roundingFunction) {\n            var locale = numeral.locales[numeral.options.currentLocale],\n                symbols = {\n                    before: format.match(/^([\\+|\\-|\\(|\\s|\\$]*)/)[0],\n                    after: format.match(/([\\+|\\-|\\)|\\s|\\$]*)$/)[0]\n                },\n                output,\n                symbol,\n                i;\n\n            // strip format of spaces and $\n            format = format.replace(/\\s?\\$\\s?/, '');\n\n            // format the number\n            output = numeral._.numberToFormat(value, format, roundingFunction);\n\n            // update the before and after based on value\n            if (value >= 0) {\n                symbols.before = symbols.before.replace(/[\\-\\(]/, '');\n                symbols.after = symbols.after.replace(/[\\-\\)]/, '');\n            } else if (value < 0 && (!numeral._.includes(symbols.before, '-') && !numeral._.includes(symbols.before, '('))) {\n                symbols.before = '-' + symbols.before;\n            }\n\n            // loop through each before symbol\n            for (i = 0; i < symbols.before.length; i++) {\n                symbol = symbols.before[i];\n\n                switch (symbol) {\n                    case '$':\n                        output = numeral._.insert(output, locale.currency.symbol, i);\n                        break;\n                    case ' ':\n                        output = numeral._.insert(output, ' ', i + locale.currency.symbol.length - 1);\n                        break;\n                }\n            }\n\n            // loop through each after symbol\n            for (i = symbols.after.length - 1; i >= 0; i--) {\n                symbol = symbols.after[i];\n\n                switch (symbol) {\n                    case '$':\n                        output = i === symbols.after.length - 1 ? output + locale.currency.symbol : numeral._.insert(output, locale.currency.symbol, -(symbols.after.length - (1 + i)));\n                        break;\n                    case ' ':\n                        output = i === symbols.after.length - 1 ? output + ' ' : numeral._.insert(output, ' ', -(symbols.after.length - (1 + i) + locale.currency.symbol.length - 1));\n                        break;\n                }\n            }\n\n\n            return output;\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('format', 'exponential', {\n        regexps: {\n            format: /(e\\+|e-)/,\n            unformat: /(e\\+|e-)/\n        },\n        format: function(value, format, roundingFunction) {\n            var output,\n                exponential = typeof value === 'number' && !numeral._.isNaN(value) ? value.toExponential() : '0e+0',\n                parts = exponential.split('e');\n\n            format = format.replace(/e[\\+|\\-]{1}0/, '');\n\n            output = numeral._.numberToFormat(Number(parts[0]), format, roundingFunction);\n\n            return output + 'e' + parts[1];\n        },\n        unformat: function(string) {\n            var parts = numeral._.includes(string, 'e+') ? string.split('e+') : string.split('e-'),\n                value = Number(parts[0]),\n                power = Number(parts[1]);\n\n            power = numeral._.includes(string, 'e-') ? power *= -1 : power;\n\n            function cback(accum, curr, currI, O) {\n                var corrFactor = numeral._.correctionFactor(accum, curr),\n                    num = (accum * corrFactor) * (curr * corrFactor) / (corrFactor * corrFactor);\n                return num;\n            }\n\n            return numeral._.reduce([value, Math.pow(10, power)], cback, 1);\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('format', 'ordinal', {\n        regexps: {\n            format: /(o)/\n        },\n        format: function(value, format, roundingFunction) {\n            var locale = numeral.locales[numeral.options.currentLocale],\n                output,\n                ordinal = numeral._.includes(format, ' o') ? ' ' : '';\n\n            // check for space before\n            format = format.replace(/\\s?o/, '');\n\n            ordinal += locale.ordinal(value);\n\n            output = numeral._.numberToFormat(value, format, roundingFunction);\n\n            return output + ordinal;\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('format', 'percentage', {\n        regexps: {\n            format: /(%)/,\n            unformat: /(%)/\n        },\n        format: function(value, format, roundingFunction) {\n            var space = numeral._.includes(format, ' %') ? ' ' : '',\n                output;\n\n            if (numeral.options.scalePercentBy100) {\n                value = value * 100;\n            }\n\n            // check for space before %\n            format = format.replace(/\\s?\\%/, '');\n\n            output = numeral._.numberToFormat(value, format, roundingFunction);\n\n            if (numeral._.includes(output, ')')) {\n                output = output.split('');\n\n                output.splice(-1, 0, space + '%');\n\n                output = output.join('');\n            } else {\n                output = output + space + '%';\n            }\n\n            return output;\n        },\n        unformat: function(string) {\n            var number = numeral._.stringToNumber(string);\n            if (numeral.options.scalePercentBy100) {\n                return number * 0.01;\n            }\n            return number;\n        }\n    });\n})();\n\n\n(function() {\n        numeral.register('format', 'time', {\n        regexps: {\n            format: /(:)/,\n            unformat: /(:)/\n        },\n        format: function(value, format, roundingFunction) {\n            var hours = Math.floor(value / 60 / 60),\n                minutes = Math.floor((value - (hours * 60 * 60)) / 60),\n                seconds = Math.round(value - (hours * 60 * 60) - (minutes * 60));\n\n            return hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds);\n        },\n        unformat: function(string) {\n            var timeArray = string.split(':'),\n                seconds = 0;\n\n            // turn hours and minutes into seconds and add them all up\n            if (timeArray.length === 3) {\n                // hours\n                seconds = seconds + (Number(timeArray[0]) * 60 * 60);\n                // minutes\n                seconds = seconds + (Number(timeArray[1]) * 60);\n                // seconds\n                seconds = seconds + Number(timeArray[2]);\n            } else if (timeArray.length === 2) {\n                // minutes\n                seconds = seconds + (Number(timeArray[0]) * 60);\n                // seconds\n                seconds = seconds + Number(timeArray[1]);\n            }\n            return Number(seconds);\n        }\n    });\n})();\n\nreturn numeral;\n}));\n","export function get(element) {\n  return getComputedStyle(element);\n}\n\nexport function set(element, obj) {\n  for (const key in obj) {\n    let val = obj[key];\n    if (typeof val === 'number') {\n      val = `${val}px`;\n    }\n    element.style[key] = val;\n  }\n  return element;\n}\n","export function div(className) {\n  const div = document.createElement('div');\n  div.className = className;\n  return div;\n}\n\nconst elMatches =\n  typeof Element !== 'undefined' &&\n  (Element.prototype.matches ||\n    Element.prototype.webkitMatchesSelector ||\n    Element.prototype.mozMatchesSelector ||\n    Element.prototype.msMatchesSelector);\n\nexport function matches(element, query) {\n  if (!elMatches) {\n    throw new Error('No element matching method supported');\n  }\n\n  return elMatches.call(element, query);\n}\n\nexport function remove(element) {\n  if (element.remove) {\n    element.remove();\n  } else {\n    if (element.parentNode) {\n      element.parentNode.removeChild(element);\n    }\n  }\n}\n\nexport function queryChildren(element, selector) {\n  return Array.prototype.filter.call(element.children, child =>\n    matches(child, selector)\n  );\n}\n","const cls = {\n  main: 'ps',\n  rtl: 'ps__rtl',\n  element: {\n    thumb: x => `ps__thumb-${x}`,\n    rail: x => `ps__rail-${x}`,\n    consuming: 'ps__child--consume',\n  },\n  state: {\n    focus: 'ps--focus',\n    clicking: 'ps--clicking',\n    active: x => `ps--active-${x}`,\n    scrolling: x => `ps--scrolling-${x}`,\n  },\n};\n\nexport default cls;\n\n/*\n * Helper methods\n */\nconst scrollingClassTimeout = { x: null, y: null };\n\nexport function addScrollingClass(i, x) {\n  const classList = i.element.classList;\n  const className = cls.state.scrolling(x);\n\n  if (classList.contains(className)) {\n    clearTimeout(scrollingClassTimeout[x]);\n  } else {\n    classList.add(className);\n  }\n}\n\nexport function removeScrollingClass(i, x) {\n  scrollingClassTimeout[x] = setTimeout(\n    () => i.isAlive && i.element.classList.remove(cls.state.scrolling(x)),\n    i.settings.scrollingThreshold\n  );\n}\n\nexport function setScrollingClassInstantly(i, x) {\n  addScrollingClass(i, x);\n  removeScrollingClass(i, x);\n}\n","class EventElement {\n  constructor(element) {\n    this.element = element;\n    this.handlers = {};\n  }\n\n  bind(eventName, handler) {\n    if (typeof this.handlers[eventName] === 'undefined') {\n      this.handlers[eventName] = [];\n    }\n    this.handlers[eventName].push(handler);\n    this.element.addEventListener(eventName, handler, false);\n  }\n\n  unbind(eventName, target) {\n    this.handlers[eventName] = this.handlers[eventName].filter(handler => {\n      if (target && handler !== target) {\n        return true;\n      }\n      this.element.removeEventListener(eventName, handler, false);\n      return false;\n    });\n  }\n\n  unbindAll() {\n    for (const name in this.handlers) {\n      this.unbind(name);\n    }\n  }\n\n  get isEmpty() {\n    return Object.keys(this.handlers).every(\n      key => this.handlers[key].length === 0\n    );\n  }\n}\n\nexport default class EventManager {\n  constructor() {\n    this.eventElements = [];\n  }\n\n  eventElement(element) {\n    let ee = this.eventElements.filter(ee => ee.element === element)[0];\n    if (!ee) {\n      ee = new EventElement(element);\n      this.eventElements.push(ee);\n    }\n    return ee;\n  }\n\n  bind(element, eventName, handler) {\n    this.eventElement(element).bind(eventName, handler);\n  }\n\n  unbind(element, eventName, handler) {\n    const ee = this.eventElement(element);\n    ee.unbind(eventName, handler);\n\n    if (ee.isEmpty) {\n      // remove\n      this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n    }\n  }\n\n  unbindAll() {\n    this.eventElements.forEach(e => e.unbindAll());\n    this.eventElements = [];\n  }\n\n  once(element, eventName, handler) {\n    const ee = this.eventElement(element);\n    const onceHandler = evt => {\n      ee.unbind(eventName, onceHandler);\n      handler(evt);\n    };\n    ee.bind(eventName, onceHandler);\n  }\n}\n","import { setScrollingClassInstantly } from './lib/class-names';\n\nfunction createEvent(name) {\n  if (typeof window.CustomEvent === 'function') {\n    return new CustomEvent(name);\n  } else {\n    const evt = document.createEvent('CustomEvent');\n    evt.initCustomEvent(name, false, false, undefined);\n    return evt;\n  }\n}\n\nexport default function(\n  i,\n  axis,\n  diff,\n  useScrollingClass = true,\n  forceFireReachEvent = false\n) {\n  let fields;\n  if (axis === 'top') {\n    fields = [\n      'contentHeight',\n      'containerHeight',\n      'scrollTop',\n      'y',\n      'up',\n      'down',\n    ];\n  } else if (axis === 'left') {\n    fields = [\n      'contentWidth',\n      'containerWidth',\n      'scrollLeft',\n      'x',\n      'left',\n      'right',\n    ];\n  } else {\n    throw new Error('A proper axis should be provided');\n  }\n\n  processScrollDiff(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff(\n  i,\n  diff,\n  [contentHeight, containerHeight, scrollTop, y, up, down],\n  useScrollingClass = true,\n  forceFireReachEvent = false\n) {\n  const element = i.element;\n\n  // reset reach\n  i.reach[y] = null;\n\n  // 1 for subpixel rounding\n  if (element[scrollTop] < 1) {\n    i.reach[y] = 'start';\n  }\n\n  // 1 for subpixel rounding\n  if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n    i.reach[y] = 'end';\n  }\n\n  if (diff) {\n    element.dispatchEvent(createEvent(`ps-scroll-${y}`));\n\n    if (diff < 0) {\n      element.dispatchEvent(createEvent(`ps-scroll-${up}`));\n    } else if (diff > 0) {\n      element.dispatchEvent(createEvent(`ps-scroll-${down}`));\n    }\n\n    if (useScrollingClass) {\n      setScrollingClassInstantly(i, y);\n    }\n  }\n\n  if (i.reach[y] && (diff || forceFireReachEvent)) {\n    element.dispatchEvent(createEvent(`ps-${y}-reach-${i.reach[y]}`));\n  }\n}\n","import * as CSS from './css';\nimport * as DOM from './dom';\n\nexport function toInt(x) {\n  return parseInt(x, 10) || 0;\n}\n\nexport function isEditable(el) {\n  return (\n    DOM.matches(el, 'input,[contenteditable]') ||\n    DOM.matches(el, 'select,[contenteditable]') ||\n    DOM.matches(el, 'textarea,[contenteditable]') ||\n    DOM.matches(el, 'button,[contenteditable]')\n  );\n}\n\nexport function outerWidth(element) {\n  const styles = CSS.get(element);\n  return (\n    toInt(styles.width) +\n    toInt(styles.paddingLeft) +\n    toInt(styles.paddingRight) +\n    toInt(styles.borderLeftWidth) +\n    toInt(styles.borderRightWidth)\n  );\n}\n\nexport const env = {\n  isWebKit:\n    typeof document !== 'undefined' &&\n    'WebkitAppearance' in document.documentElement.style,\n  supportsTouch:\n    typeof window !== 'undefined' &&\n    ('ontouchstart' in window ||\n      ('maxTouchPoints' in window.navigator &&\n        window.navigator.maxTouchPoints > 0) ||\n      (window.DocumentTouch && document instanceof window.DocumentTouch)),\n  supportsIePointer:\n    typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n  isChrome:\n    typeof navigator !== 'undefined' &&\n    /Chrome/i.test(navigator && navigator.userAgent),\n};\n","import * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport { toInt } from './lib/util';\n\nexport default function(i) {\n  const element = i.element;\n  const roundedScrollTop = Math.floor(element.scrollTop);\n  const rect = element.getBoundingClientRect();\n\n  i.containerWidth = Math.round(rect.width);\n  i.containerHeight = Math.round(rect.height);\n\n  i.contentWidth = element.scrollWidth;\n  i.contentHeight = element.scrollHeight;\n\n  if (!element.contains(i.scrollbarXRail)) {\n    // clean up and append\n    DOM.queryChildren(element, cls.element.rail('x')).forEach(el =>\n      DOM.remove(el)\n    );\n    element.appendChild(i.scrollbarXRail);\n  }\n  if (!element.contains(i.scrollbarYRail)) {\n    // clean up and append\n    DOM.queryChildren(element, cls.element.rail('y')).forEach(el =>\n      DOM.remove(el)\n    );\n    element.appendChild(i.scrollbarYRail);\n  }\n\n  if (\n    !i.settings.suppressScrollX &&\n    i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n  ) {\n    i.scrollbarXActive = true;\n    i.railXWidth = i.containerWidth - i.railXMarginWidth;\n    i.railXRatio = i.containerWidth / i.railXWidth;\n    i.scrollbarXWidth = getThumbSize(\n      i,\n      toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n    );\n    i.scrollbarXLeft = toInt(\n      ((i.negativeScrollAdjustment + element.scrollLeft) *\n        (i.railXWidth - i.scrollbarXWidth)) /\n        (i.contentWidth - i.containerWidth)\n    );\n  } else {\n    i.scrollbarXActive = false;\n  }\n\n  if (\n    !i.settings.suppressScrollY &&\n    i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n  ) {\n    i.scrollbarYActive = true;\n    i.railYHeight = i.containerHeight - i.railYMarginHeight;\n    i.railYRatio = i.containerHeight / i.railYHeight;\n    i.scrollbarYHeight = getThumbSize(\n      i,\n      toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n    );\n    i.scrollbarYTop = toInt(\n      (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n        (i.contentHeight - i.containerHeight)\n    );\n  } else {\n    i.scrollbarYActive = false;\n  }\n\n  if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n    i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n  }\n  if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n    i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n  }\n\n  updateCss(element, i);\n\n  if (i.scrollbarXActive) {\n    element.classList.add(cls.state.active('x'));\n  } else {\n    element.classList.remove(cls.state.active('x'));\n    i.scrollbarXWidth = 0;\n    i.scrollbarXLeft = 0;\n    element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n  }\n  if (i.scrollbarYActive) {\n    element.classList.add(cls.state.active('y'));\n  } else {\n    element.classList.remove(cls.state.active('y'));\n    i.scrollbarYHeight = 0;\n    i.scrollbarYTop = 0;\n    element.scrollTop = 0;\n  }\n}\n\nfunction getThumbSize(i, thumbSize) {\n  if (i.settings.minScrollbarLength) {\n    thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n  }\n  if (i.settings.maxScrollbarLength) {\n    thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n  }\n  return thumbSize;\n}\n\nfunction updateCss(element, i) {\n  const xRailOffset = { width: i.railXWidth };\n  const roundedScrollTop = Math.floor(element.scrollTop);\n\n  if (i.isRtl) {\n    xRailOffset.left =\n      i.negativeScrollAdjustment +\n      element.scrollLeft +\n      i.containerWidth -\n      i.contentWidth;\n  } else {\n    xRailOffset.left = element.scrollLeft;\n  }\n  if (i.isScrollbarXUsingBottom) {\n    xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n  } else {\n    xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n  }\n  CSS.set(i.scrollbarXRail, xRailOffset);\n\n  const yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n  if (i.isScrollbarYUsingRight) {\n    if (i.isRtl) {\n      yRailOffset.right =\n        i.contentWidth -\n        (i.negativeScrollAdjustment + element.scrollLeft) -\n        i.scrollbarYRight -\n        i.scrollbarYOuterWidth -\n        9;\n    } else {\n      yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n    }\n  } else {\n    if (i.isRtl) {\n      yRailOffset.left =\n        i.negativeScrollAdjustment +\n        element.scrollLeft +\n        i.containerWidth * 2 -\n        i.contentWidth -\n        i.scrollbarYLeft -\n        i.scrollbarYOuterWidth;\n    } else {\n      yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n    }\n  }\n  CSS.set(i.scrollbarYRail, yRailOffset);\n\n  CSS.set(i.scrollbarX, {\n    left: i.scrollbarXLeft,\n    width: i.scrollbarXWidth - i.railBorderXWidth,\n  });\n  CSS.set(i.scrollbarY, {\n    top: i.scrollbarYTop,\n    height: i.scrollbarYHeight - i.railBorderYWidth,\n  });\n}\n","import * as CSS from '../lib/css';\nimport * as DOM from '../lib/dom';\nimport cls, {\n  addScrollingClass,\n  removeScrollingClass,\n} from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\nimport { toInt } from '../lib/util';\n\nexport default function(i) {\n  bindMouseScrollHandler(i, [\n    'containerWidth',\n    'contentWidth',\n    'pageX',\n    'railXWidth',\n    'scrollbarX',\n    'scrollbarXWidth',\n    'scrollLeft',\n    'x',\n    'scrollbarXRail',\n  ]);\n  bindMouseScrollHandler(i, [\n    'containerHeight',\n    'contentHeight',\n    'pageY',\n    'railYHeight',\n    'scrollbarY',\n    'scrollbarYHeight',\n    'scrollTop',\n    'y',\n    'scrollbarYRail',\n  ]);\n}\n\nfunction bindMouseScrollHandler(\n  i,\n  [\n    containerHeight,\n    contentHeight,\n    pageY,\n    railYHeight,\n    scrollbarY,\n    scrollbarYHeight,\n    scrollTop,\n    y,\n    scrollbarYRail,\n  ]\n) {\n  const element = i.element;\n\n  let startingScrollTop = null;\n  let startingMousePageY = null;\n  let scrollBy = null;\n\n  function mouseMoveHandler(e) {\n    if (e.touches && e.touches[0]) {\n      e[pageY] = e.touches[0].pageY;\n    }\n    element[scrollTop] =\n      startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n    addScrollingClass(i, y);\n    updateGeometry(i);\n\n    e.stopPropagation();\n    if (e.type.startsWith('touch') && e.changedTouches.length > 1) {\n      e.preventDefault();\n    }\n  }\n\n  function mouseUpHandler() {\n    removeScrollingClass(i, y);\n    i[scrollbarYRail].classList.remove(cls.state.clicking);\n    i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n  }\n\n  function bindMoves(e, touchMode) {\n    startingScrollTop = element[scrollTop];\n    if (touchMode && e.touches) {\n      e[pageY] = e.touches[0].pageY;\n    }\n    startingMousePageY = e[pageY];\n    scrollBy =\n      (i[contentHeight] - i[containerHeight]) /\n      (i[railYHeight] - i[scrollbarYHeight]);\n    if (!touchMode) {\n      i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n      i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n      e.preventDefault();\n    } else {\n      i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n    }\n\n    i[scrollbarYRail].classList.add(cls.state.clicking);\n\n    e.stopPropagation();\n  }\n\n  i.event.bind(i[scrollbarY], 'mousedown', e => {\n    bindMoves(e);\n  });\n  i.event.bind(i[scrollbarY], 'touchstart', e => {\n    bindMoves(e, true);\n  });\n}\n","import * as CSS from './lib/css';\nimport * as DOM from './lib/dom';\nimport cls from './lib/class-names';\nimport EventManager from './lib/event-manager';\nimport processScrollDiff from './process-scroll-diff';\nimport updateGeometry from './update-geometry';\nimport { toInt, outerWidth } from './lib/util';\n\nimport clickRail from './handlers/click-rail';\nimport dragThumb from './handlers/drag-thumb';\nimport keyboard from './handlers/keyboard';\nimport wheel from './handlers/mouse-wheel';\nimport touch from './handlers/touch';\n\nconst defaultSettings = () => ({\n  handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n  maxScrollbarLength: null,\n  minScrollbarLength: null,\n  scrollingThreshold: 1000,\n  scrollXMarginOffset: 0,\n  scrollYMarginOffset: 0,\n  suppressScrollX: false,\n  suppressScrollY: false,\n  swipeEasing: true,\n  useBothWheelAxes: false,\n  wheelPropagation: true,\n  wheelSpeed: 1,\n});\n\nconst handlers = {\n  'click-rail': clickRail,\n  'drag-thumb': dragThumb,\n  keyboard,\n  wheel,\n  touch,\n};\n\nexport default class PerfectScrollbar {\n  constructor(element, userSettings = {}) {\n    if (typeof element === 'string') {\n      element = document.querySelector(element);\n    }\n\n    if (!element || !element.nodeName) {\n      throw new Error('no element is specified to initialize PerfectScrollbar');\n    }\n\n    this.element = element;\n\n    element.classList.add(cls.main);\n\n    this.settings = defaultSettings();\n    for (const key in userSettings) {\n      this.settings[key] = userSettings[key];\n    }\n\n    this.containerWidth = null;\n    this.containerHeight = null;\n    this.contentWidth = null;\n    this.contentHeight = null;\n\n    const focus = () => element.classList.add(cls.state.focus);\n    const blur = () => element.classList.remove(cls.state.focus);\n\n    this.isRtl = CSS.get(element).direction === 'rtl';\n    if (this.isRtl === true) {\n      element.classList.add(cls.rtl);\n    }\n    this.isNegativeScroll = (() => {\n      const originalScrollLeft = element.scrollLeft;\n      let result = null;\n      element.scrollLeft = -1;\n      result = element.scrollLeft < 0;\n      element.scrollLeft = originalScrollLeft;\n      return result;\n    })();\n    this.negativeScrollAdjustment = this.isNegativeScroll\n      ? element.scrollWidth - element.clientWidth\n      : 0;\n    this.event = new EventManager();\n    this.ownerDocument = element.ownerDocument || document;\n\n    this.scrollbarXRail = DOM.div(cls.element.rail('x'));\n    element.appendChild(this.scrollbarXRail);\n    this.scrollbarX = DOM.div(cls.element.thumb('x'));\n    this.scrollbarXRail.appendChild(this.scrollbarX);\n    this.scrollbarX.setAttribute('tabindex', 0);\n    this.event.bind(this.scrollbarX, 'focus', focus);\n    this.event.bind(this.scrollbarX, 'blur', blur);\n    this.scrollbarXActive = null;\n    this.scrollbarXWidth = null;\n    this.scrollbarXLeft = null;\n    const railXStyle = CSS.get(this.scrollbarXRail);\n    this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n    if (isNaN(this.scrollbarXBottom)) {\n      this.isScrollbarXUsingBottom = false;\n      this.scrollbarXTop = toInt(railXStyle.top);\n    } else {\n      this.isScrollbarXUsingBottom = true;\n    }\n    this.railBorderXWidth =\n      toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n    // Set rail to display:block to calculate margins\n    CSS.set(this.scrollbarXRail, { display: 'block' });\n    this.railXMarginWidth =\n      toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n    CSS.set(this.scrollbarXRail, { display: '' });\n    this.railXWidth = null;\n    this.railXRatio = null;\n\n    this.scrollbarYRail = DOM.div(cls.element.rail('y'));\n    element.appendChild(this.scrollbarYRail);\n    this.scrollbarY = DOM.div(cls.element.thumb('y'));\n    this.scrollbarYRail.appendChild(this.scrollbarY);\n    this.scrollbarY.setAttribute('tabindex', 0);\n    this.event.bind(this.scrollbarY, 'focus', focus);\n    this.event.bind(this.scrollbarY, 'blur', blur);\n    this.scrollbarYActive = null;\n    this.scrollbarYHeight = null;\n    this.scrollbarYTop = null;\n    const railYStyle = CSS.get(this.scrollbarYRail);\n    this.scrollbarYRight = parseInt(railYStyle.right, 10);\n    if (isNaN(this.scrollbarYRight)) {\n      this.isScrollbarYUsingRight = false;\n      this.scrollbarYLeft = toInt(railYStyle.left);\n    } else {\n      this.isScrollbarYUsingRight = true;\n    }\n    this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n    this.railBorderYWidth =\n      toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n    CSS.set(this.scrollbarYRail, { display: 'block' });\n    this.railYMarginHeight =\n      toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n    CSS.set(this.scrollbarYRail, { display: '' });\n    this.railYHeight = null;\n    this.railYRatio = null;\n\n    this.reach = {\n      x:\n        element.scrollLeft <= 0\n          ? 'start'\n          : element.scrollLeft >= this.contentWidth - this.containerWidth\n          ? 'end'\n          : null,\n      y:\n        element.scrollTop <= 0\n          ? 'start'\n          : element.scrollTop >= this.contentHeight - this.containerHeight\n          ? 'end'\n          : null,\n    };\n\n    this.isAlive = true;\n\n    this.settings.handlers.forEach(handlerName => handlers[handlerName](this));\n\n    this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n    this.lastScrollLeft = element.scrollLeft; // for onScroll only\n    this.event.bind(this.element, 'scroll', e => this.onScroll(e));\n    updateGeometry(this);\n  }\n\n  update() {\n    if (!this.isAlive) {\n      return;\n    }\n\n    // Recalcuate negative scrollLeft adjustment\n    this.negativeScrollAdjustment = this.isNegativeScroll\n      ? this.element.scrollWidth - this.element.clientWidth\n      : 0;\n\n    // Recalculate rail margins\n    CSS.set(this.scrollbarXRail, { display: 'block' });\n    CSS.set(this.scrollbarYRail, { display: 'block' });\n    this.railXMarginWidth =\n      toInt(CSS.get(this.scrollbarXRail).marginLeft) +\n      toInt(CSS.get(this.scrollbarXRail).marginRight);\n    this.railYMarginHeight =\n      toInt(CSS.get(this.scrollbarYRail).marginTop) +\n      toInt(CSS.get(this.scrollbarYRail).marginBottom);\n\n    // Hide scrollbars not to affect scrollWidth and scrollHeight\n    CSS.set(this.scrollbarXRail, { display: 'none' });\n    CSS.set(this.scrollbarYRail, { display: 'none' });\n\n    updateGeometry(this);\n\n    processScrollDiff(this, 'top', 0, false, true);\n    processScrollDiff(this, 'left', 0, false, true);\n\n    CSS.set(this.scrollbarXRail, { display: '' });\n    CSS.set(this.scrollbarYRail, { display: '' });\n  }\n\n  onScroll(e) {\n    if (!this.isAlive) {\n      return;\n    }\n\n    updateGeometry(this);\n    processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n    processScrollDiff(\n      this,\n      'left',\n      this.element.scrollLeft - this.lastScrollLeft\n    );\n\n    this.lastScrollTop = Math.floor(this.element.scrollTop);\n    this.lastScrollLeft = this.element.scrollLeft;\n  }\n\n  destroy() {\n    if (!this.isAlive) {\n      return;\n    }\n\n    this.event.unbindAll();\n    DOM.remove(this.scrollbarX);\n    DOM.remove(this.scrollbarY);\n    DOM.remove(this.scrollbarXRail);\n    DOM.remove(this.scrollbarYRail);\n    this.removePsClasses();\n\n    // unset elements\n    this.element = null;\n    this.scrollbarX = null;\n    this.scrollbarY = null;\n    this.scrollbarXRail = null;\n    this.scrollbarYRail = null;\n\n    this.isAlive = false;\n  }\n\n  removePsClasses() {\n    this.element.className = this.element.className\n      .split(' ')\n      .filter(name => !name.match(/^ps([-_].+|)$/))\n      .join(' ');\n  }\n}\n","import updateGeometry from '../update-geometry';\n\nexport default function(i) {\n  const element = i.element;\n\n  i.event.bind(i.scrollbarY, 'mousedown', e => e.stopPropagation());\n  i.event.bind(i.scrollbarYRail, 'mousedown', e => {\n    const positionTop =\n      e.pageY -\n      window.pageYOffset -\n      i.scrollbarYRail.getBoundingClientRect().top;\n    const direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n    i.element.scrollTop += direction * i.containerHeight;\n    updateGeometry(i);\n\n    e.stopPropagation();\n  });\n\n  i.event.bind(i.scrollbarX, 'mousedown', e => e.stopPropagation());\n  i.event.bind(i.scrollbarXRail, 'mousedown', e => {\n    const positionLeft =\n      e.pageX -\n      window.pageXOffset -\n      i.scrollbarXRail.getBoundingClientRect().left;\n    const direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n    i.element.scrollLeft += direction * i.containerWidth;\n    updateGeometry(i);\n\n    e.stopPropagation();\n  });\n}\n","import * as DOM from '../lib/dom';\nimport updateGeometry from '../update-geometry';\nimport { isEditable } from '../lib/util';\n\nexport default function(i) {\n  const element = i.element;\n\n  const elementHovered = () => DOM.matches(element, ':hover');\n  const scrollbarFocused = () =>\n    DOM.matches(i.scrollbarX, ':focus') || DOM.matches(i.scrollbarY, ':focus');\n\n  function shouldPreventDefault(deltaX, deltaY) {\n    const scrollTop = Math.floor(element.scrollTop);\n    if (deltaX === 0) {\n      if (!i.scrollbarYActive) {\n        return false;\n      }\n      if (\n        (scrollTop === 0 && deltaY > 0) ||\n        (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n      ) {\n        return !i.settings.wheelPropagation;\n      }\n    }\n\n    const scrollLeft = element.scrollLeft;\n    if (deltaY === 0) {\n      if (!i.scrollbarXActive) {\n        return false;\n      }\n      if (\n        (scrollLeft === 0 && deltaX < 0) ||\n        (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n      ) {\n        return !i.settings.wheelPropagation;\n      }\n    }\n    return true;\n  }\n\n  i.event.bind(i.ownerDocument, 'keydown', e => {\n    if (\n      (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n      e.defaultPrevented\n    ) {\n      return;\n    }\n\n    if (!elementHovered() && !scrollbarFocused()) {\n      return;\n    }\n\n    let activeElement = document.activeElement\n      ? document.activeElement\n      : i.ownerDocument.activeElement;\n    if (activeElement) {\n      if (activeElement.tagName === 'IFRAME') {\n        activeElement = activeElement.contentDocument.activeElement;\n      } else {\n        // go deeper if element is a webcomponent\n        while (activeElement.shadowRoot) {\n          activeElement = activeElement.shadowRoot.activeElement;\n        }\n      }\n      if (isEditable(activeElement)) {\n        return;\n      }\n    }\n\n    let deltaX = 0;\n    let deltaY = 0;\n\n    switch (e.which) {\n      case 37: // left\n        if (e.metaKey) {\n          deltaX = -i.contentWidth;\n        } else if (e.altKey) {\n          deltaX = -i.containerWidth;\n        } else {\n          deltaX = -30;\n        }\n        break;\n      case 38: // up\n        if (e.metaKey) {\n          deltaY = i.contentHeight;\n        } else if (e.altKey) {\n          deltaY = i.containerHeight;\n        } else {\n          deltaY = 30;\n        }\n        break;\n      case 39: // right\n        if (e.metaKey) {\n          deltaX = i.contentWidth;\n        } else if (e.altKey) {\n          deltaX = i.containerWidth;\n        } else {\n          deltaX = 30;\n        }\n        break;\n      case 40: // down\n        if (e.metaKey) {\n          deltaY = -i.contentHeight;\n        } else if (e.altKey) {\n          deltaY = -i.containerHeight;\n        } else {\n          deltaY = -30;\n        }\n        break;\n      case 32: // space bar\n        if (e.shiftKey) {\n          deltaY = i.containerHeight;\n        } else {\n          deltaY = -i.containerHeight;\n        }\n        break;\n      case 33: // page up\n        deltaY = i.containerHeight;\n        break;\n      case 34: // page down\n        deltaY = -i.containerHeight;\n        break;\n      case 36: // home\n        deltaY = i.contentHeight;\n        break;\n      case 35: // end\n        deltaY = -i.contentHeight;\n        break;\n      default:\n        return;\n    }\n\n    if (i.settings.suppressScrollX && deltaX !== 0) {\n      return;\n    }\n    if (i.settings.suppressScrollY && deltaY !== 0) {\n      return;\n    }\n\n    element.scrollTop -= deltaY;\n    element.scrollLeft += deltaX;\n    updateGeometry(i);\n\n    if (shouldPreventDefault(deltaX, deltaY)) {\n      e.preventDefault();\n    }\n  });\n}\n","import * as CSS from '../lib/css';\nimport cls from '../lib/class-names';\nimport updateGeometry from '../update-geometry';\nimport { env } from '../lib/util';\n\nexport default function(i) {\n  const element = i.element;\n\n  let shouldPrevent = false;\n\n  function shouldPreventDefault(deltaX, deltaY) {\n    const roundedScrollTop = Math.floor(element.scrollTop);\n    const isTop = element.scrollTop === 0;\n    const isBottom =\n      roundedScrollTop + element.offsetHeight === element.scrollHeight;\n    const isLeft = element.scrollLeft === 0;\n    const isRight =\n      element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n    let hitsBound;\n\n    // pick axis with primary direction\n    if (Math.abs(deltaY) > Math.abs(deltaX)) {\n      hitsBound = isTop || isBottom;\n    } else {\n      hitsBound = isLeft || isRight;\n    }\n\n    return hitsBound ? !i.settings.wheelPropagation : true;\n  }\n\n  function getDeltaFromEvent(e) {\n    let deltaX = e.deltaX;\n    let deltaY = -1 * e.deltaY;\n\n    if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n      // OS X Safari\n      deltaX = (-1 * e.wheelDeltaX) / 6;\n      deltaY = e.wheelDeltaY / 6;\n    }\n\n    if (e.deltaMode && e.deltaMode === 1) {\n      // Firefox in deltaMode 1: Line scrolling\n      deltaX *= 10;\n      deltaY *= 10;\n    }\n\n    if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n      // IE in some mouse drivers\n      deltaX = 0;\n      deltaY = e.wheelDelta;\n    }\n\n    if (e.shiftKey) {\n      // reverse axis with shift key\n      return [-deltaY, -deltaX];\n    }\n    return [deltaX, deltaY];\n  }\n\n  function shouldBeConsumedByChild(target, deltaX, deltaY) {\n    // FIXME: this is a workaround for <select> issue in FF and IE #571\n    if (!env.isWebKit && element.querySelector('select:focus')) {\n      return true;\n    }\n\n    if (!element.contains(target)) {\n      return false;\n    }\n\n    let cursor = target;\n\n    while (cursor && cursor !== element) {\n      if (cursor.classList.contains(cls.element.consuming)) {\n        return true;\n      }\n\n      const style = CSS.get(cursor);\n\n      // if deltaY && vertical scrollable\n      if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n        const maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n        if (maxScrollTop > 0) {\n          if (\n            (cursor.scrollTop > 0 && deltaY < 0) ||\n            (cursor.scrollTop < maxScrollTop && deltaY > 0)\n          ) {\n            return true;\n          }\n        }\n      }\n      // if deltaX && horizontal scrollable\n      if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n        const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n        if (maxScrollLeft > 0) {\n          if (\n            (cursor.scrollLeft > 0 && deltaX < 0) ||\n            (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n          ) {\n            return true;\n          }\n        }\n      }\n\n      cursor = cursor.parentNode;\n    }\n\n    return false;\n  }\n\n  function mousewheelHandler(e) {\n    const [deltaX, deltaY] = getDeltaFromEvent(e);\n\n    if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n      return;\n    }\n\n    let shouldPrevent = false;\n    if (!i.settings.useBothWheelAxes) {\n      // deltaX will only be used for horizontal scrolling and deltaY will\n      // only be used for vertical scrolling - this is the default\n      element.scrollTop -= deltaY * i.settings.wheelSpeed;\n      element.scrollLeft += deltaX * i.settings.wheelSpeed;\n    } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n      // only vertical scrollbar is active and useBothWheelAxes option is\n      // active, so let's scroll vertical bar using both mouse wheel axes\n      if (deltaY) {\n        element.scrollTop -= deltaY * i.settings.wheelSpeed;\n      } else {\n        element.scrollTop += deltaX * i.settings.wheelSpeed;\n      }\n      shouldPrevent = true;\n    } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n      // useBothWheelAxes and only horizontal bar is active, so use both\n      // wheel axes for horizontal bar\n      if (deltaX) {\n        element.scrollLeft += deltaX * i.settings.wheelSpeed;\n      } else {\n        element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n      }\n      shouldPrevent = true;\n    }\n\n    updateGeometry(i);\n\n    shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n    if (shouldPrevent && !e.ctrlKey) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n  }\n\n  if (typeof window.onwheel !== 'undefined') {\n    i.event.bind(element, 'wheel', mousewheelHandler);\n  } else if (typeof window.onmousewheel !== 'undefined') {\n    i.event.bind(element, 'mousewheel', mousewheelHandler);\n  }\n}\n","import updateGeometry from '../update-geometry';\nimport cls from '../lib/class-names';\nimport * as CSS from '../lib/css';\nimport { env } from '../lib/util';\n\nexport default function(i) {\n  if (!env.supportsTouch && !env.supportsIePointer) {\n    return;\n  }\n\n  const element = i.element;\n\n  function shouldPrevent(deltaX, deltaY) {\n    const scrollTop = Math.floor(element.scrollTop);\n    const scrollLeft = element.scrollLeft;\n    const magnitudeX = Math.abs(deltaX);\n    const magnitudeY = Math.abs(deltaY);\n\n    if (magnitudeY > magnitudeX) {\n      // user is perhaps trying to swipe up/down the page\n\n      if (\n        (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n        (deltaY > 0 && scrollTop === 0)\n      ) {\n        // set prevent for mobile Chrome refresh\n        return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n      }\n    } else if (magnitudeX > magnitudeY) {\n      // user is perhaps trying to swipe left/right across the page\n\n      if (\n        (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n        (deltaX > 0 && scrollLeft === 0)\n      ) {\n        return true;\n      }\n    }\n\n    return true;\n  }\n\n  function applyTouchMove(differenceX, differenceY) {\n    element.scrollTop -= differenceY;\n    element.scrollLeft -= differenceX;\n\n    updateGeometry(i);\n  }\n\n  let startOffset = {};\n  let startTime = 0;\n  let speed = {};\n  let easingLoop = null;\n\n  function getTouch(e) {\n    if (e.targetTouches) {\n      return e.targetTouches[0];\n    } else {\n      // Maybe IE pointer\n      return e;\n    }\n  }\n\n  function shouldHandle(e) {\n    if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n      return false;\n    }\n    if (e.targetTouches && e.targetTouches.length === 1) {\n      return true;\n    }\n    if (\n      e.pointerType &&\n      e.pointerType !== 'mouse' &&\n      e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n    ) {\n      return true;\n    }\n    return false;\n  }\n\n  function touchStart(e) {\n    if (!shouldHandle(e)) {\n      return;\n    }\n\n    const touch = getTouch(e);\n\n    startOffset.pageX = touch.pageX;\n    startOffset.pageY = touch.pageY;\n\n    startTime = new Date().getTime();\n\n    if (easingLoop !== null) {\n      clearInterval(easingLoop);\n    }\n  }\n\n  function shouldBeConsumedByChild(target, deltaX, deltaY) {\n    if (!element.contains(target)) {\n      return false;\n    }\n\n    let cursor = target;\n\n    while (cursor && cursor !== element) {\n      if (cursor.classList.contains(cls.element.consuming)) {\n        return true;\n      }\n\n      const style = CSS.get(cursor);\n\n      // if deltaY && vertical scrollable\n      if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n        const maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n        if (maxScrollTop > 0) {\n          if (\n            (cursor.scrollTop > 0 && deltaY < 0) ||\n            (cursor.scrollTop < maxScrollTop && deltaY > 0)\n          ) {\n            return true;\n          }\n        }\n      }\n      // if deltaX && horizontal scrollable\n      if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n        const maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n        if (maxScrollLeft > 0) {\n          if (\n            (cursor.scrollLeft > 0 && deltaX < 0) ||\n            (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n          ) {\n            return true;\n          }\n        }\n      }\n\n      cursor = cursor.parentNode;\n    }\n\n    return false;\n  }\n\n  function touchMove(e) {\n    if (shouldHandle(e)) {\n      const touch = getTouch(e);\n\n      const currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n      const differenceX = currentOffset.pageX - startOffset.pageX;\n      const differenceY = currentOffset.pageY - startOffset.pageY;\n\n      if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n        return;\n      }\n\n      applyTouchMove(differenceX, differenceY);\n      startOffset = currentOffset;\n\n      const currentTime = new Date().getTime();\n\n      const timeGap = currentTime - startTime;\n      if (timeGap > 0) {\n        speed.x = differenceX / timeGap;\n        speed.y = differenceY / timeGap;\n        startTime = currentTime;\n      }\n\n      if (shouldPrevent(differenceX, differenceY)) {\n        e.preventDefault();\n      }\n    }\n  }\n  function touchEnd() {\n    if (i.settings.swipeEasing) {\n      clearInterval(easingLoop);\n      easingLoop = setInterval(function() {\n        if (i.isInitialized) {\n          clearInterval(easingLoop);\n          return;\n        }\n\n        if (!speed.x && !speed.y) {\n          clearInterval(easingLoop);\n          return;\n        }\n\n        if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n          clearInterval(easingLoop);\n          return;\n        }\n\n        if (!i.element) {\n          clearInterval(easingLoop);\n          return;\n        }\n\n        applyTouchMove(speed.x * 30, speed.y * 30);\n\n        speed.x *= 0.8;\n        speed.y *= 0.8;\n      }, 10);\n    }\n  }\n\n  if (env.supportsTouch) {\n    i.event.bind(element, 'touchstart', touchStart);\n    i.event.bind(element, 'touchmove', touchMove);\n    i.event.bind(element, 'touchend', touchEnd);\n  } else if (env.supportsIePointer) {\n    if (window.PointerEvent) {\n      i.event.bind(element, 'pointerdown', touchStart);\n      i.event.bind(element, 'pointermove', touchMove);\n      i.event.bind(element, 'pointerup', touchEnd);\n    } else if (window.MSPointerEvent) {\n      i.event.bind(element, 'MSPointerDown', touchStart);\n      i.event.bind(element, 'MSPointerMove', touchMove);\n      i.event.bind(element, 'MSPointerUp', touchEnd);\n    }\n  }\n}\n","!function(n,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).LazyLoad=t()}(this,(function(){\"use strict\";function n(){return n=Object.assign||function(n){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(n[i]=e[i])}return n},n.apply(this,arguments)}var t=\"undefined\"!=typeof window,e=t&&!(\"onscroll\"in window)||\"undefined\"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),i=t&&\"IntersectionObserver\"in window,o=t&&\"classList\"in document.createElement(\"p\"),a=t&&window.devicePixelRatio>1,r={elements_selector:\".lazy\",container:e||t?document:null,threshold:300,thresholds:null,data_src:\"src\",data_srcset:\"srcset\",data_sizes:\"sizes\",data_bg:\"bg\",data_bg_hidpi:\"bg-hidpi\",data_bg_multi:\"bg-multi\",data_bg_multi_hidpi:\"bg-multi-hidpi\",data_bg_set:\"bg-set\",data_poster:\"poster\",class_applied:\"applied\",class_loading:\"loading\",class_loaded:\"loaded\",class_error:\"error\",class_entered:\"entered\",class_exited:\"exited\",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},c=function(t){return n({},r,t)},l=function(n,t){var e,i=\"LazyLoad::Initialized\",o=new n(t);try{e=new CustomEvent(i,{detail:{instance:o}})}catch(n){(e=document.createEvent(\"CustomEvent\")).initCustomEvent(i,!1,!1,{instance:o})}window.dispatchEvent(e)},u=\"src\",s=\"srcset\",d=\"sizes\",f=\"poster\",_=\"llOriginalAttrs\",g=\"data\",v=\"loading\",b=\"loaded\",m=\"applied\",p=\"error\",h=\"native\",E=\"data-\",I=\"ll-status\",y=function(n,t){return n.getAttribute(E+t)},k=function(n){return y(n,I)},w=function(n,t){return function(n,t,e){var i=\"data-ll-status\";null!==e?n.setAttribute(i,e):n.removeAttribute(i)}(n,0,t)},A=function(n){return w(n,null)},L=function(n){return null===k(n)},O=function(n){return k(n)===h},x=[v,b,m,p],C=function(n,t,e,i){n&&(void 0===i?void 0===e?n(t):n(t,e):n(t,e,i))},N=function(n,t){o?n.classList.add(t):n.className+=(n.className?\" \":\"\")+t},M=function(n,t){o?n.classList.remove(t):n.className=n.className.replace(new RegExp(\"(^|\\\\s+)\"+t+\"(\\\\s+|$)\"),\" \").replace(/^\\s+/,\"\").replace(/\\s+$/,\"\")},z=function(n){return n.llTempImage},T=function(n,t){if(t){var e=t._observer;e&&e.unobserve(n)}},R=function(n,t){n&&(n.loadingCount+=t)},G=function(n,t){n&&(n.toLoadCount=t)},j=function(n){for(var t,e=[],i=0;t=n.children[i];i+=1)\"SOURCE\"===t.tagName&&e.push(t);return e},D=function(n,t){var e=n.parentNode;e&&\"PICTURE\"===e.tagName&&j(e).forEach(t)},H=function(n,t){j(n).forEach(t)},V=[u],F=[u,f],B=[u,s,d],J=[g],P=function(n){return!!n[_]},S=function(n){return n[_]},U=function(n){return delete n[_]},$=function(n,t){if(!P(n)){var e={};t.forEach((function(t){e[t]=n.getAttribute(t)})),n[_]=e}},q=function(n,t){if(P(n)){var e=S(n);t.forEach((function(t){!function(n,t,e){e?n.setAttribute(t,e):n.removeAttribute(t)}(n,t,e[t])}))}},K=function(n,t,e){N(n,t.class_applied),w(n,m),e&&(t.unobserve_completed&&T(n,t),C(t.callback_applied,n,e))},Q=function(n,t,e){N(n,t.class_loading),w(n,v),e&&(R(e,1),C(t.callback_loading,n,e))},W=function(n,t,e){e&&n.setAttribute(t,e)},X=function(n,t){W(n,d,y(n,t.data_sizes)),W(n,s,y(n,t.data_srcset)),W(n,u,y(n,t.data_src))},Y={IMG:function(n,t){D(n,(function(n){$(n,B),X(n,t)})),$(n,B),X(n,t)},IFRAME:function(n,t){$(n,V),W(n,u,y(n,t.data_src))},VIDEO:function(n,t){H(n,(function(n){$(n,V),W(n,u,y(n,t.data_src))})),$(n,F),W(n,f,y(n,t.data_poster)),W(n,u,y(n,t.data_src)),n.load()},OBJECT:function(n,t){$(n,J),W(n,g,y(n,t.data_src))}},Z=[\"IMG\",\"IFRAME\",\"VIDEO\",\"OBJECT\"],nn=function(n,t){!t||function(n){return n.loadingCount>0}(t)||function(n){return n.toLoadCount>0}(t)||C(n.callback_finish,t)},tn=function(n,t,e){n.addEventListener(t,e),n.llEvLisnrs[t]=e},en=function(n,t,e){n.removeEventListener(t,e)},on=function(n){return!!n.llEvLisnrs},an=function(n){if(on(n)){var t=n.llEvLisnrs;for(var e in t){var i=t[e];en(n,e,i)}delete n.llEvLisnrs}},rn=function(n,t,e){!function(n){delete n.llTempImage}(n),R(e,-1),function(n){n&&(n.toLoadCount-=1)}(e),M(n,t.class_loading),t.unobserve_completed&&T(n,e)},cn=function(n,t,e){var i=z(n)||n;on(i)||function(n,t,e){on(n)||(n.llEvLisnrs={});var i=\"VIDEO\"===n.tagName?\"loadeddata\":\"load\";tn(n,i,t),tn(n,\"error\",e)}(i,(function(o){!function(n,t,e,i){var o=O(t);rn(t,e,i),N(t,e.class_loaded),w(t,b),C(e.callback_loaded,t,i),o||nn(e,i)}(0,n,t,e),an(i)}),(function(o){!function(n,t,e,i){var o=O(t);rn(t,e,i),N(t,e.class_error),w(t,p),C(e.callback_error,t,i),e.restore_on_error&&q(t,B),o||nn(e,i)}(0,n,t,e),an(i)}))},ln=function(n,t,e){!function(n){return Z.indexOf(n.tagName)>-1}(n)?function(n,t,e){!function(n){n.llTempImage=document.createElement(\"IMG\")}(n),cn(n,t,e),function(n){P(n)||(n[_]={backgroundImage:n.style.backgroundImage})}(n),function(n,t,e){var i=y(n,t.data_bg),o=y(n,t.data_bg_hidpi),r=a&&o?o:i;r&&(n.style.backgroundImage='url(\"'.concat(r,'\")'),z(n).setAttribute(u,r),Q(n,t,e))}(n,t,e),function(n,t,e){var i=y(n,t.data_bg_multi),o=y(n,t.data_bg_multi_hidpi),r=a&&o?o:i;r&&(n.style.backgroundImage=r,K(n,t,e))}(n,t,e),function(n,t,e){var i=y(n,t.data_bg_set);if(i){var o=i.split(\"|\"),a=o.map((function(n){return\"image-set(\".concat(n,\")\")}));n.style.backgroundImage=a.join(),\"\"===n.style.backgroundImage&&(a=o.map((function(n){return\"-webkit-image-set(\".concat(n,\")\")})),n.style.backgroundImage=a.join()),K(n,t,e)}}(n,t,e)}(n,t,e):function(n,t,e){cn(n,t,e),function(n,t,e){var i=Y[n.tagName];i&&(i(n,t),Q(n,t,e))}(n,t,e)}(n,t,e)},un=function(n){n.removeAttribute(u),n.removeAttribute(s),n.removeAttribute(d)},sn=function(n){D(n,(function(n){q(n,B)})),q(n,B)},dn={IMG:sn,IFRAME:function(n){q(n,V)},VIDEO:function(n){H(n,(function(n){q(n,V)})),q(n,F),n.load()},OBJECT:function(n){q(n,J)}},fn=function(n,t){(function(n){var t=dn[n.tagName];t?t(n):function(n){if(P(n)){var t=S(n);n.style.backgroundImage=t.backgroundImage}}(n)})(n),function(n,t){L(n)||O(n)||(M(n,t.class_entered),M(n,t.class_exited),M(n,t.class_applied),M(n,t.class_loading),M(n,t.class_loaded),M(n,t.class_error))}(n,t),A(n),U(n)},_n=[\"IMG\",\"IFRAME\",\"VIDEO\"],gn=function(n){return n.use_native&&\"loading\"in HTMLImageElement.prototype},vn=function(n,t,e){n.forEach((function(n){return function(n){return n.isIntersecting||n.intersectionRatio>0}(n)?function(n,t,e,i){var o=function(n){return x.indexOf(k(n))>=0}(n);w(n,\"entered\"),N(n,e.class_entered),M(n,e.class_exited),function(n,t,e){t.unobserve_entered&&T(n,e)}(n,e,i),C(e.callback_enter,n,t,i),o||ln(n,e,i)}(n.target,n,t,e):function(n,t,e,i){L(n)||(N(n,e.class_exited),function(n,t,e,i){e.cancel_on_exit&&function(n){return k(n)===v}(n)&&\"IMG\"===n.tagName&&(an(n),function(n){D(n,(function(n){un(n)})),un(n)}(n),sn(n),M(n,e.class_loading),R(i,-1),A(n),C(e.callback_cancel,n,t,i))}(n,t,e,i),C(e.callback_exit,n,t,i))}(n.target,n,t,e)}))},bn=function(n){return Array.prototype.slice.call(n)},mn=function(n){return n.container.querySelectorAll(n.elements_selector)},pn=function(n){return function(n){return k(n)===p}(n)},hn=function(n,t){return function(n){return bn(n).filter(L)}(n||mn(t))},En=function(n,e){var o=c(n);this._settings=o,this.loadingCount=0,function(n,t){i&&!gn(n)&&(t._observer=new IntersectionObserver((function(e){vn(e,n,t)}),function(n){return{root:n.container===document?null:n.container,rootMargin:n.thresholds||n.threshold+\"px\"}}(n)))}(o,this),function(n,e){t&&(e._onlineHandler=function(){!function(n,t){var e;(e=mn(n),bn(e).filter(pn)).forEach((function(t){M(t,n.class_error),A(t)})),t.update()}(n,e)},window.addEventListener(\"online\",e._onlineHandler))}(o,this),this.update(e)};return En.prototype={update:function(n){var t,o,a=this._settings,r=hn(n,a);G(this,r.length),!e&&i?gn(a)?function(n,t,e){n.forEach((function(n){-1!==_n.indexOf(n.tagName)&&function(n,t,e){n.setAttribute(\"loading\",\"lazy\"),cn(n,t,e),function(n,t){var e=Y[n.tagName];e&&e(n,t)}(n,t),w(n,h)}(n,t,e)})),G(e,0)}(r,a,this):(o=r,function(n){n.disconnect()}(t=this._observer),function(n,t){t.forEach((function(t){n.observe(t)}))}(t,o)):this.loadAll(r)},destroy:function(){this._observer&&this._observer.disconnect(),t&&window.removeEventListener(\"online\",this._onlineHandler),mn(this._settings).forEach((function(n){U(n)})),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(n){var t=this,e=this._settings;hn(n,e).forEach((function(n){T(n,t),ln(n,e,t)}))},restoreAll:function(){var n=this._settings;mn(n).forEach((function(t){fn(t,n)}))}},En.load=function(n,t){var e=c(t);ln(n,e)},En.resetStatus=function(n){A(n)},t&&function(n,t){if(t)if(t.length)for(var e,i=0;e=t[i];i+=1)l(n,e);else l(n,t)}(En,window.lazyLoadOptions),En}));\n","/*\n * Copyright 2018 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/* eslint-disable */\n\nmodule.exports = function main($) {\n\n  const htl = $.globals;\n  let data = $.globals[\"data\"];\n\n  let render;\n  render = function* _template_global_render(args) { \n    let uniqueid = args[1]['uniqueId'] || '';\n    let extraclasses = args[1]['extraClasses'] || '';\n    let text = args[1]['text'] || '';\n    let textisrich = args[1]['textIsRich'] || '';\n    let nostyling = args[1]['noStyling'] || '';\n    let addcontainer = args[1]['addContainer'] || '';\n    let $t, $n = args[0];\n    $.dom.text($n,\"\\n    \");\n    $t = $.dom.create(\"div\",false,false);\n    const var_attrValue1 = (\"rt001-richtext \") + (extraclasses) + (\" \") + (nostyling ? \"\" : \"rt001-richtext--styling\") + (\" \") + (addcontainer ? \"rt001-richtext--container\" : \"\");\n    if (!$.col.empty(var_attrValue1)) {\n      $.dom.attr($t, 'class', var_attrValue1, 'attribute');\n    }\n    $.dom.attr($t, 'data-component', null, 'attribute');\n    const var_attrValue_id0 = uniqueid;\n    if (!$.col.empty(var_attrValue_id0)) {\n      $.dom.attr($t, 'id', var_attrValue_id0, 'attribute');\n    }\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n        \");\n    const var_unwrapcondition2 = textisrich;\n    if (!var_unwrapcondition2) {\n      $t = $.dom.create(\"p\",false,false);\n      $n = $.dom.push($n,$t);\n    }\n    const var_3 = yield $.xss(text, \"html\");\n    $.dom.append($n, var_3);\n    if (!var_unwrapcondition2) {\n      $n = $.dom.pop($n);\n    }\n    $.dom.text($n,\"\\n    \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n\");\n  };\n  $.template('global', 'render', render);\n\n  return $.run(function* () {\n    let $t, $n = $.dom.start();\n    $.dom.text($n,\"\\n\");\n    return $.dom.end();\n\n  });\n};\n","/*\n * Copyright 2018 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/* eslint-disable */\n\nmodule.exports = function main($) {\n\n  const htl = $.globals;\n  let data = $.globals[\"data\"];\n\n  let render;\n  render = function* _template_global_render(args) { \n    let uniqueid = args[1]['uniqueId'] || '';\n    let extraclasses = args[1]['extraClasses'] || '';\n    let label = args[1]['label'] || '';\n    let name = args[1]['name'] || '';\n    let icon = args[1]['icon'] || '';\n    let link = args[1]['link'] || '';\n    let ctacolor = args[1]['ctaColor'] || '';\n    let ctatextcolor = args[1]['ctaTextColor'] || '';\n    let ctahovercolor = args[1]['ctaHoverColor'] || '';\n    let variant = args[1]['variant'] || '';\n    let type = args[1]['type'] || '';\n    let size = args[1]['size'] || '';\n    let status = args[1]['status'] || '';\n    let enabledtype = args[1]['enabledType'] || '';\n    let semantictype = args[1]['semanticType'] || '';\n    let socialtype = args[1]['socialType'] || '';\n    let arialabel = args[1]['ariaLabel'] || '';\n    let $t, $n = args[0];\n    $.dom.text($n,\"\\n\\n    \");\n    const ctaid = $.exec(\"format\", uniqueid ? \"{0}-cta\" : \"{1}\", {\"format\": [uniqueid, \"\"], });\n    if (ctaid) {\n    }\n    $.dom.text($n,\"\\n    \");\n    const variantclass = $.exec(\"format\", \"rt002-cta-{0}\", {\"format\": [(variant) || (\"primary\")], });\n    if (variantclass) {\n    }\n    $.dom.text($n,\"\\n    \");\n    const typeclass = $.exec(\"format\", \"{0}--{1}\", {\"format\": [\"rt002-cta\", (type) || (\"none\")], });\n    if (typeclass) {\n    }\n    $.dom.text($n,\"\\n    \");\n    const sizeclass = $.exec(\"format\", \"{0}--{1}\", {\"format\": [\"rt002-cta\", (size) || (\"medium\")], });\n    if (sizeclass) {\n    }\n    $.dom.text($n,\"\\n    \");\n    const statusclass = $.exec(\"format\", status ? \"{0}--{1}\" : \"{2}\", {\"format\": [variantclass, status, \"\"], });\n    if (statusclass) {\n    }\n    $.dom.text($n,\"\\n    \");\n    const enabledclass = $.exec(\"format\", ((enabledtype) === (\"neutralDark\")) || ((enabledtype) === (\"neutralLight\")) ? \"{0}--{1}\" : \"{2}\", {\"format\": [variantclass, enabledtype, \"\"], });\n    if (enabledclass) {\n    }\n    $.dom.text($n,\"\\n    \");\n    const semanticclass = $.exec(\"format\", ((((semantictype) === (\"1\")) || ((semantictype) === (\"2\"))) || ((semantictype) === (\"3\"))) || ((semantictype) === (\"4\")) ? \"{0}{1}\" : \"{2}\", {\"format\": [variantclass, semantictype, \"\"], });\n    if (semanticclass) {\n    }\n    $.dom.text($n,\"\\n    \");\n    const socialclass = $.exec(\"format\", (((socialtype) === (\"google\")) || ((socialtype) === (\"facebook\"))) || ((socialtype) === (\"apple\")) ? \"{0}--{1}\" : \"{2}\", {\"format\": [variantclass, socialtype, \"\"], });\n    if (socialclass) {\n    }\n    $.dom.text($n,\"\\n    \");\n    const finalclasses = $.exec(\"format\", ((variant) === (\"social\")) && (socialtype) ? \"{0} {1}\" : \"{1} {2} {3} {4} {5}\", {\"format\": [socialclass, sizeclass, typeclass, statusclass, enabledclass, semanticclass], });\n    if (finalclasses) {\n    }\n    $.dom.text($n,\"\\n    \");\n    const ctatextcolorstyle = $.exec(\"format\", \"{0}: {1}\", {\"format\": [\"color\", ctatextcolor], });\n    $.dom.text($n,\"\\n    \");\n    const ctabgcolorstyle = $.exec(\"format\", \"{0}: {1}\", {\"format\": [\"background-color\", ctacolor], });\n    $.dom.text($n,\"\\n    \");\n    $.dom.rem($n,\"TODO: @ context='styleString' in two lines \");\n    $.dom.text($n,\"\\n        \");\n    const var_tagVar4 = yield $.xss(link ? \"a\" : \"button\", \"elementNameNoFallback\");\n    if (var_tagVar4) {\n      $t = $.dom.create(var_tagVar4,false,false);\n    }\n    if (!var_tagVar4) {\n      $t = $.dom.create(\"button\",false,false);\n    }\n    const var_attrMap5 = link;\n    const var_attrName_class7 = \"class\";\n    const var_mapContains_class8 = var_attrMap5[\"class\"];\n    if (!$.col.empty(var_mapContains_class8)) {\n      $.dom.attr($t, var_attrName_class7, var_mapContains_class8, 'attribute');\n    }\n    if ((var_mapContains_class8) == (null)) {\n      const var_attrValue9 = (\"rt002-cta \") + (variantclass) + (\" \") + (finalclasses) + (\" \") + (extraclasses);\n      if (!$.col.empty(var_attrValue9)) {\n        $.dom.attr($t, 'class', var_attrValue9, 'attribute');\n      }\n    }\n    const var_attrName_style10 = \"style\";\n    const var_mapContains_style11 = var_attrMap5[\"style\"];\n    if (!$.col.empty(var_mapContains_style11)) {\n      $.dom.attr($t, var_attrName_style10, var_mapContains_style11, 'attribute');\n    }\n    if ((var_mapContains_style11) == (null)) {\n      const var_attrValue12 = yield $.xss(ctacolor ? ctabgcolorstyle : \"\", \"unsafe\");\n      if (!$.col.empty(var_attrValue12)) {\n        $.dom.attr($t, 'style', var_attrValue12, 'attribute');\n      }\n    }\n    const var_attrName_data_variant13 = \"data-variant\";\n    const var_mapContains_data_variant14 = var_attrMap5[\"data-variant\"];\n    if (!$.col.empty(var_mapContains_data_variant14)) {\n      $.dom.attr($t, var_attrName_data_variant13, var_mapContains_data_variant14, 'attribute');\n    }\n    if ((var_mapContains_data_variant14) == (null)) {\n      const var_attrValue15 = variant;\n      if (!$.col.empty(var_attrValue15)) {\n        $.dom.attr($t, 'data-variant', var_attrValue15, 'attribute');\n      }\n    }\n    const var_attrName_data_status16 = \"data-status\";\n    const var_mapContains_data_status17 = var_attrMap5[\"data-status\"];\n    if (!$.col.empty(var_mapContains_data_status17)) {\n      $.dom.attr($t, var_attrName_data_status16, var_mapContains_data_status17, 'attribute');\n    }\n    if ((var_mapContains_data_status17) == (null)) {\n      const var_attrValue18 = status;\n      if (!$.col.empty(var_attrValue18)) {\n        $.dom.attr($t, 'data-status', var_attrValue18, 'attribute');\n      }\n    }\n    $.dom.attr($t, 'data-component', null, 'attribute');\n    $.dom.attr($t, 'data-lazy-init', null, 'attribute');\n    const var_attrValue_id0 = (link) && (link[\"id\"]) ? link[\"id\"] : ctaid;\n    if (!$.col.empty(var_attrValue_id0)) {\n      $.dom.attr($t, 'id', var_attrValue_id0, 'attribute');\n    }\n    const var_attrValue_cta_hover_color1 = ctahovercolor;\n    if (!$.col.empty(var_attrValue_cta_hover_color1)) {\n      $.dom.attr($t, 'cta-hover-color', var_attrValue_cta_hover_color1, 'attribute');\n    }\n    const var_attrValue_x_ref2 = name;\n    if (!$.col.empty(var_attrValue_x_ref2)) {\n      $.dom.attr($t, 'x-ref', var_attrValue_x_ref2, 'attribute');\n    }\n    const var_attrValue_data_icon3 = icon;\n    if (!$.col.empty(var_attrValue_data_icon3)) {\n      $.dom.attr($t, 'data-icon', var_attrValue_data_icon3, 'attribute');\n    }\n    const var_attrValue_aria_label6 = (arialabel) || (label);\n    if (!$.col.empty(var_attrValue_aria_label6)) {\n      $.dom.attr($t, 'aria-label', var_attrValue_aria_label6, 'attribute');\n    }\n    const var_ignoredAttributes19 = {\"class\": true, \"style\": true, \"data-variant\": true, \"data-status\": true, \"aria-label\": true, \"data-component\": true, \"data-lazy-init\": true, \"id\": true, \"cta-hover-color\": true, \"x-ref\": true, \"data-icon\": true, };\n    for (const var_attrIndex22 of $.col.keys(var_attrMap5)) {\n      const var_attrName20 = $.col.get(var_attrMap5, var_attrIndex22);\n      const var_attrNameEscaped21 = yield $.xss(var_attrName20, \"attributeName\");\n      if (var_attrNameEscaped21) {\n        if (!var_ignoredAttributes19[var_attrName20]) {\n          const var_attrContent23 = var_attrMap5[var_attrName20];\n          if (!$.col.empty(var_attrContent23)) {\n            $.dom.attr($t, var_attrNameEscaped21, var_attrContent23, 'attribute');\n          }\n        }\n      }\n    }\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n            \");\n    const var_testVariable24 = (type) !== (\"right\");\n    if (var_testVariable24) {\n      $t = $.dom.create(\"span\",false,false);\n      const var_attrValue25 = (\"rt002-cta__icon \") + (variantclass) + (\"__icon \") + ((icon) || (\"\"));\n      if (!$.col.empty(var_attrValue25)) {\n        $.dom.attr($t, 'class', var_attrValue25, 'attribute');\n      }\n      const var_attrValue26 = yield $.xss(ctatextcolor ? ctatextcolorstyle : \"\", \"unsafe\");\n      if (!$.col.empty(var_attrValue26)) {\n        $.dom.attr($t, 'style', var_attrValue26, 'attribute');\n      }\n      $n = $.dom.push($n,$t);\n      $n = $.dom.pop($n);\n    }\n    $.dom.text($n,\"\\n            \");\n    $t = $.dom.create(\"span\",false,false);\n    const var_attrValue27 = (\"rt002-cta__label \") + (variantclass) + (\"__label\");\n    if (!$.col.empty(var_attrValue27)) {\n      $.dom.attr($t, 'class', var_attrValue27, 'attribute');\n    }\n    const var_attrValue28 = yield $.xss(ctatextcolor ? ctatextcolorstyle : \"\", \"unsafe\");\n    if (!$.col.empty(var_attrValue28)) {\n      $.dom.attr($t, 'style', var_attrValue28, 'attribute');\n    }\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n                  \");\n    const var_29 = yield $.xss(label, \"html\");\n    $.dom.append($n, var_29);\n    $.dom.text($n,\"\\n            \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n            \");\n    const var_testVariable30 = (type) === (\"right\");\n    if (var_testVariable30) {\n      $t = $.dom.create(\"span\",false,false);\n      const var_attrValue31 = (\"rt002-cta__icon \") + (variantclass) + (\"__icon \") + ((icon) || (\"\"));\n      if (!$.col.empty(var_attrValue31)) {\n        $.dom.attr($t, 'class', var_attrValue31, 'attribute');\n      }\n      const var_attrValue32 = yield $.xss(ctatextcolor ? ctatextcolorstyle : \"\", \"unsafe\");\n      if (!$.col.empty(var_attrValue32)) {\n        $.dom.attr($t, 'style', var_attrValue32, 'attribute');\n      }\n      $n = $.dom.push($n,$t);\n      $n = $.dom.pop($n);\n    }\n    $.dom.text($n,\"\\n        \");\n    if (var_tagVar4) {\n      $n = $.dom.pop($n);\n    }\n    if (!var_tagVar4) {\n      $n = $.dom.pop($n);\n    }\n    $.dom.text($n,\"\\n\\n    \\n\");\n  };\n  $.template('global', 'render', render);\n\n  return $.run(function* () {\n    let $t, $n = $.dom.start();\n    $.dom.text($n,\"\\n\");\n    $.dom.text($n,\"\\n\");\n    return $.dom.end();\n\n  });\n};\n","/*\n * Copyright 2018 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/* eslint-disable */\n\nmodule.exports = function main($) {\n\n  const htl = $.globals;\n  let data = $.globals[\"data\"];\n\n  let render;\n  render = function* _template_global_render(args) { \n    let label = args[1]['label'] || '';\n    let $t, $n = args[0];\n    $.dom.text($n,\"\\n\\n    \");\n    let rt2 = $.template('src/main/webpack/repository/apps/conad-corporate/templates/rt002-cta/rt002-cta.html');\n    $.dom.text($n,\"\\n    \");\n    yield $.call(rt2[\"render\"], [$n, {\"extraClasses\": \"rt061-anchors__anchor\", \"label\": label, \"variant\": \"link\", \"size\": \"small\", }]);\n    $.dom.text($n,\"\\n\\n\");\n  };\n  $.template('global', 'render', render);\n  (function _template_src_main_webpack_repository_apps_conad_corporate_templates_rt002_cta_rt002_cta_html(){ \n    let render;\n    render = function* _template_src_main_webpack_repository_apps_conad_corporate_templates_rt002_cta_rt002_cta_html_render(args) { \n      let uniqueid = args[1]['uniqueId'] || '';\n      let extraclasses = args[1]['extraClasses'] || '';\n      let label = args[1]['label'] || '';\n      let name = args[1]['name'] || '';\n      let icon = args[1]['icon'] || '';\n      let link = args[1]['link'] || '';\n      let ctacolor = args[1]['ctaColor'] || '';\n      let ctatextcolor = args[1]['ctaTextColor'] || '';\n      let ctahovercolor = args[1]['ctaHoverColor'] || '';\n      let variant = args[1]['variant'] || '';\n      let type = args[1]['type'] || '';\n      let size = args[1]['size'] || '';\n      let status = args[1]['status'] || '';\n      let enabledtype = args[1]['enabledType'] || '';\n      let semantictype = args[1]['semanticType'] || '';\n      let socialtype = args[1]['socialType'] || '';\n      let arialabel = args[1]['ariaLabel'] || '';\n      let $t, $n = args[0];\n      $.dom.text($n,\"\\n\\n    \");\n      const ctaid = $.exec(\"format\", uniqueid ? \"{0}-cta\" : \"{1}\", {\"format\": [uniqueid, \"\"], });\n      if (ctaid) {\n      }\n      $.dom.text($n,\"\\n    \");\n      const variantclass = $.exec(\"format\", \"rt002-cta-{0}\", {\"format\": [(variant) || (\"primary\")], });\n      if (variantclass) {\n      }\n      $.dom.text($n,\"\\n    \");\n      const typeclass = $.exec(\"format\", \"{0}--{1}\", {\"format\": [\"rt002-cta\", (type) || (\"none\")], });\n      if (typeclass) {\n      }\n      $.dom.text($n,\"\\n    \");\n      const sizeclass = $.exec(\"format\", \"{0}--{1}\", {\"format\": [\"rt002-cta\", (size) || (\"medium\")], });\n      if (sizeclass) {\n      }\n      $.dom.text($n,\"\\n    \");\n      const statusclass = $.exec(\"format\", status ? \"{0}--{1}\" : \"{2}\", {\"format\": [variantclass, status, \"\"], });\n      if (statusclass) {\n      }\n      $.dom.text($n,\"\\n    \");\n      const enabledclass = $.exec(\"format\", ((enabledtype) === (\"neutralDark\")) || ((enabledtype) === (\"neutralLight\")) ? \"{0}--{1}\" : \"{2}\", {\"format\": [variantclass, enabledtype, \"\"], });\n      if (enabledclass) {\n      }\n      $.dom.text($n,\"\\n    \");\n      const semanticclass = $.exec(\"format\", ((((semantictype) === (\"1\")) || ((semantictype) === (\"2\"))) || ((semantictype) === (\"3\"))) || ((semantictype) === (\"4\")) ? \"{0}{1}\" : \"{2}\", {\"format\": [variantclass, semantictype, \"\"], });\n      if (semanticclass) {\n      }\n      $.dom.text($n,\"\\n    \");\n      const socialclass = $.exec(\"format\", (((socialtype) === (\"google\")) || ((socialtype) === (\"facebook\"))) || ((socialtype) === (\"apple\")) ? \"{0}--{1}\" : \"{2}\", {\"format\": [variantclass, socialtype, \"\"], });\n      if (socialclass) {\n      }\n      $.dom.text($n,\"\\n    \");\n      const finalclasses = $.exec(\"format\", ((variant) === (\"social\")) && (socialtype) ? \"{0} {1}\" : \"{1} {2} {3} {4} {5}\", {\"format\": [socialclass, sizeclass, typeclass, statusclass, enabledclass, semanticclass], });\n      if (finalclasses) {\n      }\n      $.dom.text($n,\"\\n    \");\n      const ctatextcolorstyle = $.exec(\"format\", \"{0}: {1}\", {\"format\": [\"color\", ctatextcolor], });\n      $.dom.text($n,\"\\n    \");\n      const ctabgcolorstyle = $.exec(\"format\", \"{0}: {1}\", {\"format\": [\"background-color\", ctacolor], });\n      $.dom.text($n,\"\\n    \");\n      $.dom.rem($n,\"TODO: @ context='styleString' in two lines \");\n      $.dom.text($n,\"\\n        \");\n      const var_tagVar4 = yield $.xss(link ? \"a\" : \"button\", \"elementNameNoFallback\");\n      if (var_tagVar4) {\n        $t = $.dom.create(var_tagVar4,false,false);\n      }\n      if (!var_tagVar4) {\n        $t = $.dom.create(\"button\",false,false);\n      }\n      const var_attrMap5 = link;\n      const var_attrName_class7 = \"class\";\n      const var_mapContains_class8 = var_attrMap5[\"class\"];\n      if (!$.col.empty(var_mapContains_class8)) {\n        $.dom.attr($t, var_attrName_class7, var_mapContains_class8, 'attribute');\n      }\n      if ((var_mapContains_class8) == (null)) {\n        const var_attrValue9 = (\"rt002-cta \") + (variantclass) + (\" \") + (finalclasses) + (\" \") + (extraclasses);\n        if (!$.col.empty(var_attrValue9)) {\n          $.dom.attr($t, 'class', var_attrValue9, 'attribute');\n        }\n      }\n      const var_attrName_style10 = \"style\";\n      const var_mapContains_style11 = var_attrMap5[\"style\"];\n      if (!$.col.empty(var_mapContains_style11)) {\n        $.dom.attr($t, var_attrName_style10, var_mapContains_style11, 'attribute');\n      }\n      if ((var_mapContains_style11) == (null)) {\n        const var_attrValue12 = yield $.xss(ctacolor ? ctabgcolorstyle : \"\", \"unsafe\");\n        if (!$.col.empty(var_attrValue12)) {\n          $.dom.attr($t, 'style', var_attrValue12, 'attribute');\n        }\n      }\n      const var_attrName_data_variant13 = \"data-variant\";\n      const var_mapContains_data_variant14 = var_attrMap5[\"data-variant\"];\n      if (!$.col.empty(var_mapContains_data_variant14)) {\n        $.dom.attr($t, var_attrName_data_variant13, var_mapContains_data_variant14, 'attribute');\n      }\n      if ((var_mapContains_data_variant14) == (null)) {\n        const var_attrValue15 = variant;\n        if (!$.col.empty(var_attrValue15)) {\n          $.dom.attr($t, 'data-variant', var_attrValue15, 'attribute');\n        }\n      }\n      const var_attrName_data_status16 = \"data-status\";\n      const var_mapContains_data_status17 = var_attrMap5[\"data-status\"];\n      if (!$.col.empty(var_mapContains_data_status17)) {\n        $.dom.attr($t, var_attrName_data_status16, var_mapContains_data_status17, 'attribute');\n      }\n      if ((var_mapContains_data_status17) == (null)) {\n        const var_attrValue18 = status;\n        if (!$.col.empty(var_attrValue18)) {\n          $.dom.attr($t, 'data-status', var_attrValue18, 'attribute');\n        }\n      }\n      $.dom.attr($t, 'data-component', null, 'attribute');\n      $.dom.attr($t, 'data-lazy-init', null, 'attribute');\n      const var_attrValue_id0 = (link) && (link[\"id\"]) ? link[\"id\"] : ctaid;\n      if (!$.col.empty(var_attrValue_id0)) {\n        $.dom.attr($t, 'id', var_attrValue_id0, 'attribute');\n      }\n      const var_attrValue_cta_hover_color1 = ctahovercolor;\n      if (!$.col.empty(var_attrValue_cta_hover_color1)) {\n        $.dom.attr($t, 'cta-hover-color', var_attrValue_cta_hover_color1, 'attribute');\n      }\n      const var_attrValue_x_ref2 = name;\n      if (!$.col.empty(var_attrValue_x_ref2)) {\n        $.dom.attr($t, 'x-ref', var_attrValue_x_ref2, 'attribute');\n      }\n      const var_attrValue_data_icon3 = icon;\n      if (!$.col.empty(var_attrValue_data_icon3)) {\n        $.dom.attr($t, 'data-icon', var_attrValue_data_icon3, 'attribute');\n      }\n      const var_attrValue_aria_label6 = (arialabel) || (label);\n      if (!$.col.empty(var_attrValue_aria_label6)) {\n        $.dom.attr($t, 'aria-label', var_attrValue_aria_label6, 'attribute');\n      }\n      const var_ignoredAttributes19 = {\"class\": true, \"style\": true, \"data-variant\": true, \"data-status\": true, \"aria-label\": true, \"data-component\": true, \"data-lazy-init\": true, \"id\": true, \"cta-hover-color\": true, \"x-ref\": true, \"data-icon\": true, };\n      for (const var_attrIndex22 of $.col.keys(var_attrMap5)) {\n        const var_attrName20 = $.col.get(var_attrMap5, var_attrIndex22);\n        const var_attrNameEscaped21 = yield $.xss(var_attrName20, \"attributeName\");\n        if (var_attrNameEscaped21) {\n          if (!var_ignoredAttributes19[var_attrName20]) {\n            const var_attrContent23 = var_attrMap5[var_attrName20];\n            if (!$.col.empty(var_attrContent23)) {\n              $.dom.attr($t, var_attrNameEscaped21, var_attrContent23, 'attribute');\n            }\n          }\n        }\n      }\n      $n = $.dom.push($n,$t);\n      $.dom.text($n,\"\\n            \");\n      const var_testVariable24 = (type) !== (\"right\");\n      if (var_testVariable24) {\n        $t = $.dom.create(\"span\",false,false);\n        const var_attrValue25 = (\"rt002-cta__icon \") + (variantclass) + (\"__icon \") + ((icon) || (\"\"));\n        if (!$.col.empty(var_attrValue25)) {\n          $.dom.attr($t, 'class', var_attrValue25, 'attribute');\n        }\n        const var_attrValue26 = yield $.xss(ctatextcolor ? ctatextcolorstyle : \"\", \"unsafe\");\n        if (!$.col.empty(var_attrValue26)) {\n          $.dom.attr($t, 'style', var_attrValue26, 'attribute');\n        }\n        $n = $.dom.push($n,$t);\n        $n = $.dom.pop($n);\n      }\n      $.dom.text($n,\"\\n            \");\n      $t = $.dom.create(\"span\",false,false);\n      const var_attrValue27 = (\"rt002-cta__label \") + (variantclass) + (\"__label\");\n      if (!$.col.empty(var_attrValue27)) {\n        $.dom.attr($t, 'class', var_attrValue27, 'attribute');\n      }\n      const var_attrValue28 = yield $.xss(ctatextcolor ? ctatextcolorstyle : \"\", \"unsafe\");\n      if (!$.col.empty(var_attrValue28)) {\n        $.dom.attr($t, 'style', var_attrValue28, 'attribute');\n      }\n      $n = $.dom.push($n,$t);\n      $.dom.text($n,\"\\n                  \");\n      const var_29 = yield $.xss(label, \"html\");\n      $.dom.append($n, var_29);\n      $.dom.text($n,\"\\n            \");\n      $n = $.dom.pop($n);\n      $.dom.text($n,\"\\n            \");\n      const var_testVariable30 = (type) === (\"right\");\n      if (var_testVariable30) {\n        $t = $.dom.create(\"span\",false,false);\n        const var_attrValue31 = (\"rt002-cta__icon \") + (variantclass) + (\"__icon \") + ((icon) || (\"\"));\n        if (!$.col.empty(var_attrValue31)) {\n          $.dom.attr($t, 'class', var_attrValue31, 'attribute');\n        }\n        const var_attrValue32 = yield $.xss(ctatextcolor ? ctatextcolorstyle : \"\", \"unsafe\");\n        if (!$.col.empty(var_attrValue32)) {\n          $.dom.attr($t, 'style', var_attrValue32, 'attribute');\n        }\n        $n = $.dom.push($n,$t);\n        $n = $.dom.pop($n);\n      }\n      $.dom.text($n,\"\\n        \");\n      if (var_tagVar4) {\n        $n = $.dom.pop($n);\n      }\n      if (!var_tagVar4) {\n        $n = $.dom.pop($n);\n      }\n      $.dom.text($n,\"\\n\\n    \\n\");\n    };\n    $.template('src/main/webpack/repository/apps/conad-corporate/templates/rt002-cta/rt002-cta.html', 'render', render);\n  })();\n\n  return $.run(function* () {\n    let $t, $n = $.dom.start();\n    return $.dom.end();\n\n  });\n};\n","/*\n * Copyright 2018 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/* eslint-disable */\n\nmodule.exports = function main($) {\n\n  const htl = $.globals;\n  let data = $.globals[\"data\"];\n\n  let render;\n  render = function* _template_global_render(args) { \n    let uniqueid = args[1]['uniqueId'] || '';\n    let message = args[1]['message'] || '';\n    let $t, $n = args[0];\n    $.dom.text($n,\"\\n    \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"rt063-contact-form__statusMsg\", 'attribute');\n    $.dom.attr($t, 'role', \"alert\", 'attribute');\n    const var_attrValue0 = (uniqueid) + (\"--error-title\");\n    if (!$.col.empty(var_attrValue0)) {\n      $.dom.attr($t, 'aria-labelledby', var_attrValue0, 'attribute');\n    }\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n        \");\n    $t = $.dom.create(\"h3\",false,false);\n    const var_attrValue1 = (uniqueid) + (\"--error-title\");\n    if (!$.col.empty(var_attrValue1)) {\n      $.dom.attr($t, 'id', var_attrValue1, 'attribute');\n    }\n    $n = $.dom.push($n,$t);\n    const var_2 = yield $.xss(message, \"html\");\n    $.dom.append($n, var_2);\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n    \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n\");\n  };\n  $.template('global', 'render', render);\n\n  return $.run(function* () {\n    let $t, $n = $.dom.start();\n    $.dom.text($n,\"\\n\");\n    return $.dom.end();\n\n  });\n};\n","/*\n * Copyright 2018 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/* eslint-disable */\n\nmodule.exports = function main($) {\n\n  const htl = $.globals;\n  let data = $.globals[\"data\"];\n\n  let render;\n  render = function* _template_global_render(args) { \n    let uniqueid = args[1]['uniqueId'] || '';\n    let extraclasses = args[1]['extraClasses'] || '';\n    let tablelabels = args[1]['tableLabels'] || '';\n    let scontrino = args[1]['scontrino'] || '';\n    let $t, $n = args[0];\n    $.dom.text($n,\"\\n    \");\n    $t = $.dom.create(\"div\",false,false);\n    const var_attrValue0 = (\"rt073-assicurazioni-form__table \") + (extraclasses);\n    if (!$.col.empty(var_attrValue0)) {\n      $.dom.attr($t, 'class', var_attrValue0, 'attribute');\n    }\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n        \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"rt073-assicurazioni-form__tableContent border-t-[1px] w-full border-slate-200 font-body text-[14px] text-left leading-[14px]\\n                      overflow-auto text-[rgba(0,0,2,0.6)] mt-[25px]\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n            \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"rt073-assicurazioni-form__tableContentDesktop hidden lg:block\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n                \");\n    $.dom.rem($n,\" row column names \");\n    $.dom.text($n,\"\\n                \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"grid grid-cols-4\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n                    \");\n    $.dom.rem($n,\" columns \");\n    $.dom.text($n,\"\\n                    \");\n    const var_collectionVar1 = $.col.init(tablelabels);\n    const var_size2 = $.col.len(var_collectionVar1);\n    if (var_size2) {\n      for (const var_index3 of $.col.keys(var_collectionVar1)) {\n        const item = $.col.get(var_collectionVar1, var_index3);\n        const itemlist = $.listInfo(var_index3, var_size2);\n        $.dom.text($n,\"\\n                        \");\n        $t = $.dom.create(\"div\",false,false);\n        $.dom.attr($t, 'class', \"py-[16px] pl-[8px] font-bold\", 'attribute');\n        $n = $.dom.push($n,$t);\n        const var_4 = yield $.xss(tablelabels[item], \"html\");\n        $.dom.append($n, var_4);\n        $n = $.dom.pop($n);\n        $.dom.text($n,\"\\n                    \");\n      }\n    }\n    $.dom.text($n,\"\\n                \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n                \");\n    $.dom.rem($n,\" row data \");\n    $.dom.text($n,\"\\n                \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"grid grid-cols-4\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n                    \");\n    $.dom.rem($n,\" columns \");\n    $.dom.text($n,\"\\n                    \");\n    const var_collectionVar5 = $.col.init(scontrino);\n    const var_size6 = $.col.len(var_collectionVar5);\n    if (var_size6) {\n      for (const var_index7 of $.col.keys(var_collectionVar5)) {\n        const item = $.col.get(var_collectionVar5, var_index7);\n        const itemlist = $.listInfo(var_index7, var_size6);\n        $.dom.text($n,\"\\n                        \");\n        $t = $.dom.create(\"div\",false,false);\n        $.dom.attr($t, 'class', \"bg-[--color-secondary3] flex items-center h-[60px] pl-[8px]\", 'attribute');\n        $n = $.dom.push($n,$t);\n        const var_8 = yield $.xss(scontrino[item], \"html\");\n        $.dom.append($n, var_8);\n        $n = $.dom.pop($n);\n        $.dom.text($n,\"\\n                    \");\n      }\n    }\n    $.dom.text($n,\"\\n                \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n            \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n            \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"rt073-assicurazioni-form__tableContentMobile lg:hidden block\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n                \");\n    $.dom.rem($n,\" row column names \");\n    $.dom.text($n,\"\\n                \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"grid grid-cols-2\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n                    \");\n    $.dom.rem($n,\" columns \");\n    $.dom.text($n,\"\\n                    \");\n    const var_collectionVar9 = $.col.init(tablelabels,{\"begin\":\"0\",\"end\":\"1\"});\n    const var_size10 = $.col.len(var_collectionVar9);\n    if (var_size10) {\n      for (const var_index11 of $.col.keys(var_collectionVar9)) {\n        const item = $.col.get(var_collectionVar9, var_index11);\n        const itemlist = $.listInfo(var_index11, var_size10);\n        $.dom.text($n,\"\\n                        \");\n        $t = $.dom.create(\"div\",false,false);\n        $.dom.attr($t, 'class', \"py-[16px] pl-[8px] font-bold\", 'attribute');\n        $n = $.dom.push($n,$t);\n        const var_12 = yield $.xss(tablelabels[item], \"html\");\n        $.dom.append($n, var_12);\n        $n = $.dom.pop($n);\n        $.dom.text($n,\"\\n                    \");\n      }\n    }\n    $.dom.text($n,\"\\n                \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n                \");\n    $.dom.rem($n,\" row data \");\n    $.dom.text($n,\"\\n                \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"grid grid-cols-2\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n                    \");\n    $.dom.rem($n,\" columns \");\n    $.dom.text($n,\"\\n                    \");\n    const var_collectionVar13 = $.col.init(scontrino,{\"begin\":\"0\",\"end\":\"1\"});\n    const var_size14 = $.col.len(var_collectionVar13);\n    if (var_size14) {\n      for (const var_index15 of $.col.keys(var_collectionVar13)) {\n        const item = $.col.get(var_collectionVar13, var_index15);\n        const itemlist = $.listInfo(var_index15, var_size14);\n        $.dom.text($n,\"\\n                        \");\n        $t = $.dom.create(\"div\",false,false);\n        $.dom.attr($t, 'class', \"bg-[--color-secondary3] flex items-center h-[60px] pl-[8px]\", 'attribute');\n        $n = $.dom.push($n,$t);\n        const var_16 = yield $.xss(scontrino[item], \"html\");\n        $.dom.append($n, var_16);\n        $n = $.dom.pop($n);\n        $.dom.text($n,\"\\n                    \");\n      }\n    }\n    $.dom.text($n,\"\\n                \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n                \");\n    $.dom.rem($n,\" row column names \");\n    $.dom.text($n,\"\\n                \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"grid grid-cols-2\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n                    \");\n    $.dom.rem($n,\" columns \");\n    $.dom.text($n,\"\\n                    \");\n    const var_collectionVar17 = $.col.init(tablelabels,{\"begin\":\"2\"});\n    const var_size18 = $.col.len(var_collectionVar17);\n    if (var_size18) {\n      for (const var_index19 of $.col.keys(var_collectionVar17)) {\n        const item = $.col.get(var_collectionVar17, var_index19);\n        const itemlist = $.listInfo(var_index19, var_size18);\n        $.dom.text($n,\"\\n                        \");\n        $t = $.dom.create(\"div\",false,false);\n        $.dom.attr($t, 'class', \"pl-[8px] flex items-center h-[60px] font-bold\", 'attribute');\n        $n = $.dom.push($n,$t);\n        const var_20 = yield $.xss(tablelabels[item], \"html\");\n        $.dom.append($n, var_20);\n        $n = $.dom.pop($n);\n        $.dom.text($n,\"\\n                    \");\n      }\n    }\n    $.dom.text($n,\"\\n                \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n                \");\n    $.dom.rem($n,\" row data \");\n    $.dom.text($n,\"\\n                \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"grid grid-cols-2\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n                    \");\n    $.dom.rem($n,\" columns \");\n    $.dom.text($n,\"\\n                    \");\n    const var_collectionVar21 = $.col.init(scontrino,{\"begin\":\"2\"});\n    const var_size22 = $.col.len(var_collectionVar21);\n    if (var_size22) {\n      for (const var_index23 of $.col.keys(var_collectionVar21)) {\n        const item = $.col.get(var_collectionVar21, var_index23);\n        const itemlist = $.listInfo(var_index23, var_size22);\n        $.dom.text($n,\"\\n                        \");\n        $t = $.dom.create(\"div\",false,false);\n        $.dom.attr($t, 'class', \"bg-[--color-secondary3] flex items-center pl-[8px] h-[60px]\", 'attribute');\n        $n = $.dom.push($n,$t);\n        const var_24 = yield $.xss(scontrino[item], \"html\");\n        $.dom.append($n, var_24);\n        $n = $.dom.pop($n);\n        $.dom.text($n,\"\\n                    \");\n      }\n    }\n    $.dom.text($n,\"\\n                \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n            \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n        \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n    \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n\");\n  };\n  $.template('global', 'render', render);\n\n  return $.run(function* () {\n    let $t, $n = $.dom.start();\n    return $.dom.end();\n\n  });\n};\n","/*\n * Copyright 2018 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/* eslint-disable */\n\nmodule.exports = function main($) {\n\n  const htl = $.globals;\n  let data = $.globals[\"data\"];\n\n  let render;\n  render = function* _template_global_render(args) { \n    let title = args[1]['title'] || '';\n    let subtitle = args[1]['subtitle'] || '';\n    let description = args[1]['description'] || '';\n    let icon = args[1]['icon'] || '';\n    let linklabel = args[1]['linkLabel'] || '';\n    let jsonmodal = args[1]['jsonModal'] || '';\n    let $t, $n = args[0];\n    $.dom.text($n,\"\\n\\n    \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"rt156-excel-to-map-search-stores-form__store\", 'attribute');\n    const var_attrValue0 = jsonmodal;\n    if (!$.col.empty(var_attrValue0)) {\n      $.dom.attr($t, 'data-modal-json', var_attrValue0, 'attribute');\n    }\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n        \");\n    $t = $.dom.create(\"span\",false,false);\n    $.dom.attr($t, 'class', \"rt156-excel-to-map-search-stores-form__icon\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n            \");\n    const imgflw = $.exec(\"format\", \"{0}-icon\", {\"format\": [title], });\n    if (imgflw) {\n    }\n    $.dom.text($n,\"\\n            \");\n    $t = $.dom.create(\"img\",false,true);\n    const var_attrValue1 = icon;\n    if (!$.col.empty(var_attrValue1)) {\n      $.dom.attr($t, 'src', var_attrValue1, 'attribute');\n    }\n    const var_attrValue2 = imgflw;\n    if (!$.col.empty(var_attrValue2)) {\n      $.dom.attr($t, 'alt', var_attrValue2, 'attribute');\n    }\n    $n = $.dom.push($n,$t);\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n        \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n        \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"rt156-excel-to-map-search-stores-form__text\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n            \");\n    $t = $.dom.create(\"div\",false,false);\n    $.dom.attr($t, 'class', \"rt156-excel-to-map-search-stores-form__textContainer\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n                \");\n    $t = $.dom.create(\"h2\",false,false);\n    $.dom.attr($t, 'class', \"rt156-excel-to-map-search-stores-form__name\", 'attribute');\n    $n = $.dom.push($n,$t);\n    const var_3 = yield $.xss(title, \"html\");\n    $.dom.append($n, var_3);\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n                \");\n    const typelabel = subtitle;\n    if (typelabel) {\n      $t = $.dom.create(\"p\",false,false);\n      $.dom.attr($t, 'class', \"rt156-excel-to-map-search-stores-form__subtitle\", 'attribute');\n      $n = $.dom.push($n,$t);\n      const var_4 = yield $.xss(typelabel, \"html\");\n      $.dom.append($n, var_4);\n      $n = $.dom.pop($n);\n    }\n    $.dom.text($n,\"\\n                \");\n    $t = $.dom.create(\"p\",false,false);\n    $.dom.attr($t, 'class', \"rt156-excel-to-map-search-stores-form__address\", 'attribute');\n    $n = $.dom.push($n,$t);\n    const var_5 = yield $.xss(description, \"html\");\n    $.dom.append($n, var_5);\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n            \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n            \");\n    $t = $.dom.create(\"button\",false,false);\n    $.dom.attr($t, 'class', \"rt156-excel-to-map-search-stores-form__link\", 'attribute');\n    $n = $.dom.push($n,$t);\n    $.dom.text($n,\"\\n                \");\n    const var_6 = yield $.xss(linklabel, \"html\");\n    $.dom.append($n, var_6);\n    $.dom.text($n,\"\\n            \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n        \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n    \");\n    $n = $.dom.pop($n);\n    $.dom.text($n,\"\\n\\n\");\n  };\n  $.template('global', 'render', render);\n\n  return $.run(function* () {\n    let $t, $n = $.dom.start();\n    return $.dom.end();\n\n  });\n};\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","var isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw $TypeError('Incorrect invocation');\n};\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw $TypeError($String(argument) + ' is not an object');\n};\n","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n  var proto = getPrototypeOf(it);\n  if (!isObject(proto)) return;\n  var state = getInternalState(proto);\n  return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n  throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n      delete TypedArrayConstructor.prototype[KEY];\n    } catch (error) {\n      // old WebKit bug - some methods are non-configurable\n      try {\n        TypedArrayConstructor.prototype[KEY] = property;\n      } catch (error2) { /* empty */ }\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = global[ARRAY];\n      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n        delete TypedArrayConstructor[KEY];\n      } catch (error) { /* empty */ }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      defineBuiltIn(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n  else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQUIRED = true;\n  defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n    configurable: true,\n    get: function () {\n      return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n    }\n  });\n  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  getTypedArrayConstructor: getTypedArrayConstructor,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n","var lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list) {\n  var index = 0;\n  var length = lengthOfArrayLike(list);\n  var result = new Constructor(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_FIND_LAST_INDEX = TYPE == 1;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var index = lengthOfArrayLike(self);\n    var value, result;\n    while (index-- > 0) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (result) switch (TYPE) {\n        case 0: return value; // findLast\n        case 1: return index; // findLastIndex\n      }\n    }\n    return IS_FIND_LAST_INDEX ? -1 : undefined;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.findLast` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLast: createMethod(0),\n  // `Array.prototype.findLastIndex` method\n  // https://github.com/tc39/proposal-array-find-from-last\n  findLastIndex: createMethod(1)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n  var len = lengthOfArrayLike(O);\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = O[len - k - 1];\n  return A;\n};\n","var lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n  var len = lengthOfArrayLike(O);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n  if (actualIndex >= len || actualIndex < 0) throw $RangeError('Incorrect index');\n  var A = new C(len);\n  var k = 0;\n  for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n  return A;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n  if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n  all: documentAll,\n  IS_HTMLDDA: IS_HTMLDDA\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","var $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n","module.exports = {\n  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n","/* global Bun -- Deno case */\nmodule.exports = typeof Bun == 'function' && Bun && typeof Bun.version == 'string';\n","var userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\n\nmodule.exports = typeof process != 'undefined' && classof(process) == 'process';\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n  } return stack;\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n","var classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || this || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) == 'Array';\n};\n","var classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n  var klass = classof(it);\n  return klass == 'BigInt64Array' || klass == 'BigUint64Array';\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENGINE_IS_BUN = require('../internals/engine-is-bun');\nvar USER_AGENT = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = global.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () {\n  var version = global.Bun.version.split('.');\n  return version.length < 3 || version[0] == 0 && (version[1] < 3 || version[1] == 3 && version[2] == 0);\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n  var firstParamIndex = hasTimeArg ? 2 : 1;\n  return WRAP ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n    var callback = boundArgs ? function () {\n      apply(fn, this, params);\n    } : fn;\n    return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n  } : scheduler;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.30.2',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.30.2/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  $location = global.location;\n});\n\nvar run = function (id) {\n  if (hasOwn(queue, id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\n\nvar runner = function (id) {\n  return function () {\n    run(id);\n  };\n};\n\nvar eventListener = function (event) {\n  run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n  // old engines have not location.origin\n  global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n  set = function setImmediate(handler) {\n    validateArgumentsLength(arguments.length, 1);\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = arraySlice(arguments, 1);\n    queue[++counter] = function () {\n      apply(fn, undefined, args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clear = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (IS_NODE) {\n    defer = function (id) {\n      process.nextTick(runner(id));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(runner(id));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  // except iOS - https://github.com/zloirock/core-js/issues/624\n  } else if (MessageChannel && !IS_IOS) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = eventListener;\n    defer = bind(port.postMessage, port);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (\n    global.addEventListener &&\n    isCallable(global.postMessage) &&\n    !global.importScripts &&\n    $location && $location.protocol !== 'file:' &&\n    !fails(globalPostMessageDefer)\n  ) {\n    defer = globalPostMessageDefer;\n    global.addEventListener('message', eventListener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in createElement('script')) {\n    defer = function (id) {\n      html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(runner(id), 0);\n    };\n  }\n}\n\nmodule.exports = {\n  set: set,\n  clear: clear\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n  var prim = toPrimitive(argument, 'number');\n  if (typeof prim == 'number') throw $TypeError(\"Can't convert number to bigint\");\n  // eslint-disable-next-line es/no-bigint -- safe\n  return BigInt(prim);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype != 42;\n});\n","var $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw $TypeError('Not enough arguments');\n  return passed;\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).push();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  push: function push(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    doesNotExceedSafeInteger(len + argCount);\n    for (var i = 0; i < argCount; i++) {\n      O[len] = arguments[i];\n      len++;\n    }\n    setArrayLength(O, len);\n    return len;\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\n\n// IE8-\nvar INCORRECT_RESULT = [].unshift(0) !== 1;\n\n// V8 ~ Chrome < 71 and Safari <= 15.4, FF < 23 throws InternalError\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).unshift();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_RESULT || !properErrorOnNonWritableLength();\n\n// `Array.prototype.unshift` method\n// https://tc39.es/ecma262/#sec-array.prototype.unshift\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  unshift: function unshift(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    if (argCount) {\n      doesNotExceedSafeInteger(len + argCount);\n      var k = len;\n      while (k--) {\n        var to = k + argCount;\n        if (k in O) O[to] = O[k];\n        else deletePropertyOrThrow(O, to);\n      }\n      for (var j = 0; j < argCount; j++) {\n        O[j] = arguments[j];\n      }\n    } return setArrayLength(O, len + argCount);\n  }\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://github.com/tc39/proposal-array-find-from-last\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n  return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://github.com/tc39/proposal-array-find-from-last\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n  return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n  return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toSorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n  if (compareFn !== undefined) aCallable(compareFn);\n  var O = aTypedArray(this);\n  var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n  return sort(A, compareFn);\n});\n","'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n  try {\n    // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n    new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n  } catch (error) {\n    // some early implementations, like WebKit, does not follow the final semantic\n    // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n    return error === 8;\n  }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n  var O = aTypedArray(this);\n  var relativeIndex = toIntegerOrInfinity(index);\n  var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n  return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {\n  clearImmediate: clearImmediate\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n  anInstance(this, DOMExceptionPrototype);\n  var argumentsLength = arguments.length;\n  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n  var that = new NativeDOMException(message, name);\n  var error = Error(message);\n  error.name = DOM_EXCEPTION;\n  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n  inheritIfRequired(that, this, $DOMException);\n  return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n  if (!IS_PURE) {\n    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n  }\n\n  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n    var constant = DOMExceptionConstants[key];\n    var constantName = constant.s;\n    if (!hasOwn(PolyfilledDOMException, constantName)) {\n      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n    }\n  }\n}\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = global.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {\n  setImmediate: setImmediate\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n    get: function size() {\n      var count = 0;\n      forEach(this, function () { count++; });\n      return count;\n    },\n    configurable: true,\n    enumerable: true\n  });\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"resources/chunks/\" + (chunkId === 3 ? \"templates\" : chunkId) + \"-\" + {\"3\":\"0c300fb2890e3f2525ec\",\"67\":\"60bbe644926ba6b8c897\",\"276\":\"42d0735238b8ebb0d97e\",\"320\":\"b9693b9972163d725b6a\",\"748\":\"2f72bde4c6d3f6f136b2\",\"771\":\"409cea062b40237c166b\",\"904\":\"1eaac8f0bc6a894c2b0a\",\"916\":\"edd1b47c9114da2bf346\",\"942\":\"5752040f2b25aa4b51dd\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"resources/chunks/\" + chunkId + \"-\" + \"a08cccbb6354caec26dc\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/etc.clientlibs/conad-corporate/clientlibs/clientlib-site/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"904\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkui_frontend\"] = self[\"webpackChunkui_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// packages/alpinejs/src/scheduler.js\nvar flushPending = false;\nvar flushing = false;\nvar queue = [];\nvar lastFlushedIndex = -1;\nfunction scheduler(callback) {\n  queueJob(callback);\n}\nfunction queueJob(job) {\n  if (!queue.includes(job))\n    queue.push(job);\n  queueFlush();\n}\nfunction dequeueJob(job) {\n  let index = queue.indexOf(job);\n  if (index !== -1 && index > lastFlushedIndex)\n    queue.splice(index, 1);\n}\nfunction queueFlush() {\n  if (!flushing && !flushPending) {\n    flushPending = true;\n    queueMicrotask(flushJobs);\n  }\n}\nfunction flushJobs() {\n  flushPending = false;\n  flushing = true;\n  for (let i = 0; i < queue.length; i++) {\n    queue[i]();\n    lastFlushedIndex = i;\n  }\n  queue.length = 0;\n  lastFlushedIndex = -1;\n  flushing = false;\n}\n\n// packages/alpinejs/src/reactivity.js\nvar reactive;\nvar effect;\nvar release;\nvar raw;\nvar shouldSchedule = true;\nfunction disableEffectScheduling(callback) {\n  shouldSchedule = false;\n  callback();\n  shouldSchedule = true;\n}\nfunction setReactivityEngine(engine) {\n  reactive = engine.reactive;\n  release = engine.release;\n  effect = (callback) => engine.effect(callback, { scheduler: (task) => {\n    if (shouldSchedule) {\n      scheduler(task);\n    } else {\n      task();\n    }\n  } });\n  raw = engine.raw;\n}\nfunction overrideEffect(override) {\n  effect = override;\n}\nfunction elementBoundEffect(el) {\n  let cleanup2 = () => {\n  };\n  let wrappedEffect = (callback) => {\n    let effectReference = effect(callback);\n    if (!el._x_effects) {\n      el._x_effects = /* @__PURE__ */ new Set();\n      el._x_runEffects = () => {\n        el._x_effects.forEach((i) => i());\n      };\n    }\n    el._x_effects.add(effectReference);\n    cleanup2 = () => {\n      if (effectReference === void 0)\n        return;\n      el._x_effects.delete(effectReference);\n      release(effectReference);\n    };\n    return effectReference;\n  };\n  return [wrappedEffect, () => {\n    cleanup2();\n  }];\n}\nfunction watch(getter, callback) {\n  let firstTime = true;\n  let oldValue;\n  let effectReference = effect(() => {\n    let value = getter();\n    JSON.stringify(value);\n    if (!firstTime) {\n      queueMicrotask(() => {\n        callback(value, oldValue);\n        oldValue = value;\n      });\n    } else {\n      oldValue = value;\n    }\n    firstTime = false;\n  });\n  return () => release(effectReference);\n}\n\n// packages/alpinejs/src/mutation.js\nvar onAttributeAddeds = [];\nvar onElRemoveds = [];\nvar onElAddeds = [];\nfunction onElAdded(callback) {\n  onElAddeds.push(callback);\n}\nfunction onElRemoved(el, callback) {\n  if (typeof callback === \"function\") {\n    if (!el._x_cleanups)\n      el._x_cleanups = [];\n    el._x_cleanups.push(callback);\n  } else {\n    callback = el;\n    onElRemoveds.push(callback);\n  }\n}\nfunction onAttributesAdded(callback) {\n  onAttributeAddeds.push(callback);\n}\nfunction onAttributeRemoved(el, name, callback) {\n  if (!el._x_attributeCleanups)\n    el._x_attributeCleanups = {};\n  if (!el._x_attributeCleanups[name])\n    el._x_attributeCleanups[name] = [];\n  el._x_attributeCleanups[name].push(callback);\n}\nfunction cleanupAttributes(el, names) {\n  if (!el._x_attributeCleanups)\n    return;\n  Object.entries(el._x_attributeCleanups).forEach(([name, value]) => {\n    if (names === void 0 || names.includes(name)) {\n      value.forEach((i) => i());\n      delete el._x_attributeCleanups[name];\n    }\n  });\n}\nfunction cleanupElement(el) {\n  el._x_effects?.forEach(dequeueJob);\n  while (el._x_cleanups?.length)\n    el._x_cleanups.pop()();\n}\nvar observer = new MutationObserver(onMutate);\nvar currentlyObserving = false;\nfunction startObservingMutations() {\n  observer.observe(document, { subtree: true, childList: true, attributes: true, attributeOldValue: true });\n  currentlyObserving = true;\n}\nfunction stopObservingMutations() {\n  flushObserver();\n  observer.disconnect();\n  currentlyObserving = false;\n}\nvar queuedMutations = [];\nfunction flushObserver() {\n  let records = observer.takeRecords();\n  queuedMutations.push(() => records.length > 0 && onMutate(records));\n  let queueLengthWhenTriggered = queuedMutations.length;\n  queueMicrotask(() => {\n    if (queuedMutations.length === queueLengthWhenTriggered) {\n      while (queuedMutations.length > 0)\n        queuedMutations.shift()();\n    }\n  });\n}\nfunction mutateDom(callback) {\n  if (!currentlyObserving)\n    return callback();\n  stopObservingMutations();\n  let result = callback();\n  startObservingMutations();\n  return result;\n}\nvar isCollecting = false;\nvar deferredMutations = [];\nfunction deferMutations() {\n  isCollecting = true;\n}\nfunction flushAndStopDeferringMutations() {\n  isCollecting = false;\n  onMutate(deferredMutations);\n  deferredMutations = [];\n}\nfunction onMutate(mutations) {\n  if (isCollecting) {\n    deferredMutations = deferredMutations.concat(mutations);\n    return;\n  }\n  let addedNodes = /* @__PURE__ */ new Set();\n  let removedNodes = /* @__PURE__ */ new Set();\n  let addedAttributes = /* @__PURE__ */ new Map();\n  let removedAttributes = /* @__PURE__ */ new Map();\n  for (let i = 0; i < mutations.length; i++) {\n    if (mutations[i].target._x_ignoreMutationObserver)\n      continue;\n    if (mutations[i].type === \"childList\") {\n      mutations[i].addedNodes.forEach((node) => node.nodeType === 1 && addedNodes.add(node));\n      mutations[i].removedNodes.forEach((node) => node.nodeType === 1 && removedNodes.add(node));\n    }\n    if (mutations[i].type === \"attributes\") {\n      let el = mutations[i].target;\n      let name = mutations[i].attributeName;\n      let oldValue = mutations[i].oldValue;\n      let add2 = () => {\n        if (!addedAttributes.has(el))\n          addedAttributes.set(el, []);\n        addedAttributes.get(el).push({ name, value: el.getAttribute(name) });\n      };\n      let remove = () => {\n        if (!removedAttributes.has(el))\n          removedAttributes.set(el, []);\n        removedAttributes.get(el).push(name);\n      };\n      if (el.hasAttribute(name) && oldValue === null) {\n        add2();\n      } else if (el.hasAttribute(name)) {\n        remove();\n        add2();\n      } else {\n        remove();\n      }\n    }\n  }\n  removedAttributes.forEach((attrs, el) => {\n    cleanupAttributes(el, attrs);\n  });\n  addedAttributes.forEach((attrs, el) => {\n    onAttributeAddeds.forEach((i) => i(el, attrs));\n  });\n  for (let node of removedNodes) {\n    if (addedNodes.has(node))\n      continue;\n    onElRemoveds.forEach((i) => i(node));\n  }\n  addedNodes.forEach((node) => {\n    node._x_ignoreSelf = true;\n    node._x_ignore = true;\n  });\n  for (let node of addedNodes) {\n    if (removedNodes.has(node))\n      continue;\n    if (!node.isConnected)\n      continue;\n    delete node._x_ignoreSelf;\n    delete node._x_ignore;\n    onElAddeds.forEach((i) => i(node));\n    node._x_ignore = true;\n    node._x_ignoreSelf = true;\n  }\n  addedNodes.forEach((node) => {\n    delete node._x_ignoreSelf;\n    delete node._x_ignore;\n  });\n  addedNodes = null;\n  removedNodes = null;\n  addedAttributes = null;\n  removedAttributes = null;\n}\n\n// packages/alpinejs/src/scope.js\nfunction scope(node) {\n  return mergeProxies(closestDataStack(node));\n}\nfunction addScopeToNode(node, data2, referenceNode) {\n  node._x_dataStack = [data2, ...closestDataStack(referenceNode || node)];\n  return () => {\n    node._x_dataStack = node._x_dataStack.filter((i) => i !== data2);\n  };\n}\nfunction closestDataStack(node) {\n  if (node._x_dataStack)\n    return node._x_dataStack;\n  if (typeof ShadowRoot === \"function\" && node instanceof ShadowRoot) {\n    return closestDataStack(node.host);\n  }\n  if (!node.parentNode) {\n    return [];\n  }\n  return closestDataStack(node.parentNode);\n}\nfunction mergeProxies(objects) {\n  return new Proxy({ objects }, mergeProxyTrap);\n}\nvar mergeProxyTrap = {\n  ownKeys({ objects }) {\n    return Array.from(\n      new Set(objects.flatMap((i) => Object.keys(i)))\n    );\n  },\n  has({ objects }, name) {\n    if (name == Symbol.unscopables)\n      return false;\n    return objects.some(\n      (obj) => Object.prototype.hasOwnProperty.call(obj, name) || Reflect.has(obj, name)\n    );\n  },\n  get({ objects }, name, thisProxy) {\n    if (name == \"toJSON\")\n      return collapseProxies;\n    return Reflect.get(\n      objects.find(\n        (obj) => Reflect.has(obj, name)\n      ) || {},\n      name,\n      thisProxy\n    );\n  },\n  set({ objects }, name, value, thisProxy) {\n    const target = objects.find(\n      (obj) => Object.prototype.hasOwnProperty.call(obj, name)\n    ) || objects[objects.length - 1];\n    const descriptor = Object.getOwnPropertyDescriptor(target, name);\n    if (descriptor?.set && descriptor?.get)\n      return descriptor.set.call(thisProxy, value) || true;\n    return Reflect.set(target, name, value);\n  }\n};\nfunction collapseProxies() {\n  let keys = Reflect.ownKeys(this);\n  return keys.reduce((acc, key) => {\n    acc[key] = Reflect.get(this, key);\n    return acc;\n  }, {});\n}\n\n// packages/alpinejs/src/interceptor.js\nfunction initInterceptors(data2) {\n  let isObject2 = (val) => typeof val === \"object\" && !Array.isArray(val) && val !== null;\n  let recurse = (obj, basePath = \"\") => {\n    Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, { value, enumerable }]) => {\n      if (enumerable === false || value === void 0)\n        return;\n      if (typeof value === \"object\" && value !== null && value.__v_skip)\n        return;\n      let path = basePath === \"\" ? key : `${basePath}.${key}`;\n      if (typeof value === \"object\" && value !== null && value._x_interceptor) {\n        obj[key] = value.initialize(data2, path, key);\n      } else {\n        if (isObject2(value) && value !== obj && !(value instanceof Element)) {\n          recurse(value, path);\n        }\n      }\n    });\n  };\n  return recurse(data2);\n}\nfunction interceptor(callback, mutateObj = () => {\n}) {\n  let obj = {\n    initialValue: void 0,\n    _x_interceptor: true,\n    initialize(data2, path, key) {\n      return callback(this.initialValue, () => get(data2, path), (value) => set(data2, path, value), path, key);\n    }\n  };\n  mutateObj(obj);\n  return (initialValue) => {\n    if (typeof initialValue === \"object\" && initialValue !== null && initialValue._x_interceptor) {\n      let initialize = obj.initialize.bind(obj);\n      obj.initialize = (data2, path, key) => {\n        let innerValue = initialValue.initialize(data2, path, key);\n        obj.initialValue = innerValue;\n        return initialize(data2, path, key);\n      };\n    } else {\n      obj.initialValue = initialValue;\n    }\n    return obj;\n  };\n}\nfunction get(obj, path) {\n  return path.split(\".\").reduce((carry, segment) => carry[segment], obj);\n}\nfunction set(obj, path, value) {\n  if (typeof path === \"string\")\n    path = path.split(\".\");\n  if (path.length === 1)\n    obj[path[0]] = value;\n  else if (path.length === 0)\n    throw error;\n  else {\n    if (obj[path[0]])\n      return set(obj[path[0]], path.slice(1), value);\n    else {\n      obj[path[0]] = {};\n      return set(obj[path[0]], path.slice(1), value);\n    }\n  }\n}\n\n// packages/alpinejs/src/magics.js\nvar magics = {};\nfunction magic(name, callback) {\n  magics[name] = callback;\n}\nfunction injectMagics(obj, el) {\n  let memoizedUtilities = getUtilities(el);\n  Object.entries(magics).forEach(([name, callback]) => {\n    Object.defineProperty(obj, `$${name}`, {\n      get() {\n        return callback(el, memoizedUtilities);\n      },\n      enumerable: false\n    });\n  });\n  return obj;\n}\nfunction getUtilities(el) {\n  let [utilities, cleanup2] = getElementBoundUtilities(el);\n  let utils = { interceptor, ...utilities };\n  onElRemoved(el, cleanup2);\n  return utils;\n}\n\n// packages/alpinejs/src/utils/error.js\nfunction tryCatch(el, expression, callback, ...args) {\n  try {\n    return callback(...args);\n  } catch (e) {\n    handleError(e, el, expression);\n  }\n}\nfunction handleError(error2, el, expression = void 0) {\n  error2 = Object.assign(\n    error2 ?? { message: \"No error message given.\" },\n    { el, expression }\n  );\n  console.warn(`Alpine Expression Error: ${error2.message}\n\n${expression ? 'Expression: \"' + expression + '\"\\n\\n' : \"\"}`, el);\n  setTimeout(() => {\n    throw error2;\n  }, 0);\n}\n\n// packages/alpinejs/src/evaluator.js\nvar shouldAutoEvaluateFunctions = true;\nfunction dontAutoEvaluateFunctions(callback) {\n  let cache = shouldAutoEvaluateFunctions;\n  shouldAutoEvaluateFunctions = false;\n  let result = callback();\n  shouldAutoEvaluateFunctions = cache;\n  return result;\n}\nfunction evaluate(el, expression, extras = {}) {\n  let result;\n  evaluateLater(el, expression)((value) => result = value, extras);\n  return result;\n}\nfunction evaluateLater(...args) {\n  return theEvaluatorFunction(...args);\n}\nvar theEvaluatorFunction = normalEvaluator;\nfunction setEvaluator(newEvaluator) {\n  theEvaluatorFunction = newEvaluator;\n}\nfunction normalEvaluator(el, expression) {\n  let overriddenMagics = {};\n  injectMagics(overriddenMagics, el);\n  let dataStack = [overriddenMagics, ...closestDataStack(el)];\n  let evaluator = typeof expression === \"function\" ? generateEvaluatorFromFunction(dataStack, expression) : generateEvaluatorFromString(dataStack, expression, el);\n  return tryCatch.bind(null, el, expression, evaluator);\n}\nfunction generateEvaluatorFromFunction(dataStack, func) {\n  return (receiver = () => {\n  }, { scope: scope2 = {}, params = [] } = {}) => {\n    let result = func.apply(mergeProxies([scope2, ...dataStack]), params);\n    runIfTypeOfFunction(receiver, result);\n  };\n}\nvar evaluatorMemo = {};\nfunction generateFunctionFromString(expression, el) {\n  if (evaluatorMemo[expression]) {\n    return evaluatorMemo[expression];\n  }\n  let AsyncFunction = Object.getPrototypeOf(async function() {\n  }).constructor;\n  let rightSideSafeExpression = /^[\\n\\s]*if.*\\(.*\\)/.test(expression.trim()) || /^(let|const)\\s/.test(expression.trim()) ? `(async()=>{ ${expression} })()` : expression;\n  const safeAsyncFunction = () => {\n    try {\n      let func2 = new AsyncFunction(\n        [\"__self\", \"scope\"],\n        `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`\n      );\n      Object.defineProperty(func2, \"name\", {\n        value: `[Alpine] ${expression}`\n      });\n      return func2;\n    } catch (error2) {\n      handleError(error2, el, expression);\n      return Promise.resolve();\n    }\n  };\n  let func = safeAsyncFunction();\n  evaluatorMemo[expression] = func;\n  return func;\n}\nfunction generateEvaluatorFromString(dataStack, expression, el) {\n  let func = generateFunctionFromString(expression, el);\n  return (receiver = () => {\n  }, { scope: scope2 = {}, params = [] } = {}) => {\n    func.result = void 0;\n    func.finished = false;\n    let completeScope = mergeProxies([scope2, ...dataStack]);\n    if (typeof func === \"function\") {\n      let promise = func(func, completeScope).catch((error2) => handleError(error2, el, expression));\n      if (func.finished) {\n        runIfTypeOfFunction(receiver, func.result, completeScope, params, el);\n        func.result = void 0;\n      } else {\n        promise.then((result) => {\n          runIfTypeOfFunction(receiver, result, completeScope, params, el);\n        }).catch((error2) => handleError(error2, el, expression)).finally(() => func.result = void 0);\n      }\n    }\n  };\n}\nfunction runIfTypeOfFunction(receiver, value, scope2, params, el) {\n  if (shouldAutoEvaluateFunctions && typeof value === \"function\") {\n    let result = value.apply(scope2, params);\n    if (result instanceof Promise) {\n      result.then((i) => runIfTypeOfFunction(receiver, i, scope2, params)).catch((error2) => handleError(error2, el, value));\n    } else {\n      receiver(result);\n    }\n  } else if (typeof value === \"object\" && value instanceof Promise) {\n    value.then((i) => receiver(i));\n  } else {\n    receiver(value);\n  }\n}\n\n// packages/alpinejs/src/directives.js\nvar prefixAsString = \"x-\";\nfunction prefix(subject = \"\") {\n  return prefixAsString + subject;\n}\nfunction setPrefix(newPrefix) {\n  prefixAsString = newPrefix;\n}\nvar directiveHandlers = {};\nfunction directive(name, callback) {\n  directiveHandlers[name] = callback;\n  return {\n    before(directive2) {\n      if (!directiveHandlers[directive2]) {\n        console.warn(String.raw`Cannot find directive \\`${directive2}\\`. \\`${name}\\` will use the default order of execution`);\n        return;\n      }\n      const pos = directiveOrder.indexOf(directive2);\n      directiveOrder.splice(pos >= 0 ? pos : directiveOrder.indexOf(\"DEFAULT\"), 0, name);\n    }\n  };\n}\nfunction directiveExists(name) {\n  return Object.keys(directiveHandlers).includes(name);\n}\nfunction directives(el, attributes, originalAttributeOverride) {\n  attributes = Array.from(attributes);\n  if (el._x_virtualDirectives) {\n    let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value]) => ({ name, value }));\n    let staticAttributes = attributesOnly(vAttributes);\n    vAttributes = vAttributes.map((attribute) => {\n      if (staticAttributes.find((attr) => attr.name === attribute.name)) {\n        return {\n          name: `x-bind:${attribute.name}`,\n          value: `\"${attribute.value}\"`\n        };\n      }\n      return attribute;\n    });\n    attributes = attributes.concat(vAttributes);\n  }\n  let transformedAttributeMap = {};\n  let directives2 = attributes.map(toTransformedAttributes((newName, oldName) => transformedAttributeMap[newName] = oldName)).filter(outNonAlpineAttributes).map(toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort(byPriority);\n  return directives2.map((directive2) => {\n    return getDirectiveHandler(el, directive2);\n  });\n}\nfunction attributesOnly(attributes) {\n  return Array.from(attributes).map(toTransformedAttributes()).filter((attr) => !outNonAlpineAttributes(attr));\n}\nvar isDeferringHandlers = false;\nvar directiveHandlerStacks = /* @__PURE__ */ new Map();\nvar currentHandlerStackKey = Symbol();\nfunction deferHandlingDirectives(callback) {\n  isDeferringHandlers = true;\n  let key = Symbol();\n  currentHandlerStackKey = key;\n  directiveHandlerStacks.set(key, []);\n  let flushHandlers = () => {\n    while (directiveHandlerStacks.get(key).length)\n      directiveHandlerStacks.get(key).shift()();\n    directiveHandlerStacks.delete(key);\n  };\n  let stopDeferring = () => {\n    isDeferringHandlers = false;\n    flushHandlers();\n  };\n  callback(flushHandlers);\n  stopDeferring();\n}\nfunction getElementBoundUtilities(el) {\n  let cleanups = [];\n  let cleanup2 = (callback) => cleanups.push(callback);\n  let [effect3, cleanupEffect] = elementBoundEffect(el);\n  cleanups.push(cleanupEffect);\n  let utilities = {\n    Alpine: alpine_default,\n    effect: effect3,\n    cleanup: cleanup2,\n    evaluateLater: evaluateLater.bind(evaluateLater, el),\n    evaluate: evaluate.bind(evaluate, el)\n  };\n  let doCleanup = () => cleanups.forEach((i) => i());\n  return [utilities, doCleanup];\n}\nfunction getDirectiveHandler(el, directive2) {\n  let noop = () => {\n  };\n  let handler4 = directiveHandlers[directive2.type] || noop;\n  let [utilities, cleanup2] = getElementBoundUtilities(el);\n  onAttributeRemoved(el, directive2.original, cleanup2);\n  let fullHandler = () => {\n    if (el._x_ignore || el._x_ignoreSelf)\n      return;\n    handler4.inline && handler4.inline(el, directive2, utilities);\n    handler4 = handler4.bind(handler4, el, directive2, utilities);\n    isDeferringHandlers ? directiveHandlerStacks.get(currentHandlerStackKey).push(handler4) : handler4();\n  };\n  fullHandler.runCleanups = cleanup2;\n  return fullHandler;\n}\nvar startingWith = (subject, replacement) => ({ name, value }) => {\n  if (name.startsWith(subject))\n    name = name.replace(subject, replacement);\n  return { name, value };\n};\nvar into = (i) => i;\nfunction toTransformedAttributes(callback = () => {\n}) {\n  return ({ name, value }) => {\n    let { name: newName, value: newValue } = attributeTransformers.reduce((carry, transform) => {\n      return transform(carry);\n    }, { name, value });\n    if (newName !== name)\n      callback(newName, name);\n    return { name: newName, value: newValue };\n  };\n}\nvar attributeTransformers = [];\nfunction mapAttributes(callback) {\n  attributeTransformers.push(callback);\n}\nfunction outNonAlpineAttributes({ name }) {\n  return alpineAttributeRegex().test(name);\n}\nvar alpineAttributeRegex = () => new RegExp(`^${prefixAsString}([^:^.]+)\\\\b`);\nfunction toParsedDirectives(transformedAttributeMap, originalAttributeOverride) {\n  return ({ name, value }) => {\n    let typeMatch = name.match(alpineAttributeRegex());\n    let valueMatch = name.match(/:([a-zA-Z0-9\\-_:]+)/);\n    let modifiers = name.match(/\\.[^.\\]]+(?=[^\\]]*$)/g) || [];\n    let original = originalAttributeOverride || transformedAttributeMap[name] || name;\n    return {\n      type: typeMatch ? typeMatch[1] : null,\n      value: valueMatch ? valueMatch[1] : null,\n      modifiers: modifiers.map((i) => i.replace(\".\", \"\")),\n      expression: value,\n      original\n    };\n  };\n}\nvar DEFAULT = \"DEFAULT\";\nvar directiveOrder = [\n  \"ignore\",\n  \"ref\",\n  \"data\",\n  \"id\",\n  \"anchor\",\n  \"bind\",\n  \"init\",\n  \"for\",\n  \"model\",\n  \"modelable\",\n  \"transition\",\n  \"show\",\n  \"if\",\n  DEFAULT,\n  \"teleport\"\n];\nfunction byPriority(a, b) {\n  let typeA = directiveOrder.indexOf(a.type) === -1 ? DEFAULT : a.type;\n  let typeB = directiveOrder.indexOf(b.type) === -1 ? DEFAULT : b.type;\n  return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB);\n}\n\n// packages/alpinejs/src/utils/dispatch.js\nfunction dispatch(el, name, detail = {}) {\n  el.dispatchEvent(\n    new CustomEvent(name, {\n      detail,\n      bubbles: true,\n      // Allows events to pass the shadow DOM barrier.\n      composed: true,\n      cancelable: true\n    })\n  );\n}\n\n// packages/alpinejs/src/utils/walk.js\nfunction walk(el, callback) {\n  if (typeof ShadowRoot === \"function\" && el instanceof ShadowRoot) {\n    Array.from(el.children).forEach((el2) => walk(el2, callback));\n    return;\n  }\n  let skip = false;\n  callback(el, () => skip = true);\n  if (skip)\n    return;\n  let node = el.firstElementChild;\n  while (node) {\n    walk(node, callback, false);\n    node = node.nextElementSibling;\n  }\n}\n\n// packages/alpinejs/src/utils/warn.js\nfunction warn(message, ...args) {\n  console.warn(`Alpine Warning: ${message}`, ...args);\n}\n\n// packages/alpinejs/src/lifecycle.js\nvar started = false;\nfunction start() {\n  if (started)\n    warn(\"Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems.\");\n  started = true;\n  if (!document.body)\n    warn(\"Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?\");\n  dispatch(document, \"alpine:init\");\n  dispatch(document, \"alpine:initializing\");\n  startObservingMutations();\n  onElAdded((el) => initTree(el, walk));\n  onElRemoved((el) => destroyTree(el));\n  onAttributesAdded((el, attrs) => {\n    directives(el, attrs).forEach((handle) => handle());\n  });\n  let outNestedComponents = (el) => !closestRoot(el.parentElement, true);\n  Array.from(document.querySelectorAll(allSelectors().join(\",\"))).filter(outNestedComponents).forEach((el) => {\n    initTree(el);\n  });\n  dispatch(document, \"alpine:initialized\");\n  setTimeout(() => {\n    warnAboutMissingPlugins();\n  });\n}\nvar rootSelectorCallbacks = [];\nvar initSelectorCallbacks = [];\nfunction rootSelectors() {\n  return rootSelectorCallbacks.map((fn) => fn());\n}\nfunction allSelectors() {\n  return rootSelectorCallbacks.concat(initSelectorCallbacks).map((fn) => fn());\n}\nfunction addRootSelector(selectorCallback) {\n  rootSelectorCallbacks.push(selectorCallback);\n}\nfunction addInitSelector(selectorCallback) {\n  initSelectorCallbacks.push(selectorCallback);\n}\nfunction closestRoot(el, includeInitSelectors = false) {\n  return findClosest(el, (element) => {\n    const selectors = includeInitSelectors ? allSelectors() : rootSelectors();\n    if (selectors.some((selector) => element.matches(selector)))\n      return true;\n  });\n}\nfunction findClosest(el, callback) {\n  if (!el)\n    return;\n  if (callback(el))\n    return el;\n  if (el._x_teleportBack)\n    el = el._x_teleportBack;\n  if (!el.parentElement)\n    return;\n  return findClosest(el.parentElement, callback);\n}\nfunction isRoot(el) {\n  return rootSelectors().some((selector) => el.matches(selector));\n}\nvar initInterceptors2 = [];\nfunction interceptInit(callback) {\n  initInterceptors2.push(callback);\n}\nfunction initTree(el, walker = walk, intercept = () => {\n}) {\n  deferHandlingDirectives(() => {\n    walker(el, (el2, skip) => {\n      intercept(el2, skip);\n      initInterceptors2.forEach((i) => i(el2, skip));\n      directives(el2, el2.attributes).forEach((handle) => handle());\n      el2._x_ignore && skip();\n    });\n  });\n}\nfunction destroyTree(root, walker = walk) {\n  walker(root, (el) => {\n    cleanupElement(el);\n    cleanupAttributes(el);\n  });\n}\nfunction warnAboutMissingPlugins() {\n  let pluginDirectives = [\n    [\"ui\", \"dialog\", [\"[x-dialog], [x-popover]\"]],\n    [\"anchor\", \"anchor\", [\"[x-anchor]\"]],\n    [\"sort\", \"sort\", [\"[x-sort]\"]]\n  ];\n  pluginDirectives.forEach(([plugin2, directive2, selectors]) => {\n    if (directiveExists(directive2))\n      return;\n    selectors.some((selector) => {\n      if (document.querySelector(selector)) {\n        warn(`found \"${selector}\", but missing ${plugin2} plugin`);\n        return true;\n      }\n    });\n  });\n}\n\n// packages/alpinejs/src/nextTick.js\nvar tickStack = [];\nvar isHolding = false;\nfunction nextTick(callback = () => {\n}) {\n  queueMicrotask(() => {\n    isHolding || setTimeout(() => {\n      releaseNextTicks();\n    });\n  });\n  return new Promise((res) => {\n    tickStack.push(() => {\n      callback();\n      res();\n    });\n  });\n}\nfunction releaseNextTicks() {\n  isHolding = false;\n  while (tickStack.length)\n    tickStack.shift()();\n}\nfunction holdNextTicks() {\n  isHolding = true;\n}\n\n// packages/alpinejs/src/utils/classes.js\nfunction setClasses(el, value) {\n  if (Array.isArray(value)) {\n    return setClassesFromString(el, value.join(\" \"));\n  } else if (typeof value === \"object\" && value !== null) {\n    return setClassesFromObject(el, value);\n  } else if (typeof value === \"function\") {\n    return setClasses(el, value());\n  }\n  return setClassesFromString(el, value);\n}\nfunction setClassesFromString(el, classString) {\n  let split = (classString2) => classString2.split(\" \").filter(Boolean);\n  let missingClasses = (classString2) => classString2.split(\" \").filter((i) => !el.classList.contains(i)).filter(Boolean);\n  let addClassesAndReturnUndo = (classes) => {\n    el.classList.add(...classes);\n    return () => {\n      el.classList.remove(...classes);\n    };\n  };\n  classString = classString === true ? classString = \"\" : classString || \"\";\n  return addClassesAndReturnUndo(missingClasses(classString));\n}\nfunction setClassesFromObject(el, classObject) {\n  let split = (classString) => classString.split(\" \").filter(Boolean);\n  let forAdd = Object.entries(classObject).flatMap(([classString, bool]) => bool ? split(classString) : false).filter(Boolean);\n  let forRemove = Object.entries(classObject).flatMap(([classString, bool]) => !bool ? split(classString) : false).filter(Boolean);\n  let added = [];\n  let removed = [];\n  forRemove.forEach((i) => {\n    if (el.classList.contains(i)) {\n      el.classList.remove(i);\n      removed.push(i);\n    }\n  });\n  forAdd.forEach((i) => {\n    if (!el.classList.contains(i)) {\n      el.classList.add(i);\n      added.push(i);\n    }\n  });\n  return () => {\n    removed.forEach((i) => el.classList.add(i));\n    added.forEach((i) => el.classList.remove(i));\n  };\n}\n\n// packages/alpinejs/src/utils/styles.js\nfunction setStyles(el, value) {\n  if (typeof value === \"object\" && value !== null) {\n    return setStylesFromObject(el, value);\n  }\n  return setStylesFromString(el, value);\n}\nfunction setStylesFromObject(el, value) {\n  let previousStyles = {};\n  Object.entries(value).forEach(([key, value2]) => {\n    previousStyles[key] = el.style[key];\n    if (!key.startsWith(\"--\")) {\n      key = kebabCase(key);\n    }\n    el.style.setProperty(key, value2);\n  });\n  setTimeout(() => {\n    if (el.style.length === 0) {\n      el.removeAttribute(\"style\");\n    }\n  });\n  return () => {\n    setStyles(el, previousStyles);\n  };\n}\nfunction setStylesFromString(el, value) {\n  let cache = el.getAttribute(\"style\", value);\n  el.setAttribute(\"style\", value);\n  return () => {\n    el.setAttribute(\"style\", cache || \"\");\n  };\n}\nfunction kebabCase(subject) {\n  return subject.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\n// packages/alpinejs/src/utils/once.js\nfunction once(callback, fallback = () => {\n}) {\n  let called = false;\n  return function() {\n    if (!called) {\n      called = true;\n      callback.apply(this, arguments);\n    } else {\n      fallback.apply(this, arguments);\n    }\n  };\n}\n\n// packages/alpinejs/src/directives/x-transition.js\ndirective(\"transition\", (el, { value, modifiers, expression }, { evaluate: evaluate2 }) => {\n  if (typeof expression === \"function\")\n    expression = evaluate2(expression);\n  if (expression === false)\n    return;\n  if (!expression || typeof expression === \"boolean\") {\n    registerTransitionsFromHelper(el, modifiers, value);\n  } else {\n    registerTransitionsFromClassString(el, expression, value);\n  }\n});\nfunction registerTransitionsFromClassString(el, classString, stage) {\n  registerTransitionObject(el, setClasses, \"\");\n  let directiveStorageMap = {\n    \"enter\": (classes) => {\n      el._x_transition.enter.during = classes;\n    },\n    \"enter-start\": (classes) => {\n      el._x_transition.enter.start = classes;\n    },\n    \"enter-end\": (classes) => {\n      el._x_transition.enter.end = classes;\n    },\n    \"leave\": (classes) => {\n      el._x_transition.leave.during = classes;\n    },\n    \"leave-start\": (classes) => {\n      el._x_transition.leave.start = classes;\n    },\n    \"leave-end\": (classes) => {\n      el._x_transition.leave.end = classes;\n    }\n  };\n  directiveStorageMap[stage](classString);\n}\nfunction registerTransitionsFromHelper(el, modifiers, stage) {\n  registerTransitionObject(el, setStyles);\n  let doesntSpecify = !modifiers.includes(\"in\") && !modifiers.includes(\"out\") && !stage;\n  let transitioningIn = doesntSpecify || modifiers.includes(\"in\") || [\"enter\"].includes(stage);\n  let transitioningOut = doesntSpecify || modifiers.includes(\"out\") || [\"leave\"].includes(stage);\n  if (modifiers.includes(\"in\") && !doesntSpecify) {\n    modifiers = modifiers.filter((i, index) => index < modifiers.indexOf(\"out\"));\n  }\n  if (modifiers.includes(\"out\") && !doesntSpecify) {\n    modifiers = modifiers.filter((i, index) => index > modifiers.indexOf(\"out\"));\n  }\n  let wantsAll = !modifiers.includes(\"opacity\") && !modifiers.includes(\"scale\");\n  let wantsOpacity = wantsAll || modifiers.includes(\"opacity\");\n  let wantsScale = wantsAll || modifiers.includes(\"scale\");\n  let opacityValue = wantsOpacity ? 0 : 1;\n  let scaleValue = wantsScale ? modifierValue(modifiers, \"scale\", 95) / 100 : 1;\n  let delay = modifierValue(modifiers, \"delay\", 0) / 1e3;\n  let origin = modifierValue(modifiers, \"origin\", \"center\");\n  let property = \"opacity, transform\";\n  let durationIn = modifierValue(modifiers, \"duration\", 150) / 1e3;\n  let durationOut = modifierValue(modifiers, \"duration\", 75) / 1e3;\n  let easing = `cubic-bezier(0.4, 0.0, 0.2, 1)`;\n  if (transitioningIn) {\n    el._x_transition.enter.during = {\n      transformOrigin: origin,\n      transitionDelay: `${delay}s`,\n      transitionProperty: property,\n      transitionDuration: `${durationIn}s`,\n      transitionTimingFunction: easing\n    };\n    el._x_transition.enter.start = {\n      opacity: opacityValue,\n      transform: `scale(${scaleValue})`\n    };\n    el._x_transition.enter.end = {\n      opacity: 1,\n      transform: `scale(1)`\n    };\n  }\n  if (transitioningOut) {\n    el._x_transition.leave.during = {\n      transformOrigin: origin,\n      transitionDelay: `${delay}s`,\n      transitionProperty: property,\n      transitionDuration: `${durationOut}s`,\n      transitionTimingFunction: easing\n    };\n    el._x_transition.leave.start = {\n      opacity: 1,\n      transform: `scale(1)`\n    };\n    el._x_transition.leave.end = {\n      opacity: opacityValue,\n      transform: `scale(${scaleValue})`\n    };\n  }\n}\nfunction registerTransitionObject(el, setFunction, defaultValue = {}) {\n  if (!el._x_transition)\n    el._x_transition = {\n      enter: { during: defaultValue, start: defaultValue, end: defaultValue },\n      leave: { during: defaultValue, start: defaultValue, end: defaultValue },\n      in(before = () => {\n      }, after = () => {\n      }) {\n        transition(el, setFunction, {\n          during: this.enter.during,\n          start: this.enter.start,\n          end: this.enter.end\n        }, before, after);\n      },\n      out(before = () => {\n      }, after = () => {\n      }) {\n        transition(el, setFunction, {\n          during: this.leave.during,\n          start: this.leave.start,\n          end: this.leave.end\n        }, before, after);\n      }\n    };\n}\nwindow.Element.prototype._x_toggleAndCascadeWithTransitions = function(el, value, show, hide) {\n  const nextTick2 = document.visibilityState === \"visible\" ? requestAnimationFrame : setTimeout;\n  let clickAwayCompatibleShow = () => nextTick2(show);\n  if (value) {\n    if (el._x_transition && (el._x_transition.enter || el._x_transition.leave)) {\n      el._x_transition.enter && (Object.entries(el._x_transition.enter.during).length || Object.entries(el._x_transition.enter.start).length || Object.entries(el._x_transition.enter.end).length) ? el._x_transition.in(show) : clickAwayCompatibleShow();\n    } else {\n      el._x_transition ? el._x_transition.in(show) : clickAwayCompatibleShow();\n    }\n    return;\n  }\n  el._x_hidePromise = el._x_transition ? new Promise((resolve, reject) => {\n    el._x_transition.out(() => {\n    }, () => resolve(hide));\n    el._x_transitioning && el._x_transitioning.beforeCancel(() => reject({ isFromCancelledTransition: true }));\n  }) : Promise.resolve(hide);\n  queueMicrotask(() => {\n    let closest = closestHide(el);\n    if (closest) {\n      if (!closest._x_hideChildren)\n        closest._x_hideChildren = [];\n      closest._x_hideChildren.push(el);\n    } else {\n      nextTick2(() => {\n        let hideAfterChildren = (el2) => {\n          let carry = Promise.all([\n            el2._x_hidePromise,\n            ...(el2._x_hideChildren || []).map(hideAfterChildren)\n          ]).then(([i]) => i?.());\n          delete el2._x_hidePromise;\n          delete el2._x_hideChildren;\n          return carry;\n        };\n        hideAfterChildren(el).catch((e) => {\n          if (!e.isFromCancelledTransition)\n            throw e;\n        });\n      });\n    }\n  });\n};\nfunction closestHide(el) {\n  let parent = el.parentNode;\n  if (!parent)\n    return;\n  return parent._x_hidePromise ? parent : closestHide(parent);\n}\nfunction transition(el, setFunction, { during, start: start2, end } = {}, before = () => {\n}, after = () => {\n}) {\n  if (el._x_transitioning)\n    el._x_transitioning.cancel();\n  if (Object.keys(during).length === 0 && Object.keys(start2).length === 0 && Object.keys(end).length === 0) {\n    before();\n    after();\n    return;\n  }\n  let undoStart, undoDuring, undoEnd;\n  performTransition(el, {\n    start() {\n      undoStart = setFunction(el, start2);\n    },\n    during() {\n      undoDuring = setFunction(el, during);\n    },\n    before,\n    end() {\n      undoStart();\n      undoEnd = setFunction(el, end);\n    },\n    after,\n    cleanup() {\n      undoDuring();\n      undoEnd();\n    }\n  });\n}\nfunction performTransition(el, stages) {\n  let interrupted, reachedBefore, reachedEnd;\n  let finish = once(() => {\n    mutateDom(() => {\n      interrupted = true;\n      if (!reachedBefore)\n        stages.before();\n      if (!reachedEnd) {\n        stages.end();\n        releaseNextTicks();\n      }\n      stages.after();\n      if (el.isConnected)\n        stages.cleanup();\n      delete el._x_transitioning;\n    });\n  });\n  el._x_transitioning = {\n    beforeCancels: [],\n    beforeCancel(callback) {\n      this.beforeCancels.push(callback);\n    },\n    cancel: once(function() {\n      while (this.beforeCancels.length) {\n        this.beforeCancels.shift()();\n      }\n      ;\n      finish();\n    }),\n    finish\n  };\n  mutateDom(() => {\n    stages.start();\n    stages.during();\n  });\n  holdNextTicks();\n  requestAnimationFrame(() => {\n    if (interrupted)\n      return;\n    let duration = Number(getComputedStyle(el).transitionDuration.replace(/,.*/, \"\").replace(\"s\", \"\")) * 1e3;\n    let delay = Number(getComputedStyle(el).transitionDelay.replace(/,.*/, \"\").replace(\"s\", \"\")) * 1e3;\n    if (duration === 0)\n      duration = Number(getComputedStyle(el).animationDuration.replace(\"s\", \"\")) * 1e3;\n    mutateDom(() => {\n      stages.before();\n    });\n    reachedBefore = true;\n    requestAnimationFrame(() => {\n      if (interrupted)\n        return;\n      mutateDom(() => {\n        stages.end();\n      });\n      releaseNextTicks();\n      setTimeout(el._x_transitioning.finish, duration + delay);\n      reachedEnd = true;\n    });\n  });\n}\nfunction modifierValue(modifiers, key, fallback) {\n  if (modifiers.indexOf(key) === -1)\n    return fallback;\n  const rawValue = modifiers[modifiers.indexOf(key) + 1];\n  if (!rawValue)\n    return fallback;\n  if (key === \"scale\") {\n    if (isNaN(rawValue))\n      return fallback;\n  }\n  if (key === \"duration\" || key === \"delay\") {\n    let match = rawValue.match(/([0-9]+)ms/);\n    if (match)\n      return match[1];\n  }\n  if (key === \"origin\") {\n    if ([\"top\", \"right\", \"left\", \"center\", \"bottom\"].includes(modifiers[modifiers.indexOf(key) + 2])) {\n      return [rawValue, modifiers[modifiers.indexOf(key) + 2]].join(\" \");\n    }\n  }\n  return rawValue;\n}\n\n// packages/alpinejs/src/clone.js\nvar isCloning = false;\nfunction skipDuringClone(callback, fallback = () => {\n}) {\n  return (...args) => isCloning ? fallback(...args) : callback(...args);\n}\nfunction onlyDuringClone(callback) {\n  return (...args) => isCloning && callback(...args);\n}\nvar interceptors = [];\nfunction interceptClone(callback) {\n  interceptors.push(callback);\n}\nfunction cloneNode(from, to) {\n  interceptors.forEach((i) => i(from, to));\n  isCloning = true;\n  dontRegisterReactiveSideEffects(() => {\n    initTree(to, (el, callback) => {\n      callback(el, () => {\n      });\n    });\n  });\n  isCloning = false;\n}\nvar isCloningLegacy = false;\nfunction clone(oldEl, newEl) {\n  if (!newEl._x_dataStack)\n    newEl._x_dataStack = oldEl._x_dataStack;\n  isCloning = true;\n  isCloningLegacy = true;\n  dontRegisterReactiveSideEffects(() => {\n    cloneTree(newEl);\n  });\n  isCloning = false;\n  isCloningLegacy = false;\n}\nfunction cloneTree(el) {\n  let hasRunThroughFirstEl = false;\n  let shallowWalker = (el2, callback) => {\n    walk(el2, (el3, skip) => {\n      if (hasRunThroughFirstEl && isRoot(el3))\n        return skip();\n      hasRunThroughFirstEl = true;\n      callback(el3, skip);\n    });\n  };\n  initTree(el, shallowWalker);\n}\nfunction dontRegisterReactiveSideEffects(callback) {\n  let cache = effect;\n  overrideEffect((callback2, el) => {\n    let storedEffect = cache(callback2);\n    release(storedEffect);\n    return () => {\n    };\n  });\n  callback();\n  overrideEffect(cache);\n}\n\n// packages/alpinejs/src/utils/bind.js\nfunction bind(el, name, value, modifiers = []) {\n  if (!el._x_bindings)\n    el._x_bindings = reactive({});\n  el._x_bindings[name] = value;\n  name = modifiers.includes(\"camel\") ? camelCase(name) : name;\n  switch (name) {\n    case \"value\":\n      bindInputValue(el, value);\n      break;\n    case \"style\":\n      bindStyles(el, value);\n      break;\n    case \"class\":\n      bindClasses(el, value);\n      break;\n    case \"selected\":\n    case \"checked\":\n      bindAttributeAndProperty(el, name, value);\n      break;\n    default:\n      bindAttribute(el, name, value);\n      break;\n  }\n}\nfunction bindInputValue(el, value) {\n  if (isRadio(el)) {\n    if (el.attributes.value === void 0) {\n      el.value = value;\n    }\n    if (window.fromModel) {\n      if (typeof value === \"boolean\") {\n        el.checked = safeParseBoolean(el.value) === value;\n      } else {\n        el.checked = checkedAttrLooseCompare(el.value, value);\n      }\n    }\n  } else if (isCheckbox(el)) {\n    if (Number.isInteger(value)) {\n      el.value = value;\n    } else if (!Array.isArray(value) && typeof value !== \"boolean\" && ![null, void 0].includes(value)) {\n      el.value = String(value);\n    } else {\n      if (Array.isArray(value)) {\n        el.checked = value.some((val) => checkedAttrLooseCompare(val, el.value));\n      } else {\n        el.checked = !!value;\n      }\n    }\n  } else if (el.tagName === \"SELECT\") {\n    updateSelect(el, value);\n  } else {\n    if (el.value === value)\n      return;\n    el.value = value === void 0 ? \"\" : value;\n  }\n}\nfunction bindClasses(el, value) {\n  if (el._x_undoAddedClasses)\n    el._x_undoAddedClasses();\n  el._x_undoAddedClasses = setClasses(el, value);\n}\nfunction bindStyles(el, value) {\n  if (el._x_undoAddedStyles)\n    el._x_undoAddedStyles();\n  el._x_undoAddedStyles = setStyles(el, value);\n}\nfunction bindAttributeAndProperty(el, name, value) {\n  bindAttribute(el, name, value);\n  setPropertyIfChanged(el, name, value);\n}\nfunction bindAttribute(el, name, value) {\n  if ([null, void 0, false].includes(value) && attributeShouldntBePreservedIfFalsy(name)) {\n    el.removeAttribute(name);\n  } else {\n    if (isBooleanAttr(name))\n      value = name;\n    setIfChanged(el, name, value);\n  }\n}\nfunction setIfChanged(el, attrName, value) {\n  if (el.getAttribute(attrName) != value) {\n    el.setAttribute(attrName, value);\n  }\n}\nfunction setPropertyIfChanged(el, propName, value) {\n  if (el[propName] !== value) {\n    el[propName] = value;\n  }\n}\nfunction updateSelect(el, value) {\n  const arrayWrappedValue = [].concat(value).map((value2) => {\n    return value2 + \"\";\n  });\n  Array.from(el.options).forEach((option) => {\n    option.selected = arrayWrappedValue.includes(option.value);\n  });\n}\nfunction camelCase(subject) {\n  return subject.toLowerCase().replace(/-(\\w)/g, (match, char) => char.toUpperCase());\n}\nfunction checkedAttrLooseCompare(valueA, valueB) {\n  return valueA == valueB;\n}\nfunction safeParseBoolean(rawValue) {\n  if ([1, \"1\", \"true\", \"on\", \"yes\", true].includes(rawValue)) {\n    return true;\n  }\n  if ([0, \"0\", \"false\", \"off\", \"no\", false].includes(rawValue)) {\n    return false;\n  }\n  return rawValue ? Boolean(rawValue) : null;\n}\nvar booleanAttributes = /* @__PURE__ */ new Set([\n  \"allowfullscreen\",\n  \"async\",\n  \"autofocus\",\n  \"autoplay\",\n  \"checked\",\n  \"controls\",\n  \"default\",\n  \"defer\",\n  \"disabled\",\n  \"formnovalidate\",\n  \"inert\",\n  \"ismap\",\n  \"itemscope\",\n  \"loop\",\n  \"multiple\",\n  \"muted\",\n  \"nomodule\",\n  \"novalidate\",\n  \"open\",\n  \"playsinline\",\n  \"readonly\",\n  \"required\",\n  \"reversed\",\n  \"selected\",\n  \"shadowrootclonable\",\n  \"shadowrootdelegatesfocus\",\n  \"shadowrootserializable\"\n]);\nfunction isBooleanAttr(attrName) {\n  return booleanAttributes.has(attrName);\n}\nfunction attributeShouldntBePreservedIfFalsy(name) {\n  return ![\"aria-pressed\", \"aria-checked\", \"aria-expanded\", \"aria-selected\"].includes(name);\n}\nfunction getBinding(el, name, fallback) {\n  if (el._x_bindings && el._x_bindings[name] !== void 0)\n    return el._x_bindings[name];\n  return getAttributeBinding(el, name, fallback);\n}\nfunction extractProp(el, name, fallback, extract = true) {\n  if (el._x_bindings && el._x_bindings[name] !== void 0)\n    return el._x_bindings[name];\n  if (el._x_inlineBindings && el._x_inlineBindings[name] !== void 0) {\n    let binding = el._x_inlineBindings[name];\n    binding.extract = extract;\n    return dontAutoEvaluateFunctions(() => {\n      return evaluate(el, binding.expression);\n    });\n  }\n  return getAttributeBinding(el, name, fallback);\n}\nfunction getAttributeBinding(el, name, fallback) {\n  let attr = el.getAttribute(name);\n  if (attr === null)\n    return typeof fallback === \"function\" ? fallback() : fallback;\n  if (attr === \"\")\n    return true;\n  if (isBooleanAttr(name)) {\n    return !![name, \"true\"].includes(attr);\n  }\n  return attr;\n}\nfunction isCheckbox(el) {\n  return el.type === \"checkbox\" || el.localName === \"ui-checkbox\" || el.localName === \"ui-switch\";\n}\nfunction isRadio(el) {\n  return el.type === \"radio\" || el.localName === \"ui-radio\";\n}\n\n// packages/alpinejs/src/utils/debounce.js\nfunction debounce(func, wait) {\n  var timeout;\n  return function() {\n    var context = this, args = arguments;\n    var later = function() {\n      timeout = null;\n      func.apply(context, args);\n    };\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n  };\n}\n\n// packages/alpinejs/src/utils/throttle.js\nfunction throttle(func, limit) {\n  let inThrottle;\n  return function() {\n    let context = this, args = arguments;\n    if (!inThrottle) {\n      func.apply(context, args);\n      inThrottle = true;\n      setTimeout(() => inThrottle = false, limit);\n    }\n  };\n}\n\n// packages/alpinejs/src/entangle.js\nfunction entangle({ get: outerGet, set: outerSet }, { get: innerGet, set: innerSet }) {\n  let firstRun = true;\n  let outerHash;\n  let innerHash;\n  let reference = effect(() => {\n    let outer = outerGet();\n    let inner = innerGet();\n    if (firstRun) {\n      innerSet(cloneIfObject(outer));\n      firstRun = false;\n    } else {\n      let outerHashLatest = JSON.stringify(outer);\n      let innerHashLatest = JSON.stringify(inner);\n      if (outerHashLatest !== outerHash) {\n        innerSet(cloneIfObject(outer));\n      } else if (outerHashLatest !== innerHashLatest) {\n        outerSet(cloneIfObject(inner));\n      } else {\n      }\n    }\n    outerHash = JSON.stringify(outerGet());\n    innerHash = JSON.stringify(innerGet());\n  });\n  return () => {\n    release(reference);\n  };\n}\nfunction cloneIfObject(value) {\n  return typeof value === \"object\" ? JSON.parse(JSON.stringify(value)) : value;\n}\n\n// packages/alpinejs/src/plugin.js\nfunction plugin(callback) {\n  let callbacks = Array.isArray(callback) ? callback : [callback];\n  callbacks.forEach((i) => i(alpine_default));\n}\n\n// packages/alpinejs/src/store.js\nvar stores = {};\nvar isReactive = false;\nfunction store(name, value) {\n  if (!isReactive) {\n    stores = reactive(stores);\n    isReactive = true;\n  }\n  if (value === void 0) {\n    return stores[name];\n  }\n  stores[name] = value;\n  initInterceptors(stores[name]);\n  if (typeof value === \"object\" && value !== null && value.hasOwnProperty(\"init\") && typeof value.init === \"function\") {\n    stores[name].init();\n  }\n}\nfunction getStores() {\n  return stores;\n}\n\n// packages/alpinejs/src/binds.js\nvar binds = {};\nfunction bind2(name, bindings) {\n  let getBindings = typeof bindings !== \"function\" ? () => bindings : bindings;\n  if (name instanceof Element) {\n    return applyBindingsObject(name, getBindings());\n  } else {\n    binds[name] = getBindings;\n  }\n  return () => {\n  };\n}\nfunction injectBindingProviders(obj) {\n  Object.entries(binds).forEach(([name, callback]) => {\n    Object.defineProperty(obj, name, {\n      get() {\n        return (...args) => {\n          return callback(...args);\n        };\n      }\n    });\n  });\n  return obj;\n}\nfunction applyBindingsObject(el, obj, original) {\n  let cleanupRunners = [];\n  while (cleanupRunners.length)\n    cleanupRunners.pop()();\n  let attributes = Object.entries(obj).map(([name, value]) => ({ name, value }));\n  let staticAttributes = attributesOnly(attributes);\n  attributes = attributes.map((attribute) => {\n    if (staticAttributes.find((attr) => attr.name === attribute.name)) {\n      return {\n        name: `x-bind:${attribute.name}`,\n        value: `\"${attribute.value}\"`\n      };\n    }\n    return attribute;\n  });\n  directives(el, attributes, original).map((handle) => {\n    cleanupRunners.push(handle.runCleanups);\n    handle();\n  });\n  return () => {\n    while (cleanupRunners.length)\n      cleanupRunners.pop()();\n  };\n}\n\n// packages/alpinejs/src/datas.js\nvar datas = {};\nfunction data(name, callback) {\n  datas[name] = callback;\n}\nfunction injectDataProviders(obj, context) {\n  Object.entries(datas).forEach(([name, callback]) => {\n    Object.defineProperty(obj, name, {\n      get() {\n        return (...args) => {\n          return callback.bind(context)(...args);\n        };\n      },\n      enumerable: false\n    });\n  });\n  return obj;\n}\n\n// packages/alpinejs/src/alpine.js\nvar Alpine = {\n  get reactive() {\n    return reactive;\n  },\n  get release() {\n    return release;\n  },\n  get effect() {\n    return effect;\n  },\n  get raw() {\n    return raw;\n  },\n  version: \"3.14.3\",\n  flushAndStopDeferringMutations,\n  dontAutoEvaluateFunctions,\n  disableEffectScheduling,\n  startObservingMutations,\n  stopObservingMutations,\n  setReactivityEngine,\n  onAttributeRemoved,\n  onAttributesAdded,\n  closestDataStack,\n  skipDuringClone,\n  onlyDuringClone,\n  addRootSelector,\n  addInitSelector,\n  interceptClone,\n  addScopeToNode,\n  deferMutations,\n  mapAttributes,\n  evaluateLater,\n  interceptInit,\n  setEvaluator,\n  mergeProxies,\n  extractProp,\n  findClosest,\n  onElRemoved,\n  closestRoot,\n  destroyTree,\n  interceptor,\n  // INTERNAL: not public API and is subject to change without major release.\n  transition,\n  // INTERNAL\n  setStyles,\n  // INTERNAL\n  mutateDom,\n  directive,\n  entangle,\n  throttle,\n  debounce,\n  evaluate,\n  initTree,\n  nextTick,\n  prefixed: prefix,\n  prefix: setPrefix,\n  plugin,\n  magic,\n  store,\n  start,\n  clone,\n  // INTERNAL\n  cloneNode,\n  // INTERNAL\n  bound: getBinding,\n  $data: scope,\n  watch,\n  walk,\n  data,\n  bind: bind2\n};\nvar alpine_default = Alpine;\n\n// node_modules/@vue/shared/dist/shared.esm-bundler.js\nfunction makeMap(str, expectsLowerCase) {\n  const map = /* @__PURE__ */ Object.create(null);\n  const list = str.split(\",\");\n  for (let i = 0; i < list.length; i++) {\n    map[list[i]] = true;\n  }\n  return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nvar specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nvar isBooleanAttr2 = /* @__PURE__ */ makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`);\nvar EMPTY_OBJ = true ? Object.freeze({}) : {};\nvar EMPTY_ARR = true ? Object.freeze([]) : [];\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar hasOwn = (val, key) => hasOwnProperty.call(val, key);\nvar isArray = Array.isArray;\nvar isMap = (val) => toTypeString(val) === \"[object Map]\";\nvar isString = (val) => typeof val === \"string\";\nvar isSymbol = (val) => typeof val === \"symbol\";\nvar isObject = (val) => val !== null && typeof val === \"object\";\nvar objectToString = Object.prototype.toString;\nvar toTypeString = (value) => objectToString.call(value);\nvar toRawType = (value) => {\n  return toTypeString(value).slice(8, -1);\n};\nvar isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nvar cacheStringFunction = (fn) => {\n  const cache = /* @__PURE__ */ Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nvar capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\nvar toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\nvar hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue);\n\n// node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js\nvar targetMap = /* @__PURE__ */ new WeakMap();\nvar effectStack = [];\nvar activeEffect;\nvar ITERATE_KEY = Symbol(true ? \"iterate\" : \"\");\nvar MAP_KEY_ITERATE_KEY = Symbol(true ? \"Map key iterate\" : \"\");\nfunction isEffect(fn) {\n  return fn && fn._isEffect === true;\n}\nfunction effect2(fn, options = EMPTY_OBJ) {\n  if (isEffect(fn)) {\n    fn = fn.raw;\n  }\n  const effect3 = createReactiveEffect(fn, options);\n  if (!options.lazy) {\n    effect3();\n  }\n  return effect3;\n}\nfunction stop(effect3) {\n  if (effect3.active) {\n    cleanup(effect3);\n    if (effect3.options.onStop) {\n      effect3.options.onStop();\n    }\n    effect3.active = false;\n  }\n}\nvar uid = 0;\nfunction createReactiveEffect(fn, options) {\n  const effect3 = function reactiveEffect() {\n    if (!effect3.active) {\n      return fn();\n    }\n    if (!effectStack.includes(effect3)) {\n      cleanup(effect3);\n      try {\n        enableTracking();\n        effectStack.push(effect3);\n        activeEffect = effect3;\n        return fn();\n      } finally {\n        effectStack.pop();\n        resetTracking();\n        activeEffect = effectStack[effectStack.length - 1];\n      }\n    }\n  };\n  effect3.id = uid++;\n  effect3.allowRecurse = !!options.allowRecurse;\n  effect3._isEffect = true;\n  effect3.active = true;\n  effect3.raw = fn;\n  effect3.deps = [];\n  effect3.options = options;\n  return effect3;\n}\nfunction cleanup(effect3) {\n  const { deps } = effect3;\n  if (deps.length) {\n    for (let i = 0; i < deps.length; i++) {\n      deps[i].delete(effect3);\n    }\n    deps.length = 0;\n  }\n}\nvar shouldTrack = true;\nvar trackStack = [];\nfunction pauseTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = false;\n}\nfunction enableTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = true;\n}\nfunction resetTracking() {\n  const last = trackStack.pop();\n  shouldTrack = last === void 0 ? true : last;\n}\nfunction track(target, type, key) {\n  if (!shouldTrack || activeEffect === void 0) {\n    return;\n  }\n  let depsMap = targetMap.get(target);\n  if (!depsMap) {\n    targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n  }\n  let dep = depsMap.get(key);\n  if (!dep) {\n    depsMap.set(key, dep = /* @__PURE__ */ new Set());\n  }\n  if (!dep.has(activeEffect)) {\n    dep.add(activeEffect);\n    activeEffect.deps.push(dep);\n    if (activeEffect.options.onTrack) {\n      activeEffect.options.onTrack({\n        effect: activeEffect,\n        target,\n        type,\n        key\n      });\n    }\n  }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) {\n    return;\n  }\n  const effects = /* @__PURE__ */ new Set();\n  const add2 = (effectsToAdd) => {\n    if (effectsToAdd) {\n      effectsToAdd.forEach((effect3) => {\n        if (effect3 !== activeEffect || effect3.allowRecurse) {\n          effects.add(effect3);\n        }\n      });\n    }\n  };\n  if (type === \"clear\") {\n    depsMap.forEach(add2);\n  } else if (key === \"length\" && isArray(target)) {\n    depsMap.forEach((dep, key2) => {\n      if (key2 === \"length\" || key2 >= newValue) {\n        add2(dep);\n      }\n    });\n  } else {\n    if (key !== void 0) {\n      add2(depsMap.get(key));\n    }\n    switch (type) {\n      case \"add\":\n        if (!isArray(target)) {\n          add2(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            add2(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        } else if (isIntegerKey(key)) {\n          add2(depsMap.get(\"length\"));\n        }\n        break;\n      case \"delete\":\n        if (!isArray(target)) {\n          add2(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            add2(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        }\n        break;\n      case \"set\":\n        if (isMap(target)) {\n          add2(depsMap.get(ITERATE_KEY));\n        }\n        break;\n    }\n  }\n  const run = (effect3) => {\n    if (effect3.options.onTrigger) {\n      effect3.options.onTrigger({\n        effect: effect3,\n        target,\n        key,\n        type,\n        newValue,\n        oldValue,\n        oldTarget\n      });\n    }\n    if (effect3.options.scheduler) {\n      effect3.options.scheduler(effect3);\n    } else {\n      effect3();\n    }\n  };\n  effects.forEach(run);\n}\nvar isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nvar builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map((key) => Symbol[key]).filter(isSymbol));\nvar get2 = /* @__PURE__ */ createGetter();\nvar readonlyGet = /* @__PURE__ */ createGetter(true);\nvar arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n  const instrumentations = {};\n  [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      const arr = toRaw(this);\n      for (let i = 0, l = this.length; i < l; i++) {\n        track(arr, \"get\", i + \"\");\n      }\n      const res = arr[key](...args);\n      if (res === -1 || res === false) {\n        return arr[key](...args.map(toRaw));\n      } else {\n        return res;\n      }\n    };\n  });\n  [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n    instrumentations[key] = function(...args) {\n      pauseTracking();\n      const res = toRaw(this)[key].apply(this, args);\n      resetTracking();\n      return res;\n    };\n  });\n  return instrumentations;\n}\nfunction createGetter(isReadonly = false, shallow = false) {\n  return function get3(target, key, receiver) {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly;\n    } else if (key === \"__v_raw\" && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {\n      return target;\n    }\n    const targetIsArray = isArray(target);\n    if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\n      return Reflect.get(arrayInstrumentations, key, receiver);\n    }\n    const res = Reflect.get(target, key, receiver);\n    if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n      return res;\n    }\n    if (!isReadonly) {\n      track(target, \"get\", key);\n    }\n    if (shallow) {\n      return res;\n    }\n    if (isRef(res)) {\n      const shouldUnwrap = !targetIsArray || !isIntegerKey(key);\n      return shouldUnwrap ? res.value : res;\n    }\n    if (isObject(res)) {\n      return isReadonly ? readonly(res) : reactive2(res);\n    }\n    return res;\n  };\n}\nvar set2 = /* @__PURE__ */ createSetter();\nfunction createSetter(shallow = false) {\n  return function set3(target, key, value, receiver) {\n    let oldValue = target[key];\n    if (!shallow) {\n      value = toRaw(value);\n      oldValue = toRaw(oldValue);\n      if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n        oldValue.value = value;\n        return true;\n      }\n    }\n    const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n    const result = Reflect.set(target, key, value, receiver);\n    if (target === toRaw(receiver)) {\n      if (!hadKey) {\n        trigger(target, \"add\", key, value);\n      } else if (hasChanged(value, oldValue)) {\n        trigger(target, \"set\", key, value, oldValue);\n      }\n    }\n    return result;\n  };\n}\nfunction deleteProperty(target, key) {\n  const hadKey = hasOwn(target, key);\n  const oldValue = target[key];\n  const result = Reflect.deleteProperty(target, key);\n  if (result && hadKey) {\n    trigger(target, \"delete\", key, void 0, oldValue);\n  }\n  return result;\n}\nfunction has(target, key) {\n  const result = Reflect.has(target, key);\n  if (!isSymbol(key) || !builtInSymbols.has(key)) {\n    track(target, \"has\", key);\n  }\n  return result;\n}\nfunction ownKeys(target) {\n  track(target, \"iterate\", isArray(target) ? \"length\" : ITERATE_KEY);\n  return Reflect.ownKeys(target);\n}\nvar mutableHandlers = {\n  get: get2,\n  set: set2,\n  deleteProperty,\n  has,\n  ownKeys\n};\nvar readonlyHandlers = {\n  get: readonlyGet,\n  set(target, key) {\n    if (true) {\n      console.warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\n    }\n    return true;\n  },\n  deleteProperty(target, key) {\n    if (true) {\n      console.warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\n    }\n    return true;\n  }\n};\nvar toReactive = (value) => isObject(value) ? reactive2(value) : value;\nvar toReadonly = (value) => isObject(value) ? readonly(value) : value;\nvar toShallow = (value) => value;\nvar getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\n  target = target[\n    \"__v_raw\"\n    /* RAW */\n  ];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (key !== rawKey) {\n    !isReadonly && track(rawTarget, \"get\", key);\n  }\n  !isReadonly && track(rawTarget, \"get\", rawKey);\n  const { has: has2 } = getProto(rawTarget);\n  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n  if (has2.call(rawTarget, key)) {\n    return wrap(target.get(key));\n  } else if (has2.call(rawTarget, rawKey)) {\n    return wrap(target.get(rawKey));\n  } else if (target !== rawTarget) {\n    target.get(key);\n  }\n}\nfunction has$1(key, isReadonly = false) {\n  const target = this[\n    \"__v_raw\"\n    /* RAW */\n  ];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (key !== rawKey) {\n    !isReadonly && track(rawTarget, \"has\", key);\n  }\n  !isReadonly && track(rawTarget, \"has\", rawKey);\n  return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n  target = target[\n    \"__v_raw\"\n    /* RAW */\n  ];\n  !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n  return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const proto = getProto(target);\n  const hadKey = proto.has.call(target, value);\n  if (!hadKey) {\n    target.add(value);\n    trigger(target, \"add\", value, value);\n  }\n  return this;\n}\nfunction set$1(key, value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const { has: has2, get: get3 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (true) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get3.call(target, key);\n  target.set(key, value);\n  if (!hadKey) {\n    trigger(target, \"add\", key, value);\n  } else if (hasChanged(value, oldValue)) {\n    trigger(target, \"set\", key, value, oldValue);\n  }\n  return this;\n}\nfunction deleteEntry(key) {\n  const target = toRaw(this);\n  const { has: has2, get: get3 } = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (true) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get3 ? get3.call(target, key) : void 0;\n  const result = target.delete(key);\n  if (hadKey) {\n    trigger(target, \"delete\", key, void 0, oldValue);\n  }\n  return result;\n}\nfunction clear() {\n  const target = toRaw(this);\n  const hadItems = target.size !== 0;\n  const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n  const result = target.clear();\n  if (hadItems) {\n    trigger(target, \"clear\", void 0, void 0, oldTarget);\n  }\n  return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n  return function forEach(callback, thisArg) {\n    const observed = this;\n    const target = observed[\n      \"__v_raw\"\n      /* RAW */\n    ];\n    const rawTarget = toRaw(target);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n    return target.forEach((value, key) => {\n      return callback.call(thisArg, wrap(value), wrap(key), observed);\n    });\n  };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n  return function(...args) {\n    const target = this[\n      \"__v_raw\"\n      /* RAW */\n    ];\n    const rawTarget = toRaw(target);\n    const targetIsMap = isMap(rawTarget);\n    const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n    const isKeyOnly = method === \"keys\" && targetIsMap;\n    const innerIterator = target[method](...args);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(rawTarget, \"iterate\", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n    return {\n      // iterator protocol\n      next() {\n        const { value, done } = innerIterator.next();\n        return done ? { value, done } : {\n          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n          done\n        };\n      },\n      // iterable protocol\n      [Symbol.iterator]() {\n        return this;\n      }\n    };\n  };\n}\nfunction createReadonlyMethod(type) {\n  return function(...args) {\n    if (true) {\n      const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n      console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\n    }\n    return type === \"delete\" ? false : this;\n  };\n}\nfunction createInstrumentations() {\n  const mutableInstrumentations2 = {\n    get(key) {\n      return get$1(this, key);\n    },\n    get size() {\n      return size(this);\n    },\n    has: has$1,\n    add,\n    set: set$1,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, false)\n  };\n  const shallowInstrumentations2 = {\n    get(key) {\n      return get$1(this, key, false, true);\n    },\n    get size() {\n      return size(this);\n    },\n    has: has$1,\n    add,\n    set: set$1,\n    delete: deleteEntry,\n    clear,\n    forEach: createForEach(false, true)\n  };\n  const readonlyInstrumentations2 = {\n    get(key) {\n      return get$1(this, key, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has$1.call(this, key, true);\n    },\n    add: createReadonlyMethod(\n      \"add\"\n      /* ADD */\n    ),\n    set: createReadonlyMethod(\n      \"set\"\n      /* SET */\n    ),\n    delete: createReadonlyMethod(\n      \"delete\"\n      /* DELETE */\n    ),\n    clear: createReadonlyMethod(\n      \"clear\"\n      /* CLEAR */\n    ),\n    forEach: createForEach(true, false)\n  };\n  const shallowReadonlyInstrumentations2 = {\n    get(key) {\n      return get$1(this, key, true, true);\n    },\n    get size() {\n      return size(this, true);\n    },\n    has(key) {\n      return has$1.call(this, key, true);\n    },\n    add: createReadonlyMethod(\n      \"add\"\n      /* ADD */\n    ),\n    set: createReadonlyMethod(\n      \"set\"\n      /* SET */\n    ),\n    delete: createReadonlyMethod(\n      \"delete\"\n      /* DELETE */\n    ),\n    clear: createReadonlyMethod(\n      \"clear\"\n      /* CLEAR */\n    ),\n    forEach: createForEach(true, true)\n  };\n  const iteratorMethods = [\"keys\", \"values\", \"entries\", Symbol.iterator];\n  iteratorMethods.forEach((method) => {\n    mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n    readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n    shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n    shallowReadonlyInstrumentations2[method] = createIterableMethod(method, true, true);\n  });\n  return [\n    mutableInstrumentations2,\n    readonlyInstrumentations2,\n    shallowInstrumentations2,\n    shallowReadonlyInstrumentations2\n  ];\n}\nvar [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n  const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n  return (target, key, receiver) => {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly;\n    } else if (key === \"__v_raw\") {\n      return target;\n    }\n    return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver);\n  };\n}\nvar mutableCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nvar readonlyCollectionHandlers = {\n  get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nfunction checkIdentityKeys(target, has2, key) {\n  const rawKey = toRaw(key);\n  if (rawKey !== key && has2.call(target, rawKey)) {\n    const type = toRawType(target);\n    console.warn(`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`);\n  }\n}\nvar reactiveMap = /* @__PURE__ */ new WeakMap();\nvar shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nvar readonlyMap = /* @__PURE__ */ new WeakMap();\nvar shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n  switch (rawType) {\n    case \"Object\":\n    case \"Array\":\n      return 1;\n    case \"Map\":\n    case \"Set\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction getTargetType(value) {\n  return value[\n    \"__v_skip\"\n    /* SKIP */\n  ] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));\n}\nfunction reactive2(target) {\n  if (target && target[\n    \"__v_isReadonly\"\n    /* IS_READONLY */\n  ]) {\n    return target;\n  }\n  return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\nfunction readonly(target) {\n  return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\n  if (!isObject(target)) {\n    if (true) {\n      console.warn(`value cannot be made reactive: ${String(target)}`);\n    }\n    return target;\n  }\n  if (target[\n    \"__v_raw\"\n    /* RAW */\n  ] && !(isReadonly && target[\n    \"__v_isReactive\"\n    /* IS_REACTIVE */\n  ])) {\n    return target;\n  }\n  const existingProxy = proxyMap.get(target);\n  if (existingProxy) {\n    return existingProxy;\n  }\n  const targetType = getTargetType(target);\n  if (targetType === 0) {\n    return target;\n  }\n  const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);\n  proxyMap.set(target, proxy);\n  return proxy;\n}\nfunction toRaw(observed) {\n  return observed && toRaw(observed[\n    \"__v_raw\"\n    /* RAW */\n  ]) || observed;\n}\nfunction isRef(r) {\n  return Boolean(r && r.__v_isRef === true);\n}\n\n// packages/alpinejs/src/magics/$nextTick.js\nmagic(\"nextTick\", () => nextTick);\n\n// packages/alpinejs/src/magics/$dispatch.js\nmagic(\"dispatch\", (el) => dispatch.bind(dispatch, el));\n\n// packages/alpinejs/src/magics/$watch.js\nmagic(\"watch\", (el, { evaluateLater: evaluateLater2, cleanup: cleanup2 }) => (key, callback) => {\n  let evaluate2 = evaluateLater2(key);\n  let getter = () => {\n    let value;\n    evaluate2((i) => value = i);\n    return value;\n  };\n  let unwatch = watch(getter, callback);\n  cleanup2(unwatch);\n});\n\n// packages/alpinejs/src/magics/$store.js\nmagic(\"store\", getStores);\n\n// packages/alpinejs/src/magics/$data.js\nmagic(\"data\", (el) => scope(el));\n\n// packages/alpinejs/src/magics/$root.js\nmagic(\"root\", (el) => closestRoot(el));\n\n// packages/alpinejs/src/magics/$refs.js\nmagic(\"refs\", (el) => {\n  if (el._x_refs_proxy)\n    return el._x_refs_proxy;\n  el._x_refs_proxy = mergeProxies(getArrayOfRefObject(el));\n  return el._x_refs_proxy;\n});\nfunction getArrayOfRefObject(el) {\n  let refObjects = [];\n  findClosest(el, (i) => {\n    if (i._x_refs)\n      refObjects.push(i._x_refs);\n  });\n  return refObjects;\n}\n\n// packages/alpinejs/src/ids.js\nvar globalIdMemo = {};\nfunction findAndIncrementId(name) {\n  if (!globalIdMemo[name])\n    globalIdMemo[name] = 0;\n  return ++globalIdMemo[name];\n}\nfunction closestIdRoot(el, name) {\n  return findClosest(el, (element) => {\n    if (element._x_ids && element._x_ids[name])\n      return true;\n  });\n}\nfunction setIdRoot(el, name) {\n  if (!el._x_ids)\n    el._x_ids = {};\n  if (!el._x_ids[name])\n    el._x_ids[name] = findAndIncrementId(name);\n}\n\n// packages/alpinejs/src/magics/$id.js\nmagic(\"id\", (el, { cleanup: cleanup2 }) => (name, key = null) => {\n  let cacheKey = `${name}${key ? `-${key}` : \"\"}`;\n  return cacheIdByNameOnElement(el, cacheKey, cleanup2, () => {\n    let root = closestIdRoot(el, name);\n    let id = root ? root._x_ids[name] : findAndIncrementId(name);\n    return key ? `${name}-${id}-${key}` : `${name}-${id}`;\n  });\n});\ninterceptClone((from, to) => {\n  if (from._x_id) {\n    to._x_id = from._x_id;\n  }\n});\nfunction cacheIdByNameOnElement(el, cacheKey, cleanup2, callback) {\n  if (!el._x_id)\n    el._x_id = {};\n  if (el._x_id[cacheKey])\n    return el._x_id[cacheKey];\n  let output = callback();\n  el._x_id[cacheKey] = output;\n  cleanup2(() => {\n    delete el._x_id[cacheKey];\n  });\n  return output;\n}\n\n// packages/alpinejs/src/magics/$el.js\nmagic(\"el\", (el) => el);\n\n// packages/alpinejs/src/magics/index.js\nwarnMissingPluginMagic(\"Focus\", \"focus\", \"focus\");\nwarnMissingPluginMagic(\"Persist\", \"persist\", \"persist\");\nfunction warnMissingPluginMagic(name, magicName, slug) {\n  magic(magicName, (el) => warn(`You can't use [$${magicName}] without first installing the \"${name}\" plugin here: https://alpinejs.dev/plugins/${slug}`, el));\n}\n\n// packages/alpinejs/src/directives/x-modelable.js\ndirective(\"modelable\", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2, cleanup: cleanup2 }) => {\n  let func = evaluateLater2(expression);\n  let innerGet = () => {\n    let result;\n    func((i) => result = i);\n    return result;\n  };\n  let evaluateInnerSet = evaluateLater2(`${expression} = __placeholder`);\n  let innerSet = (val) => evaluateInnerSet(() => {\n  }, { scope: { \"__placeholder\": val } });\n  let initialValue = innerGet();\n  innerSet(initialValue);\n  queueMicrotask(() => {\n    if (!el._x_model)\n      return;\n    el._x_removeModelListeners[\"default\"]();\n    let outerGet = el._x_model.get;\n    let outerSet = el._x_model.set;\n    let releaseEntanglement = entangle(\n      {\n        get() {\n          return outerGet();\n        },\n        set(value) {\n          outerSet(value);\n        }\n      },\n      {\n        get() {\n          return innerGet();\n        },\n        set(value) {\n          innerSet(value);\n        }\n      }\n    );\n    cleanup2(releaseEntanglement);\n  });\n});\n\n// packages/alpinejs/src/directives/x-teleport.js\ndirective(\"teleport\", (el, { modifiers, expression }, { cleanup: cleanup2 }) => {\n  if (el.tagName.toLowerCase() !== \"template\")\n    warn(\"x-teleport can only be used on a <template> tag\", el);\n  let target = getTarget(expression);\n  let clone2 = el.content.cloneNode(true).firstElementChild;\n  el._x_teleport = clone2;\n  clone2._x_teleportBack = el;\n  el.setAttribute(\"data-teleport-template\", true);\n  clone2.setAttribute(\"data-teleport-target\", true);\n  if (el._x_forwardEvents) {\n    el._x_forwardEvents.forEach((eventName) => {\n      clone2.addEventListener(eventName, (e) => {\n        e.stopPropagation();\n        el.dispatchEvent(new e.constructor(e.type, e));\n      });\n    });\n  }\n  addScopeToNode(clone2, {}, el);\n  let placeInDom = (clone3, target2, modifiers2) => {\n    if (modifiers2.includes(\"prepend\")) {\n      target2.parentNode.insertBefore(clone3, target2);\n    } else if (modifiers2.includes(\"append\")) {\n      target2.parentNode.insertBefore(clone3, target2.nextSibling);\n    } else {\n      target2.appendChild(clone3);\n    }\n  };\n  mutateDom(() => {\n    placeInDom(clone2, target, modifiers);\n    skipDuringClone(() => {\n      initTree(clone2);\n      clone2._x_ignore = true;\n    })();\n  });\n  el._x_teleportPutBack = () => {\n    let target2 = getTarget(expression);\n    mutateDom(() => {\n      placeInDom(el._x_teleport, target2, modifiers);\n    });\n  };\n  cleanup2(\n    () => mutateDom(() => {\n      clone2.remove();\n      destroyTree(clone2);\n    })\n  );\n});\nvar teleportContainerDuringClone = document.createElement(\"div\");\nfunction getTarget(expression) {\n  let target = skipDuringClone(() => {\n    return document.querySelector(expression);\n  }, () => {\n    return teleportContainerDuringClone;\n  })();\n  if (!target)\n    warn(`Cannot find x-teleport element for selector: \"${expression}\"`);\n  return target;\n}\n\n// packages/alpinejs/src/directives/x-ignore.js\nvar handler = () => {\n};\nhandler.inline = (el, { modifiers }, { cleanup: cleanup2 }) => {\n  modifiers.includes(\"self\") ? el._x_ignoreSelf = true : el._x_ignore = true;\n  cleanup2(() => {\n    modifiers.includes(\"self\") ? delete el._x_ignoreSelf : delete el._x_ignore;\n  });\n};\ndirective(\"ignore\", handler);\n\n// packages/alpinejs/src/directives/x-effect.js\ndirective(\"effect\", skipDuringClone((el, { expression }, { effect: effect3 }) => {\n  effect3(evaluateLater(el, expression));\n}));\n\n// packages/alpinejs/src/utils/on.js\nfunction on(el, event, modifiers, callback) {\n  let listenerTarget = el;\n  let handler4 = (e) => callback(e);\n  let options = {};\n  let wrapHandler = (callback2, wrapper) => (e) => wrapper(callback2, e);\n  if (modifiers.includes(\"dot\"))\n    event = dotSyntax(event);\n  if (modifiers.includes(\"camel\"))\n    event = camelCase2(event);\n  if (modifiers.includes(\"passive\"))\n    options.passive = true;\n  if (modifiers.includes(\"capture\"))\n    options.capture = true;\n  if (modifiers.includes(\"window\"))\n    listenerTarget = window;\n  if (modifiers.includes(\"document\"))\n    listenerTarget = document;\n  if (modifiers.includes(\"debounce\")) {\n    let nextModifier = modifiers[modifiers.indexOf(\"debounce\") + 1] || \"invalid-wait\";\n    let wait = isNumeric(nextModifier.split(\"ms\")[0]) ? Number(nextModifier.split(\"ms\")[0]) : 250;\n    handler4 = debounce(handler4, wait);\n  }\n  if (modifiers.includes(\"throttle\")) {\n    let nextModifier = modifiers[modifiers.indexOf(\"throttle\") + 1] || \"invalid-wait\";\n    let wait = isNumeric(nextModifier.split(\"ms\")[0]) ? Number(nextModifier.split(\"ms\")[0]) : 250;\n    handler4 = throttle(handler4, wait);\n  }\n  if (modifiers.includes(\"prevent\"))\n    handler4 = wrapHandler(handler4, (next, e) => {\n      e.preventDefault();\n      next(e);\n    });\n  if (modifiers.includes(\"stop\"))\n    handler4 = wrapHandler(handler4, (next, e) => {\n      e.stopPropagation();\n      next(e);\n    });\n  if (modifiers.includes(\"once\")) {\n    handler4 = wrapHandler(handler4, (next, e) => {\n      next(e);\n      listenerTarget.removeEventListener(event, handler4, options);\n    });\n  }\n  if (modifiers.includes(\"away\") || modifiers.includes(\"outside\")) {\n    listenerTarget = document;\n    handler4 = wrapHandler(handler4, (next, e) => {\n      if (el.contains(e.target))\n        return;\n      if (e.target.isConnected === false)\n        return;\n      if (el.offsetWidth < 1 && el.offsetHeight < 1)\n        return;\n      if (el._x_isShown === false)\n        return;\n      next(e);\n    });\n  }\n  if (modifiers.includes(\"self\"))\n    handler4 = wrapHandler(handler4, (next, e) => {\n      e.target === el && next(e);\n    });\n  if (isKeyEvent(event) || isClickEvent(event)) {\n    handler4 = wrapHandler(handler4, (next, e) => {\n      if (isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers)) {\n        return;\n      }\n      next(e);\n    });\n  }\n  listenerTarget.addEventListener(event, handler4, options);\n  return () => {\n    listenerTarget.removeEventListener(event, handler4, options);\n  };\n}\nfunction dotSyntax(subject) {\n  return subject.replace(/-/g, \".\");\n}\nfunction camelCase2(subject) {\n  return subject.toLowerCase().replace(/-(\\w)/g, (match, char) => char.toUpperCase());\n}\nfunction isNumeric(subject) {\n  return !Array.isArray(subject) && !isNaN(subject);\n}\nfunction kebabCase2(subject) {\n  if ([\" \", \"_\"].includes(\n    subject\n  ))\n    return subject;\n  return subject.replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[_\\s]/, \"-\").toLowerCase();\n}\nfunction isKeyEvent(event) {\n  return [\"keydown\", \"keyup\"].includes(event);\n}\nfunction isClickEvent(event) {\n  return [\"contextmenu\", \"click\", \"mouse\"].some((i) => event.includes(i));\n}\nfunction isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers) {\n  let keyModifiers = modifiers.filter((i) => {\n    return ![\"window\", \"document\", \"prevent\", \"stop\", \"once\", \"capture\", \"self\", \"away\", \"outside\", \"passive\"].includes(i);\n  });\n  if (keyModifiers.includes(\"debounce\")) {\n    let debounceIndex = keyModifiers.indexOf(\"debounce\");\n    keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || \"invalid-wait\").split(\"ms\")[0]) ? 2 : 1);\n  }\n  if (keyModifiers.includes(\"throttle\")) {\n    let debounceIndex = keyModifiers.indexOf(\"throttle\");\n    keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || \"invalid-wait\").split(\"ms\")[0]) ? 2 : 1);\n  }\n  if (keyModifiers.length === 0)\n    return false;\n  if (keyModifiers.length === 1 && keyToModifiers(e.key).includes(keyModifiers[0]))\n    return false;\n  const systemKeyModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\", \"cmd\", \"super\"];\n  const selectedSystemKeyModifiers = systemKeyModifiers.filter((modifier) => keyModifiers.includes(modifier));\n  keyModifiers = keyModifiers.filter((i) => !selectedSystemKeyModifiers.includes(i));\n  if (selectedSystemKeyModifiers.length > 0) {\n    const activelyPressedKeyModifiers = selectedSystemKeyModifiers.filter((modifier) => {\n      if (modifier === \"cmd\" || modifier === \"super\")\n        modifier = \"meta\";\n      return e[`${modifier}Key`];\n    });\n    if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) {\n      if (isClickEvent(e.type))\n        return false;\n      if (keyToModifiers(e.key).includes(keyModifiers[0]))\n        return false;\n    }\n  }\n  return true;\n}\nfunction keyToModifiers(key) {\n  if (!key)\n    return [];\n  key = kebabCase2(key);\n  let modifierToKeyMap = {\n    \"ctrl\": \"control\",\n    \"slash\": \"/\",\n    \"space\": \" \",\n    \"spacebar\": \" \",\n    \"cmd\": \"meta\",\n    \"esc\": \"escape\",\n    \"up\": \"arrow-up\",\n    \"down\": \"arrow-down\",\n    \"left\": \"arrow-left\",\n    \"right\": \"arrow-right\",\n    \"period\": \".\",\n    \"comma\": \",\",\n    \"equal\": \"=\",\n    \"minus\": \"-\",\n    \"underscore\": \"_\"\n  };\n  modifierToKeyMap[key] = key;\n  return Object.keys(modifierToKeyMap).map((modifier) => {\n    if (modifierToKeyMap[modifier] === key)\n      return modifier;\n  }).filter((modifier) => modifier);\n}\n\n// packages/alpinejs/src/directives/x-model.js\ndirective(\"model\", (el, { modifiers, expression }, { effect: effect3, cleanup: cleanup2 }) => {\n  let scopeTarget = el;\n  if (modifiers.includes(\"parent\")) {\n    scopeTarget = el.parentNode;\n  }\n  let evaluateGet = evaluateLater(scopeTarget, expression);\n  let evaluateSet;\n  if (typeof expression === \"string\") {\n    evaluateSet = evaluateLater(scopeTarget, `${expression} = __placeholder`);\n  } else if (typeof expression === \"function\" && typeof expression() === \"string\") {\n    evaluateSet = evaluateLater(scopeTarget, `${expression()} = __placeholder`);\n  } else {\n    evaluateSet = () => {\n    };\n  }\n  let getValue = () => {\n    let result;\n    evaluateGet((value) => result = value);\n    return isGetterSetter(result) ? result.get() : result;\n  };\n  let setValue = (value) => {\n    let result;\n    evaluateGet((value2) => result = value2);\n    if (isGetterSetter(result)) {\n      result.set(value);\n    } else {\n      evaluateSet(() => {\n      }, {\n        scope: { \"__placeholder\": value }\n      });\n    }\n  };\n  if (typeof expression === \"string\" && el.type === \"radio\") {\n    mutateDom(() => {\n      if (!el.hasAttribute(\"name\"))\n        el.setAttribute(\"name\", expression);\n    });\n  }\n  var event = el.tagName.toLowerCase() === \"select\" || [\"checkbox\", \"radio\"].includes(el.type) || modifiers.includes(\"lazy\") ? \"change\" : \"input\";\n  let removeListener = isCloning ? () => {\n  } : on(el, event, modifiers, (e) => {\n    setValue(getInputValue(el, modifiers, e, getValue()));\n  });\n  if (modifiers.includes(\"fill\")) {\n    if ([void 0, null, \"\"].includes(getValue()) || isCheckbox(el) && Array.isArray(getValue()) || el.tagName.toLowerCase() === \"select\" && el.multiple) {\n      setValue(\n        getInputValue(el, modifiers, { target: el }, getValue())\n      );\n    }\n  }\n  if (!el._x_removeModelListeners)\n    el._x_removeModelListeners = {};\n  el._x_removeModelListeners[\"default\"] = removeListener;\n  cleanup2(() => el._x_removeModelListeners[\"default\"]());\n  if (el.form) {\n    let removeResetListener = on(el.form, \"reset\", [], (e) => {\n      nextTick(() => el._x_model && el._x_model.set(getInputValue(el, modifiers, { target: el }, getValue())));\n    });\n    cleanup2(() => removeResetListener());\n  }\n  el._x_model = {\n    get() {\n      return getValue();\n    },\n    set(value) {\n      setValue(value);\n    }\n  };\n  el._x_forceModelUpdate = (value) => {\n    if (value === void 0 && typeof expression === \"string\" && expression.match(/\\./))\n      value = \"\";\n    window.fromModel = true;\n    mutateDom(() => bind(el, \"value\", value));\n    delete window.fromModel;\n  };\n  effect3(() => {\n    let value = getValue();\n    if (modifiers.includes(\"unintrusive\") && document.activeElement.isSameNode(el))\n      return;\n    el._x_forceModelUpdate(value);\n  });\n});\nfunction getInputValue(el, modifiers, event, currentValue) {\n  return mutateDom(() => {\n    if (event instanceof CustomEvent && event.detail !== void 0)\n      return event.detail !== null && event.detail !== void 0 ? event.detail : event.target.value;\n    else if (isCheckbox(el)) {\n      if (Array.isArray(currentValue)) {\n        let newValue = null;\n        if (modifiers.includes(\"number\")) {\n          newValue = safeParseNumber(event.target.value);\n        } else if (modifiers.includes(\"boolean\")) {\n          newValue = safeParseBoolean(event.target.value);\n        } else {\n          newValue = event.target.value;\n        }\n        return event.target.checked ? currentValue.includes(newValue) ? currentValue : currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue));\n      } else {\n        return event.target.checked;\n      }\n    } else if (el.tagName.toLowerCase() === \"select\" && el.multiple) {\n      if (modifiers.includes(\"number\")) {\n        return Array.from(event.target.selectedOptions).map((option) => {\n          let rawValue = option.value || option.text;\n          return safeParseNumber(rawValue);\n        });\n      } else if (modifiers.includes(\"boolean\")) {\n        return Array.from(event.target.selectedOptions).map((option) => {\n          let rawValue = option.value || option.text;\n          return safeParseBoolean(rawValue);\n        });\n      }\n      return Array.from(event.target.selectedOptions).map((option) => {\n        return option.value || option.text;\n      });\n    } else {\n      let newValue;\n      if (isRadio(el)) {\n        if (event.target.checked) {\n          newValue = event.target.value;\n        } else {\n          newValue = currentValue;\n        }\n      } else {\n        newValue = event.target.value;\n      }\n      if (modifiers.includes(\"number\")) {\n        return safeParseNumber(newValue);\n      } else if (modifiers.includes(\"boolean\")) {\n        return safeParseBoolean(newValue);\n      } else if (modifiers.includes(\"trim\")) {\n        return newValue.trim();\n      } else {\n        return newValue;\n      }\n    }\n  });\n}\nfunction safeParseNumber(rawValue) {\n  let number = rawValue ? parseFloat(rawValue) : null;\n  return isNumeric2(number) ? number : rawValue;\n}\nfunction checkedAttrLooseCompare2(valueA, valueB) {\n  return valueA == valueB;\n}\nfunction isNumeric2(subject) {\n  return !Array.isArray(subject) && !isNaN(subject);\n}\nfunction isGetterSetter(value) {\n  return value !== null && typeof value === \"object\" && typeof value.get === \"function\" && typeof value.set === \"function\";\n}\n\n// packages/alpinejs/src/directives/x-cloak.js\ndirective(\"cloak\", (el) => queueMicrotask(() => mutateDom(() => el.removeAttribute(prefix(\"cloak\")))));\n\n// packages/alpinejs/src/directives/x-init.js\naddInitSelector(() => `[${prefix(\"init\")}]`);\ndirective(\"init\", skipDuringClone((el, { expression }, { evaluate: evaluate2 }) => {\n  if (typeof expression === \"string\") {\n    return !!expression.trim() && evaluate2(expression, {}, false);\n  }\n  return evaluate2(expression, {}, false);\n}));\n\n// packages/alpinejs/src/directives/x-text.js\ndirective(\"text\", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => {\n  let evaluate2 = evaluateLater2(expression);\n  effect3(() => {\n    evaluate2((value) => {\n      mutateDom(() => {\n        el.textContent = value;\n      });\n    });\n  });\n});\n\n// packages/alpinejs/src/directives/x-html.js\ndirective(\"html\", (el, { expression }, { effect: effect3, evaluateLater: evaluateLater2 }) => {\n  let evaluate2 = evaluateLater2(expression);\n  effect3(() => {\n    evaluate2((value) => {\n      mutateDom(() => {\n        el.innerHTML = value;\n        el._x_ignoreSelf = true;\n        initTree(el);\n        delete el._x_ignoreSelf;\n      });\n    });\n  });\n});\n\n// packages/alpinejs/src/directives/x-bind.js\nmapAttributes(startingWith(\":\", into(prefix(\"bind:\"))));\nvar handler2 = (el, { value, modifiers, expression, original }, { effect: effect3, cleanup: cleanup2 }) => {\n  if (!value) {\n    let bindingProviders = {};\n    injectBindingProviders(bindingProviders);\n    let getBindings = evaluateLater(el, expression);\n    getBindings((bindings) => {\n      applyBindingsObject(el, bindings, original);\n    }, { scope: bindingProviders });\n    return;\n  }\n  if (value === \"key\")\n    return storeKeyForXFor(el, expression);\n  if (el._x_inlineBindings && el._x_inlineBindings[value] && el._x_inlineBindings[value].extract) {\n    return;\n  }\n  let evaluate2 = evaluateLater(el, expression);\n  effect3(() => evaluate2((result) => {\n    if (result === void 0 && typeof expression === \"string\" && expression.match(/\\./)) {\n      result = \"\";\n    }\n    mutateDom(() => bind(el, value, result, modifiers));\n  }));\n  cleanup2(() => {\n    el._x_undoAddedClasses && el._x_undoAddedClasses();\n    el._x_undoAddedStyles && el._x_undoAddedStyles();\n  });\n};\nhandler2.inline = (el, { value, modifiers, expression }) => {\n  if (!value)\n    return;\n  if (!el._x_inlineBindings)\n    el._x_inlineBindings = {};\n  el._x_inlineBindings[value] = { expression, extract: false };\n};\ndirective(\"bind\", handler2);\nfunction storeKeyForXFor(el, expression) {\n  el._x_keyExpression = expression;\n}\n\n// packages/alpinejs/src/directives/x-data.js\naddRootSelector(() => `[${prefix(\"data\")}]`);\ndirective(\"data\", (el, { expression }, { cleanup: cleanup2 }) => {\n  if (shouldSkipRegisteringDataDuringClone(el))\n    return;\n  expression = expression === \"\" ? \"{}\" : expression;\n  let magicContext = {};\n  injectMagics(magicContext, el);\n  let dataProviderContext = {};\n  injectDataProviders(dataProviderContext, magicContext);\n  let data2 = evaluate(el, expression, { scope: dataProviderContext });\n  if (data2 === void 0 || data2 === true)\n    data2 = {};\n  injectMagics(data2, el);\n  let reactiveData = reactive(data2);\n  initInterceptors(reactiveData);\n  let undo = addScopeToNode(el, reactiveData);\n  reactiveData[\"init\"] && evaluate(el, reactiveData[\"init\"]);\n  cleanup2(() => {\n    reactiveData[\"destroy\"] && evaluate(el, reactiveData[\"destroy\"]);\n    undo();\n  });\n});\ninterceptClone((from, to) => {\n  if (from._x_dataStack) {\n    to._x_dataStack = from._x_dataStack;\n    to.setAttribute(\"data-has-alpine-state\", true);\n  }\n});\nfunction shouldSkipRegisteringDataDuringClone(el) {\n  if (!isCloning)\n    return false;\n  if (isCloningLegacy)\n    return true;\n  return el.hasAttribute(\"data-has-alpine-state\");\n}\n\n// packages/alpinejs/src/directives/x-show.js\ndirective(\"show\", (el, { modifiers, expression }, { effect: effect3 }) => {\n  let evaluate2 = evaluateLater(el, expression);\n  if (!el._x_doHide)\n    el._x_doHide = () => {\n      mutateDom(() => {\n        el.style.setProperty(\"display\", \"none\", modifiers.includes(\"important\") ? \"important\" : void 0);\n      });\n    };\n  if (!el._x_doShow)\n    el._x_doShow = () => {\n      mutateDom(() => {\n        if (el.style.length === 1 && el.style.display === \"none\") {\n          el.removeAttribute(\"style\");\n        } else {\n          el.style.removeProperty(\"display\");\n        }\n      });\n    };\n  let hide = () => {\n    el._x_doHide();\n    el._x_isShown = false;\n  };\n  let show = () => {\n    el._x_doShow();\n    el._x_isShown = true;\n  };\n  let clickAwayCompatibleShow = () => setTimeout(show);\n  let toggle = once(\n    (value) => value ? show() : hide(),\n    (value) => {\n      if (typeof el._x_toggleAndCascadeWithTransitions === \"function\") {\n        el._x_toggleAndCascadeWithTransitions(el, value, show, hide);\n      } else {\n        value ? clickAwayCompatibleShow() : hide();\n      }\n    }\n  );\n  let oldValue;\n  let firstTime = true;\n  effect3(() => evaluate2((value) => {\n    if (!firstTime && value === oldValue)\n      return;\n    if (modifiers.includes(\"immediate\"))\n      value ? clickAwayCompatibleShow() : hide();\n    toggle(value);\n    oldValue = value;\n    firstTime = false;\n  }));\n});\n\n// packages/alpinejs/src/directives/x-for.js\ndirective(\"for\", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => {\n  let iteratorNames = parseForExpression(expression);\n  let evaluateItems = evaluateLater(el, iteratorNames.items);\n  let evaluateKey = evaluateLater(\n    el,\n    // the x-bind:key expression is stored for our use instead of evaluated.\n    el._x_keyExpression || \"index\"\n  );\n  el._x_prevKeys = [];\n  el._x_lookup = {};\n  effect3(() => loop(el, iteratorNames, evaluateItems, evaluateKey));\n  cleanup2(() => {\n    Object.values(el._x_lookup).forEach((el2) => mutateDom(\n      () => {\n        destroyTree(el2);\n        el2.remove();\n      }\n    ));\n    delete el._x_prevKeys;\n    delete el._x_lookup;\n  });\n});\nfunction loop(el, iteratorNames, evaluateItems, evaluateKey) {\n  let isObject2 = (i) => typeof i === \"object\" && !Array.isArray(i);\n  let templateEl = el;\n  evaluateItems((items) => {\n    if (isNumeric3(items) && items >= 0) {\n      items = Array.from(Array(items).keys(), (i) => i + 1);\n    }\n    if (items === void 0)\n      items = [];\n    let lookup = el._x_lookup;\n    let prevKeys = el._x_prevKeys;\n    let scopes = [];\n    let keys = [];\n    if (isObject2(items)) {\n      items = Object.entries(items).map(([key, value]) => {\n        let scope2 = getIterationScopeVariables(iteratorNames, value, key, items);\n        evaluateKey((value2) => {\n          if (keys.includes(value2))\n            warn(\"Duplicate key on x-for\", el);\n          keys.push(value2);\n        }, { scope: { index: key, ...scope2 } });\n        scopes.push(scope2);\n      });\n    } else {\n      for (let i = 0; i < items.length; i++) {\n        let scope2 = getIterationScopeVariables(iteratorNames, items[i], i, items);\n        evaluateKey((value) => {\n          if (keys.includes(value))\n            warn(\"Duplicate key on x-for\", el);\n          keys.push(value);\n        }, { scope: { index: i, ...scope2 } });\n        scopes.push(scope2);\n      }\n    }\n    let adds = [];\n    let moves = [];\n    let removes = [];\n    let sames = [];\n    for (let i = 0; i < prevKeys.length; i++) {\n      let key = prevKeys[i];\n      if (keys.indexOf(key) === -1)\n        removes.push(key);\n    }\n    prevKeys = prevKeys.filter((key) => !removes.includes(key));\n    let lastKey = \"template\";\n    for (let i = 0; i < keys.length; i++) {\n      let key = keys[i];\n      let prevIndex = prevKeys.indexOf(key);\n      if (prevIndex === -1) {\n        prevKeys.splice(i, 0, key);\n        adds.push([lastKey, i]);\n      } else if (prevIndex !== i) {\n        let keyInSpot = prevKeys.splice(i, 1)[0];\n        let keyForSpot = prevKeys.splice(prevIndex - 1, 1)[0];\n        prevKeys.splice(i, 0, keyForSpot);\n        prevKeys.splice(prevIndex, 0, keyInSpot);\n        moves.push([keyInSpot, keyForSpot]);\n      } else {\n        sames.push(key);\n      }\n      lastKey = key;\n    }\n    for (let i = 0; i < removes.length; i++) {\n      let key = removes[i];\n      if (!(key in lookup))\n        continue;\n      mutateDom(() => {\n        destroyTree(lookup[key]);\n        lookup[key].remove();\n      });\n      delete lookup[key];\n    }\n    for (let i = 0; i < moves.length; i++) {\n      let [keyInSpot, keyForSpot] = moves[i];\n      let elInSpot = lookup[keyInSpot];\n      let elForSpot = lookup[keyForSpot];\n      let marker = document.createElement(\"div\");\n      mutateDom(() => {\n        if (!elForSpot)\n          warn(`x-for \":key\" is undefined or invalid`, templateEl, keyForSpot, lookup);\n        elForSpot.after(marker);\n        elInSpot.after(elForSpot);\n        elForSpot._x_currentIfEl && elForSpot.after(elForSpot._x_currentIfEl);\n        marker.before(elInSpot);\n        elInSpot._x_currentIfEl && elInSpot.after(elInSpot._x_currentIfEl);\n        marker.remove();\n      });\n      elForSpot._x_refreshXForScope(scopes[keys.indexOf(keyForSpot)]);\n    }\n    for (let i = 0; i < adds.length; i++) {\n      let [lastKey2, index] = adds[i];\n      let lastEl = lastKey2 === \"template\" ? templateEl : lookup[lastKey2];\n      if (lastEl._x_currentIfEl)\n        lastEl = lastEl._x_currentIfEl;\n      let scope2 = scopes[index];\n      let key = keys[index];\n      let clone2 = document.importNode(templateEl.content, true).firstElementChild;\n      let reactiveScope = reactive(scope2);\n      addScopeToNode(clone2, reactiveScope, templateEl);\n      clone2._x_refreshXForScope = (newScope) => {\n        Object.entries(newScope).forEach(([key2, value]) => {\n          reactiveScope[key2] = value;\n        });\n      };\n      mutateDom(() => {\n        lastEl.after(clone2);\n        skipDuringClone(() => initTree(clone2))();\n      });\n      if (typeof key === \"object\") {\n        warn(\"x-for key cannot be an object, it must be a string or an integer\", templateEl);\n      }\n      lookup[key] = clone2;\n    }\n    for (let i = 0; i < sames.length; i++) {\n      lookup[sames[i]]._x_refreshXForScope(scopes[keys.indexOf(sames[i])]);\n    }\n    templateEl._x_prevKeys = keys;\n  });\n}\nfunction parseForExpression(expression) {\n  let forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\n  let stripParensRE = /^\\s*\\(|\\)\\s*$/g;\n  let forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\n  let inMatch = expression.match(forAliasRE);\n  if (!inMatch)\n    return;\n  let res = {};\n  res.items = inMatch[2].trim();\n  let item = inMatch[1].replace(stripParensRE, \"\").trim();\n  let iteratorMatch = item.match(forIteratorRE);\n  if (iteratorMatch) {\n    res.item = item.replace(forIteratorRE, \"\").trim();\n    res.index = iteratorMatch[1].trim();\n    if (iteratorMatch[2]) {\n      res.collection = iteratorMatch[2].trim();\n    }\n  } else {\n    res.item = item;\n  }\n  return res;\n}\nfunction getIterationScopeVariables(iteratorNames, item, index, items) {\n  let scopeVariables = {};\n  if (/^\\[.*\\]$/.test(iteratorNames.item) && Array.isArray(item)) {\n    let names = iteratorNames.item.replace(\"[\", \"\").replace(\"]\", \"\").split(\",\").map((i) => i.trim());\n    names.forEach((name, i) => {\n      scopeVariables[name] = item[i];\n    });\n  } else if (/^\\{.*\\}$/.test(iteratorNames.item) && !Array.isArray(item) && typeof item === \"object\") {\n    let names = iteratorNames.item.replace(\"{\", \"\").replace(\"}\", \"\").split(\",\").map((i) => i.trim());\n    names.forEach((name) => {\n      scopeVariables[name] = item[name];\n    });\n  } else {\n    scopeVariables[iteratorNames.item] = item;\n  }\n  if (iteratorNames.index)\n    scopeVariables[iteratorNames.index] = index;\n  if (iteratorNames.collection)\n    scopeVariables[iteratorNames.collection] = items;\n  return scopeVariables;\n}\nfunction isNumeric3(subject) {\n  return !Array.isArray(subject) && !isNaN(subject);\n}\n\n// packages/alpinejs/src/directives/x-ref.js\nfunction handler3() {\n}\nhandler3.inline = (el, { expression }, { cleanup: cleanup2 }) => {\n  let root = closestRoot(el);\n  if (!root._x_refs)\n    root._x_refs = {};\n  root._x_refs[expression] = el;\n  cleanup2(() => delete root._x_refs[expression]);\n};\ndirective(\"ref\", handler3);\n\n// packages/alpinejs/src/directives/x-if.js\ndirective(\"if\", (el, { expression }, { effect: effect3, cleanup: cleanup2 }) => {\n  if (el.tagName.toLowerCase() !== \"template\")\n    warn(\"x-if can only be used on a <template> tag\", el);\n  let evaluate2 = evaluateLater(el, expression);\n  let show = () => {\n    if (el._x_currentIfEl)\n      return el._x_currentIfEl;\n    let clone2 = el.content.cloneNode(true).firstElementChild;\n    addScopeToNode(clone2, {}, el);\n    mutateDom(() => {\n      el.after(clone2);\n      skipDuringClone(() => initTree(clone2))();\n    });\n    el._x_currentIfEl = clone2;\n    el._x_undoIf = () => {\n      mutateDom(() => {\n        destroyTree(clone2);\n        clone2.remove();\n      });\n      delete el._x_currentIfEl;\n    };\n    return clone2;\n  };\n  let hide = () => {\n    if (!el._x_undoIf)\n      return;\n    el._x_undoIf();\n    delete el._x_undoIf;\n  };\n  effect3(() => evaluate2((value) => {\n    value ? show() : hide();\n  }));\n  cleanup2(() => el._x_undoIf && el._x_undoIf());\n});\n\n// packages/alpinejs/src/directives/x-id.js\ndirective(\"id\", (el, { expression }, { evaluate: evaluate2 }) => {\n  let names = evaluate2(expression);\n  names.forEach((name) => setIdRoot(el, name));\n});\ninterceptClone((from, to) => {\n  if (from._x_ids) {\n    to._x_ids = from._x_ids;\n  }\n});\n\n// packages/alpinejs/src/directives/x-on.js\nmapAttributes(startingWith(\"@\", into(prefix(\"on:\"))));\ndirective(\"on\", skipDuringClone((el, { value, modifiers, expression }, { cleanup: cleanup2 }) => {\n  let evaluate2 = expression ? evaluateLater(el, expression) : () => {\n  };\n  if (el.tagName.toLowerCase() === \"template\") {\n    if (!el._x_forwardEvents)\n      el._x_forwardEvents = [];\n    if (!el._x_forwardEvents.includes(value))\n      el._x_forwardEvents.push(value);\n  }\n  let removeListener = on(el, value, modifiers, (e) => {\n    evaluate2(() => {\n    }, { scope: { \"$event\": e }, params: [e] });\n  });\n  cleanup2(() => removeListener());\n}));\n\n// packages/alpinejs/src/directives/index.js\nwarnMissingPluginDirective(\"Collapse\", \"collapse\", \"collapse\");\nwarnMissingPluginDirective(\"Intersect\", \"intersect\", \"intersect\");\nwarnMissingPluginDirective(\"Focus\", \"trap\", \"focus\");\nwarnMissingPluginDirective(\"Mask\", \"mask\", \"mask\");\nfunction warnMissingPluginDirective(name, directiveName, slug) {\n  directive(directiveName, (el) => warn(`You can't use [x-${directiveName}] without first installing the \"${name}\" plugin here: https://alpinejs.dev/plugins/${slug}`, el));\n}\n\n// packages/alpinejs/src/index.js\nalpine_default.setEvaluator(normalEvaluator);\nalpine_default.setReactivityEngine({ reactive: reactive2, effect: effect2, release: stop, raw: toRaw });\nvar src_default = alpine_default;\n\n// packages/alpinejs/builds/module.js\nvar module_default = src_default;\nexport {\n  src_default as Alpine,\n  module_default as default\n};\n","// packages/intersect/src/index.js\nfunction src_default(Alpine) {\n  Alpine.directive(\"intersect\", Alpine.skipDuringClone((el, { value, expression, modifiers }, { evaluateLater, cleanup }) => {\n    let evaluate = evaluateLater(expression);\n    let options = {\n      rootMargin: getRootMargin(modifiers),\n      threshold: getThreshold(modifiers)\n    };\n    let observer = new IntersectionObserver((entries) => {\n      entries.forEach((entry) => {\n        if (entry.isIntersecting === (value === \"leave\"))\n          return;\n        evaluate();\n        modifiers.includes(\"once\") && observer.disconnect();\n      });\n    }, options);\n    observer.observe(el);\n    cleanup(() => {\n      observer.disconnect();\n    });\n  }));\n}\nfunction getThreshold(modifiers) {\n  if (modifiers.includes(\"full\"))\n    return 0.99;\n  if (modifiers.includes(\"half\"))\n    return 0.5;\n  if (!modifiers.includes(\"threshold\"))\n    return 0;\n  let threshold = modifiers[modifiers.indexOf(\"threshold\") + 1];\n  if (threshold === \"100\")\n    return 1;\n  if (threshold === \"0\")\n    return 0;\n  return Number(`.${threshold}`);\n}\nfunction getLengthValue(rawValue) {\n  let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/);\n  return match ? match[1] + (match[2] || \"px\") : void 0;\n}\nfunction getRootMargin(modifiers) {\n  const key = \"margin\";\n  const fallback = \"0px 0px 0px 0px\";\n  const index = modifiers.indexOf(key);\n  if (index === -1)\n    return fallback;\n  let values = [];\n  for (let i = 1; i < 5; i++) {\n    values.push(getLengthValue(modifiers[index + i] || \"\"));\n  }\n  values = values.filter((v) => v !== void 0);\n  return values.length ? values.join(\" \").trim() : fallback;\n}\n\n// packages/intersect/builds/module.js\nvar module_default = src_default;\nexport {\n  module_default as default,\n  src_default as intersect\n};\n","// packages/collapse/src/index.js\nfunction src_default(Alpine) {\n  Alpine.directive(\"collapse\", collapse);\n  collapse.inline = (el, { modifiers }) => {\n    if (!modifiers.includes(\"min\"))\n      return;\n    el._x_doShow = () => {\n    };\n    el._x_doHide = () => {\n    };\n  };\n  function collapse(el, { modifiers }) {\n    let duration = modifierValue(modifiers, \"duration\", 250) / 1e3;\n    let floor = modifierValue(modifiers, \"min\", 0);\n    let fullyHide = !modifiers.includes(\"min\");\n    if (!el._x_isShown)\n      el.style.height = `${floor}px`;\n    if (!el._x_isShown && fullyHide)\n      el.hidden = true;\n    if (!el._x_isShown)\n      el.style.overflow = \"hidden\";\n    let setFunction = (el2, styles) => {\n      let revertFunction = Alpine.setStyles(el2, styles);\n      return styles.height ? () => {\n      } : revertFunction;\n    };\n    let transitionStyles = {\n      transitionProperty: \"height\",\n      transitionDuration: `${duration}s`,\n      transitionTimingFunction: \"cubic-bezier(0.4, 0.0, 0.2, 1)\"\n    };\n    el._x_transition = {\n      in(before = () => {\n      }, after = () => {\n      }) {\n        if (fullyHide)\n          el.hidden = false;\n        if (fullyHide)\n          el.style.display = null;\n        let current = el.getBoundingClientRect().height;\n        el.style.height = \"auto\";\n        let full = el.getBoundingClientRect().height;\n        if (current === full) {\n          current = floor;\n        }\n        Alpine.transition(el, Alpine.setStyles, {\n          during: transitionStyles,\n          start: { height: current + \"px\" },\n          end: { height: full + \"px\" }\n        }, () => el._x_isShown = true, () => {\n          if (Math.abs(el.getBoundingClientRect().height - full) < 1) {\n            el.style.overflow = null;\n          }\n        });\n      },\n      out(before = () => {\n      }, after = () => {\n      }) {\n        let full = el.getBoundingClientRect().height;\n        Alpine.transition(el, setFunction, {\n          during: transitionStyles,\n          start: { height: full + \"px\" },\n          end: { height: floor + \"px\" }\n        }, () => el.style.overflow = \"hidden\", () => {\n          el._x_isShown = false;\n          if (el.style.height == `${floor}px` && fullyHide) {\n            el.style.display = \"none\";\n            el.hidden = true;\n          }\n        });\n      }\n    };\n  }\n}\nfunction modifierValue(modifiers, key, fallback) {\n  if (modifiers.indexOf(key) === -1)\n    return fallback;\n  const rawValue = modifiers[modifiers.indexOf(key) + 1];\n  if (!rawValue)\n    return fallback;\n  if (key === \"duration\") {\n    let match = rawValue.match(/([0-9]+)ms/);\n    if (match)\n      return match[1];\n  }\n  if (key === \"min\") {\n    let match = rawValue.match(/([0-9]+)px/);\n    if (match)\n      return match[1];\n  }\n  return rawValue;\n}\n\n// packages/collapse/builds/module.js\nvar module_default = src_default;\nexport {\n  src_default as collapse,\n  module_default as default\n};\n","const capitalize = (s) => s && s[0].toUpperCase() + s.slice(1);\n\nexport const cDialogOn = (el, { value, expression }, { evaluateLater, cleanup }) => {\n    const evExpression = evaluateLater(expression);\n\n    const pm = el.closest('[aria-modal=true]');\n    if (!pm) return;\n\n    let prefix = 'ecModal';\n    if (pm.matches('.ru003-popup')) prefix = 'ecPopup';\n\n    const event = `${prefix}${capitalize(value)}`;\n    const evl = pm.addEventListener(event, () => {\n        evExpression();\n    });\n\n    cleanup(() => {\n        pm.removeEventListener(event, evl);\n    });\n};\n","class Dictionary {\n    constructor() {\n        this.dictionary = window.dictionary;\n    }\n\n    /**\n     * Get dictionary byg key\n     * @param {*} key\n     * @returns The label\n     */\n    get(key) {\n        return this._get(key);\n    }\n\n    _get(key) {\n        const res = this.dictionary ? this.dictionary[key] : null;\n        if (res) return res;\n        return key;\n    }\n}\n\n/**\n *\n * @returns {Dictionary} dictionary\n */\nexport const getDictionary = () => {\n    if (!window.rcDictionary) {\n        window.rcDictionary = new Dictionary();\n    }\n    return window.rcDictionary;\n};\n","export class DOMFactory {\n    /**\n     * Create a new DOM factory.\n     * @param {DOMImplementation} domImplementation\n     */\n    constructor(domImplementation) {\n        this._impl = domImplementation;\n    }\n\n    /**\n     * If set to {@code true}, calling {@link #end()} will keep the document fragment if it exists.\n     * Otherwise a `<body>` element is returned.\n     * @param {boolean} value flag that dictates the return behaviour.\n     * @returns {VDOMFactory} this.\n     */\n    withKeepFragment(value) {\n        this._keepFragment = value;\n        return this;\n    }\n\n    start() {\n        this._doc = this._impl.createHTMLDocument();\n        this._isFragment = true;\n        this._root = this._doc.createDocumentFragment();\n        this._usedNodes = [];\n        return this._root;\n    }\n\n    end() {\n        if (this._isFragment) {\n            if (this._keepFragment) {\n                return this._root;\n            }\n            this._doc.body.appendChild(this._root);\n            return this._doc.body;\n        }\n        return this._doc;\n    }\n\n    doctype(node, name) {\n        if (name !== 'html') {\n            this._doc.doctype.name = name;\n        }\n        this._isFragment = false;\n        this._root = this._doc.documentElement;\n        return this._root;\n    }\n\n    create(tagName) {\n        const tag = tagName.toLowerCase();\n        if (tag === 'html') {\n            this._isFragment = false;\n            return this._doc.documentElement;\n        }\n        if (tag === 'head') {\n            this._isFragment = false;\n            return this._doc.head;\n        }\n        if (tag === 'body') {\n            this._isFragment = false;\n            return this._doc.body;\n        }\n        return this._doc.createElement(tagName);\n    }\n\n    append(node, value) {\n        if (typeof value === 'object' && value.cloneNode) {\n            if (value.nodeName === 'BODY') {\n                // we do not clone the body, as it will not be reused in the document again\n                // if this is not desired, the calling application can clone the document first.\n                if (node.nodeName === 'HTML') {\n                    // case: <html>${resource.document.body}</html>\n                    node.removeChild(this._doc.body);\n                    node.appendChild(value);\n                    return;\n                }\n                // case <html><body>${resource.document.body}</body></html>\n                // or <div>${resource.document.body}</div>\n                while (value.firstChild) {\n                    node.appendChild(value.firstChild);\n                }\n                return;\n            }\n\n            if (this._usedNodes.includes(value)) {\n                // eslint-disable-next-line no-param-reassign\n                value = value.cloneNode(true);\n            } else {\n                this._usedNodes.push(value);\n            }\n            node.appendChild(value);\n            return;\n        }\n\n        // node list\n        if (typeof value === 'object' && value.forEach) {\n            Array.from(value).forEach((child) => {\n                if (typeof child !== 'object' || !child.cloneNode) {\n                    const template = this._doc.createElement('template');\n                    template.innerHTML = String(child);\n                    // eslint-disable-next-line no-param-reassign\n                    child = template.content;\n                } else {\n                    // eslint-disable-next-line no-param-reassign\n                    child = child.cloneNode(true);\n                }\n                node.appendChild(child);\n            });\n            return;\n        }\n\n        const template = this._doc.createElement('template');\n        template.innerHTML = String(value);\n        node.appendChild(template.content);\n    }\n\n    text(node, text) {\n        // ignore text in document node\n        if (node.nodeName === '#document') {\n            return;\n        }\n        node.appendChild(this._doc.createTextNode(text));\n    }\n\n    rem(node, text) {\n        node.appendChild(this._doc.createComment(text));\n    }\n\n    attr(node, name, value) {\n        node.setAttribute(name, value != null ? value : '');\n    }\n\n    push(parent, node) {\n        if (node.nodeName === 'HTML') {\n            return node;\n        }\n        return parent.appendChild(node);\n    }\n\n    pop(node) {\n        return node.parentNode;\n    }\n}\n","const formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: \"less than a second\",\n    other: \"less than {{count}} seconds\",\n  },\n\n  xSeconds: {\n    one: \"1 second\",\n    other: \"{{count}} seconds\",\n  },\n\n  halfAMinute: \"half a minute\",\n\n  lessThanXMinutes: {\n    one: \"less than a minute\",\n    other: \"less than {{count}} minutes\",\n  },\n\n  xMinutes: {\n    one: \"1 minute\",\n    other: \"{{count}} minutes\",\n  },\n\n  aboutXHours: {\n    one: \"about 1 hour\",\n    other: \"about {{count}} hours\",\n  },\n\n  xHours: {\n    one: \"1 hour\",\n    other: \"{{count}} hours\",\n  },\n\n  xDays: {\n    one: \"1 day\",\n    other: \"{{count}} days\",\n  },\n\n  aboutXWeeks: {\n    one: \"about 1 week\",\n    other: \"about {{count}} weeks\",\n  },\n\n  xWeeks: {\n    one: \"1 week\",\n    other: \"{{count}} weeks\",\n  },\n\n  aboutXMonths: {\n    one: \"about 1 month\",\n    other: \"about {{count}} months\",\n  },\n\n  xMonths: {\n    one: \"1 month\",\n    other: \"{{count}} months\",\n  },\n\n  aboutXYears: {\n    one: \"about 1 year\",\n    other: \"about {{count}} years\",\n  },\n\n  xYears: {\n    one: \"1 year\",\n    other: \"{{count}} years\",\n  },\n\n  overXYears: {\n    one: \"over 1 year\",\n    other: \"over {{count}} years\",\n  },\n\n  almostXYears: {\n    one: \"almost 1 year\",\n    other: \"almost {{count}} years\",\n  },\n};\n\nexport const formatDistance = (token, count, options) => {\n  let result;\n\n  const tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === \"string\") {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace(\"{{count}}\", count.toString());\n  }\n\n  if (options?.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return \"in \" + result;\n    } else {\n      return result + \" ago\";\n    }\n  }\n\n  return result;\n};\n","const formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n  formatRelativeLocale[token];\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n  return (value, options) => {\n    const context = options?.context ? String(options.context) : \"standalone\";\n\n    let valuesArray;\n    if (context === \"formatting\" && args.formattingValues) {\n      const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      const width = options?.width ? String(options.width) : defaultWidth;\n\n      valuesArray =\n        args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      const defaultWidth = args.defaultWidth;\n      const width = options?.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[width] || args.values[defaultWidth];\n    }\n    const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n    // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n  narrow: [\"B\", \"A\"],\n  abbreviated: [\"BC\", \"AD\"],\n  wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n  narrow: [\"1\", \"2\", \"3\", \"4\"],\n  abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n  wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n  narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n  abbreviated: [\n    \"Jan\",\n    \"Feb\",\n    \"Mar\",\n    \"Apr\",\n    \"May\",\n    \"Jun\",\n    \"Jul\",\n    \"Aug\",\n    \"Sep\",\n    \"Oct\",\n    \"Nov\",\n    \"Dec\",\n  ],\n\n  wide: [\n    \"January\",\n    \"February\",\n    \"March\",\n    \"April\",\n    \"May\",\n    \"June\",\n    \"July\",\n    \"August\",\n    \"September\",\n    \"October\",\n    \"November\",\n    \"December\",\n  ],\n};\n\nconst dayValues = {\n  narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n  short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n  abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  wide: [\n    \"Sunday\",\n    \"Monday\",\n    \"Tuesday\",\n    \"Wednesday\",\n    \"Thursday\",\n    \"Friday\",\n    \"Saturday\",\n  ],\n};\n\nconst dayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n};\n\nconst formattingDayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n  const number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  const rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + \"st\";\n      case 2:\n        return number + \"nd\";\n      case 3:\n        return number + \"rd\";\n    }\n  }\n  return number + \"th\";\n};\n\nexport const localize = {\n  ordinalNumber,\n\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: \"wide\",\n  }),\n\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: \"wide\",\n    argumentCallback: (quarter) => quarter - 1,\n  }),\n\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: \"wide\",\n  }),\n\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: \"wide\",\n  }),\n\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: \"wide\",\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: \"wide\",\n  }),\n};\n","export function buildMatchFn(args) {\n  return (string, options = {}) => {\n    const width = options.width;\n\n    const matchPattern =\n      (width && args.matchPatterns[width]) ||\n      args.matchPatterns[args.defaultMatchWidth];\n    const matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n    const matchedString = matchResult[0];\n\n    const parsePatterns =\n      (width && args.parsePatterns[width]) ||\n      args.parsePatterns[args.defaultParseWidth];\n\n    const key = Array.isArray(parsePatterns)\n      ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n      : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n        findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n    let value;\n\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback\n      ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n        options.valueCallback(value)\n      : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (const key in object) {\n    if (\n      Object.prototype.hasOwnProperty.call(object, key) &&\n      predicate(object[key])\n    ) {\n      return key;\n    }\n  }\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (let key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\n","export function buildMatchPatternFn(args) {\n  return (string, options = {}) => {\n    const matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    const matchedString = matchResult[0];\n\n    const parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    let value = args.valueCallback\n      ? args.valueCallback(parseResult[0])\n      : parseResult[0];\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n    value = options.valueCallback ? options.valueCallback(value) : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n  narrow: [\n    /^j/i,\n    /^f/i,\n    /^m/i,\n    /^a/i,\n    /^m/i,\n    /^j/i,\n    /^j/i,\n    /^a/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n\n  any: [\n    /^ja/i,\n    /^f/i,\n    /^mar/i,\n    /^ap/i,\n    /^may/i,\n    /^jun/i,\n    /^jul/i,\n    /^au/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n};\n\nconst matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i,\n  },\n};\n\nexport const match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: (value) => parseInt(value, 10),\n  }),\n\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: \"any\",\n    valueCallback: (index) => index + 1,\n  }),\n\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: \"any\",\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: \"any\",\n  }),\n};\n","export function buildFormatLongFn(args) {\n  return (options = {}) => {\n    // TODO: Remove String()\n    const width = options.width ? String(options.width) : args.defaultWidth;\n    const format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n  full: \"EEEE, d MMMM yyyy\",\n  long: \"d MMMM yyyy\",\n  medium: \"d MMM yyyy\",\n  short: \"dd/MM/yyyy\",\n};\n\nconst timeFormats = {\n  full: \"HH:mm:ss zzzz\",\n  long: \"HH:mm:ss z\",\n  medium: \"HH:mm:ss\",\n  short: \"HH:mm\",\n};\n\nconst dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: \"{{date}}, {{time}}\",\n  short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: \"full\",\n  }),\n\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: \"full\",\n  }),\n\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: \"full\",\n  }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\nimport { formatLong } from \"./en-GB/_lib/formatLong.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United Kingdom).\n * @language English\n * @iso-639-2 eng\n * @author Alex [@glintik](https://github.com/glintik)\n */\nexport const enGB = {\n  code: \"en-GB\",\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4,\n  },\n};\n\n// Fallback for modularized imports:\nexport default enGB;\n","const formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: \"meno di un secondo\",\n    other: \"meno di {{count}} secondi\",\n  },\n\n  xSeconds: {\n    one: \"un secondo\",\n    other: \"{{count}} secondi\",\n  },\n\n  halfAMinute: \"alcuni secondi\",\n\n  lessThanXMinutes: {\n    one: \"meno di un minuto\",\n    other: \"meno di {{count}} minuti\",\n  },\n\n  xMinutes: {\n    one: \"un minuto\",\n    other: \"{{count}} minuti\",\n  },\n\n  aboutXHours: {\n    one: \"circa un'ora\",\n    other: \"circa {{count}} ore\",\n  },\n\n  xHours: {\n    one: \"un'ora\",\n    other: \"{{count}} ore\",\n  },\n\n  xDays: {\n    one: \"un giorno\",\n    other: \"{{count}} giorni\",\n  },\n\n  aboutXWeeks: {\n    one: \"circa una settimana\",\n    other: \"circa {{count}} settimane\",\n  },\n\n  xWeeks: {\n    one: \"una settimana\",\n    other: \"{{count}} settimane\",\n  },\n\n  aboutXMonths: {\n    one: \"circa un mese\",\n    other: \"circa {{count}} mesi\",\n  },\n\n  xMonths: {\n    one: \"un mese\",\n    other: \"{{count}} mesi\",\n  },\n\n  aboutXYears: {\n    one: \"circa un anno\",\n    other: \"circa {{count}} anni\",\n  },\n\n  xYears: {\n    one: \"un anno\",\n    other: \"{{count}} anni\",\n  },\n\n  overXYears: {\n    one: \"più di un anno\",\n    other: \"più di {{count}} anni\",\n  },\n\n  almostXYears: {\n    one: \"quasi un anno\",\n    other: \"quasi {{count}} anni\",\n  },\n};\n\nexport const formatDistance = (token, count, options) => {\n  let result;\n\n  const tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === \"string\") {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace(\"{{count}}\", count.toString());\n  }\n\n  if (options?.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return \"tra \" + result;\n    } else {\n      return result + \" fa\";\n    }\n  }\n\n  return result;\n};\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n  full: \"EEEE d MMMM y\",\n  long: \"d MMMM y\",\n  medium: \"d MMM y\",\n  short: \"dd/MM/y\",\n};\n\nconst timeFormats = {\n  full: \"HH:mm:ss zzzz\",\n  long: \"HH:mm:ss z\",\n  medium: \"HH:mm:ss\",\n  short: \"HH:mm\",\n};\n\nconst dateTimeFormats = {\n  full: \"{{date}} {{time}}\",\n  long: \"{{date}} {{time}}\",\n  medium: \"{{date}} {{time}}\",\n  short: \"{{date}} {{time}}\",\n};\n\nexport const formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: \"full\",\n  }),\n\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: \"full\",\n  }),\n\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: \"full\",\n  }),\n};\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument) {\n  const argStr = Object.prototype.toString.call(argument);\n\n  // Clone the date\n  if (\n    argument instanceof Date ||\n    (typeof argument === \"object\" && argStr === \"[object Date]\")\n  ) {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new argument.constructor(+argument);\n  } else if (\n    typeof argument === \"number\" ||\n    argStr === \"[object Number]\" ||\n    typeof argument === \"string\" ||\n    argStr === \"[object String]\"\n  ) {\n    // TODO: Can we get rid of as?\n    return new Date(argument);\n  } else {\n    // TODO: Can we get rid of as?\n    return new Date(NaN);\n  }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const _date = toDate(date);\n  const day = _date.getDay();\n  const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n  _date.setDate(_date.getDate() - diff);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * The {@link isSameWeek} function options.\n */\n\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week (and month and year)?\n *\n * @description\n * Are the given dates in the same week (and month and year)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same week (and month and year)\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * const result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4))\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * const result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4), {\n *   weekStartsOn: 1\n * })\n * //=> false\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same week?\n * const result = isSameWeek(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport function isSameWeek(dateLeft, dateRight, options) {\n  const dateLeftStartOfWeek = startOfWeek(dateLeft, options);\n  const dateRightStartOfWeek = startOfWeek(dateRight, options);\n\n  return +dateLeftStartOfWeek === +dateRightStartOfWeek;\n}\n\n// Fallback for modularized imports:\nexport default isSameWeek;\n","import { isSameWeek } from \"../../../isSameWeek.mjs\";\n\nconst weekdays = [\n  \"domenica\",\n  \"lunedì\",\n  \"martedì\",\n  \"mercoledì\",\n  \"giovedì\",\n  \"venerdì\",\n  \"sabato\",\n];\n\nfunction lastWeek(day) {\n  switch (day) {\n    case 0:\n      return \"'domenica scorsa alle' p\";\n    default:\n      return \"'\" + weekdays[day] + \" scorso alle' p\";\n  }\n}\n\nfunction thisWeek(day) {\n  return \"'\" + weekdays[day] + \" alle' p\";\n}\n\nfunction nextWeek(day) {\n  switch (day) {\n    case 0:\n      return \"'domenica prossima alle' p\";\n    default:\n      return \"'\" + weekdays[day] + \" prossimo alle' p\";\n  }\n}\n\nconst formatRelativeLocale = {\n  lastWeek: (date, baseDate, options) => {\n    const day = date.getDay();\n    if (isSameWeek(date, baseDate, options)) {\n      return thisWeek(day);\n    } else {\n      return lastWeek(day);\n    }\n  },\n  yesterday: \"'ieri alle' p\",\n  today: \"'oggi alle' p\",\n  tomorrow: \"'domani alle' p\",\n  nextWeek: (date, baseDate, options) => {\n    const day = date.getDay();\n    if (isSameWeek(date, baseDate, options)) {\n      return thisWeek(day);\n    } else {\n      return nextWeek(day);\n    }\n  },\n  other: \"P\",\n};\n\nexport const formatRelative = (token, date, baseDate, options) => {\n  const format = formatRelativeLocale[token];\n\n  if (typeof format === \"function\") {\n    return format(date, baseDate, options);\n  }\n\n  return format;\n};\n","import { formatDistance } from \"./it/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./it/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./it/_lib/formatRelative.mjs\";\nimport { localize } from \"./it/_lib/localize.mjs\";\nimport { match } from \"./it/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary Italian locale.\n * @language Italian\n * @iso-639-2 ita\n * @author Alberto Restifo [@albertorestifo](https://github.com/albertorestifo)\n * @author Giovanni Polimeni [@giofilo](https://github.com/giofilo)\n * @author Vincenzo Carrese [@vin-car](https://github.com/vin-car)\n */\nexport const it = {\n  code: \"it\",\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 1 /* Monday */,\n    firstWeekContainsDate: 4,\n  },\n};\n\n// Fallback for modularized imports:\nexport default it;\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n  narrow: [\"aC\", \"dC\"],\n  abbreviated: [\"a.C.\", \"d.C.\"],\n  wide: [\"avanti Cristo\", \"dopo Cristo\"],\n};\n\nconst quarterValues = {\n  narrow: [\"1\", \"2\", \"3\", \"4\"],\n  abbreviated: [\"T1\", \"T2\", \"T3\", \"T4\"],\n  wide: [\"1º trimestre\", \"2º trimestre\", \"3º trimestre\", \"4º trimestre\"],\n};\n\nconst monthValues = {\n  narrow: [\"G\", \"F\", \"M\", \"A\", \"M\", \"G\", \"L\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n  abbreviated: [\n    \"gen\",\n    \"feb\",\n    \"mar\",\n    \"apr\",\n    \"mag\",\n    \"giu\",\n    \"lug\",\n    \"ago\",\n    \"set\",\n    \"ott\",\n    \"nov\",\n    \"dic\",\n  ],\n\n  wide: [\n    \"gennaio\",\n    \"febbraio\",\n    \"marzo\",\n    \"aprile\",\n    \"maggio\",\n    \"giugno\",\n    \"luglio\",\n    \"agosto\",\n    \"settembre\",\n    \"ottobre\",\n    \"novembre\",\n    \"dicembre\",\n  ],\n};\n\nconst dayValues = {\n  narrow: [\"D\", \"L\", \"M\", \"M\", \"G\", \"V\", \"S\"],\n  short: [\"dom\", \"lun\", \"mar\", \"mer\", \"gio\", \"ven\", \"sab\"],\n  abbreviated: [\"dom\", \"lun\", \"mar\", \"mer\", \"gio\", \"ven\", \"sab\"],\n  wide: [\n    \"domenica\",\n    \"lunedì\",\n    \"martedì\",\n    \"mercoledì\",\n    \"giovedì\",\n    \"venerdì\",\n    \"sabato\",\n  ],\n};\n\nconst dayPeriodValues = {\n  narrow: {\n    am: \"m.\",\n    pm: \"p.\",\n    midnight: \"mezzanotte\",\n    noon: \"mezzogiorno\",\n    morning: \"mattina\",\n    afternoon: \"pomeriggio\",\n    evening: \"sera\",\n    night: \"notte\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"mezzanotte\",\n    noon: \"mezzogiorno\",\n    morning: \"mattina\",\n    afternoon: \"pomeriggio\",\n    evening: \"sera\",\n    night: \"notte\",\n  },\n  wide: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"mezzanotte\",\n    noon: \"mezzogiorno\",\n    morning: \"mattina\",\n    afternoon: \"pomeriggio\",\n    evening: \"sera\",\n    night: \"notte\",\n  },\n};\n\nconst formattingDayPeriodValues = {\n  narrow: {\n    am: \"m.\",\n    pm: \"p.\",\n    midnight: \"mezzanotte\",\n    noon: \"mezzogiorno\",\n    morning: \"di mattina\",\n    afternoon: \"del pomeriggio\",\n    evening: \"di sera\",\n    night: \"di notte\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"mezzanotte\",\n    noon: \"mezzogiorno\",\n    morning: \"di mattina\",\n    afternoon: \"del pomeriggio\",\n    evening: \"di sera\",\n    night: \"di notte\",\n  },\n  wide: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"mezzanotte\",\n    noon: \"mezzogiorno\",\n    morning: \"di mattina\",\n    afternoon: \"del pomeriggio\",\n    evening: \"di sera\",\n    night: \"di notte\",\n  },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n  const number = Number(dirtyNumber);\n  return String(number);\n};\n\nexport const localize = {\n  ordinalNumber,\n\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: \"wide\",\n  }),\n\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: \"wide\",\n    argumentCallback: (quarter) => quarter - 1,\n  }),\n\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: \"wide\",\n  }),\n\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: \"wide\",\n  }),\n\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: \"wide\",\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: \"wide\",\n  }),\n};\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(º)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n  narrow: /^(aC|dC)/i,\n  abbreviated: /^(a\\.?\\s?C\\.?|a\\.?\\s?e\\.?\\s?v\\.?|d\\.?\\s?C\\.?|e\\.?\\s?v\\.?)/i,\n  wide: /^(avanti Cristo|avanti Era Volgare|dopo Cristo|Era Volgare)/i,\n};\nconst parseEraPatterns = {\n  any: [/^a/i, /^(d|e)/i],\n};\n\nconst matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^t[1234]/i,\n  wide: /^[1234](º)? trimestre/i,\n};\nconst parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n  narrow: /^[gfmalsond]/i,\n  abbreviated: /^(gen|feb|mar|apr|mag|giu|lug|ago|set|ott|nov|dic)/i,\n  wide: /^(gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre)/i,\n};\nconst parseMonthPatterns = {\n  narrow: [\n    /^g/i,\n    /^f/i,\n    /^m/i,\n    /^a/i,\n    /^m/i,\n    /^g/i,\n    /^l/i,\n    /^a/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n\n  any: [\n    /^ge/i,\n    /^f/i,\n    /^mar/i,\n    /^ap/i,\n    /^mag/i,\n    /^gi/i,\n    /^l/i,\n    /^ag/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n};\n\nconst matchDayPatterns = {\n  narrow: /^[dlmgvs]/i,\n  short: /^(do|lu|ma|me|gi|ve|sa)/i,\n  abbreviated: /^(dom|lun|mar|mer|gio|ven|sab)/i,\n  wide: /^(domenica|luned[i|ì]|marted[i|ì]|mercoled[i|ì]|gioved[i|ì]|venerd[i|ì]|sabato)/i,\n};\nconst parseDayPatterns = {\n  narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^g/i, /^v/i, /^s/i],\n  any: [/^d/i, /^l/i, /^ma/i, /^me/i, /^g/i, /^v/i, /^s/i],\n};\n\nconst matchDayPeriodPatterns = {\n  narrow:\n    /^(a|m\\.|p|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,\n  any: /^([ap]\\.?\\s?m\\.?|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,\n};\nconst parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mezza/i,\n    noon: /^mezzo/i,\n    morning: /mattina/i,\n    afternoon: /pomeriggio/i,\n    evening: /sera/i,\n    night: /notte/i,\n  },\n};\n\nexport const match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: (value) => parseInt(value, 10),\n  }),\n\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: \"any\",\n    valueCallback: (index) => index + 1,\n  }),\n\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: \"any\",\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: \"any\",\n  }),\n};\n","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n  if (!isDate(date) && typeof date !== \"number\") {\n    return false;\n  }\n  const _date = toDate(date);\n  return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n  return (\n    value instanceof Date ||\n    (typeof value === \"object\" &&\n      Object.prototype.toString.call(value) === \"[object Date]\")\n  );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n  code: \"en-US\",\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1,\n  },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n  full: \"EEEE, MMMM do, y\",\n  long: \"MMMM do, y\",\n  medium: \"MMM d, y\",\n  short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n  full: \"h:mm:ss a zzzz\",\n  long: \"h:mm:ss a z\",\n  medium: \"h:mm:ss a\",\n  short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: \"{{date}}, {{time}}\",\n  short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: \"full\",\n  }),\n\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: \"full\",\n  }),\n\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: \"full\",\n  }),\n};\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n *   return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date) {\n  const _date = toDate(date);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"../toDate.mjs\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n  const _date = toDate(date);\n  const utcDate = new Date(\n    Date.UTC(\n      _date.getFullYear(),\n      _date.getMonth(),\n      _date.getDate(),\n      _date.getHours(),\n      _date.getMinutes(),\n      _date.getSeconds(),\n      _date.getMilliseconds(),\n    ),\n  );\n  utcDate.setUTCFullYear(_date.getFullYear());\n  return +date - +utcDate;\n}\n","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date(date: DateType): DateType {\n *   return constructFrom(\n *     date, // Use contrustor from the given date\n *     date.getTime() // Use the date value to create a new date\n *   )\n * }\n */\nexport function constructFrom(date, value) {\n  if (date instanceof Date) {\n    return new date.constructor(value);\n  } else {\n    return new Date(value);\n  }\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { startOfYear } from \"./startOfYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date) {\n  const _date = toDate(date);\n  const diff = differenceInCalendarDays(_date, startOfYear(_date));\n  const dayOfYear = diff + 1;\n  return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n  const startOfDayLeft = startOfDay(dateLeft);\n  const startOfDayRight = startOfDay(dateRight);\n\n  const timestampLeft =\n    +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n  const timestampRight =\n    +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n  // Round the number of days to the nearest integer because the number of\n  // milliseconds in a day is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date) {\n  const cleanDate = toDate(date);\n  const _date = constructFrom(date, 0);\n  _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date) {\n  return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date) {\n  const _date = toDate(date);\n  const year = _date.getFullYear();\n\n  const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n  fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n  const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n  fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (_date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (_date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date) {\n  const _date = toDate(date);\n  const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date) {\n  const year = getISOWeekYear(date);\n  const fourthOfJanuary = constructFrom(date, 0);\n  fourthOfJanuary.setFullYear(year, 0, 4);\n  fourthOfJanuary.setHours(0, 0, 0, 0);\n  return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n  const _date = toDate(date);\n  const year = _date.getFullYear();\n\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const firstWeekOfNextYear = constructFrom(date, 0);\n  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n  const firstWeekOfThisYear = constructFrom(date, 0);\n  firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n  if (_date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (_date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n  const _date = toDate(date);\n  const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const year = getWeekYear(date, options);\n  const firstWeek = constructFrom(date, 0);\n  firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setHours(0, 0, 0, 0);\n  const _date = startOfWeek(firstWeek, options);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","export function addLeadingZeros(number, targetLength) {\n  const sign = number < 0 ? \"-\" : \"\";\n  const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n  return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n  // Year\n  y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    const signedYear = date.getFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n  },\n\n  // Month\n  M(date, token) {\n    const month = date.getMonth();\n    return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n\n  // Day of the month\n  d(date, token) {\n    return addLeadingZeros(date.getDate(), token.length);\n  },\n\n  // AM or PM\n  a(date, token) {\n    const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return dayPeriodEnumValue.toUpperCase();\n      case \"aaa\":\n        return dayPeriodEnumValue;\n      case \"aaaaa\":\n        return dayPeriodEnumValue[0];\n      case \"aaaa\":\n      default:\n        return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n    }\n  },\n\n  // Hour [1-12]\n  h(date, token) {\n    return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n  },\n\n  // Hour [0-23]\n  H(date, token) {\n    return addLeadingZeros(date.getHours(), token.length);\n  },\n\n  // Minute\n  m(date, token) {\n    return addLeadingZeros(date.getMinutes(), token.length);\n  },\n\n  // Second\n  s(date, token) {\n    return addLeadingZeros(date.getSeconds(), token.length);\n  },\n\n  // Fraction of second\n  S(date, token) {\n    const numberOfDigits = token.length;\n    const milliseconds = date.getMilliseconds();\n    const fractionalSeconds = Math.trunc(\n      milliseconds * Math.pow(10, numberOfDigits - 3),\n    );\n    return addLeadingZeros(fractionalSeconds, token.length);\n  },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\n\nconst dayPeriodEnum = {\n  am: \"am\",\n  pm: \"pm\",\n  midnight: \"midnight\",\n  noon: \"noon\",\n  morning: \"morning\",\n  afternoon: \"afternoon\",\n  evening: \"evening\",\n  night: \"night\",\n};\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n  // Era\n  G: function (date, token, localize) {\n    const era = date.getFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case \"G\":\n      case \"GG\":\n      case \"GGG\":\n        return localize.era(era, { width: \"abbreviated\" });\n      // A, B\n      case \"GGGGG\":\n        return localize.era(era, { width: \"narrow\" });\n      // Anno Domini, Before Christ\n      case \"GGGG\":\n      default:\n        return localize.era(era, { width: \"wide\" });\n    }\n  },\n\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === \"yo\") {\n      const signedYear = date.getFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      const year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, { unit: \"year\" });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    const signedWeekYear = getWeekYear(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === \"YY\") {\n      const twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === \"Yo\") {\n      return localize.ordinalNumber(weekYear, { unit: \"year\" });\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length);\n  },\n\n  // ISO week-numbering year\n  R: function (date, token) {\n    const isoWeekYear = getISOWeekYear(date);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    const year = date.getFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n\n  // Quarter\n  Q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"Q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"QQ\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"Qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"QQQ\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"QQQQQ\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"QQQQ\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"qq\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"qqq\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"qqqqq\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"qqqq\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // Month\n  M: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      case \"M\":\n      case \"MM\":\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case \"Mo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"MMM\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // J, F, ..., D\n      case \"MMMMM\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // January, February, ..., December\n      case \"MMMM\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"formatting\" });\n    }\n  },\n\n  // Stand-alone month\n  L: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"L\":\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case \"LL\":\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case \"Lo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"LLL\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // J, F, ..., D\n      case \"LLLLL\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // January, February, ..., December\n      case \"LLLL\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"standalone\" });\n    }\n  },\n\n  // Local week of year\n  w: function (date, token, localize, options) {\n    const week = getWeek(date, options);\n\n    if (token === \"wo\") {\n      return localize.ordinalNumber(week, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n\n  // ISO week of year\n  I: function (date, token, localize) {\n    const isoWeek = getISOWeek(date);\n\n    if (token === \"Io\") {\n      return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === \"do\") {\n      return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n\n  // Day of year\n  D: function (date, token, localize) {\n    const dayOfYear = getDayOfYear(date);\n\n    if (token === \"Do\") {\n      return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n\n  // Day of week\n  E: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    switch (token) {\n      // Tue\n      case \"E\":\n      case \"EE\":\n      case \"EEE\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"EEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"EEEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"EEEE\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Local day of week\n  e: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case \"e\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"ee\":\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case \"eo\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"eee\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"eeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"eeeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"eeee\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case \"c\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"cc\":\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case \"co\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"ccc\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // T\n      case \"ccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // Tu\n      case \"cccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"standalone\",\n        });\n      // Tuesday\n      case \"cccc\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // ISO day of week\n  i: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case \"i\":\n        return String(isoDayOfWeek);\n      // 02\n      case \"ii\":\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n      case \"io\":\n        return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n      // Tue\n      case \"iii\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"iiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"iiiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"iiii\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM or PM\n  a: function (date, token, localize) {\n    const hours = date.getHours();\n    const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"aaa\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"aaaaa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"aaaa\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n    }\n\n    switch (token) {\n      case \"b\":\n      case \"bb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"bbb\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"bbbbb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"bbbb\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case \"B\":\n      case \"BB\":\n      case \"BBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"BBBBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"BBBB\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === \"ho\") {\n      let hours = date.getHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === \"Ho\") {\n      return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    const hours = date.getHours() % 12;\n\n    if (token === \"Ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    let hours = date.getHours();\n    if (hours === 0) hours = 24;\n\n    if (token === \"ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Minute\n  m: function (date, token, localize) {\n    if (token === \"mo\") {\n      return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n\n  // Second\n  s: function (date, token, localize) {\n    if (token === \"so\") {\n      return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n\n  // Fraction of second\n  S: function (date, token) {\n    return lightFormatters.S(date, token);\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return \"Z\";\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"X\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case \"XXXX\":\n      case \"XX\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case \"XXXXX\":\n      case \"XXX\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"x\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case \"xxxx\":\n      case \"xx\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case \"xxxxx\":\n      case \"xxx\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (GMT)\n  O: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"O\":\n      case \"OO\":\n      case \"OOO\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"OOOO\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (specific non-location)\n  z: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"z\":\n      case \"zz\":\n      case \"zzz\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"zzzz\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Seconds timestamp\n  t: function (date, token, _localize) {\n    const timestamp = Math.trunc(date.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n\n  // Milliseconds timestamp\n  T: function (date, token, _localize) {\n    const timestamp = date.getTime();\n    return addLeadingZeros(timestamp, token.length);\n  },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = Math.trunc(absOffset / 60);\n  const minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n  if (offset % 60 === 0) {\n    const sign = offset > 0 ? \"-\" : \"+\";\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n  const minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"P\":\n      return formatLong.date({ width: \"short\" });\n    case \"PP\":\n      return formatLong.date({ width: \"medium\" });\n    case \"PPP\":\n      return formatLong.date({ width: \"long\" });\n    case \"PPPP\":\n    default:\n      return formatLong.date({ width: \"full\" });\n  }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"p\":\n      return formatLong.time({ width: \"short\" });\n    case \"pp\":\n      return formatLong.time({ width: \"medium\" });\n    case \"ppp\":\n      return formatLong.time({ width: \"long\" });\n    case \"pppp\":\n    default:\n      return formatLong.time({ width: \"full\" });\n  }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n  const matchResult = pattern.match(/(P+)(p+)?/) || [];\n  const datePattern = matchResult[1];\n  const timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  let dateTimeFormat;\n\n  switch (datePattern) {\n    case \"P\":\n      dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n      break;\n    case \"PP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n      break;\n    case \"PPP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n      break;\n    case \"PPPP\":\n    default:\n      dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n      break;\n  }\n\n  return dateTimeFormat\n    .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n    .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n  return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n  return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n  const _message = message(token, format, input);\n  console.warn(_message);\n  if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n  const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n  return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n  isProtectedDayOfYearToken,\n  isProtectedWeekYearToken,\n  warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n  /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n *    and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n  const defaultOptions = getDefaultOptions();\n  const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const originalDate = toDate(date);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError(\"Invalid time value\");\n  }\n\n  let parts = formatStr\n    .match(longFormattingTokensRegExp)\n    .map((substring) => {\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n        const longFormatter = longFormatters[firstCharacter];\n        return longFormatter(substring, locale.formatLong);\n      }\n      return substring;\n    })\n    .join(\"\")\n    .match(formattingTokensRegExp)\n    .map((substring) => {\n      // Replace two single quote characters with one single quote character\n      if (substring === \"''\") {\n        return { isToken: false, value: \"'\" };\n      }\n\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"'\") {\n        return { isToken: false, value: cleanEscapedString(substring) };\n      }\n\n      if (formatters[firstCharacter]) {\n        return { isToken: true, value: substring };\n      }\n\n      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n        throw new RangeError(\n          \"Format string contains an unescaped latin alphabet character `\" +\n            firstCharacter +\n            \"`\",\n        );\n      }\n\n      return { isToken: false, value: substring };\n    });\n\n  // invoke localize preprocessor (only for french locales at the moment)\n  if (locale.localize.preprocessor) {\n    parts = locale.localize.preprocessor(originalDate, parts);\n  }\n\n  const formatterOptions = {\n    firstWeekContainsDate,\n    weekStartsOn,\n    locale,\n  };\n\n  return parts\n    .map((part) => {\n      if (!part.isToken) return part.value;\n\n      const token = part.value;\n\n      if (\n        (!options?.useAdditionalWeekYearTokens &&\n          isProtectedWeekYearToken(token)) ||\n        (!options?.useAdditionalDayOfYearTokens &&\n          isProtectedDayOfYearToken(token))\n      ) {\n        warnOrThrowProtectedError(token, formatStr, String(date));\n      }\n\n      const formatter = formatters[token[0]];\n      return formatter(originalDate, token, locale.localize, formatterOptions);\n    })\n    .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n  const matched = input.match(escapedStringRegExp);\n\n  if (!matched) {\n    return input;\n  }\n\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { getFirstChild } from '../utils';\nimport { DOMFactory } from './DOMFactory';\nimport { format } from './format';\n\nexport class HTMLRuntime {\n    constructor() {\n        this._globals = {};\n        this._templates = {};\n        this._resourceLoader = null;\n        this._includeHandler = null;\n        this._dom = new DOMFactory(document.implementation);\n    }\n\n    get globals() {\n        return this._globals;\n    }\n\n    get templates() {\n        return this._templates;\n    }\n\n    get dom() {\n        return this._dom;\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    get col() {\n        function limit(col, { begin, end, step } = {}) {\n            if (!begin && !end && !step) {\n                return col;\n            }\n            /* eslint-disable no-param-reassign */\n            if (!Array.isArray(col)) {\n                col = Object.keys(col);\n            }\n            begin = begin ? Number.parseInt(begin, 10) : 0;\n            end = end ? Number.parseInt(end, 10) : col.length - 1;\n            step = step ? Number.parseInt(step, 10) : 1;\n            const ret = [];\n            for (let i = begin; i <= end; i += step) {\n                ret.push(col[i]);\n            }\n            return ret;\n            /* eslint-enable no-param-reassign */\n        }\n\n        function coerce(c) {\n            if (!c) {\n                return [];\n            }\n            if (typeof c[Symbol.iterator] === 'function') {\n                return Array.from(c);\n            }\n            return c;\n        }\n\n        function rel(key, value) {\n            if (typeof value === 'object') {\n                return Array.isArray(value) ? value.indexOf(key) >= 0 : key in value;\n            }\n            return value.toString().indexOf(key) >= 0;\n        }\n\n        return {\n            init: (c, opts) => limit(coerce(c), opts),\n            len: (c) => (Array.isArray(c) ? c.length : Object.keys(c).length),\n            keys: (c) => Object.keys(c),\n            get: (c, k) => (Array.isArray(c) ? c[k] : k),\n            // eslint-disable-next-line no-nested-ternary\n            empty: (c) => (Array.isArray(c) ? c.length === 0 : typeof c === 'number' ? !`${c}` : !c),\n            rel,\n        };\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    run(fn) {\n        const gen = fn();\n        let ret = {};\n        for (;;) {\n            // eslint-disable-next-line no-await-in-loop\n            ret = gen.next(ret.value);\n            if (ret.done) {\n                return ret.value;\n            }\n        }\n    }\n\n    withDomFactory(domFactory) {\n        if (typeof domFactory === 'function') {\n            this._dom = domFactory(this);\n        } else {\n            this._dom = domFactory;\n        }\n        return this;\n    }\n\n    withResourceLoader(value) {\n        this._resourceLoader = value;\n        return this;\n    }\n\n    withIncludeHandler(value) {\n        this._includeHandler = value;\n        return this;\n    }\n\n    setGlobal(name, obj) {\n        if (obj === undefined) {\n            Object.keys(name).forEach((k) => {\n                this._globals[k] = name[k];\n            });\n        } else {\n            this._globals[name] = obj;\n        }\n        return this;\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    listInfo(idx, size) {\n        const nIdx = Number(idx);\n        const nSize = Number(size);\n        const count = nIdx + 1;\n        return {\n            index: nIdx,\n            count,\n            first: nIdx === 0,\n            middle: nIdx > 0 && count < nSize,\n            last: count === nSize,\n            odd: nIdx % 2 === 0,\n            even: nIdx % 2 === 1,\n        };\n    }\n\n    use(Mod, options) {\n        const mod = new Mod();\n        Object.keys(options).forEach((k) => {\n            mod[k] = options[k];\n        });\n\n        /**\n         * For every property of the given object this function will\n         * add a camel cased getter property\n         *\n         * For example:\n         * const demo = enhanceWithGetters({ foo: \"bar\" })\n         * console.log(demo.getFoo); // 'bar'\n         */\n        function enhanceWithGetters(baseObject) {\n            // Use a object without getters and setters for\n            // browser which have no support for Proxy as Proxy\n            // can not be polyfilled e.g. Internet Explorer 11\n            if (typeof Proxy === 'undefined') {\n                return baseObject;\n            }\n            return new Proxy(baseObject, {\n                has(target, key) {\n                    if (!(key in target)) {\n                        // eslint-disable-next-line no-param-reassign\n                        key = `get${key.charAt(0).toUpperCase()}${key.substring(1)}`;\n                        return key in target;\n                    }\n                    return true;\n                },\n\n                get(target, prop, receiver) {\n                    if (prop === 'then') {\n                        return Reflect.get(target, prop, receiver);\n                    }\n                    if (!(prop in target)) {\n                        if (!prop.startsWith('get')) {\n                            // eslint-disable-next-line no-param-reassign\n                            prop = `get${prop.charAt(0).toUpperCase()}${prop.substring(1)}`;\n                        }\n                    }\n                    if (prop in target) {\n                        let value = target[prop];\n                        if (typeof value === 'function') {\n                            value = value();\n                        }\n                        return value;\n                    }\n                    return undefined;\n                },\n            });\n        }\n\n        return enhanceWithGetters(mod.use(this._globals));\n    }\n\n    resource(uri, options) {\n        if (!this._resourceLoader) {\n            return '';\n        }\n        return this._resourceLoader(this, uri, options);\n    }\n\n    include(uri, options) {\n        if (!uri) {\n            // eslint-disable-next-line no-param-reassign\n            uri = options.file;\n        }\n        if (!uri) {\n            throw new Error('Include call needs file argument or option.');\n        }\n        if (!this._includeHandler) {\n            return '';\n        }\n        return this._includeHandler(this, uri, options);\n    }\n\n    xss(value) {\n        //console.debug('XSS manipulation is disabled in FE side, returning original value...');\n        return value;\n    }\n\n    call(fn, args) {\n        if (!fn) {\n            throw new Error('Template call that has not been registered.');\n        }\n        const callable = fn.bind(this, args);\n        return this.run(callable);\n    }\n\n    /**\n     * Registers a template.\n     * @param {string} id The id of the use group\n     * @param {string} name The name of the template function\n     * @param {Function} fn Template function\n     * @returns {object} the use group.\n     */\n    template(id, name, fn) {\n        let group = this._templates[id];\n        if (!group) {\n            group = {};\n            this._templates[id] = group;\n        }\n        if (name) {\n            group[name] = fn;\n        }\n        return group;\n    }\n\n    // eslint-disable-next-line class-methods-use-this\n    exec(name, value, arg0) {\n        if (name === 'join') {\n            return Array.isArray(value) ? value.join(arg0 || ', ') : value;\n        }\n\n        if (name === 'format') {\n            return format(value, arg0);\n        }\n\n        if (name === 'uriManipulation') {\n            console.warn('Uri manipulation is disabled in FE side');\n            return value;\n        }\n\n        throw new Error(`Unknown runtime call: ${name}`);\n    }\n}\n\nconst runWithTemplate = ($) => {\n    let data = $.globals['data'];\n\n    return $.run(function* () {\n        let $n = $.dom.start();\n        let tpl = $.template('global');\n        $.dom.text($n, '\\n');\n        yield $.call(tpl['render'], [$n, data]);\n        return $.dom.end();\n    });\n};\n\nexport const runWithData = (jscall, data, selector = `[class^=\"rt-\"]`) => {\n    const htmlRuntime = new HTMLRuntime();\n    htmlRuntime.setGlobal('data', data);\n    const result = jscall(htmlRuntime);\n    return getFirstChild(result, selector);\n};\n\nexport const runTemplate = (template, data, selector = `[class^=\"rt\"]`) => {\n    const htmlRuntime = new HTMLRuntime();\n    htmlRuntime.setGlobal('data', data);\n    template(htmlRuntime);\n\n    const result = runWithTemplate(htmlRuntime);\n    return getFirstChild(result, selector);\n};\n","import numeral from 'numeral';\nimport 'numeral/locales';\nimport { it, enGB as en } from 'date-fns/locale';\nimport { isValid, format as dateFF } from 'date-fns';\n\nexport const format = (fmt, args) => {\n    const locale = args.locale ? args.locale : '';\n    //const timezone = args.timezone ? args.timezone : '';\n    const value = args.format;\n\n    // test for matching number pattern\n    if (/^[0-9.,#;$E%()-]*$/gm.test(fmt)) {\n        // apply locale\n        try {\n            numeral.locale(locale.toLowerCase());\n            // replace '#' with '0' as is expected by numeral\n            const number = numeral(value).format(fmt.replace(/#/g, '0'));\n            return number;\n        } finally {\n            // reset locale\n            numeral.reset();\n        }\n    }\n\n    // test for matching placeholder '{}' pattern\n    if (/{(\\d+)}/g.test(fmt)) {\n        const argArray = Array.isArray(value) ? value : [value];\n        return fmt.replace(/{(\\d+)}/g, (match, number) =>\n            typeof argArray[number] !== 'undefined' ? argArray[number] : match\n        );\n    }\n\n    // default to date. parse date and put into timezone\n    let date = new Date(parseInt(value, 10));\n    if (!isValid(date)) {\n        return null;\n    }\n\n    let dateFormat = '';\n    let prev = fmt[0];\n    let group = prev;\n    for (let i = 1; i < fmt.length + 1; i += 1) {\n        const c = fmt[i];\n        if (c === prev) {\n            group += c;\n        } else {\n            dateFormat += group;\n            prev = c;\n            group = c;\n        }\n    }\n\n    // switch locale\n    let defaultLocale = en;\n    switch (locale) {\n        case 'it':\n            defaultLocale = it;\n            break;\n    }\n    return date !== null ? dateFF(date, dateFormat, { locale: defaultLocale }) : null;\n};\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n  return function wrap() {\n    return fn.apply(thisArg, arguments);\n  };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n    const str = toString.call(thing);\n    return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n  type = type.toLowerCase();\n  return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  let result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n  if (kindOf(val) !== 'object') {\n    return false;\n  }\n\n  const prototype = getPrototypeOf(val);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n  let kind;\n  return thing && (\n    (typeof FormData === 'function' && thing instanceof FormData) || (\n      isFunction(thing.append) && (\n        (kind = kindOf(thing)) === 'formdata' ||\n        // detect form-data instance\n        (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n      )\n    )\n  )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n  str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  let i;\n  let l;\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n    const len = keys.length;\n    let key;\n\n    for (i = 0; i < len; i++) {\n      key = keys[i];\n      fn.call(null, obj[key], key, obj);\n    }\n  }\n}\n\nfunction findKey(obj, key) {\n  key = key.toLowerCase();\n  const keys = Object.keys(obj);\n  let i = keys.length;\n  let _key;\n  while (i-- > 0) {\n    _key = keys[i];\n    if (key === _key.toLowerCase()) {\n      return _key;\n    }\n  }\n  return null;\n}\n\nconst _global = (() => {\n  /*eslint no-undef:0*/\n  if (typeof globalThis !== \"undefined\") return globalThis;\n  return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  const {caseless} = isContextDefined(this) && this || {};\n  const result = {};\n  const assignValue = (val, key) => {\n    const targetKey = caseless && findKey(result, key) || key;\n    if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n      result[targetKey] = merge(result[targetKey], val);\n    } else if (isPlainObject(val)) {\n      result[targetKey] = merge({}, val);\n    } else if (isArray(val)) {\n      result[targetKey] = val.slice();\n    } else {\n      result[targetKey] = val;\n    }\n  }\n\n  for (let i = 0, l = arguments.length; i < l; i++) {\n    arguments[i] && forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n  forEach(b, (val, key) => {\n    if (thisArg && isFunction(val)) {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  }, {allOwnKeys});\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  constructor.prototype.constructor = constructor;\n  Object.defineProperty(constructor, 'super', {\n    value: superConstructor.prototype\n  });\n  props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n  let props;\n  let i;\n  let prop;\n  const merged = {};\n\n  destObj = destObj || {};\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  if (sourceObj == null) return destObj;\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = filter !== false && getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  const lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n  if (!thing) return null;\n  if (isArray(thing)) return thing;\n  let i = thing.length;\n  if (!isNumber(i)) return null;\n  const arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n  // eslint-disable-next-line func-names\n  return thing => {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n  const generator = obj && obj[Symbol.iterator];\n\n  const iterator = generator.call(obj);\n\n  let result;\n\n  while ((result = iterator.next()) && !result.done) {\n    const pair = result.value;\n    fn.call(obj, pair[0], pair[1]);\n  }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n  let matches;\n  const arr = [];\n\n  while ((matches = regExp.exec(str)) !== null) {\n    arr.push(matches);\n  }\n\n  return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n  return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n    function replacer(m, p1, p2) {\n      return p1.toUpperCase() + p2;\n    }\n  );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n  const descriptors = Object.getOwnPropertyDescriptors(obj);\n  const reducedDescriptors = {};\n\n  forEach(descriptors, (descriptor, name) => {\n    let ret;\n    if ((ret = reducer(descriptor, name, obj)) !== false) {\n      reducedDescriptors[name] = ret || descriptor;\n    }\n  });\n\n  Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n  reduceDescriptors(obj, (descriptor, name) => {\n    // skip restricted props in strict mode\n    if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n      return false;\n    }\n\n    const value = obj[name];\n\n    if (!isFunction(value)) return;\n\n    descriptor.enumerable = false;\n\n    if ('writable' in descriptor) {\n      descriptor.writable = false;\n      return;\n    }\n\n    if (!descriptor.set) {\n      descriptor.set = () => {\n        throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n      };\n    }\n  });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n  const obj = {};\n\n  const define = (arr) => {\n    arr.forEach(value => {\n      obj[value] = true;\n    });\n  }\n\n  isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n  return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n  value = +value;\n  return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n  DIGIT,\n  ALPHA,\n  ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n  let str = '';\n  const {length} = alphabet;\n  while (size--) {\n    str += alphabet[Math.random() * length|0]\n  }\n\n  return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n  return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n  const stack = new Array(10);\n\n  const visit = (source, i) => {\n\n    if (isObject(source)) {\n      if (stack.indexOf(source) >= 0) {\n        return;\n      }\n\n      if(!('toJSON' in source)) {\n        stack[i] = source;\n        const target = isArray(source) ? [] : {};\n\n        forEach(source, (value, key) => {\n          const reducedValue = visit(value, i + 1);\n          !isUndefined(reducedValue) && (target[key] = reducedValue);\n        });\n\n        stack[i] = undefined;\n\n        return target;\n      }\n    }\n\n    return source;\n  }\n\n  return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n  thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n  isArray,\n  isArrayBuffer,\n  isBuffer,\n  isFormData,\n  isArrayBufferView,\n  isString,\n  isNumber,\n  isBoolean,\n  isObject,\n  isPlainObject,\n  isUndefined,\n  isDate,\n  isFile,\n  isBlob,\n  isRegExp,\n  isFunction,\n  isStream,\n  isURLSearchParams,\n  isTypedArray,\n  isFileList,\n  forEach,\n  merge,\n  extend,\n  trim,\n  stripBOM,\n  inherits,\n  toFlatObject,\n  kindOf,\n  kindOfTest,\n  endsWith,\n  toArray,\n  forEachEntry,\n  matchAll,\n  isHTMLForm,\n  hasOwnProperty,\n  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n  reduceDescriptors,\n  freezeMethods,\n  toObjectSet,\n  toCamelCase,\n  noop,\n  toFiniteNumber,\n  findKey,\n  global: _global,\n  isContextDefined,\n  ALPHABET,\n  generateString,\n  isSpecCompliantForm,\n  toJSONObject,\n  isAsyncFn,\n  isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n  Error.call(this);\n\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, this.constructor);\n  } else {\n    this.stack = (new Error()).stack;\n  }\n\n  this.message = message;\n  this.name = 'AxiosError';\n  code && (this.code = code);\n  config && (this.config = config);\n  request && (this.request = request);\n  response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n  toJSON: function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: utils.toJSONObject(this.config),\n      code: this.code,\n      status: this.response && this.response.status ? this.response.status : null\n    };\n  }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n  'ERR_BAD_OPTION_VALUE',\n  'ERR_BAD_OPTION',\n  'ECONNABORTED',\n  'ETIMEDOUT',\n  'ERR_NETWORK',\n  'ERR_FR_TOO_MANY_REDIRECTS',\n  'ERR_DEPRECATED',\n  'ERR_BAD_RESPONSE',\n  'ERR_BAD_REQUEST',\n  'ERR_CANCELED',\n  'ERR_NOT_SUPPORT',\n  'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n  descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n  const axiosError = Object.create(prototype);\n\n  utils.toFlatObject(error, axiosError, function filter(obj) {\n    return obj !== Error.prototype;\n  }, prop => {\n    return prop !== 'isAxiosError';\n  });\n\n  AxiosError.call(axiosError, error.message, code, config, request, response);\n\n  axiosError.cause = error;\n\n  axiosError.name = error.name;\n\n  customProps && Object.assign(axiosError, customProps);\n\n  return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n  return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n  return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n  if (!path) return key;\n  return path.concat(key).map(function each(token, i) {\n    // eslint-disable-next-line no-param-reassign\n    token = removeBrackets(token);\n    return !dots && i ? '[' + token + ']' : token;\n  }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n  return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n  return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('target must be an object');\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new (PlatformFormData || FormData)();\n\n  // eslint-disable-next-line no-param-reassign\n  options = utils.toFlatObject(options, {\n    metaTokens: true,\n    dots: false,\n    indexes: false\n  }, false, function defined(option, source) {\n    // eslint-disable-next-line no-eq-null,eqeqeq\n    return !utils.isUndefined(source[option]);\n  });\n\n  const metaTokens = options.metaTokens;\n  // eslint-disable-next-line no-use-before-define\n  const visitor = options.visitor || defaultVisitor;\n  const dots = options.dots;\n  const indexes = options.indexes;\n  const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n  const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n  if (!utils.isFunction(visitor)) {\n    throw new TypeError('visitor must be a function');\n  }\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (!useBlob && utils.isBlob(value)) {\n      throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n    }\n\n    return value;\n  }\n\n  /**\n   * Default visitor.\n   *\n   * @param {*} value\n   * @param {String|Number} key\n   * @param {Array<String|Number>} path\n   * @this {FormData}\n   *\n   * @returns {boolean} return true to visit the each prop of the value recursively\n   */\n  function defaultVisitor(value, key, path) {\n    let arr = value;\n\n    if (value && !path && typeof value === 'object') {\n      if (utils.endsWith(key, '{}')) {\n        // eslint-disable-next-line no-param-reassign\n        key = metaTokens ? key : key.slice(0, -2);\n        // eslint-disable-next-line no-param-reassign\n        value = JSON.stringify(value);\n      } else if (\n        (utils.isArray(value) && isFlatArray(value)) ||\n        ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n        )) {\n        // eslint-disable-next-line no-param-reassign\n        key = removeBrackets(key);\n\n        arr.forEach(function each(el, index) {\n          !(utils.isUndefined(el) || el === null) && formData.append(\n            // eslint-disable-next-line no-nested-ternary\n            indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n            convertValue(el)\n          );\n        });\n        return false;\n      }\n    }\n\n    if (isVisitable(value)) {\n      return true;\n    }\n\n    formData.append(renderKey(path, key, dots), convertValue(value));\n\n    return false;\n  }\n\n  const stack = [];\n\n  const exposedHelpers = Object.assign(predicates, {\n    defaultVisitor,\n    convertValue,\n    isVisitable\n  });\n\n  function build(value, path) {\n    if (utils.isUndefined(value)) return;\n\n    if (stack.indexOf(value) !== -1) {\n      throw Error('Circular reference detected in ' + path.join('.'));\n    }\n\n    stack.push(value);\n\n    utils.forEach(value, function each(el, key) {\n      const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n        formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n      );\n\n      if (result === true) {\n        build(el, path ? path.concat(key) : [key]);\n      }\n    });\n\n    stack.pop();\n  }\n\n  if (!utils.isObject(obj)) {\n    throw new TypeError('data must be an object');\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n  const charMap = {\n    '!': '%21',\n    \"'\": '%27',\n    '(': '%28',\n    ')': '%29',\n    '~': '%7E',\n    '%20': '+',\n    '%00': '\\x00'\n  };\n  return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n    return charMap[match];\n  });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n  this._pairs = [];\n\n  params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n  this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n  const _encode = encoder ? function(value) {\n    return encoder.call(this, value, encode);\n  } : encode;\n\n  return this._pairs.map(function each(pair) {\n    return _encode(pair[0]) + '=' + _encode(pair[1]);\n  }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n  \n  const _encode = options && options.encode || encode;\n\n  const serializeFn = options && options.serialize;\n\n  let serializedParams;\n\n  if (serializeFn) {\n    serializedParams = serializeFn(params, options);\n  } else {\n    serializedParams = utils.isURLSearchParams(params) ?\n      params.toString() :\n      new AxiosURLSearchParams(params, options).toString(_encode);\n  }\n\n  if (serializedParams) {\n    const hashmarkIndex = url.indexOf(\"#\");\n\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n  constructor() {\n    this.handlers = [];\n  }\n\n  /**\n   * Add a new interceptor to the stack\n   *\n   * @param {Function} fulfilled The function to handle `then` for a `Promise`\n   * @param {Function} rejected The function to handle `reject` for a `Promise`\n   *\n   * @return {Number} An ID used to remove interceptor later\n   */\n  use(fulfilled, rejected, options) {\n    this.handlers.push({\n      fulfilled,\n      rejected,\n      synchronous: options ? options.synchronous : false,\n      runWhen: options ? options.runWhen : null\n    });\n    return this.handlers.length - 1;\n  }\n\n  /**\n   * Remove an interceptor from the stack\n   *\n   * @param {Number} id The ID that was returned by `use`\n   *\n   * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n   */\n  eject(id) {\n    if (this.handlers[id]) {\n      this.handlers[id] = null;\n    }\n  }\n\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    if (this.handlers) {\n      this.handlers = [];\n    }\n  }\n\n  /**\n   * Iterate over all the registered interceptors\n   *\n   * This method is particularly useful for skipping over any\n   * interceptors that may have become `null` calling `eject`.\n   *\n   * @param {Function} fn The function to call for each interceptor\n   *\n   * @returns {void}\n   */\n  forEach(fn) {\n    utils.forEach(this.handlers, function forEachHandler(h) {\n      if (h !== null) {\n        fn(h);\n      }\n    });\n  }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst isStandardBrowserEnv = (() => {\n  let product;\n  if (typeof navigator !== 'undefined' && (\n    (product = navigator.product) === 'ReactNative' ||\n    product === 'NativeScript' ||\n    product === 'NS')\n  ) {\n    return false;\n  }\n\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n})();\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\n const isStandardBrowserWebWorkerEnv = (() => {\n  return (\n    typeof WorkerGlobalScope !== 'undefined' &&\n    // eslint-disable-next-line no-undef\n    self instanceof WorkerGlobalScope &&\n    typeof self.importScripts === 'function'\n  );\n})();\n\n\nexport default {\n  isBrowser: true,\n  classes: {\n    URLSearchParams,\n    FormData,\n    Blob\n  },\n  isStandardBrowserEnv,\n  isStandardBrowserWebWorkerEnv,\n  protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n  // foo[x][y][z]\n  // foo.x.y.z\n  // foo-x-y-z\n  // foo x y z\n  return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n    return match[0] === '[]' ? '' : match[1] || match[0];\n  });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n  const obj = {};\n  const keys = Object.keys(arr);\n  let i;\n  const len = keys.length;\n  let key;\n  for (i = 0; i < len; i++) {\n    key = keys[i];\n    obj[key] = arr[key];\n  }\n  return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n  function buildPath(path, value, target, index) {\n    let name = path[index++];\n    const isNumericKey = Number.isFinite(+name);\n    const isLast = index >= path.length;\n    name = !name && utils.isArray(target) ? target.length : name;\n\n    if (isLast) {\n      if (utils.hasOwnProp(target, name)) {\n        target[name] = [target[name], value];\n      } else {\n        target[name] = value;\n      }\n\n      return !isNumericKey;\n    }\n\n    if (!target[name] || !utils.isObject(target[name])) {\n      target[name] = [];\n    }\n\n    const result = buildPath(path, value, target[name], index);\n\n    if (result && utils.isArray(target[name])) {\n      target[name] = arrayToObject(target[name]);\n    }\n\n    return !isNumericKey;\n  }\n\n  if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n    const obj = {};\n\n    utils.forEachEntry(formData, (name, value) => {\n      buildPath(parsePropPath(name), value, obj, 0);\n    });\n\n    return obj;\n  }\n\n  return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n  transitional: transitionalDefaults,\n\n  adapter: platform.isNode ? 'http' : 'xhr',\n\n  transformRequest: [function transformRequest(data, headers) {\n    const contentType = headers.getContentType() || '';\n    const hasJSONContentType = contentType.indexOf('application/json') > -1;\n    const isObjectPayload = utils.isObject(data);\n\n    if (isObjectPayload && utils.isHTMLForm(data)) {\n      data = new FormData(data);\n    }\n\n    const isFormData = utils.isFormData(data);\n\n    if (isFormData) {\n      if (!hasJSONContentType) {\n        return data;\n      }\n      return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n    }\n\n    if (utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n      return data.toString();\n    }\n\n    let isFileList;\n\n    if (isObjectPayload) {\n      if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n        return toURLEncodedForm(data, this.formSerializer).toString();\n      }\n\n      if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n        const _FormData = this.env && this.env.FormData;\n\n        return toFormData(\n          isFileList ? {'files[]': data} : data,\n          _FormData && new _FormData(),\n          this.formSerializer\n        );\n      }\n    }\n\n    if (isObjectPayload || hasJSONContentType ) {\n      headers.setContentType('application/json', false);\n      return stringifySafely(data);\n    }\n\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    const transitional = this.transitional || defaults.transitional;\n    const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    const JSONRequested = this.responseType === 'json';\n\n    if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n      const silentJSONParsing = transitional && transitional.silentJSONParsing;\n      const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n      try {\n        return JSON.parse(data);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: platform.classes.FormData,\n    Blob: platform.classes.Blob\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      'Accept': 'application/json, text/plain, */*',\n      'Content-Type': undefined\n    }\n  }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n  defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n  return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n    visitor: function(value, key, path, helpers) {\n      if (platform.isNode && utils.isBuffer(value)) {\n        this.append(key, value.toString('base64'));\n        return false;\n      }\n\n      return helpers.defaultVisitor.apply(this, arguments);\n    }\n  }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n  const parsed = {};\n  let key;\n  let val;\n  let i;\n\n  rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n    i = line.indexOf(':');\n    key = line.substring(0, i).trim().toLowerCase();\n    val = line.substring(i + 1).trim();\n\n    if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n      return;\n    }\n\n    if (key === 'set-cookie') {\n      if (parsed[key]) {\n        parsed[key].push(val);\n      } else {\n        parsed[key] = [val];\n      }\n    } else {\n      parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n  return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n  if (value === false || value == null) {\n    return value;\n  }\n\n  return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n  const tokens = Object.create(null);\n  const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let match;\n\n  while ((match = tokensRE.exec(str))) {\n    tokens[match[1]] = match[2];\n  }\n\n  return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n  if (utils.isFunction(filter)) {\n    return filter.call(this, value, header);\n  }\n\n  if (isHeaderNameFilter) {\n    value = header;\n  }\n\n  if (!utils.isString(value)) return;\n\n  if (utils.isString(filter)) {\n    return value.indexOf(filter) !== -1;\n  }\n\n  if (utils.isRegExp(filter)) {\n    return filter.test(value);\n  }\n}\n\nfunction formatHeader(header) {\n  return header.trim()\n    .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n      return char.toUpperCase() + str;\n    });\n}\n\nfunction buildAccessors(obj, header) {\n  const accessorName = utils.toCamelCase(' ' + header);\n\n  ['get', 'set', 'has'].forEach(methodName => {\n    Object.defineProperty(obj, methodName + accessorName, {\n      value: function(arg1, arg2, arg3) {\n        return this[methodName].call(this, header, arg1, arg2, arg3);\n      },\n      configurable: true\n    });\n  });\n}\n\nclass AxiosHeaders {\n  constructor(headers) {\n    headers && this.set(headers);\n  }\n\n  set(header, valueOrRewrite, rewrite) {\n    const self = this;\n\n    function setHeader(_value, _header, _rewrite) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!lHeader) {\n        throw new Error('header name must be a non-empty string');\n      }\n\n      const key = utils.findKey(self, lHeader);\n\n      if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n        self[key || _header] = normalizeValue(_value);\n      }\n    }\n\n    const setHeaders = (headers, _rewrite) =>\n      utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n    if (utils.isPlainObject(header) || header instanceof this.constructor) {\n      setHeaders(header, valueOrRewrite)\n    } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n      setHeaders(parseHeaders(header), valueOrRewrite);\n    } else {\n      header != null && setHeader(valueOrRewrite, header, rewrite);\n    }\n\n    return this;\n  }\n\n  get(header, parser) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      if (key) {\n        const value = this[key];\n\n        if (!parser) {\n          return value;\n        }\n\n        if (parser === true) {\n          return parseTokens(value);\n        }\n\n        if (utils.isFunction(parser)) {\n          return parser.call(this, value, key);\n        }\n\n        if (utils.isRegExp(parser)) {\n          return parser.exec(value);\n        }\n\n        throw new TypeError('parser must be boolean|regexp|function');\n      }\n    }\n  }\n\n  has(header, matcher) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n    }\n\n    return false;\n  }\n\n  delete(header, matcher) {\n    const self = this;\n    let deleted = false;\n\n    function deleteHeader(_header) {\n      _header = normalizeHeader(_header);\n\n      if (_header) {\n        const key = utils.findKey(self, _header);\n\n        if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n          delete self[key];\n\n          deleted = true;\n        }\n      }\n    }\n\n    if (utils.isArray(header)) {\n      header.forEach(deleteHeader);\n    } else {\n      deleteHeader(header);\n    }\n\n    return deleted;\n  }\n\n  clear(matcher) {\n    const keys = Object.keys(this);\n    let i = keys.length;\n    let deleted = false;\n\n    while (i--) {\n      const key = keys[i];\n      if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n        delete this[key];\n        deleted = true;\n      }\n    }\n\n    return deleted;\n  }\n\n  normalize(format) {\n    const self = this;\n    const headers = {};\n\n    utils.forEach(this, (value, header) => {\n      const key = utils.findKey(headers, header);\n\n      if (key) {\n        self[key] = normalizeValue(value);\n        delete self[header];\n        return;\n      }\n\n      const normalized = format ? formatHeader(header) : String(header).trim();\n\n      if (normalized !== header) {\n        delete self[header];\n      }\n\n      self[normalized] = normalizeValue(value);\n\n      headers[normalized] = true;\n    });\n\n    return this;\n  }\n\n  concat(...targets) {\n    return this.constructor.concat(this, ...targets);\n  }\n\n  toJSON(asStrings) {\n    const obj = Object.create(null);\n\n    utils.forEach(this, (value, header) => {\n      value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n    });\n\n    return obj;\n  }\n\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n\n  toString() {\n    return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'AxiosHeaders';\n  }\n\n  static from(thing) {\n    return thing instanceof this ? thing : new this(thing);\n  }\n\n  static concat(first, ...targets) {\n    const computed = new this(first);\n\n    targets.forEach((target) => computed.set(target));\n\n    return computed;\n  }\n\n  static accessor(header) {\n    const internals = this[$internals] = (this[$internals] = {\n      accessors: {}\n    });\n\n    const accessors = internals.accessors;\n    const prototype = this.prototype;\n\n    function defineAccessor(_header) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!accessors[lHeader]) {\n        buildAccessors(prototype, _header);\n        accessors[lHeader] = true;\n      }\n    }\n\n    utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n    return this;\n  }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n  let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n  return {\n    get: () => value,\n    set(headerValue) {\n      this[mapped] = headerValue;\n    }\n  }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n  const config = this || defaults;\n  const context = response || config;\n  const headers = AxiosHeaders.from(context.headers);\n  let data = context.data;\n\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n  });\n\n  headers.normalize();\n\n  return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n  this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n  __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs support document.cookie\n  (function standardBrowserEnv() {\n    return {\n      write: function write(name, value, expires, path, domain, secure) {\n        const cookie = [];\n        cookie.push(name + '=' + encodeURIComponent(value));\n\n        if (utils.isNumber(expires)) {\n          cookie.push('expires=' + new Date(expires).toGMTString());\n        }\n\n        if (utils.isString(path)) {\n          cookie.push('path=' + path);\n        }\n\n        if (utils.isString(domain)) {\n          cookie.push('domain=' + domain);\n        }\n\n        if (secure === true) {\n          cookie.push('secure');\n        }\n\n        document.cookie = cookie.join('; ');\n      },\n\n      read: function read(name) {\n        const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n        return (match ? decodeURIComponent(match[3]) : null);\n      },\n\n      remove: function remove(name) {\n        this.write(name, '', Date.now() - 86400000);\n      }\n    };\n  })() :\n\n// Non standard browser env (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return {\n      write: function write() {},\n      read: function read() { return null; },\n      remove: function remove() {}\n    };\n  })();\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n  if (baseURL && !isAbsoluteURL(requestedURL)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n  (function standardBrowserEnv() {\n    const msie = /(msie|trident)/i.test(navigator.userAgent);\n    const urlParsingNode = document.createElement('a');\n    let originURL;\n\n    /**\n    * Parse a URL to discover it's components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n    function resolveURL(url) {\n      let href = url;\n\n      if (msie) {\n        // IE needs attribute set twice to normalize properties\n        urlParsingNode.setAttribute('href', href);\n        href = urlParsingNode.href;\n      }\n\n      urlParsingNode.setAttribute('href', href);\n\n      // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n      return {\n        href: urlParsingNode.href,\n        protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n        host: urlParsingNode.host,\n        search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n        hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n        hostname: urlParsingNode.hostname,\n        port: urlParsingNode.port,\n        pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n          urlParsingNode.pathname :\n          '/' + urlParsingNode.pathname\n      };\n    }\n\n    originURL = resolveURL(window.location.href);\n\n    /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n    return function isURLSameOrigin(requestURL) {\n      const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n      return (parsed.protocol === originURL.protocol &&\n          parsed.host === originURL.host);\n    };\n  })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return function isURLSameOrigin() {\n      return true;\n    };\n  })();\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n  let bytesNotified = 0;\n  const _speedometer = speedometer(50, 250);\n\n  return e => {\n    const loaded = e.loaded;\n    const total = e.lengthComputable ? e.total : undefined;\n    const progressBytes = loaded - bytesNotified;\n    const rate = _speedometer(progressBytes);\n    const inRange = loaded <= total;\n\n    bytesNotified = loaded;\n\n    const data = {\n      loaded,\n      total,\n      progress: total ? (loaded / total) : undefined,\n      bytes: progressBytes,\n      rate: rate ? rate : undefined,\n      estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n      event: e\n    };\n\n    data[isDownloadStream ? 'download' : 'upload'] = true;\n\n    listener(data);\n  };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    let requestData = config.data;\n    const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n    const responseType = config.responseType;\n    let onCanceled;\n    function done() {\n      if (config.cancelToken) {\n        config.cancelToken.unsubscribe(onCanceled);\n      }\n\n      if (config.signal) {\n        config.signal.removeEventListener('abort', onCanceled);\n      }\n    }\n\n    if (utils.isFormData(requestData)) {\n      if (platform.isStandardBrowserEnv || platform.isStandardBrowserWebWorkerEnv) {\n        requestHeaders.setContentType(false); // Let the browser set it\n      } else {\n        requestHeaders.setContentType('multipart/form-data;', false); // mobile/desktop app frameworks\n      }\n    }\n\n    let request = new XMLHttpRequest();\n\n    // HTTP basic authentication\n    if (config.auth) {\n      const username = config.auth.username || '';\n      const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n      requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n    }\n\n    const fullPath = buildFullPath(config.baseURL, config.url);\n\n    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n    // Set the request timeout in MS\n    request.timeout = config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      const responseHeaders = AxiosHeaders.from(\n        'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n      );\n      const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n        request.responseText : request.response;\n      const response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config,\n        request\n      };\n\n      settle(function _resolve(value) {\n        resolve(value);\n        done();\n      }, function _reject(err) {\n        reject(err);\n        done();\n      }, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n      const transitional = config.transitional || transitionalDefaults;\n      if (config.timeoutErrorMessage) {\n        timeoutErrorMessage = config.timeoutErrorMessage;\n      }\n      reject(new AxiosError(\n        timeoutErrorMessage,\n        transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n        config,\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Add xsrf header\n    // This is only done if running in a standard browser environment.\n    // Specifically not if we're in a web worker, or react-native.\n    if (platform.isStandardBrowserEnv) {\n      // Add xsrf header\n      const xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath))\n        && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n      if (xsrfValue) {\n        requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n      }\n    }\n\n    // Remove Content-Type if data is undefined\n    requestData === undefined && requestHeaders.setContentType(null);\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n        request.setRequestHeader(key, val);\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(config.withCredentials)) {\n      request.withCredentials = !!config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = config.responseType;\n    }\n\n    // Handle progress if needed\n    if (typeof config.onDownloadProgress === 'function') {\n      request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n    }\n\n    // Not all browsers support upload events\n    if (typeof config.onUploadProgress === 'function' && request.upload) {\n      request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n    }\n\n    if (config.cancelToken || config.signal) {\n      // Handle cancellation\n      // eslint-disable-next-line func-names\n      onCanceled = cancel => {\n        if (!request) {\n          return;\n        }\n        reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n        request.abort();\n        request = null;\n      };\n\n      config.cancelToken && config.cancelToken.subscribe(onCanceled);\n      if (config.signal) {\n        config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n      }\n    }\n\n    const protocol = parseProtocol(fullPath);\n\n    if (protocol && platform.protocols.indexOf(protocol) === -1) {\n      reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n      return;\n    }\n\n\n    // Send the request\n    request.send(requestData || null);\n  });\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n  samplesCount = samplesCount || 10;\n  const bytes = new Array(samplesCount);\n  const timestamps = new Array(samplesCount);\n  let head = 0;\n  let tail = 0;\n  let firstSampleTS;\n\n  min = min !== undefined ? min : 1000;\n\n  return function push(chunkLength) {\n    const now = Date.now();\n\n    const startedAt = timestamps[tail];\n\n    if (!firstSampleTS) {\n      firstSampleTS = now;\n    }\n\n    bytes[head] = chunkLength;\n    timestamps[head] = now;\n\n    let i = tail;\n    let bytesCount = 0;\n\n    while (i !== head) {\n      bytesCount += bytes[i++];\n      i = i % samplesCount;\n    }\n\n    head = (head + 1) % samplesCount;\n\n    if (head === tail) {\n      tail = (tail + 1) % samplesCount;\n    }\n\n    if (now - firstSampleTS < min) {\n      return;\n    }\n\n    const passed = startedAt && now - startedAt;\n\n    return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n  };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n  const validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n      response.config,\n      response.request,\n      response\n    ));\n  }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n  const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n  return match && match[1] || '';\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n  http: httpAdapter,\n  xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n  if(fn) {\n    try {\n      Object.defineProperty(fn, 'name', {value});\n    } catch (e) {\n      // eslint-disable-next-line no-empty\n    }\n    Object.defineProperty(fn, 'adapterName', {value});\n  }\n});\n\nexport default {\n  getAdapter: (adapters) => {\n    adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n    const {length} = adapters;\n    let nameOrAdapter;\n    let adapter;\n\n    for (let i = 0; i < length; i++) {\n      nameOrAdapter = adapters[i];\n      if((adapter = utils.isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter)) {\n        break;\n      }\n    }\n\n    if (!adapter) {\n      if (adapter === false) {\n        throw new AxiosError(\n          `Adapter ${nameOrAdapter} is not supported by the environment`,\n          'ERR_NOT_SUPPORT'\n        );\n      }\n\n      throw new Error(\n        utils.hasOwnProp(knownAdapters, nameOrAdapter) ?\n          `Adapter '${nameOrAdapter}' is not available in the build` :\n          `Unknown adapter '${nameOrAdapter}'`\n      );\n    }\n\n    if (!utils.isFunction(adapter)) {\n      throw new TypeError('adapter is not a function');\n    }\n\n    return adapter;\n  },\n  adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError(null, config);\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  config.headers = AxiosHeaders.from(config.headers);\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.transformRequest\n  );\n\n  if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n    config.headers.setContentType('application/x-www-form-urlencoded', false);\n  }\n\n  const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      config.transformResponse,\n      response\n    );\n\n    response.headers = AxiosHeaders.from(response.headers);\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          config.transformResponse,\n          reason.response\n        );\n        reason.response.headers = AxiosHeaders.from(reason.response.headers);\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  const config = {};\n\n  function getMergedValue(target, source, caseless) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge.call({caseless}, target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDeepProperties(a, b, caseless) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(a, b, caseless);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a, caseless);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(a, b, prop) {\n    if (prop in config2) {\n      return getMergedValue(a, b);\n    } else if (prop in config1) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  const mergeMap = {\n    url: valueFromConfig2,\n    method: valueFromConfig2,\n    data: valueFromConfig2,\n    baseURL: defaultToConfig2,\n    transformRequest: defaultToConfig2,\n    transformResponse: defaultToConfig2,\n    paramsSerializer: defaultToConfig2,\n    timeout: defaultToConfig2,\n    timeoutMessage: defaultToConfig2,\n    withCredentials: defaultToConfig2,\n    adapter: defaultToConfig2,\n    responseType: defaultToConfig2,\n    xsrfCookieName: defaultToConfig2,\n    xsrfHeaderName: defaultToConfig2,\n    onUploadProgress: defaultToConfig2,\n    onDownloadProgress: defaultToConfig2,\n    decompress: defaultToConfig2,\n    maxContentLength: defaultToConfig2,\n    maxBodyLength: defaultToConfig2,\n    beforeRedirect: defaultToConfig2,\n    transport: defaultToConfig2,\n    httpAgent: defaultToConfig2,\n    httpsAgent: defaultToConfig2,\n    cancelToken: defaultToConfig2,\n    socketPath: defaultToConfig2,\n    responseEncoding: defaultToConfig2,\n    validateStatus: mergeDirectKeys,\n    headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n  };\n\n  utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n    const merge = mergeMap[prop] || mergeDeepProperties;\n    const configValue = merge(config1[prop], config2[prop], prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  });\n\n  return config;\n}\n","export const VERSION = \"1.5.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return (value, opt, opts) => {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  const keys = Object.keys(options);\n  let i = keys.length;\n  while (i-- > 0) {\n    const opt = keys[i];\n    const validator = schema[opt];\n    if (validator) {\n      const value = options[opt];\n      const result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nexport default {\n  assertOptions,\n  validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n  constructor(instanceConfig) {\n    this.defaults = instanceConfig;\n    this.interceptors = {\n      request: new InterceptorManager(),\n      response: new InterceptorManager()\n    };\n  }\n\n  /**\n   * Dispatch a request\n   *\n   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  request(configOrUrl, config) {\n    /*eslint no-param-reassign:0*/\n    // Allow for axios('example/url'[, config]) a la fetch API\n    if (typeof configOrUrl === 'string') {\n      config = config || {};\n      config.url = configOrUrl;\n    } else {\n      config = configOrUrl || {};\n    }\n\n    config = mergeConfig(this.defaults, config);\n\n    const {transitional, paramsSerializer, headers} = config;\n\n    if (transitional !== undefined) {\n      validator.assertOptions(transitional, {\n        silentJSONParsing: validators.transitional(validators.boolean),\n        forcedJSONParsing: validators.transitional(validators.boolean),\n        clarifyTimeoutError: validators.transitional(validators.boolean)\n      }, false);\n    }\n\n    if (paramsSerializer != null) {\n      if (utils.isFunction(paramsSerializer)) {\n        config.paramsSerializer = {\n          serialize: paramsSerializer\n        }\n      } else {\n        validator.assertOptions(paramsSerializer, {\n          encode: validators.function,\n          serialize: validators.function\n        }, true);\n      }\n    }\n\n    // Set config.method\n    config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n    // Flatten headers\n    let contextHeaders = headers && utils.merge(\n      headers.common,\n      headers[config.method]\n    );\n\n    headers && utils.forEach(\n      ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n      (method) => {\n        delete headers[method];\n      }\n    );\n\n    config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n    // filter out skipped interceptors\n    const requestInterceptorChain = [];\n    let synchronousRequestInterceptors = true;\n    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n      if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n        return;\n      }\n\n      synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n      requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    const responseInterceptorChain = [];\n    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    let promise;\n    let i = 0;\n    let len;\n\n    if (!synchronousRequestInterceptors) {\n      const chain = [dispatchRequest.bind(this), undefined];\n      chain.unshift.apply(chain, requestInterceptorChain);\n      chain.push.apply(chain, responseInterceptorChain);\n      len = chain.length;\n\n      promise = Promise.resolve(config);\n\n      while (i < len) {\n        promise = promise.then(chain[i++], chain[i++]);\n      }\n\n      return promise;\n    }\n\n    len = requestInterceptorChain.length;\n\n    let newConfig = config;\n\n    i = 0;\n\n    while (i < len) {\n      const onFulfilled = requestInterceptorChain[i++];\n      const onRejected = requestInterceptorChain[i++];\n      try {\n        newConfig = onFulfilled(newConfig);\n      } catch (error) {\n        onRejected.call(this, error);\n        break;\n      }\n    }\n\n    try {\n      promise = dispatchRequest.call(this, newConfig);\n    } catch (error) {\n      return Promise.reject(error);\n    }\n\n    i = 0;\n    len = responseInterceptorChain.length;\n\n    while (i < len) {\n      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n    }\n\n    return promise;\n  }\n\n  getUri(config) {\n    config = mergeConfig(this.defaults, config);\n    const fullPath = buildFullPath(config.baseURL, config.url);\n    return buildURL(fullPath, config.params, config.paramsSerializer);\n  }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method,\n      url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(mergeConfig(config || {}, {\n        method,\n        headers: isForm ? {\n          'Content-Type': 'multipart/form-data'\n        } : {},\n        url,\n        data\n      }));\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n  constructor(executor) {\n    if (typeof executor !== 'function') {\n      throw new TypeError('executor must be a function.');\n    }\n\n    let resolvePromise;\n\n    this.promise = new Promise(function promiseExecutor(resolve) {\n      resolvePromise = resolve;\n    });\n\n    const token = this;\n\n    // eslint-disable-next-line func-names\n    this.promise.then(cancel => {\n      if (!token._listeners) return;\n\n      let i = token._listeners.length;\n\n      while (i-- > 0) {\n        token._listeners[i](cancel);\n      }\n      token._listeners = null;\n    });\n\n    // eslint-disable-next-line func-names\n    this.promise.then = onfulfilled => {\n      let _resolve;\n      // eslint-disable-next-line func-names\n      const promise = new Promise(resolve => {\n        token.subscribe(resolve);\n        _resolve = resolve;\n      }).then(onfulfilled);\n\n      promise.cancel = function reject() {\n        token.unsubscribe(_resolve);\n      };\n\n      return promise;\n    };\n\n    executor(function cancel(message, config, request) {\n      if (token.reason) {\n        // Cancellation has already been requested\n        return;\n      }\n\n      token.reason = new CanceledError(message, config, request);\n      resolvePromise(token.reason);\n    });\n  }\n\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason) {\n      throw this.reason;\n    }\n  }\n\n  /**\n   * Subscribe to the cancel signal\n   */\n\n  subscribe(listener) {\n    if (this.reason) {\n      listener(this.reason);\n      return;\n    }\n\n    if (this._listeners) {\n      this._listeners.push(listener);\n    } else {\n      this._listeners = [listener];\n    }\n  }\n\n  /**\n   * Unsubscribe from the cancel signal\n   */\n\n  unsubscribe(listener) {\n    if (!this._listeners) {\n      return;\n    }\n    const index = this._listeners.indexOf(listener);\n    if (index !== -1) {\n      this._listeners.splice(index, 1);\n    }\n  }\n\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let cancel;\n    const token = new CancelToken(function executor(c) {\n      cancel = c;\n    });\n    return {\n      token,\n      cancel\n    };\n  }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  PayloadTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  UnprocessableEntity: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n  HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  const context = new Axios(defaultConfig);\n  const instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n  // Copy context to instance\n  utils.extend(instance, context, null, {allOwnKeys: true});\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n  return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from 'axios';\n\nexport class ApiProvider {\n    constructor() {\n        const serviceLang = document.documentElement.dataset.serviceLang || 'it-it';\n        this.jsonLoader = document.documentElement.dataset.jsonLoader == 'true';\n        this.baseUrl = `/api/corporate/${serviceLang}`;\n\n        this.urlMap = {\n            all: this.baseUrl + '.%%.json',\n            regolamentolink: this.baseUrl + '.regolamentolink.pdf',\n            privacyLink: this.baseUrl + '.privacylink.pdf',\n        };\n\n        this.cached = {};\n    }\n\n    async user() {\n        return await this._doGet(this._getEndpoint('user'));\n    }\n\n    /**\n     * Get privacy informative.\n     * Use informativeType to select the resolution strategy:\n     * - concorsiContactForm: Contests contact-form CF (cooperative/userType/thematic/initiative)\n     * - carteContactForm: legacy Informative CF with card-form filters\n     * - omitted: legacy Informative CF (default)\n     * @param {*} param0\n     * @returns\n     */\n    async getInformativa({\n        cooperativa,\n        ecommerce,\n        card,\n        conadPay,\n        prepaidCard,\n        ricaricabileCard,\n        piuCard,\n        insiemeCard,\n        isGuestUser,\n        informativeType,\n        userType,\n        thematic,\n        initiative,\n    }) {\n        if (informativeType === 'concorsiContactForm') {\n            const data = {\n                informativeType,\n                cooperativa: cooperativa?.toLowerCase() || 'cnd',\n                userType,\n                thematic,\n            };\n            if (initiative) data.initiative = initiative;\n            return await this._doCachedGet(this._getEndpoint('informativa'), data);\n        }\n        const data = {\n            cooperativa: cooperativa?.toLowerCase(),\n            ecommerce: ecommerce,\n            card: card ? 'true' : 'false',\n            conadPay: conadPay ? 'true' : 'false',\n            prepaidCard: prepaidCard ? 'true' : 'false',\n            ricaricabileCard: ricaricabileCard ? 'true' : 'false',\n            piuCard: piuCard ? 'true' : 'false',\n            insiemeCard: insiemeCard ? 'true' : 'false',\n            isGuestUser: isGuestUser ? 'true' : 'false',\n        };\n        if (informativeType) data.informativeType = informativeType;\n        return await this._doCachedGet(this._getEndpoint('informativa'), data);\n    }\n\n    /**\n     * Get store flyers\n     * @param {*} anacanId The anacanId of the store\n     * @returns\n     */\n    async getStoreFlyers(anacanId) {\n        const data = {\n            anacanId,\n        };\n        return await this._doGet(this._getEndpoint('flyers'), data);\n    }\n\n    /**\n     * Associate complementary data.\n     * @param {*} param0\n     * @returns\n     */\n    async associateComplementaryData(path) {\n        return await this._doPost(this._getEndpoint('associateComplementaryData'), { path });\n    }\n\n    /**\n     * Remove complementary data.\n     * @param {*} param0\n     * @returns\n     */\n    async removeComplementaryData(id) {\n        return await this._doPost(this._getEndpoint('removeComplementaryData'), { id });\n    }\n\n    /**\n     * GET complementary data.\n     * @param {*} param0\n     * @returns\n     */\n    async getComplementaryData() {\n        return await this._doGet(this._getEndpoint('getComplementaryData'));\n    }\n\n    /**\n     *\n     * @param {*} param0\n     * @returns\n     */\n    async setPreferredStore({ anacanId }) {\n        const payload = {\n            anacanId: anacanId,\n        };\n        return await this._doPost(this._getEndpoint('setPreferredStore'), payload);\n    }\n\n    /*    */ /**\n     *\n     * @param {*} choice\n     * @returns\n     */ /*\n  async setCouponChoice(choice) {\n      const payload = {\n          choice: choice\n      };\n      return await this._doPost(this._getEndpoint('setCouponChoice'), payload);\n  }*/\n\n    /**\n     *\n     * @param {*} anacanId\n     * @returns\n     */\n    async setSavedStore(anacanId) {\n        const payload = {\n            anacanId: anacanId,\n        };\n        return await this._doPost(this._getEndpoint('setSavedStore'), payload);\n    }\n\n    /**\n     *\n     * @param {*} anacanId\n     * @returns\n     */\n    async removeSavedStore(anacanId) {\n        const payload = {\n            anacanId: anacanId,\n        };\n        return await this._doPost(this._getEndpoint('removeSavedStore'), payload);\n    }\n\n    /**\n     * Send customer care request.\n     * @param {*} data FormData\n     * @returns\n     */\n    async customerCare(data) {\n        return await this._doMultipartPost(this._getEndpoint('customerCare'), data);\n    }\n\n    /**\n     * Send policy activation request\n     * @param {*} data FromData\n     * @returns\n     */\n    async policyActivation(data) {\n        return await this._doPost(this._getEndpoint('policyActivation'), data, null, { unwrap: false });\n    }\n\n    /**\n     * Get carrello protetto policy status\n     * @param {*} data cartaFedelta\n     * @returns\n     */\n    async getPolicyStatus(cartaFedelta) {\n        const data = {\n            cartaFedelta: cartaFedelta,\n        };\n        return await this._doGet(this._getEndpoint('checkPolicyStatus'), data);\n    }\n\n    /**\n     * Send pin code request.\n     * @param {*} param0\n     * @returns\n     */\n    async sendPinCode(data, contestName) {\n        const queryParams = new URLSearchParams({ contestName: contestName });\n        return await this._doPost(this._getEndpoint('sendPinCode'), data, queryParams);\n    } \n\n    async getAppJwt() {\n        return await this._doPost(this._getEndpoint('appJwt')); \n    }  \n\n    async getFlyerProductById(productId = '', coopId = '') {\n        const data = {\n            productId,\n            coopId,\n        };\n        return await this._doGet(this._getEndpoint('getDisProductById'), data);\n    }\n\n    async addDisFavoriteProduct(anacanId, flyerCode, productId) {\n        const payload = {\n            anacanId: anacanId,\n            volantino: flyerCode,\n            productId: productId,\n        };\n        return await this._doPost(this._getEndpoint('setDisProduct'), payload);\n    }\n\n    async removeDisProduct(idProdottoNegozioUtente) {\n        const payload = {\n            idProdottoNegozioUtente,\n        };\n        return await this._doPost(this._getEndpoint('removeDisProduct'), payload);\n    }\n\n    async getDisProduct(anacanId) {\n        return await this._doPost(this._getEndpoint('getDisProduct'), {\n            anacanId,\n        });\n    }\n    /**\n     * Retrieve single point of service by anacanId.\n     * @param {*} param0\n     * @returns\n     */\n    async getPointOfServiceByAnacanId({ anacanId }) {\n        const data = {\n            anacanId,\n        };\n        return await this._doCachedGet(this._getEndpoint('getPointOfServiceByAnacanId'), data);\n    }\n\n    /**\n     * Retrieve points of service with filters.\n     * @param {*} param0 (insegneId, serviziId, repartiId are String arrays)\n     * @returns\n     */\n    async retrievePointOfService({\n        latitudine,\n        longitudine,\n        raggioRicerca,\n        insegneId,\n        serviziId,\n        repartiId,\n        apertura,\n    }) {\n        const data = {\n            latitudine,\n            longitudine,\n            raggioRicerca,\n            insegneId,\n            serviziId,\n            repartiId,\n            apertura,\n        };\n        return await this._doPost(this._getEndpoint('retrievePointOfService'), data);\n    }\n\n    /**\n     * Get province.\n     * @returns\n     */\n    async province() {\n        const province = await this._doCachedGet(this._getEndpoint('province'));\n        return province.map((item) => ({\n            selected: false,\n            label: item.nome,\n            value: item.codice,\n        }));\n    }\n\n    /**\n     * Get comuni from provincia (raw list, each item has nome and codice).\n     * @returns\n     */\n    async comuni({ provinciaId }) {\n        return await this._doCachedGet(this._getEndpoint('comuni'), { provinciaId });\n    }\n\n    async getPlaysComp(contestName) {\n        const queryParams = new URLSearchParams({ contestName: contestName })\n        return await this._doPost(this._getEndpoint('playsCompetition'), {}, queryParams);\n    }\n\n    /**\n     * Get Firma digitale\n     */\n    async getFirmaDigitale() {\n        const data = await this._doPost(this._getEndpoint('getFirmaDigitale'), {});\n        return data && data.firmaDigitale ? data.firmaDigitale : '';\n    }\n\n    /**\n     * Edit user data\n     * @param {*} param0\n     * @returns\n     */\n    async editUserData({\n        nome,\n        cognome,\n        stato,\n        password,\n        dataNascita,\n        comuneNascita,\n        sesso,\n        telefonoCellulare,\n        telefonoFisso,\n        indirizzo,\n        numeroCivico,\n        cap,\n        citta,\n        codiceProvincia,\n        codiceFiscale,\n        dataNascitaFiglio1,\n        dataNascitaFiglio2,\n        dataNascitaFiglio3,\n        privacy1,\n        privacy2,\n        privacy3,\n        privacyTZ,\n        numeroComponentiNucleoFamiliare,\n        dataNascitaConiuge,\n        animaliDomestici,\n        abitudiniAlimentariFamiglia,\n        hobbyFamiglia,\n        acquistiOnline,\n        preferenzeComunicazioneNewsletter,\n        preferenzeComunicazioneSoloPerTe,\n        accessoMinisito,\n        invioMailEstrattoContoConadCard,\n        rendicontazioneConadCard,\n        attivazioneServizioOnlineConadCard,\n        versioneInformativaPrivacy,\n        mailOcdb,\n        emailOCDB,\n        firmaDigitale,\n        codiceCitta,\n        codiceComuneNascita,\n        codiceNazione,\n        canaliDiContatto,\n        negozioPreferito,\n    }) {\n        const data = {\n            nome,\n            cognome,\n            stato,\n            password,\n            dataNascita,\n            comuneNascita,\n            sesso,\n            telefonoCellulare,\n            telefonoFisso,\n            indirizzo,\n            numeroCivico,\n            cap,\n            citta,\n            codiceProvincia,\n            codiceFiscale,\n            dataNascitaFiglio1,\n            dataNascitaFiglio2,\n            dataNascitaFiglio3,\n            privacy1,\n            privacy2,\n            privacy3,\n            privacyTZ,\n            numeroComponentiNucleoFamiliare,\n            dataNascitaConiuge,\n            animaliDomestici,\n            abitudiniAlimentariFamiglia,\n            hobbyFamiglia,\n            acquistiOnline,\n            preferenzeComunicazioneNewsletter,\n            preferenzeComunicazioneSoloPerTe,\n            accessoMinisito,\n            invioMailEstrattoContoConadCard,\n            rendicontazioneConadCard,\n            attivazioneServizioOnlineConadCard,\n            versioneInformativaPrivacy,\n            mailOcdb,\n            emailOCDB,\n            firmaDigitale,\n            codiceCitta,\n            codiceComuneNascita,\n            codiceNazione,\n            canaliDiContatto,\n            negozioPreferito,\n        };\n        return await this._doPost(this._getEndpoint('editUserData'), data);\n    }\n\n    /**\n     * Change user account email for refresh campaign\n     * @param {*} param0\n     * @returns\n     */\n    async changeEmailRequestV2({ email, updateGccMail }) {\n        const data = {\n            email,\n            updateGccMail,\n        };\n        return await this._doPost(this._getEndpoint('changeEmailRequestV2'), data);\n    }\n\n    async getScontrino() {\n        return await this._doGet(this._getEndpoint('scontrino'));\n    }\n\n    async getUserBalance({ collectionCode, fidelityCard }) {\n        const params = {\n            fidelityCard,\n            collectionCode,\n        };\n        return await this._doCachedGet(this._getEndpoint('userBalance'), params);\n    }\n    \n    /**\n     * Get my donation\n     * @returns {Promise}\n     */\n    async getBuoniMovements({ initiativeCodes }) {\n        const data = {\n            initiativeCodes,\n        };\n        return await this._doGet(this._getEndpoint('buoni-movements'), data);\n    }\n\n    /**\n     * Get number of coupons and number of unread messages\n     */\n    async getDashboardCounts({ user, excludeNotificationCount } = {}) {\n        const params = { user, excludeNotificationCount };\n        return await this._doCachedGet(this._getEndpoint('getDashboardCounts'), params);\n    }\n\n    /**\n     * Return the regolamento link\n     * @param {*} coop The cooperative code\n     * @returns\n     */\n    getRegolamentoLink(coop) {\n        return `${this._getEndpoint('regolamentolink')}?coop=${coop.toLowerCase()}`;\n    }\n\n    _getEndpoint(name) {\n        const url = this.urlMap[name];\n        if (url) return url;\n        return this.urlMap['all'].replace('%%', name);\n    }\n\n    /**\n     * Do HTTP GET for loader.\n     * Internally uses _doTextGet & _doGet\n     * @param {*} url\n     * @param {*} queryParams\n     * @returns\n     */\n    async loaderGet(endpoint, queryParams) {\n        if (this.jsonLoader) {\n            // replace selector and extension\n            let split = endpoint.split('.');\n            split.splice(1, 0, 'jloader');\n            const newEndpoint = split.join('.').replace('.html', '.json');\n            const result = await this._doGet(newEndpoint, queryParams);\n            return result.html;\n        } else {\n            return await this._doTextGet(endpoint, queryParams);\n        }\n    }\n\n    /**\n     * Do HTTP GET for text content.\n     * Internally uses _doTextGet\n     * @param {*} url\n     * @param {*} queryParams\n     * @returns\n     */\n    async textGet(endpoint, queryParams) {\n        return await this._doTextGet(endpoint, queryParams);\n    }\n\n    /**\n     * Do HTTP GET with response type \"text\"\n     * Used for download html content\n     * @param {*} url\n     * @param {*} queryParams\n     * @returns\n     */\n    async _doTextGet(endpoint, queryParams) {\n        try {\n            const params = new URLSearchParams(queryParams);\n            const result = await axios({\n                method: 'get',\n                url: endpoint,\n                responseType: 'text',\n                params: params,\n            });\n            return result?.data;\n        } catch (error) {\n            console.warn(error);\n            throw 'Cannot download page';\n        }\n    }\n\n    async _doMultipartPost(endpoint, body = {}, queryParams, { unwrap } = { unwrap: true }) {\n        try {\n            const params = new URLSearchParams(queryParams);\n            const result = await axios.post(endpoint, body, {\n                params,\n            });\n            if (unwrap) {\n                return result?.data?.data;\n            } else {\n                return result?.data;\n            }\n        } catch (error) {\n            console.warn(error);\n            if (unwrap) {\n                throw error?.response?.data?.data;\n            } else {\n                throw error?.response?.data;\n            }\n        }\n    }\n\n    async _doBlobPost(endpoint, body = {}, queryParams) {\n        try {\n            const params = new URLSearchParams(queryParams);\n            const result = await axios.post(endpoint, body, {\n                params,\n                responseType: 'blob',\n                headers: {\n                    'Content-Type': 'application/json',\n                },\n            });\n            return result.data;\n        } catch (error) {\n            console.warn(error);\n            throw 'Cannot download blob';\n        }\n    }\n\n    async _doPost(endpoint, body = {}, queryParams, { unwrap } = { unwrap: true }) {\n        try {\n            const params = new URLSearchParams(queryParams);\n            const result = await axios.post(endpoint, body, {\n                withCredentials: true,\n                params,\n                headers: {\n                    'Content-Type': 'application/json',\n                },\n            });\n            if (unwrap) {\n                return result?.data?.data;\n            } else {\n                return result?.data;\n            }\n        } catch (error) {\n            console.warn(error);\n            if (unwrap) {\n                throw error?.response?.data?.data;\n            } else {\n                throw error?.response?.data;\n            }\n        }\n    }\n\n    async _doCachedGet(endpoint, queryParams, { unwrap } = { unwrap: true }, failSilently = false) {\n        const params = new URLSearchParams(queryParams);\n        const paramsUrl = params.toString();\n        const key = endpoint + '?' + paramsUrl;\n\n        const loc = window.localStorage?.getItem(key);\n        if (loc) {\n            const deserialized = JSON.parse(loc);\n            if (deserialized && deserialized.update > Date.now() - 300000) {\n                return deserialized.data;\n            }\n        }\n\n        // if a promise already running, wait on it\n        if (this.cached[key]) return await this.cached[key];\n\n        this.cached[key] = this._doGet(endpoint, queryParams, { unwrap }, failSilently);\n        const data = await this.cached[key];\n        window.localStorage?.setItem(key, JSON.stringify({ update: Date.now(), data }));\n        setTimeout(() => {\n            this.cached[key] = null; // clean promises\n        }, 100);\n        return data;\n    }\n\n    async _doGet(endpoint, queryParams, { unwrap } = { unwrap: true }) {\n        try {\n            const params = this._paramsToURLParams(queryParams);\n            const result = await axios.get(endpoint, {\n                withCredentials: true,\n                params: params,\n            });\n            if (unwrap) {\n                return result?.data?.data;\n            } else {\n                return result?.data;\n            }\n        } catch (error) {\n            console.warn(error);\n            if (unwrap) {\n                throw error?.response?.data?.data;\n            } else {\n                throw error?.response?.data;\n            }\n        }\n    }\n\n    _paramsToURLParams(queryParams) {\n        if (!queryParams) return new URLSearchParams();\n\n        let urlParams = new URLSearchParams();\n        //Ensure the url encoding is performed correctly for arrays\n        Object.entries(queryParams).forEach(([param, value]) => {\n            if (value)\n                if (Array.isArray(value)) value.forEach((item) => urlParams.append(param, item));\n                else urlParams.append(param, value);\n        });\n        return urlParams;\n    }\n}\n\n/**\n *\n * @returns {ApiProvider} api provider\n */\nexport const getApiProvider = () => {\n    if (!window.rcApiProvider) {\n        window.rcApiProvider = new ApiProvider();\n    }\n    return window.rcApiProvider;\n};\n","export const BREAKPOINTS = {\n    m: 768,\n    l: 1024,\n    xl: 1440,\n};\n\nexport const TIME_IN_MILLIS = {\n    FIVE_MINUTES: 300000,\n    THIRTY_SECONDS: 30000,\n};\n\n///////////////////////////////////////////////////\n//////////// NEWS FILTERS\n///////////////////////////////////////////////////\nexport const TAG_QUERY_PARAM_NAME = 'tag';\nexport const PRIVATE_TAG_QUERY_PARAM_NAME = `_${TAG_QUERY_PARAM_NAME}`;\nexport const NEWS_FILTER_QUERY_PARAM_VALUE_PRODUCT_RECALL = 'richiamo-prodotto';\nexport const NEWS_FILTER_QUERY_PARAM_VALUE_NEWS = 'news';\nexport const TAG_QUERY_PARAM_ALLOWED_VALUES = new Set([\n    NEWS_FILTER_QUERY_PARAM_VALUE_PRODUCT_RECALL,\n    NEWS_FILTER_QUERY_PARAM_VALUE_NEWS,\n]);\n","import { getDictionary } from './dictionary-provider';\nimport { runTemplate } from './htl-runtime/HTMLRuntime';\nimport { getRegister } from './register';\nimport * as dNextTick from 'next-tick';\nimport { getApiProvider } from './api-provider';\nimport { BREAKPOINTS } from './constants';\n\n///////////////////////////////////////////////////\n//////////// PROMISIFY EVENT\n///////////////////////////////////////////////////\nexport const buildWaitForEvent = (eventName) => (node, func) =>\n    new Promise((resolve, reject) => {\n        // reject for invalid node\n        if (!(node instanceof window.HTMLElement || node instanceof window.SVGElement)) {\n            return reject(new Error('tail-end: an HTML or SVG element is required.'));\n        }\n\n        // create the event handler\n        const handler = () => {\n            // unbind the handler\n            node.removeEventListener(eventName, handler);\n            // resolve the (now clean) node\n            return resolve(node);\n        };\n\n        // bind the handler\n        node.addEventListener(eventName, handler);\n\n        // if it exists, call the function passing in the node\n        if (typeof func === 'function') {\n            window.requestAnimationFrame(() => func(node));\n        }\n    });\n\n///////////////////////////////////////////////////\n//////////// PROMISIFY ANIMATIONEND - TRANSITIONEND\n///////////////////////////////////////////////////\nexport const animationEnd = buildWaitForEvent('animationend');\nexport const transitionEnd = buildWaitForEvent('transitionend');\n\n///////////////////////////////////////////////////\n//////////// DELAY\n///////////////////////////////////////////////////\nexport const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const nextTick = () => {\n    return new Promise((resolve) => dNextTick(resolve));\n};\n\n///////////////////////////////////////////////////\n//////////// NEXT PREV SIBLINGS\n///////////////////////////////////////////////////\nexport const getNextSibling = function (elem, selector) {\n    // Get the next sibling element\n    let sibling = elem.nextElementSibling;\n\n    // If there's no selector, return the first sibling\n    if (!selector) return sibling;\n\n    // If the sibling matches our selector, use it\n    // If not, jump to the next sibling and continue the loop\n    while (sibling) {\n        if (sibling.matches && sibling.matches(selector)) return sibling;\n        sibling = sibling.nextElementSibling;\n    }\n};\n\nexport const getPrevSibling = function (elem, selector) {\n    // Get the next sibling element\n    let sibling = elem.previousElementSibling;\n\n    // If there's no selector, return the first sibling\n    if (!selector) return sibling;\n\n    // If the sibling matches our selector, use it\n    // If not, jump to the next sibling and continue the loop\n    while (sibling) {\n        if (sibling.matches && sibling.matches(selector)) return sibling;\n        sibling = sibling.previousElementSibling;\n    }\n};\n\nexport const getNextSiblingAll = function (elem, selector) {\n    // Get the next sibling element\n    let sibling = elem.nextElementSibling;\n    let result = [];\n    // If the sibling matches our selector, use it\n    // If not, jump to the next sibling and continue the loop\n    while (sibling) {\n        if (selector) {\n            if (sibling.matches && sibling.matches(selector)) result.push(sibling);\n        } else result.push(sibling);\n        sibling = sibling.nextElementSibling;\n    }\n    return result;\n};\n\nexport const getPrevSiblingAll = function (elem, selector) {\n    // Get the next sibling element\n    let sibling = elem.previousElementSibling;\n    let result = [];\n    // If the sibling matches our selector, use it\n    // If not, jump to the next sibling and continue the loop\n    while (sibling) {\n        if (selector) {\n            if (sibling.matches && sibling.matches(selector)) result.push(sibling);\n        } else result.push(sibling);\n        sibling = sibling.previousElementSibling;\n    }\n    return result;\n};\n\n///////////////////////////////////////////////////\n//////////// FIRST AND LAST CHILD\n///////////////////////////////////////////////////\nexport const getFirstChild = function (elem, selector) {\n    // Get the first child element\n    let nodes = elem.children;\n    if (nodes.length <= 0) return;\n\n    // If there's no selector, return the first sibling\n    if (!selector) return nodes[0];\n\n    // If the child node matches our selector, use it\n    // If not, jump to the next child and continue the loop\n    for (let i = 0; i < nodes.length; i++) {\n        if (nodes[i].matches && nodes[i].matches(selector)) return nodes[i];\n    }\n};\n\nexport const getLastChild = function (elem, selector) {\n    // Get the last child element\n    let nodes = elem.children;\n    if (nodes.length <= 0) return;\n\n    // If there's no selector, return the last sibling\n    if (!selector) return nodes[nodes.length - 1];\n\n    // If the child node matches our selector, use it\n    // If not, jump to the prev child and continue the loop\n    for (let i = nodes.length - 1; i >= 0; i--) {\n        if (nodes[i].matches && nodes[i].matches(selector)) return nodes[i];\n    }\n};\n\nexport const getClosestAll = function (elem, selector) {\n    const closestOne = (el, arr) => {\n        if (!el) return arr;\n\n        const clo = el.closest(selector);\n        if (!clo) return arr;\n\n        return closestOne(clo.parentElement, [clo, ...arr]);\n    };\n\n    return closestOne(elem, []);\n};\n\n/**\n * Check if a node is inside the body\n * @param {*} node\n * @returns\n */\nexport const isInPage = function (node) {\n    return node === document.body ? false : document.body.contains(node);\n};\n\n///////////////////////////////////////////////////\n//////////// CREATE QUERY PARAMETERS\n///////////////////////////////////////////////////\nexport const buildQuery = (obj) =>\n    Object.entries(obj)\n        .map((pair) => pair.map(encodeURIComponent).join('='))\n        .join('&');\n\n///////////////////////////////////////////////////\n//////////// HTML ELEMENTS\n///////////////////////////////////////////////////\nexport const htmlToElement = (html) => {\n    let template = document.createElement('template');\n    html = html.trim(); // Never return a text node of whitespace as the result\n    template.innerHTML = html;\n    return template.content.firstChild;\n};\n\nexport const emptyElement = (element) => {\n    while (element.firstChild) {\n        element.removeChild(element.lastChild);\n    }\n};\n\n///////////////////////////////////////////////////\n//////////// OTHERS\n///////////////////////////////////////////////////\nexport const isPositive = (value) => {\n    if (value == true || value == 'true' || value == 'S' || value == 's' || value == '1') {\n        return true;\n    }\n    return false;\n};\n\n/**\n * Check if an object is null or empty\n * @param {*} obj\n * @returns\n */\nexport const isObjectEmpty = (obj) => {\n    return !obj || (Object.keys(obj).length === 0 && Object.getPrototypeOf(obj) === Object.prototype);\n};\n\n///////////////////////////////////////////////////\n//////////// DEBOUNCE\n///////////////////////////////////////////////////\nexport const debounce = (cb, delay = 1000) => {\n    let timeoutId = null;\n    return (...args) => {\n        clearTimeout(timeoutId);\n        timeoutId = window.setTimeout(() => {\n            cb.apply(null, args);\n        }, delay);\n    };\n};\n\n///////////////////////////////////////////////////\n//////////// MAKE ID\n///////////////////////////////////////////////////\nexport const makeid = (length) => {\n    let result = '';\n    let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n    let charactersLength = characters.length;\n    for (let i = 0; i < length; i++) {\n        result += characters.charAt(Math.floor(Math.random() * charactersLength));\n    }\n    return result;\n};\n\n///////////////////////////////////////////////////\n//////////// TIME INSTANT\n///////////////////////////////////////////////////\nexport const timeInstant = (formattedHour) => {\n    let t0 = new Date();\n    let t0split = formattedHour.split(':');\n    t0.setHours(parseInt(t0split[0]));\n    t0.setMinutes(parseInt(t0split[1]));\n    return t0;\n};\n\n/**\n *\n * @param {String} text\n * @returns Convert a text to url friendly\n */\nexport const toUrlFriendly = (text) => {\n    let result = text\n        .normalize('NFD')\n        .trim()\n        .toLowerCase()\n        .replaceAll(/\\s|[//_:]/g, '-')\n        .replaceAll('[^a-z0-9-]', '');\n    return result.length > 150 ? result.substring(0, 150) : result;\n};\n\n/**\n *\n * @returns true if referrer comes from current domain\n */\nexport const isReferrerCurrentDomain = () => {\n    if (!document.referrer) return false;\n    try {\n        const referrer = new URL(document.referrer);\n        return referrer.origin === location.origin;\n    } catch (e) {\n        console.info('Cannot check referrer');\n    }\n    return false;\n};\n\nexport const isInViewport = function (el) {\n    const rect = el.getBoundingClientRect();\n    return (\n        rect.top >= 0 &&\n        rect.left >= 0 &&\n        rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n        rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n    );\n};\n\n///////////////////////////////////////////////////\n//////////// CALCULATE OVERLAY POSITION\n///////////////////////////////////////////////////\nexport const calcTop = (self, target, offset = 0) => {\n    const rect = target.getBoundingClientRect();\n    const popHeight = self.clientHeight;\n    const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n    let top = rect.top + scrollTop + rect.height + 8;\n    if (top + popHeight > document.documentElement.scrollHeight) {\n        const diff = top + popHeight - document.documentElement.scrollHeight;\n        top = top - diff - 8;\n        top = top >= 0 ? top : 0;\n    }\n    return top + offset + 'px';\n};\n\nexport const calcLeft = (self, target, offset = 0) => {\n    const rect = target.getBoundingClientRect();\n    const popWidth = self.clientWidth;\n    const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\n    let left = rect.left + scrollLeft;\n    if (left + popWidth > document.documentElement.scrollWidth) {\n        const diff = left + popWidth - document.documentElement.scrollWidth;\n        left = left - diff - 8;\n        left = left >= 0 ? left : 0;\n    }\n    return left + offset + 'px';\n};\n\n///////////////////////////////////////////////////\n//////////// FLYERS\n///////////////////////////////////////////////////\nexport const flyerData = (data) => {\n    const dictionary = getDictionary();\n    const flyer = { ...data };\n\n    const computeFlyerValidity = (flyer) => {\n        const fullDateFormatter = new Intl.DateTimeFormat('it-IT', { day: 'numeric', month: 'short', year: 'numeric' });\n        const shortDateFormatter = new Intl.DateTimeFormat('it-IT', { day: 'numeric', month: 'short' });\n        const dayFormatter = new Intl.DateTimeFormat('it-IT', { day: 'numeric' });\n        const from = dictionary.get('From the');\n        const to = dictionary.get('to the');\n        const until = dictionary.get('until');\n        if (!flyer.validFrom && !flyer.validTo) {\n            return dictionary.get('always valid');\n        }\n        if (!flyer.validFrom && flyer.validTo) {\n            let eDate = new Date(flyer.validTo);\n            return `${until} ${fullDateFormatter.format(eDate)}`;\n        }\n        if (!flyer.validTo && flyer.validFrom) {\n            let sDate = new Date(flyer.validFrom);\n            return `${from} ${fullDateFormatter.format(sDate)}`;\n        }\n        let sDate = new Date(flyer.validFrom);\n        let eDate = new Date(flyer.validTo);\n        if (sDate.getFullYear() !== eDate.getFullYear()) {\n            return `${from} ${fullDateFormatter.format(sDate)} ${to} ${fullDateFormatter.format(eDate)}`;\n        }\n        if (sDate.getMonth() !== eDate.getMonth()) {\n            return `${from} ${shortDateFormatter.format(sDate)} ${to} ${fullDateFormatter.format(eDate)}`;\n        }\n        return `${from} ${dayFormatter.format(sDate)} ${to} ${fullDateFormatter.format(eDate)}`;\n    };\n\n    flyer.validity = computeFlyerValidity(flyer);\n    flyer.downloadLink = {\n        href: flyer.pdfUrl,\n        target: '_blank',\n        download: '',\n    };\n    flyer.linkLabel = dictionary.get('Watch the flyer');\n    if (flyer.link) {\n        flyer.link = {\n            target: '_blank',\n            ...flyer.link,\n        };\n    }\n    return flyer;\n};\n\nexport const flyersData = (store) => {\n    let rawData = store.volantini || [];\n    let result = [];\n    for (let flyer of rawData) {\n        result.push(flyerData(flyer));\n    }\n    return result;\n};\n\n///////////////////////////////////////////////////\n//////////// GENERATE SHARE LINKS TOOLTIP\n///////////////////////////////////////////////////\nexport const generateShareLinks = async (href, title, ignoreSharers = [], extraClasses = null) => {\n    const id = makeid(10);\n    const shareLinksData = {\n        uniqueId: id,\n        extraClasses: extraClasses,\n        heading: `${getDictionary().get('Share on:')}`,\n        shareUrl: href,\n        shareTitle: title,\n        ignoreSharers: ignoreSharers,\n    };\n    const shareLinksHtml = (await import(\n        '../repository/apps/conad-corporate/templates/rt029-share-links/rt029-share-links.html'\n    )).default;\n    const shareLinksTooltip = runTemplate(shareLinksHtml, shareLinksData);\n\n    const mainPage = document.body.querySelector('.rs1-page');\n    mainPage.appendChild(shareLinksTooltip);\n\n    return id;\n};\n\n///////////////////////////////////////////////////\n//////////// GENERATE TOOLTIP\n///////////////////////////////////////////////////\nexport const generateTooltip = async (text, extraClasses = null) => {\n    const id = makeid(10);\n    const tooltipData = {\n        uniqueId: id,\n        extraClasses: extraClasses,\n        text: text,\n    };\n\n    const tooltipHtml = (await import('../repository/apps/conad-corporate/templates/rt035-tooltip/rt035-tooltip.html'))\n        .default;\n    const tooltip = runTemplate(tooltipHtml, tooltipData);\n\n    const mainPage = document.body.querySelector('.rs1-page');\n    mainPage.appendChild(tooltip);\n\n    return id;\n};\n\n///////////////////////////////////////////////////\n//////////// DEEP MERGE\n///////////////////////////////////////////////////\nexport const isObject = (item) => {\n    return item && typeof item === 'object' && !Array.isArray(item);\n};\n\nexport const mergeDeep = (target, ...sources) => {\n    if (!sources.length) return target;\n    const source = sources.shift();\n\n    if (isObject(target) && isObject(source)) {\n        for (const key in source) {\n            if (isObject(source[key])) {\n                if (!target[key])\n                    Object.assign(target, {\n                        [key]: {},\n                    });\n                mergeDeep(target[key], source[key]);\n            } else {\n                Object.assign(target, {\n                    [key]: source[key],\n                });\n            }\n        }\n    }\n\n    return mergeDeep(target, ...sources);\n};\n\n///////////////////////////////////////////////////\n//////////// LOADER\n///////////////////////////////////////////////////\n\nexport const openLoader = (name) => {\n    const loader = document.getElementById(`loader-${name}`);\n    if (!loader) return;\n    const loaderObj = getRegister().getClass(loader);\n    if (!loaderObj) return;\n    loaderObj?.open();\n};\n\nexport const closeLoader = (name) => {\n    const loader = document.getElementById(`loader-${name}`);\n    if (!loader) return;\n    const loaderObj = getRegister().getClass(loader);\n    loaderObj?.close();\n};\n\nexport const isLoaderOpen = (name) => {\n    const loader = document.getElementById(`loader-${name}`);\n    if (!loader) return;\n    const loaderObj = getRegister().getClass(loader);\n    return loaderObj?.isOpen();\n};\n\n///////////////////////////////////////////////////\n//////////// GENERATE FEEDBACK\n///////////////////////////////////////////////////\nexport const generateFeedback = async ({ extraClasses, text, semanticType, ctaLabel, ctaLink, unclosable = false }) => {\n    const feedbackHtml = (await import(\n        '../repository/apps/conad-corporate/templates/rt036-feedback/rt036-feedback.html'\n    )).default;\n    const feedback = runTemplate(feedbackHtml, {\n        uniqueId: makeid(10),\n        extraClasses: extraClasses,\n        text: text,\n        semanticType: `${semanticType}` /* 1 (green), 2 (red), 3 (yellow), 4 (blue) */,\n        ctaLabel: ctaLabel,\n        ctaLink: ctaLink,\n        unclosable: unclosable,\n    });\n\n    const feedbackContainer = document.getElementById('feedback-container');\n    feedbackContainer?.appendChild(feedback);\n\n    return;\n};\n\n///////////////////////////////////////////////////\n//////////// TRACKING COMMONS\n///////////////////////////////////////////////////\n\nexport const generateTrackVolantinoInfo = (flyer = null) => {\n    return {\n        id: flyer?.flyerCode || 'data.flyerId',\n        CooperativaVolantino: flyer?.cooperative || 'data.flyerCoop',\n        title: flyer?.title || flyer?.feTitle || flyer?.flyerCode || 'data.flyerName',\n        format: capitalize(flyer?.flyerFormat) || 'data.flyerType',\n    };\n};\n\nexport const generateTrackNegozioInfo = (store = null, withServices = false) => {\n    const trackData = {\n        idNegozio: store?.anacanId || 'data.storeId',\n        CooperativaNegozio: store?.codiceCooperativa || 'data.coopId',\n        Insegna: store?.descrizioneInsegna || 'data.insignia',\n    };\n    if (withServices) {\n        trackData.ServiziAggiuntivi = 'vars.currentServices';\n    }\n    return trackData;\n};\n\n///////////////////////////////////////////////////\n//////////// ARRAY\n///////////////////////////////////////////////////\nexport const shuffleArray = (array) => {\n    const newArray = [...array];\n    const length = newArray.length;\n\n    for (let start = 0; start < length; start++) {\n        const randomPosition = Math.floor((newArray.length - start) * Math.random());\n        const randomItem = newArray.splice(randomPosition, 1);\n\n        newArray.push(...randomItem);\n    }\n\n    return newArray;\n};\n\n///////////////////////////////////////////////////\n//////////// COOKIES\n///////////////////////////////////////////////////\nexport const getCookieByName = (name) => {\n    let mt = document.cookie.match('(^|;)\\\\s*' + name + '\\\\s*=\\\\s*([^;]+)');\n    if (mt) return mt.pop();\n    return '';\n};\n\nexport const writeCookieWithName = (name, value, domain, expires = undefined) => {\n    document.cookie = `${name}=${value};domain=${domain};path=/;${expires ? 'expires=' + expires : ''}`;\n};\n\n///////////////////////////////////////////////////\n//////////// ASYNC REPLACE\n///////////////////////////////////////////////////\n/**\n * Replace async\n * @param {*} string\n * @param {*} regexp\n * @param {*} replacerFunction\n * @returns\n */\nexport const replaceAsync = async (string, regexp, replacerFunction) => {\n    const replacements = await Promise.all(Array.from(string.matchAll(regexp), (match) => replacerFunction(...match)));\n    let i = 0;\n    return string.replace(regexp, () => replacements[i++]);\n};\n\n///////////////////////////////////////////////////\n//////////// LOAD STEP - MODAL POPUP\n///////////////////////////////////////////////////\nexport const loadStep = async (stepName) => {\n    const el = document.querySelector(`[data-name=${stepName}]`);\n    if (el) {\n        await nextTick();\n        return el;\n    }\n\n    let found = null;\n    const availableSteps = [...window.popups, ...window.modals];\n    for (const step of availableSteps) {\n        if (step.name == stepName) {\n            found = step;\n            break;\n        }\n    }\n\n    if (!found) throw 'Cannot find step ' + stepName;\n    const html = await getApiProvider().loaderGet(found.url);\n    const parser = new DOMParser();\n    const parsed = parser.parseFromString(html, 'text/html');\n    const result = document.getElementById('mp-container').appendChild(parsed.body.firstElementChild);\n    forceReflow(); // necessary to run transitions on element\n    return result;\n};\n\n/**\n * Forces restyle and reflow\n * @returns\n */\nexport const forceReflow = () => {\n    return document.body.offsetWidth;\n};\n\n/**\n * Get the Z-Index of an element\n * @param {HTMLElement} e\n * @returns\n */\nexport const getZIndex = function (e) {\n    const z = window.getComputedStyle(e).getPropertyValue('z-index');\n    if (isNaN(z)) return getZIndex(e.parentNode);\n    return z;\n};\n\n///////////////////////////////////////////////////\n//////////// FORM CHECK WITHOUT TRIGGER VALIDATION\n///////////////////////////////////////////////////\nexport function checkFormWithoutValidation(form) {\n    const inputsInvalid = form.querySelector('input:invalid');\n    if (inputsInvalid) {\n        return false;\n    } else {\n        return true;\n    }\n}\n\n///////////////////////////////////////////////////\n//////////// SHUFFLE CARDS \n/////////////////////////////////////////////////// \nexport function shuffleCards(cardsContainer, options = {}) {\n    const preserveHighlighted = !!options.preserveHighlighted;\n\n    if (!preserveHighlighted) {\n        const children = cardsContainer.children;\n        for (let i = children.length; i > 0; i--) {\n            const idx = Math.floor(Math.random() * i);\n            cardsContainer.appendChild(children[idx]);\n        }\n        return;\n    }\n\n    // If preserveHighlighted is true, keep highlighted items (data-highlighted)\n    // in their original order at the beginning, and shuffle the remaining items\n    const allChildren = Array.from(cardsContainer.children);\n    const highlighted = allChildren.filter((el) => el.hasAttribute('data-highlighted'));\n    const others = allChildren.filter((el) => !el.hasAttribute('data-highlighted'));\n\n    const shuffledOthersFragment = document.createDocumentFragment();\n    const temp = others.slice();\n    for (let i = temp.length; i > 0; i--) {\n        const idx = Math.floor(Math.random() * i);\n        const [node] = temp.splice(idx, 1);\n        shuffledOthersFragment.appendChild(node);\n    }\n\n    // Clear the container and re-append highlighted (original order) then shuffled others\n    while (cardsContainer.firstChild) {\n        cardsContainer.removeChild(cardsContainer.firstChild);\n    }\n    highlighted.forEach((el) => cardsContainer.appendChild(el));\n    cardsContainer.appendChild(shuffledOthersFragment);\n}\n\nexport function getBaseDomain() {\n    let parts = window.location.hostname.split('.');\n    if (parts.length > 2) {\n        return parts.slice(-2).join('.');\n    }\n    return window.location.hostname;\n}\n\n///////////////////////////////////////////////////\n//////////// QUERY STRING PARAMETERS \n/////////////////////////////////////////////////// \n/**\n * Updates, adds, or removes query parameters from the current URL \n * without reloading the page.\n *\n * @param {object} paramsToUpdate - A key-value map of query parameters. \n * - To add/update a parameter, provide a string or number value (e.g., { page: 2 }).\n * - To remove a parameter, provide a value of null or undefined (e.g., { query: null }).\n * @returns {void}\n */\nexport function updateUrlQueryParams(paramsToUpdate) {\n    const url = new URL(window.location.href);\n    for (const [key, value] of Object.entries(paramsToUpdate)) {\n        if (value === null || value === undefined) {\n            url.searchParams.delete(key);\n        } else {\n            url.searchParams.set(key, value);\n        }\n    }\n    history.pushState({}, '', url.toString());\n}\n\n/**\n * Reads the current URL's query string and returns it as a JavaScript object.\n * If a parameter appears multiple times, the last value will be used.\n * @returns {object} An object representing the query string key-value pairs.\n */\nexport function getQueryParams() {\n    const params = new URLSearchParams(window.location.search);\n    return Object.fromEntries(params.entries());\n}\n\n/**\n * Determines the screen type (\"mobile\", \"tablet\", \"desktop\") based on the browser window width.\n * This mobile-first approach checks compatibility starting from the smallest breakpoints.\n * It uses CSS media queries through the `window.matchMedia` API and relies on breakpoints\n * defined in an external `BREAKPOINTS` constant.\n *\n * @assumes The BREAKPOINTS constant contains the thresholds, e.g.: { m: 768, l: 1024 }.\n *\n * @returns {string} Returns a string indicating the screen type:\n *                   - \"mobile\": if the width is less than or equal to `BREAKPOINTS.m`.\n *                   - \"tablet\": if the width is between `BREAKPOINTS.m` and `BREAKPOINTS.l`.\n *                   - \"desktop\": if the width is greater than `BREAKPOINTS.l`.\n */\nexport function getScreenType() {\n    if (window.matchMedia(`(max-width: ${BREAKPOINTS.m - 1}px)`).matches) return 'mobile';\n    if (window.matchMedia(`(max-width: ${BREAKPOINTS.l - 1}px)`).matches) return 'tablet';\n    return 'desktop';\n}\n\n/**\n * Removes the main component from the DOM if the WCM mode is disabled.\n * @param {HTMLElement} root The root element of the component to remove.\n * @returns {void}\n */\nexport function removeMainComponent(root) {\n    if (!window.wcmmodeDisabled) return;\n    const rootParent = root.parentElement;\n    if (rootParent.tagName === 'SECTION' && rootParent.classList.contains('rl1-layout__item')) {\n        const event = new CustomEvent('removeLayoutItem', { bubbles: true });\n        event.data = { remove: true };\n        root.dispatchEvent(event);\n    } else {\n        root.remove();\n    }\n}\n\n/**\n * Move a component up or down in the layout by a specified number of positions.\n * @param {HTMLElement} root The root element of the component to move.\n * @param {string} upOrDown Direction to move the component ('up' or 'down').\n * @param {number} nPositions Number of positions to move the component.\n * @returns {void}\n */\nexport function moveComponent(root, upOrDown = 'up', nPositions = 1) {\n    let element = root.parentElement;\n    if (!element.tagName === 'SECTION' || !element.classList.contains('rl1-layout__item')) {\n        element = root;\n    }\n    for (let i = 0; i < nPositions; i++) {\n        const sibling = upOrDown === 'up' ? element.previousElementSibling : element.nextElementSibling;\n        if (sibling) {\n            if (upOrDown === 'up') {\n                sibling.before(element);\n            } else {\n                sibling.after(element);\n            }\n        } else {\n            break;\n        }\n    }\n}\n\n///////////////////////////////////////////////////\n//////////// CAPITALIZE\n/////////////////////////////////////////////////// \nexport function capitalize(string) {\n    if (!string) return '';\n    return string.charAt(0).toUpperCase() + string.slice(1);\n}","import { buildWaitForEvent, nextTick } from './utils';\n\nconst init = buildWaitForEvent('ecStoreInit');\n\nexport class StoreManager {\n    constructor() {\n        this.rootEl = document.documentElement;\n        this.initialized = false;\n        this.stores = {};\n        this.cbs = {};\n    }\n\n    checkInit(initialStore) {\n        if (!initialStore || initialStore == 'undefined') return;\n        const stores = typeof initialStore == 'string' ? JSON.parse(initialStore) : initialStore;\n        for (let st of Object.keys(stores)) {\n            if (stores[st]) this.emit(st, stores[st]);\n        }\n        this.initialized = true;\n        this.rootEl.dispatchEvent(new CustomEvent('ecStoreInit'));\n        console.log('Initializated store manager');\n    }\n\n    on(match, cb) {\n        this.addListener(match, cb);\n    }\n\n    addListener(match, cb) {\n        const regex = match instanceof RegExp ? match : new RegExp('^' + match + '.*$');\n        const fFn = (event) => {\n            const pathChanged = event.detail.path;\n            if (regex.test(pathChanged)) {\n                cb(pathChanged, event.detail.newData, event.detail.oldData);\n            }\n        };\n\n        this.rootEl.addEventListener('ecStoreChange', fFn);\n        this.cbs[cb] = fFn;\n\n        // check pre-init\n        for (const st of Object.keys(this.stores)) {\n            if (regex.test(st)) {\n                (async () => {\n                    await nextTick();\n                    cb(st, this.stores[st], {});\n                })();\n            }\n        }\n    }\n\n    removeListener(match, cb) {\n        const fFn = this.cbs[cb];\n        this.rootEl.removeEventListener('ecStoreChange', fFn);\n    }\n\n    emitIncrement(path) {\n        const oldValue = this._recLookup(this.stores, path);\n        let newValue = 0;\n        if (!oldValue) {\n            newValue = 1;\n        } else if (typeof newValue == 'number') {\n            newValue = oldValue + 1;\n        }\n\n        this.emit(path, newValue);\n    }\n\n    emitDecrement(path) {\n        const oldValue = this._recLookup(this.stores, path);\n        let newValue = 0;\n        if (!oldValue) {\n            newValue = -1;\n        } else if (typeof newValue == 'number') {\n            newValue = oldValue - 1;\n        }\n\n        this.emit(path, newValue);\n    }\n\n    emitToggle(path) {\n        const oldValue = this._recLookup(this.stores, path);\n        let newValue = true;\n        if (typeof newValue == 'boolean') {\n            newValue = !oldValue;\n        }\n\n        this.emit(path, newValue);\n    }\n\n    emit(path, data, merge = false) {\n        const oldData = this._recLookup(this.stores, path) || {};\n        let newData = data;\n        if (merge && typeof data == 'object' && typeof oldData == 'object') {\n            newData = { ...oldData, ...data };\n        }\n\n        //set store\n        this.stores = this._recSetup(this.stores, path, newData);\n\n        //send event\n        let event = new CustomEvent('ecStoreChange', {\n            detail: {\n                path,\n                oldData,\n                newData,\n            },\n        });\n        this.rootEl.dispatchEvent(event);\n        console.debug(`Changed store \"${path}\" to`, newData);\n    }\n\n    get(path) {\n        return this._recLookup(this.stores, path);\n    }\n\n    _recLookup(obj, path) {\n        if (!obj) return null;\n        const parts = path.split('/');\n        if (parts.length == 1) {\n            return obj[parts[0]];\n        }\n        return this._recLookup(obj[parts[0]], parts.slice(1).join('/'));\n    }\n\n    _recSetup(obj, path, data) {\n        const nObj = obj;\n        const parts = path.split('/');\n        let iObj = obj[parts[0]] ? obj[parts[0]] : {};\n        if (parts.length > 1) {\n            nObj[parts[0]] = this._recSetup(iObj, parts.slice(1).join('/'), data);\n        } else {\n            nObj[parts[0]] = data;\n        }\n        return nObj;\n    }\n\n    async waitInit() {\n        if (this.initialized) return;\n        await init(this.rootEl);\n    }\n}\n\nwindow.rcStoreManager = new StoreManager();\n\n/**\n * @returns {StoreManager} the storeManager\n */\nexport const getStoreManager = () => {\n    return window.rcStoreManager;\n};\nexport const storeManager = window.rcStoreManager;\n","import { getStoreManager } from '../store-manager';\n\nexport default class Component {\n    constructor(name, root) {\n        this.name = name;\n        if (this.name.startsWith('.')) {\n            this.name = this.name.substring(1);\n        }\n        this.root = root;\n        this.storeManager = getStoreManager();\n        this.listeners = [];\n        this.storeListeners = [];\n    }\n\n    getName() {\n        return this.name;\n    }\n\n    getRoot() {\n        return this.root;\n    }\n\n    getSelector() {\n        return '.' + this.name;\n    }\n\n    dispose() {\n        this._removeAllListeners();\n        this._removeAllStoreListeners();\n    }\n\n    //Listeners (standard)\n    _addListener(ev, cb, el = 'root', options = {}) {\n        //load events\n        let events = [];\n        if (typeof ev == 'string') {\n            events = [ev];\n        } else if (ev instanceof Array) {\n            events = ev;\n        } else {\n            console.warn('Invalid addListener call');\n            return;\n        }\n\n        //load elements if necessary\n        let element = null;\n        if (el == 'root') {\n            element = this.root;\n        } else if (typeof el == 'string') {\n            element = this._dEl(el);\n        } else if (el instanceof Element || el instanceof Document || el instanceof Window) {\n            element = el;\n        }\n\n        //check element\n        if (!element) {\n            console.debug('Event listener not added due to missing element', el);\n            return;\n        }\n\n        for (const event of events) {\n            this._addListenerTo(element, event, cb, options);\n        }\n    }\n\n    _addListenerTo(element, event, callback, options = {}) {\n        element.addEventListener(event, callback, options);\n        this.listeners.push({\n            element: element,\n            event: event,\n            callback: callback,\n            options: options,\n        });\n    }\n\n    _removeAllListeners() {\n        for (const listener of this.listeners) {\n            listener.element.removeEventListener(listener.event, listener.callback, listener.options);\n        }\n    }\n\n    // Store\n    _emit(path, data, merge = false) {\n        this.storeManager.emit(path, data, merge);\n    }\n\n    _emitIncrement(path) {\n        this.storeManager.emitIncrement(path);\n    }\n\n    _emitDecrement(path) {\n        this.storeManager.emitDecrement(path);\n    }\n\n    _emitToggle(path) {\n        this.storeManager.emitToggle(path);\n    }\n\n    _addStoreListener(match, cb) {\n        this.storeManager.addListener(match, cb);\n        this.storeListeners.push({\n            match,\n            callback: cb,\n        });\n    }\n\n    _removeAllStoreListeners() {\n        for (const listener of this.storeListeners) {\n            this.storeManager.removeListener(listener.match, listener.callback);\n        }\n    }\n\n    //elements methods\n    _elMod(elName, modifier, addDot = false) {\n        return `${addDot ? '.' : ''}${this.name}__${elName}--${modifier}`;\n    }\n\n    _mod(modifier, addDot = false) {\n        return `${addDot ? '.' : ''}${this.name}--${modifier}`;\n    }\n\n    _el(elName, addDot = false) {\n        return `${addDot ? '.' : ''}${this.name}__${elName}`;\n    }\n\n    _dEl(elName, all = false) {\n        if (all) {\n            return Array.from(this.root.querySelectorAll(this._el(elName, true)));\n        } else {\n            return this.root.querySelector(this._el(elName, true));\n        }\n    }\n\n    _dMod(modifier, all = false) {\n        if (all) {\n            return Array.from(this.root.querySelectorAll(this._mod(modifier, true)));\n        } else {\n            return this.root.querySelector(this._mod(modifier, true));\n        }\n    }\n\n    _dElMod(elName, modifier, all = false) {\n        if (all) {\n            return Array.from(this.root.querySelectorAll(this._elMod(elName, modifier, true)));\n        } else {\n            return this.root.querySelector(this._elMod(elName, modifier, true));\n        }\n    }\n\n    //layout item methods\n    _hideMainComponent() {\n        if (!window.wcmmodeDisabled) return;\n        const event = new CustomEvent('hideLayoutItem', { bubbles: true });\n        event.data = { hide: true };\n        this.root.dispatchEvent(event);\n    }\n\n    _showMainComponent() {\n        const event = new CustomEvent('hideLayoutItem', { bubbles: true });\n        event.data = { hide: false };\n        this.root.dispatchEvent(event);\n    }\n\n    _removeMainComponent() {\n        if (!window.wcmmodeDisabled) return;\n        const event = new CustomEvent('removeLayoutItem', { bubbles: true });\n        event.data = { remove: true };\n        this.root.dispatchEvent(event);\n    }\n}\n","// eslint-disable-next-line no-unused-vars\nimport Component from './components/component';\n\nexport const MODALITY_SELECTOR = 'selector';\nexport const MODALITY_DATA_COMPONENT = 'data-component';\n\nexport class Register {\n    constructor() {\n        this.counter = 0;\n        this.reg = {};\n        this.modality = window.CMP_MODALITY || MODALITY_SELECTOR;\n        this.query = '';\n        if (this.modality == MODALITY_DATA_COMPONENT) {\n            this.query = '[data-component]';\n        }\n    }\n\n    /**\n     * Register a new class to the register\n     * @param {String} selector\n     * @param {Class} cl\n     */\n    registerClass(name, cl) {\n        let realName = name.startsWith('.') ? name.substring(1) : name;\n        this.reg[realName] = cl;\n\n        // recreate query on modality selector\n        if (this.modality == MODALITY_SELECTOR) {\n            this.query += `${this.query ? ',' : ''}${name}`;\n        }\n    }\n\n    /**\n     * Search for all registered class into the root element and apply the logic\n     * @param {HTMLELement} rootEl\n     */\n    apply(rootEl) {\n        const date = new Date();\n        this._apply(rootEl);\n\n        const observer = new MutationObserver((mutations) => {\n            for (let i = 0; i < mutations.length; ++i) {\n                for (let j = 0; j < mutations[i].addedNodes.length; ++j) {\n                    this._apply(mutations[i].addedNodes[j]);\n                }\n            }\n        });\n        observer.observe(rootEl, {\n            childList: true,\n            subtree: true,\n        });\n\n        const endDate = new Date();\n        console.debug(`Register init time: ${endDate.getTime() - date.getTime()}`);\n    }\n\n    _apply(el) {\n        if (!el.querySelectorAll) return;\n\n        if (el.matches(this.query)) {\n            const elFirstClass = el.classList[0];\n            if (elFirstClass && this.reg[elFirstClass]) {\n                if (!el.matches('[data-lazy-init]')) {\n                    this._applyTo(el, elFirstClass, this.reg[elFirstClass]);\n                }\n            }\n        }\n\n        const components = Array.from(el.querySelectorAll(this.query));\n        for (const component of components) {\n            const firstClass = component.classList[0];\n            if (!firstClass || !this.reg[firstClass]) continue;\n            if (el.matches('[data-lazy-init]')) continue;\n\n            this._applyTo(component, firstClass, this.reg[firstClass]);\n        }\n    }\n\n    /**\n     * Apply to the specific element the necessary logic\n     * @param {HTMLELement} el\n     * @returns {}\n     */\n    applyTo(el) {\n        if (el.objReference) return el.objReference;\n        if (!el.matches(this.query)) return null;\n\n        const elFirstClass = el.classList[0];\n        if (elFirstClass && this.reg[elFirstClass]) {\n            return this._applyTo(el, elFirstClass, this.reg[elFirstClass]);\n        }\n    }\n\n    /**\n     * Apply the class to the element\n     * @param {HTMLELement} el\n     * @param {string} r\n     * @param {Class<Component>} component\n     * @returns {Component} the component instance\n     */\n    _applyTo(el, r, componentClazz) {\n        if (el.objReference) return el.objReference;\n        if (!el.id) el.id = `${r}-${this.counter++}`;\n        if (el.objReference) return el.objReference;\n\n        try {\n            if (el.objCreating) throw `Recursive or Retentative apply ${r} to element ${el.id}`;\n            el.objCreating = true;\n            el.objReference = new componentClazz(r, el);\n            console.debug(`Created object ${r} to component with id ${el.id}`);\n            return el.objReference;\n        } catch (e) {\n            console.warn(`Cannot create object ${r} to element ${el.id}`, e);\n        }\n    }\n\n    /**\n     * Get class from element\n     * @param {HTMLELement} element\n     */\n    getClass(element) {\n        if (!element) return;\n        if (element.objReference) return element.objReference;\n        const result = this.applyTo(element);\n        console.debug('Requested class for element with id: ', element.id);\n        return result;\n    }\n\n    /**\n     * Reload for selector\n     */\n    reload(cmp) {\n        let classes = cmp;\n        let selector = '.' + cmp;\n        if (cmp.startsWith('.')) {\n            classes = cmp.substring(1);\n            selector = cmp;\n        }\n\n        const rootEl = document.documentElement;\n\n        let loader = this.reg[classes];\n        if (!loader) {\n            console.warn('Cannot reload ' + classes + ' - loader not found');\n            return;\n        }\n\n        //query\n        const elements = rootEl.querySelectorAll(selector);\n        for (const el of elements) {\n            if (el.objReference) {\n                el.objReference.dispose();\n                console.info(`Disposed object ${classes} to component with id ${el.id}`);\n                el.objReference = null;\n            }\n            return this._applyTo(el, classes, loader);\n        }\n    }\n\n    dispose(el) {\n        const components = Array.from(el.querySelectorAll(this.query));\n        for (const component of components) {\n            if (component.objReference) {\n                component.objReference.dispose();\n            }\n        }\n\n        if (el.matches(this.query) && el.objReference) {\n            el.objReference.dispose();\n        }\n    }\n}\n\nwindow.rcRegister = new Register();\n\n/**\n * @returns {Register} the register\n */\nexport const getRegister = () => {\n    return window.rcRegister;\n};\nexport const register = getRegister();\n","import { register } from './register';\nimport { storeManager } from './store-manager';\nimport { loadStep, nextTick } from './utils';\n\nexport class FlowManager {\n    constructor() {\n        this.dataFlow = window.dataFlow || {};\n        this.register = register;\n        this.storeManager = storeManager;\n    }\n\n    getFlowNameByStorePath(path) {\n        return /^flow\\/([^/]+).*$/g.exec(path)[1];\n    }\n\n    checkInit(initialFlow) {\n        if (initialFlow && initialFlow != 'undefined') {\n            const flowConf = typeof initialFlow == 'string' ? JSON.parse(initialFlow) : initialFlow;\n            this.startFlow(flowConf);\n        }\n    }\n\n    async startAsyncFlow({ flowName, flowSteps, options = {}, initialData = null }) {\n        return await new Promise((resolve) => {\n            this.startFlow({\n                flowName,\n                flowSteps,\n                options,\n                initialData,\n                onComplete: (name, data) => {\n                    resolve(data);\n                },\n            });\n        });\n    }\n\n    async startFlow({ flowName, flowSteps, options = {}, onComplete = null, initialData = null }) {\n        if (!flowSteps || flowSteps.length <= 0) {\n            console.warn('Cannot start flow without steps');\n            return;\n        }\n\n        try {\n            const steps = [];\n            for (const stepConf of flowSteps) {\n                const stepName = stepConf.name;\n                let stepEl = document.querySelector(`[data-name='${stepName}']`);\n                if (!stepEl) stepEl = await loadStep(stepName);\n                const stepObj = this.register.getClass(stepEl);\n                if (!stepObj) throw `Cannot get step object ${stepName}`;\n\n                steps.push({\n                    name: stepName,\n                    el: stepEl,\n                    index: stepConf.stepIndex,\n                    obj: stepObj,\n                    disableBack: stepConf.disableBack,\n                    options: stepConf.options,\n                });\n            }\n\n            await nextTick(); // always wait next tick\n            this.storeManager.emit(`flow/${flowName}`, { flowName, steps, options, onComplete });\n            this.storeManager.emit(`flow/${flowName}/data`, initialData);\n            const currentFlow = this.storeManager.get('currentFlow') || [];\n            currentFlow.unshift(flowName);\n            this.storeManager.emit('currentFlow', currentFlow);\n            this._goTo(steps[0], [], flowName);\n            console.log(`Started flow with name ${flowName}`);\n        } catch (e) {\n            console.warn(`Cannot start flow ${flowName}`, e);\n        }\n    }\n\n    /**\n     * Go To Next step ( target specifies the next step )\n     * @param {*} target\n     */\n    next(target, flowName, reset = false) {\n        const currentStep = this.storeManager.get(this._getFlowStorePath(flowName, 'activeStep'));\n        const backStack = this.storeManager.get(this._getFlowStorePath(flowName, 'backStack')) || [];\n        const flow = this.storeManager.get(this._getFlowStorePath(flowName));\n        if (!flow || !currentStep) return;\n\n        let step = null;\n        if (target) {\n            step = this._getByName(target, flowName);\n        } else {\n            const index = this._getStepIndex(flowName);\n            if (index < flow.steps.length - 1) step = flow.steps[index + 1];\n        }\n        if (!step) return;\n        backStack.push(currentStep);\n        this._goTo(step, backStack, flowName, reset);\n    }\n\n    /**\n     * Back to a previous step ( target specifies the back step )\n     * @param {*} target\n     */\n    back(target, flowName) {\n        let backStack = this.storeManager.get(this._getFlowStorePath(flowName, 'backStack')) || [];\n        if (!backStack || backStack.length <= 0) return;\n\n        const stepName = target || backStack[backStack.length - 1].name;\n\n        let step = null;\n        let i = backStack.length - 1;\n        for (i = backStack.length - 1; i >= 0; i--) {\n            const tmpStep = backStack[i];\n            if (stepName == tmpStep.name) {\n                step = tmpStep;\n                break;\n            }\n        }\n        if (!step) return;\n        backStack = backStack.slice(0, i);\n        this._goTo(step, backStack, flowName);\n    }\n\n    /**\n     * Completes the flow if no back is found or get back if there is a back stack\n     */\n    backOrComplete(flowName) {\n        const backStack = this.storeManager.get(this._getFlowStorePath(flowName, 'backStack')) || [];\n        if (backStack && backStack.length > 0) {\n            this.back(flowName);\n        } else {\n            this.complete(flowName);\n        }\n    }\n\n    complete(flowName) {\n        //close steps\n        const currentStep = this.storeManager.get(this._getFlowStorePath(flowName, 'activeStep'));\n        currentStep.obj.close();\n\n        //get flow\n        const flow = this.storeManager.get(this._getFlowStorePath(flowName));\n\n        //remove active flow\n        flowName = flowName ? flowName : this.storeManager.get('currentFlow')[0];\n        const currentFlow = this.storeManager.get('currentFlow');\n        currentFlow.splice(currentFlow.indexOf(flowName), 1);\n        this.storeManager.emit('currentFlow', currentFlow);\n\n        //trigger onComplete\n        if (flow.onComplete) flow.onComplete(flowName, this.storeManager.get(this._getFlowStorePath(flowName, 'data')));\n\n        //send complete log\n        console.log(`Completed flow: ${flowName}`);\n    }\n\n    appendDataToFlow(data, flowName) {\n        this.storeManager.emit(this._getFlowStorePath(flowName, 'data'), data, true);\n    }\n\n    getDataFromFlow(flowName) {\n        return this.storeManager.get(this._getFlowStorePath(flowName, 'data'));\n    }\n\n    getOptionsFromFlow(flowName) {\n        return this.storeManager.get(this._getFlowStorePath(flowName, 'options'));\n    }\n\n    getCurrentFlowName() {\n        return this.storeManager.get('currentFlow')[0];\n    }\n\n    _goTo(step, backStack, flowName, reset = false) {\n        if (this.storeManager.get(this._getFlowStorePath(flowName, 'activeStep'))) {\n            const obj = this.storeManager.get(this._getFlowStorePath(flowName, 'activeStep')).obj;\n            if (obj.isOpen()) {\n                obj.close();\n            }\n        }\n        this.storeManager.emit(this._getFlowStorePath(flowName, 'activeStep'), step);\n        this.storeManager.emit(this._getFlowStorePath(flowName, 'state'), this._getState(step, backStack, flowName));\n        this.storeManager.emit(this._getFlowStorePath(flowName, 'backStack'), reset ? [] : backStack);\n        step.obj.open();\n    }\n\n    _getStepIndex(flowName) {\n        const currentStep = this.storeManager.get(this._getFlowStorePath(flowName, 'activeStep'));\n        const flow = this.storeManager.get(this._getFlowStorePath(flowName));\n        if (!currentStep || !flow) return -1;\n\n        let currentStepIndex = -1;\n        let index = 0;\n        for (const step of flow.steps) {\n            if (step.name == currentStep.name) {\n                currentStepIndex = index;\n                break;\n            }\n            index++;\n        }\n        return currentStepIndex;\n    }\n\n    _getByName(name, flowName) {\n        const flow = this.storeManager.get(this._getFlowStorePath(flowName));\n        if (!flow) return null;\n        for (const step of flow.steps) {\n            if (step.name == name) {\n                return step;\n            }\n        }\n        return null;\n    }\n\n    _getState(currentStep, backStack, flowName, reset = false) {\n        const flow = this.storeManager.get(this._getFlowStorePath(flowName));\n        if (!flow) return;\n\n        const backNames = backStack.map((item) => item.name);\n\n        const result = {};\n        if (reset) return result;\n\n        let status = 'past';\n        for (const step of flow.steps) {\n            //skip if step doesn't want index\n            if (!step.index) continue;\n\n            if (step.name == currentStep.name) status = 'active';\n            else if (status == 'active') status = 'future';\n\n            const arr = result[step.index] || [];\n            arr.push({\n                name: step.name,\n                status: status == 'past' && backNames.indexOf(step.name) < 0 ? 'disabled' : status,\n                index: step.index,\n            });\n            result[step.index] = arr;\n        }\n        return result;\n    }\n\n    _getFlowStorePath(flowName, action) {\n        if (!flowName) {\n            flowName = this.storeManager.get('currentFlow')[0];\n        }\n        if (action) {\n            return `flow/${flowName}/${action}`;\n        }\n        return `flow/${flowName}`;\n    }\n}\n\nconst defaultFlowManager = new FlowManager();\nwindow.rcFlowManager = defaultFlowManager;\n\n/**\n * @returns {FlowManager} The flow manager\n */\nexport const getFlowManager = () => {\n    return window.rcFlowManager;\n};\n\nexport const flowManager = defaultFlowManager;\n","import './toast-manager.scss';\nimport { getDictionary } from './dictionary-provider';\n\nconst TYPES = ['success', 'error', 'warning', 'info'];\nconst SEMANTIC = { success: '1', error: '2', warning: '3', info: '4' };\nconst DEFAULT_DURATION = 5000;\nconst MAX_VISIBLE = 4;\nconst EXIT_MS = 350;\n\n/**\n * Toast centralizzati, in basso a destra.\n *\n * Da codice: `getToastManager().success('Salvato')`.\n * Da un evento: `window.dispatchEvent(new CustomEvent('showToast', { detail: { text, type } }))`.\n * `type` è `success` | `error` | `warning` | `info`. `duration` 0 tiene il toast finché non si chiude.\n */\nexport class ToastManager {\n    constructor() {\n        this.container = null;\n        this.items = new Map();\n        this.pending = [];\n        this.seq = 0;\n        this.listening = false;\n        this.waitingDom = false;\n        this._onShowToast = (event) => {\n            this.show(event.detail || {});\n        };\n    }\n\n    listen() {\n        if (this.listening) return;\n        this.listening = true;\n        window.addEventListener('showToast', this._onShowToast);\n    }\n\n    /**\n     * @param {string|{ text: string, type?: string, duration?: number, closable?: boolean }} textOrOptions\n     * @param {{ type?: string, duration?: number, closable?: boolean }} [extra]\n     * @returns {string|null} id del toast, null se manca il testo\n     */\n    show(textOrOptions, extra = {}) {\n        this.listen();\n        const config = this._normalize(textOrOptions, extra);\n        if (!config) return null;\n\n        const id = `toast-${++this.seq}`;\n        if (!this._ensureContainer()) {\n            this.pending.push({ id, config });\n            this._flushOnReady();\n            return id;\n        }\n        this._mount(id, config);\n        return id;\n    }\n\n    success(textOrOptions, extra = {}) {\n        return this.show(textOrOptions, { ...extra, type: 'success' });\n    }\n\n    error(textOrOptions, extra = {}) {\n        return this.show(textOrOptions, { ...extra, type: 'error' });\n    }\n\n    warning(textOrOptions, extra = {}) {\n        return this.show(textOrOptions, { ...extra, type: 'warning' });\n    }\n\n    info(textOrOptions, extra = {}) {\n        return this.show(textOrOptions, { ...extra, type: 'info' });\n    }\n\n    dismiss(id) {\n        const entry = this.items.get(id);\n        if (!entry || entry.closing) return;\n        entry.closing = true;\n        this._clearTimer(entry);\n        entry.el.classList.remove('rs1-toast__item--in');\n        entry.el.classList.add('rs1-toast__item--out');\n\n        const remove = () => {\n            if (entry.removed) return;\n            entry.removed = true;\n            entry.el.remove();\n            this.items.delete(id);\n        };\n        entry.el.addEventListener('transitionend', remove, { once: true });\n        setTimeout(remove, EXIT_MS);\n    }\n\n    dismissAll() {\n        this.pending = [];\n        for (const id of [...this.items.keys()]) this.dismiss(id);\n    }\n\n    _normalize(textOrOptions, extra) {\n        const source =\n            typeof textOrOptions === 'string'\n                ? { ...extra, text: textOrOptions }\n                : { ...(textOrOptions || {}), ...extra };\n        const text = typeof source.text === 'string' ? source.text.trim() : '';\n        if (!text) {\n            console.warn('ToastManager: missing text');\n            return null;\n        }\n        const type = TYPES.includes(source.type) ? source.type : 'info';\n        let duration = source.duration === undefined ? DEFAULT_DURATION : Number(source.duration);\n        if (!Number.isFinite(duration) || duration < 0) duration = DEFAULT_DURATION;\n        return { text, type, duration, closable: source.closable !== false };\n    }\n\n    _ensureContainer() {\n        if (this.container?.isConnected) return this.container;\n        const existing = document.getElementById('toast-container');\n        if (existing) {\n            this.container = existing;\n            return existing;\n        }\n        const host = document.querySelector('.rs1-page') || document.body;\n        if (!host) return null;\n\n        const el = document.createElement('div');\n        el.id = 'toast-container';\n        el.className = 'rs1-toast is-fixed';\n        el.setAttribute('role', 'region');\n        el.setAttribute('aria-label', getDictionary().get('Notifications'));\n        host.appendChild(el);\n        this.container = el;\n        return el;\n    }\n\n    _flushOnReady() {\n        if (this.waitingDom) return;\n        this.waitingDom = true;\n        document.addEventListener(\n            'DOMContentLoaded',\n            () => {\n                this.waitingDom = false;\n                if (!this._ensureContainer()) return;\n                const queued = this.pending;\n                this.pending = [];\n                for (const item of queued) this._mount(item.id, item.config);\n            },\n            { once: true }\n        );\n    }\n\n    _mount(id, config) {\n        this._trim();\n        const el = document.createElement('div');\n        el.className = 'rs1-toast__item';\n        el.dataset.id = id;\n        el.dataset.semanticType = SEMANTIC[config.type];\n        el.setAttribute('role', config.type === 'error' ? 'alert' : 'status');\n\n        const icon = document.createElement('div');\n        icon.className = 'rs1-toast__icon';\n        icon.setAttribute('aria-hidden', 'true');\n\n        const text = document.createElement('p');\n        text.className = 'rs1-toast__text';\n        text.textContent = config.text;\n\n        el.append(icon, text);\n        if (config.closable) {\n            const close = document.createElement('button');\n            close.type = 'button';\n            close.className = 'rs1-toast__close ec-icon-close';\n            close.setAttribute('aria-label', getDictionary().get('Close'));\n            close.addEventListener('click', () => this.dismiss(id));\n            el.append(close);\n        }\n\n        el.addEventListener('mouseenter', () => this._pause(id));\n        el.addEventListener('mouseleave', () => this._resume(id));\n        el.addEventListener('focusin', () => this._pause(id));\n        el.addEventListener('focusout', (event) => {\n            if (el.contains(event.relatedTarget)) return;\n            this._resume(id);\n        });\n\n        this.container.appendChild(el);\n        const entry = {\n            id,\n            el,\n            timer: null,\n            remaining: config.duration,\n            startedAt: 0,\n            pauses: 0,\n            closing: false,\n            removed: false,\n        };\n        this.items.set(id, entry);\n        if (config.duration > 0) this._arm(entry, config.duration);\n\n        requestAnimationFrame(() => {\n            requestAnimationFrame(() => {\n                if (!entry.removed) el.classList.add('rs1-toast__item--in');\n            });\n        });\n    }\n\n    _trim() {\n        const open = [...this.items.values()].filter((entry) => !entry.closing);\n        while (open.length >= MAX_VISIBLE) {\n            const oldest = open.shift();\n            this.dismiss(oldest.id);\n        }\n    }\n\n    _arm(entry, ms) {\n        this._clearTimer(entry);\n        entry.remaining = ms;\n        entry.startedAt = Date.now();\n        entry.timer = setTimeout(() => this.dismiss(entry.id), ms);\n    }\n\n    _clearTimer(entry) {\n        if (!entry.timer) return;\n        clearTimeout(entry.timer);\n        entry.timer = null;\n    }\n\n    _pause(id) {\n        const entry = this.items.get(id);\n        if (!entry || entry.closing || entry.remaining <= 0) return;\n        entry.pauses += 1;\n        if (entry.pauses !== 1 || !entry.timer) return;\n        entry.remaining -= Date.now() - entry.startedAt;\n        this._clearTimer(entry);\n        if (entry.remaining <= 0) this.dismiss(id);\n    }\n\n    _resume(id) {\n        const entry = this.items.get(id);\n        if (!entry || entry.closing || entry.remaining <= 0) return;\n        entry.pauses = Math.max(0, entry.pauses - 1);\n        if (entry.pauses > 0 || entry.timer) return;\n        this._arm(entry, entry.remaining);\n    }\n}\n\nconst defaultToastManager = new ToastManager();\nwindow.rcToastManager = defaultToastManager;\n\n/**\n * @returns {ToastManager}\n */\nexport const getToastManager = () => {\n    return window.rcToastManager;\n};\n\nexport const toastManager = defaultToastManager;\n","import Component from '../../../../../libs/components/component';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\nimport './style.scss';\n\nexport default class Cta extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        // constants\n        this.VARIANT = {\n            primary: 'primary',\n            secondary: 'secondary',\n            tertiary: 'tertiary',\n            semantic: 'semantic',\n            link: 'link',\n            social: 'social',\n        };\n        this.TYPE = {\n            left: 'left',\n            none: 'none',\n            right: 'right',\n            circle: 'circle',\n            square: 'square',\n        };\n        this.SIZE = {\n            small: 'small',\n            medium: 'medium',\n            large: 'large',\n        };\n        this.STATUS = {\n            enabled: 'enabled',\n            disabled: 'disabled',\n            success: 'success',\n        };\n        this.ENABLED_TYPE = {\n            neutralDark: 'neutralDark',\n            neutralLight: 'neutralLight',\n        };\n        this.SEMANTIC_TYPE = {\n            1: '1',\n            2: '2',\n            3: '3',\n            4: '4',\n        };\n        this.SOCIAL_TYPE = {\n            google: 'google',\n            facebook: 'facebook',\n            apple: 'apple',\n        };\n\n        this.variant = this.root.dataset.variant;\n        this.initialIcon = this.root.dataset.icon;\n        this.link = this.root.dataset.link;\n        this.icons = this._dEl('icon', true);\n        this.label = this._dEl('label');\n\n        // aggiunto per hover:\n        this.ctaHoverColor = this.root.getAttribute('cta-hover-color');\n        this.originalCtaColor = this.root.style.backgroundColor || '';\n\n        this._hover(); // inizializza gli eventi hover\n    }\n\n    setStatus(status = this.STATUS.enabled) {\n        if (status === this.getStatus()) return;\n        if (status === this.STATUS.enabled) {\n            this.root.classList.remove(this._status(this.variant, this.root.dataset.status));\n            this.root.removeAttribute('data-status');\n        }\n        if (!this.variant) return;\n        if (!Object.values(this.VARIANT).includes(this.variant)) return;\n        if (!Object.values(this.STATUS).includes(status)) return;\n        this.root.classList.remove(this._status(this.variant, this.root.dataset.status));\n        if (status === this.STATUS.success) {\n            this._resetEnabled();\n            if (this.initialIcon) {\n                //this.root.setAttribute('data-icon', 'check');\n                this.icons.forEach((icon) => {\n                    icon.classList.remove(`ec-icon-${this.initialIcon}`);\n                    icon.classList.add('ec-icon-check');\n                });\n            }\n        }\n        this.root.setAttribute('data-status', status);\n        this.root.classList.add(this._status(this.variant, this.root.dataset.status));\n    }\n\n    getStatus() {\n        return this.root.dataset.status || this.STATUS.enabled;\n    }\n\n    setSize(size) {\n        if (!size || !Object.keys(this.SIZE).includes(size)) return;\n        Object.keys(this.SIZE)\n            .filter((s) => s !== size)\n            .forEach((s) => this.root.classList.remove(this._mod(this.SIZE[s])));\n        this.root.classList.add(this._mod(this.SIZE[size]));\n    }\n\n    setIcon(icon) {\n        if (!icon) return;\n        this.root.setAttribute('data-icon', icon);\n        this.icons.forEach((iconEl) => {\n            const prev = Array.from(iconEl.classList).filter((clazz) => clazz.includes('ec-icon'))[0];\n            if (prev) iconEl.classList.remove(prev);\n            iconEl.classList.add(icon);\n        });\n    }\n\n    setLabel(label) {\n        if (label == null || label == undefined || label == '') return;\n        const translated = getDictionary().get(label);\n        if (this.root.hasAttribute('aria-label')) this.root.setAttribute('aria-label', translated);\n        this.label.innerText = translated;\n    }\n\n    _status(variant, status) {\n        if (!Object.values(this.VARIANT).includes(variant)) return;\n        if (!Object.values(this.STATUS).includes(status)) return;\n        return `${this.getName()}-${variant}--${status}`;\n    }\n\n    _enabledType(variant, enabledType) {\n        if (!Object.values(this.VARIANT).includes(variant)) return;\n        if (!Object.values(this.ENABLED_TYPE).includes(enabledType)) return;\n        return `${this.getName()}-${variant}--${enabledType}`;\n    }\n\n    _resetEnabled() {\n        this.root.classList.remove(this._enabledType(this.variant, this.ENABLED_TYPE.neutralDark));\n        this.root.classList.remove(this._enabledType(this.variant, this.ENABLED_TYPE.neutralLight));\n    }\n\n    _var(variant, elName, all = false) {\n        if (all) {\n            return Array.from(this.root.querySelectorAll(`.${this.getSelector()}-${variant}__${elName}`));\n        } else {\n            return this.root.querySelector(`.${this.getSelector()}-${variant}__${elName}`);\n        }\n    }\n\n    _hover(){\n        let hoverColor = this.ctaHoverColor;\n        \n        // if there is no hover color but it is primary, use the original color with alpha 0.9\n        if (!hoverColor && this.variant === 'primary' && this.originalCtaColor) {\n            hoverColor = this._applyAlpha(this.originalCtaColor, 0.9);\n        }\n        \n        if (!hoverColor) return;\n\n        this.root.addEventListener('mouseover', ()=>{\n            this.root.style.backgroundColor = hoverColor;\n        });\n\n        this.root.addEventListener('mouseout', ()=>{\n            this.root.style.backgroundColor = this.originalCtaColor;\n        });\n    }\n\n    _applyAlpha(color, alpha) {\n        // if it is hex, convert to rgba\n        if (color.startsWith('#')) {\n            const hex = color.slice(1);\n            const num = parseInt(hex, 16);\n            const r = (num >> 16) & 255;\n            const g = (num >> 8) & 255;\n            const b = num & 255;\n            return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n        }\n        \n        // if it is rgb, convert to rgba\n        if (color.startsWith('rgb(')) {\n            return color.replace('rgb(', 'rgba(').replace(')', `, ${alpha})`);\n        }\n        \n        // if it is rgba, update the alpha\n        if (color.startsWith('rgba(')) {\n            return color.replace(/[\\d.]+\\)$/, `${alpha})`);\n        }\n        \n        return color;\n    }\n}\n\n\n","import Component from './component';\n\nexport default class ValidableComponent extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        // constants\n        this.VALID = this._mod('validState');\n        this.ERROR = this._mod('errorState');\n        this.WARNING = this._mod('warningState');\n\n        if (!this.root.hasAttribute('data-is-validable')) {\n            throw 'A validable component need to hava a data-is-validable on root element';\n        }\n    }\n\n    _getInput() {\n        throw 'Method need to be implemented by subclasses';\n    }\n\n    getInput(){\n        return this._getInput();\n    }\n\n    getLabel() {\n        return this._getInput().placeholder;\n    }\n\n    getName() {\n        return this._getInput().name;\n    }\n\n    getValue() {\n        return this._getInput().value;\n    }\n\n    setValue(value){\n        this._getInput().value = value;\n        this._changedInput();\n    }\n\n    isValid() {\n        return this._getInput().validity.valid || (!this._getInput().required && !this._getInput().value);\n    }\n\n    checkValidity() {\n        const valid = this.isValid();\n        if (valid) {\n            this.setState('valid');\n        } else {\n            this.setState('error');\n        }\n        return valid;\n    }\n\n    setState(code) {\n        const input = this._getInput();\n\n        switch (code) {\n            case 'error':\n                this.root.classList.add(this.ERROR);\n                this.root.classList.remove(this.VALID);\n                this.root.classList.remove(this.WARNING);\n                if (input) input.setCustomValidity(' ');\n                break;\n            case 'warning':\n                this.root.classList.add(this.WARNING);\n                this.root.classList.remove(this.VALID);\n                this.root.classList.remove(this.ERROR);\n                if (input) input.setCustomValidity('');\n                break;\n            case 'valid':\n                this.root.classList.add(this.VALID);\n                this.root.classList.remove(this.ERROR);\n                this.root.classList.remove(this.WARNING);\n                if (input) input.setCustomValidity('');\n                break;\n            case 'undefined':\n            default:\n                this.root.classList.remove(this.VALID);\n                this.root.classList.remove(this.ERROR);\n                this.root.classList.remove(this.WARNING);\n                if (input) input.setCustomValidity('');\n                break;\n        }\n    }\n\n    _checkState() {\n        const input = this._getInput();\n        if (input) input.setCustomValidity('');\n\n        if (!this.isValid() && this.getValue()) {\n            this.setState('error');\n        } else if (this.isValid() && this.getValue()) {\n            this.setState('valid');\n        } else {\n            this.setState('');\n        }\n    }\n\n    _changedInput() {\n        const data = {\n            valid: this.isValid(),\n            value: this.getValue(),\n            label: this.getLabel(),\n        };\n\n        const event = new CustomEvent('rcInputChanged', { bubbles: true });\n        event.data = data;\n        this.root.dispatchEvent(event);\n\n        //console.debug(`Changed data for ${this.root.getAttribute('id')}`, data);\n    }\n\n    reset() {\n        this._getInput().value = '';\n        this.setState('');\n    }\n\n    trackFormError(errorText = null) {\n        const form = {\n            errorField: this.getName(),\n        };\n        if (errorText != null) form.errorText = errorText;\n        const event = new CustomEvent('rcFormError', { bubbles: true });\n        event.data = form;\n        this.root.dispatchEvent(event);\n    }\n}\n","import './style.scss';\nimport ValidableComponent from '../../../../../libs/components/validable-component';\n\nexport default class Checkbox extends ValidableComponent {\n    constructor(name, root) {\n        super(name, root);\n        this.label = this._dEl('label');\n        this.input = this._dEl('input');\n        this.error = this._dEl('error');\n\n        this._addEventListeners();\n    }\n\n    _getInput() {\n        return this.input;\n    }\n\n    /* override */\n    getValue() {\n        return this.input.checked ? this.input.value : null;\n    }\n\n    /* override */\n    getLabel() {\n        return this.label.dataset.label;\n    }\n\n    _addEventListeners() {\n\n        this._addListener(\n            'keypress',\n            (event) => {\n                if (!(event.key == 'Enter')) return;\n                this.label.click();\n                this.label.focus();\n            },\n            this.label\n        );\n\n        this._addListener(\n            'change',\n            (event) => {\n                event.preventDefault();\n                this._checkState();\n                this._changedInput();\n            },\n            this.input\n        );\n\n        this._addListener(\n            'invalid',\n            () => {\n                if(this.error) {\n                    this.setState('error');\n                    this._requireField();\n                }\n            },\n            this.input\n        );\n\n        /* hide default browser error popup on enter pressed */\n        this._addListener(\n            'invalid',\n            () => {\n                this._checkState();\n            },\n            this.root,\n            true\n        );\n    }\n\n    _requireField() {\n        this.error.innerText = 'Campo obbligatorio';\n    }\n\n    isValid() {\n        return this.input.required\n            ? this.input.validity.valid && !this.input.validity.valueMissing\n            : this.input.validity.valid || this.input.validity.valueMissing;\n    }\n\n    reset() {\n        this.input.checked = false;\n        this.setState('');\n    }\n}\n\n","import './style.scss';\nimport ValidableComponent from '../../../../../libs/components/validable-component';\n\nexport default class Radio extends ValidableComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        this.inputs = this._dEl('input', true);\n        this.labels = this._dEl('radioLabel', true);\n        this.emptyInput = this._dEl('empty');\n        setTimeout(() => {\n            if (this.emptyInput) this.emptyInput.checked = false;\n        }, 500);\n        this.groupLabel = this._dEl('label');\n        this.error = this._dEl('error');\n\n        this._initEmptyInput();\n        this._addEventListeners();\n    }\n\n    _getInput() {\n        return this.inputs.filter((radio) => radio.checked)[0];\n    }\n    _initEmptyInput() {\n        if (!this._getInput()) this.emptyInput.checked = true;\n    }\n\n    _addEventListeners() {\n\n        this.labels.forEach((label) => {\n            this._addListener(\n                'keydown',\n                (event) => {\n                    if (!(event.key == 'Enter')) return;\n                    label.click();\n                    label.focus();\n                },\n                label\n            );\n        });\n\n        this.inputs.forEach((input) => {\n            this._addListener(\n                'change',\n                (event) => {\n                    event.preventDefault();\n                    this._checkState();\n                    this._changedInput();\n                },\n                input\n            );\n            this._addListener(\n                'invalid',\n                () => {\n                    this.setState('error');\n                    this._requireField();\n                },\n                input,\n                true\n            );\n        });\n\n        /* hide default browser error popup on enter pressed */\n        this._addListener(\n            'invalid',\n            () => {\n                this._checkState();\n            },\n            this.root,\n            true\n        );\n    }\n\n    getLabel() {\n        return this.groupLabel;\n    }\n\n    getName() {\n        return this.root.dataset.name;\n    }\n\n    getValue() {\n        const checked = this.inputs.filter((radio) => radio.checked);\n        return checked.length <= 0 ? '' : checked[0].value;\n    }\n\n    isValid() {\n        if (this.emptyInput.required && this.emptyInput.checked) return false;\n        return !this.emptyInput.required || (this.emptyInput.required && this.getValue());\n    }\n\n    reset() {\n        this.inputs.forEach((input) => {\n            input.checked = false;\n        });\n        this.emptyInput.checked = true;\n        this.setState('');\n    }\n\n    enable() {\n        this.inputs.forEach((input) => {\n            input.disabled = false;\n        });\n        this.root.querySelectorAll(this._el('radioLabel', true))?.forEach((label) => {\n            label.classList.remove(this._elMod('radioLabel','disabled'));\n        });\n    }\n    disable() {\n        if (this._dEl('radioLabel')?.classList.contains(this._elMod('radioLabel','disabled'))) return;\n        this.inputs.forEach((input) => {\n            input.disabled = true;\n        });\n        this.root.querySelectorAll(this._el('radioLabel', true))?.forEach((label) => {\n            label.classList.add(this._elMod('radioLabel','disabled'));\n        });\n    }\n\n    _requireField() {\n        this.error.innerText = 'Campo obbligatorio';\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class Toggle extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        // constants\n        this.CHECKED = this._mod('checked');\n\n        this.input = this._dEl('input');\n        this.label = this._dEl('label');\n\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        \n        this._addListener(\n            'keypress',\n            (event) => {\n                if (!(event.key == 'Enter')) return;\n                this.label.click();\n                this.label.focus();\n            },\n            this.label\n        );\n\n        this._addListener(\n            'change', \n            () => {\n                this.input.checked ? this.root.classList.add(this.CHECKED) : this.root.classList.remove(this.CHECKED);\n            },\n            this.input\n        );\n    }\n}\n\n\n","import './style.scss';\nimport ValidableComponent from '../../../../../libs/components/validable-component';\n\nexport default class Tag extends ValidableComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        // constants\n        this.ICON = this._mod('icon');\n        this.DISABLED = this._mod('disabled');\n        this.SELECTED = this._mod('selected');\n\n        this.input = this._dEl('input');\n        this.labelText = this._dEl('labelText');\n        this.remove = this.labelText.querySelector('span[data-icon]');\n\n        this._addEventListeners();\n    }\n\n    _getInput() {\n        return this.input;\n    }\n\n    /* override */\n    getValue() {\n        return this.input.checked ? this.input.value : null;\n    }\n\n    /* override */\n    getLabel() {\n        return this.labelText.textContent;\n    }\n\n    _addEventListeners() {\n\n        this._addListener(\n            'keypress',\n            (event) => {\n                if (!(event.key == 'Enter')) return;\n                this.root.click();\n                this.root.focus();\n            }\n        );\n\n        this._addListener(\n            'change',\n            (event) => {\n                event.preventDefault();\n                this._checkState();\n                this._changedInput();\n            },\n            this.input\n        );\n\n        if (this.remove) {\n            this._addListener(\n                'click',\n                (event) => {\n                    event.preventDefault();\n                    this.root.remove();\n                },\n                this.remove\n            );\n        }\n\n        /* hide default browser error popup on enter pressed */\n        this._addListener(\n            'invalid',\n            () => {\n                this._checkState();\n            },\n            this.root,\n            true\n        );\n    }\n\n    isSelected() {\n        return this.input.checked;\n    }\n\n    select(sendChangedInputEvent = true) {\n        this.input.checked = true;\n        if (!sendChangedInputEvent) return;\n        this._checkState();\n        this._changedInput();\n    }\n\n    unselect(sendChangedInputEvent = true) {\n        this.input.checked = false;\n        if (!sendChangedInputEvent) return;\n        this._checkState();\n        this._changedInput();\n    }\n\n    setDisabled(disabled = true) {\n        this.input.checked = false;\n        disabled ? this.root.classList.add(this.DISABLED) : this.root.classList.remove(this.DISABLED);\n    }\n}\n\n\n","import './style.scss';\nimport ValidableComponent from '../../../../../libs/components/validable-component';\nimport { generateTooltip } from '../../../../../libs/utils';\n\nexport default class TextField extends ValidableComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        this.input = this._dEl('input');\n        this.error = this._dEl('error');\n        this.info = this._dEl('info');\n        this.tooltipId = null;\n\n        if (this.root.hasAttribute('data-tooltip-text')) {\n            this.setTooltip(this.root.dataset.tooltipText);\n        }\n\n        this.invalidFieldLabel = this.root.dataset.invalidFieldLabel || 'Campo non valido';\n        this.validationsMap = this._readValidationsMap();\n        this._addEventListeners();\n    }\n\n    _readValidationsMap() {\n        const raw = this.root.dataset.validationsMap;\n        if (!raw) return null;\n        try {\n            const parsed = JSON.parse(raw);\n            if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return null;\n            return parsed;\n        } catch (error) {\n            console.warn('Cannot parse validationsMap', error);\n            return null;\n        }\n    }\n\n    _validationMessage(value) {\n        if (!this.validationsMap || value == null || value === '') return null;\n        for (const [regex, message] of Object.entries(this.validationsMap)) {\n            if (!message) continue;\n            let re;\n            try {\n                re = new RegExp(regex);\n            } catch {\n                continue;\n            }\n            if (!re.test(value)) return message;\n        }\n        return null;\n    }\n\n    _checkState() {\n        super._checkState();\n        if (this.getValue() && this._validationMessage(this.getValue())) {\n            this.setState('error');\n        }\n    }\n\n    _getInput() {\n        return this.input;\n    }\n\n    isDisabled() {\n        return Boolean(this.input?.disabled);\n    }\n\n    enable() {\n        if (!this.input) return;\n        this.input.disabled = false;\n        this.root.classList.remove('rt008-text-field--disabled');\n    }\n\n    disable() {\n        if (!this.input) return;\n        this.input.disabled = true;\n        this.root.classList.add('rt008-text-field--disabled');\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            ['keyup', 'change', 'input'],\n            () => {\n                this._checkState();\n                if (this.root.classList.contains(this.ERROR)) {\n                    this._invalidField();\n                }\n                this._changedInput();\n            },\n            this.input\n        );\n\n        this._addListener(\n            'focusout',\n            () => {\n                if (this.input.required && this.input.value == '') {\n                    this.setState('error');\n                    this._requireField();\n                }\n            },\n            this.input\n        );\n\n        /* hide default browser error popup on enter pressed */\n        this._addListener(\n            'invalid',\n            () => {\n                this._checkState();\n                if (this.root.classList.contains(this.ERROR)) {\n                    this._invalidField();\n                } else if (this.input.required && this.input.value == '') {\n                    this.setState('error');\n                    this._requireField();\n                }\n            },\n            this.root,\n            true\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                const event = new CustomEvent('showTooltip', { bubbles: true });\n                event.data = { \n                    show: true,\n                    tooltipIcon: this.info,\n                };\n                document.getElementById(this.getTooltipId())?.dispatchEvent(event);\n            },\n            this.info\n        );\n    }\n\n    _requireField() {\n        this.error.innerText = 'Campo obbligatorio';\n    }\n\n    _invalidField() {\n        this.error.innerText = this._validationMessage(this.input?.value) || this.invalidFieldLabel;\n    }\n\n    getTooltipId() {\n        return this.tooltipId;\n    }\n\n    \n\n    async setTooltip(html, extraClasses = null) {\n        if (this.tooltipId != null) document.getElementById(this.tooltipId)?.remove();\n        this.tooltipId = await generateTooltip(html, extraClasses);\n    }\n}\n\n\n","import './style.scss';\nimport ValidableComponent from '../../../../../libs/components/validable-component';\n\nexport default class DatePicker extends ValidableComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        // constants\n        this.currentYear = parseInt(new Date().getFullYear());\n\n        this.input = this._dEl('input');\n        this.inputTitle = this.input.title;\n        this.optional = this._dEl('optional');\n        this.showCalendar = this._dEl('showCalendar');\n        this.error = this._dEl('error');\n\n        this._init();\n    }\n\n    async _init() {\n        const { Datepicker } = await import('vanillajs-datepicker');\n        const itModule = await import('vanillajs-datepicker/locales/it');\n        Object.assign(Datepicker.locales, itModule.default);\n\n        this.datepicker = new Datepicker(this.input, {\n            format: 'd-m-yyyy',\n            showOnClick: false,\n            showOnFocus: false,\n            autohide: true,\n            orientation: 'auto auto',\n            language: document.documentElement.lang || 'en',\n        });\n\n        this._setAdditionalOptions();\n        this.input.removeAttribute('title');\n\n        this._addEventListeners();\n    }\n\n    _getInput() {\n        return this.input;\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            ['keyup', 'change', 'input'],\n            () => {\n                this._checkState();\n                if (this.root.classList.contains(this.ERROR)) {\n                    this._invalidField();\n                }\n                this._changedInput();\n            },\n            this.input\n        );\n\n        this._addListener(\n            'click',\n            (event) => {\n                event.preventDefault();\n                this.datepicker.show();\n            },\n            'showCalendar'\n        );\n\n        this._addListener(\n            'focusout',\n            () => {\n                if (this.datepicker.active) return;\n                if (this.input.required && this.input.value == '') {\n                    this.setState('error');\n                    this._requireField();\n                }\n                this._checkState();\n            },\n            this.input\n        );\n\n        /* hide default browser error popup on enter pressed */\n        this._addListener(\n            'invalid',\n            () => {\n                this._checkState();\n                if (this.root.classList.contains(this.ERROR)) {\n                    this._invalidField();\n                }\n            },\n            this.root,\n            true\n        );\n    }\n\n    _setAdditionalOptions() {\n        if (this.root.hasAttribute('data-future-disabled')) {\n            const futureDisabled = (date) => {\n                return date.getTime() < new Date().getTime();\n            };\n            this.datepicker.setOptions({\n                beforeShowDay: futureDisabled,\n                beforeShowMonth: futureDisabled,\n                beforeShowYear: futureDisabled,\n                beforeShowDecade: futureDisabled,\n            });\n        }\n        if (this.root.hasAttribute('data-start-from-decades')) {\n            this.datepicker.setOptions({\n                startView: 3,\n            });\n        }\n    }\n\n    _requireField() {\n        this.error.innerText = 'Campo obbligatorio';\n    }\n\n    _invalidField() {\n        this.error.innerText = 'Campo non valido';\n    }\n\n    /* override */\n    _checkState() {\n        if (!this._isDateValid(this.getValue())) {\n            this.setState('error');\n            this.input.title = this.inputTitle;\n        } else if (this.getValue() && this._isDateValid(this.getValue())) {\n            this.setState('valid');\n            this.input.title = '';\n        } else {\n            this.setState('');\n        }\n    }\n\n    /* override */\n    isValid() {\n        return super.isValid() && this._isDateValid(this.getValue());\n    }\n\n    _isDateValid(value) {\n        if (!this._getInput().required && value == '') return true;\n        if (this._getInput().required && !value) return false;\n        try {\n            const split = value.split('-');\n            const date = new Date(\n                split\n                    .map((s) => (s.length == 1 ? `0${s}` : s))\n                    .reverse()\n                    .join('-')\n            );\n            if (this.root.hasAttribute('data-future-disabled') && !(date.getTime() < new Date().getTime()))\n                return false;\n            const dd = parseInt(split[0], 10);\n            const mm = parseInt(split[1], 10);\n            const yyyy = parseInt(split[2], 10);\n            /* if flag excludeMinors is active, exclude the latest 18 years */\n            if (this.root.hasAttribute('data-exclude-minors') && yyyy > this.currentYear - 18) {\n                return false;\n            }\n            /* Create list of days of a month [assume there is no leap year by default] */\n            const monthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n            if (mm == 1 || mm > 2) {\n                if (dd > monthDays[mm - 1]) return false;\n            }\n            if (mm == 2) {\n                let leapYear = (!(yyyy % 4) && yyyy % 100) || !(yyyy % 400);\n                if (!leapYear && dd >= 29) return false;\n                if (leapYear && dd > 29) return false;\n            }\n            return true;\n        } catch (error) {\n            return false;\n        }\n    }\n\n    setRequired(required = true) {\n        const prev = this.input.required;\n        if (required === prev || (required !== true && required !== false)) return;\n        this.input.required = required === true;\n        required\n            ? this.optional.classList.add(this._elMod('optional', 'hidden'))\n            : this.optional.classList.remove(this._elMod('optional', 'hidden'));\n        this.setState('');\n        //this._checkState();\n        this._changedInput();\n    }\n}\n\n\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n\nvar isEqual = /*@__PURE__*/getDefaultExportFromCjs(fastDeepEqual);\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n *      Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DEFAULT_ID = \"__googleMapsScriptId\";\n/**\n * The status of the [[Loader]].\n */\nvar LoaderStatus;\n(function (LoaderStatus) {\n    LoaderStatus[LoaderStatus[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n    LoaderStatus[LoaderStatus[\"LOADING\"] = 1] = \"LOADING\";\n    LoaderStatus[LoaderStatus[\"SUCCESS\"] = 2] = \"SUCCESS\";\n    LoaderStatus[LoaderStatus[\"FAILURE\"] = 3] = \"FAILURE\";\n})(LoaderStatus || (LoaderStatus = {}));\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n *   apiKey: \"\",\n *   version: \"weekly\",\n *   libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n *   const map = new google.maps.Map(...)\n * })\n * ```\n */\nclass Loader {\n    /**\n     * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n     * using this library, instead the defaults are set by the Google Maps\n     * JavaScript API server.\n     *\n     * ```\n     * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n     * ```\n     */\n    constructor({ apiKey, authReferrerPolicy, channel, client, id = DEFAULT_ID, language, libraries = [], mapIds, nonce, region, retries = 3, url = \"https://maps.googleapis.com/maps/api/js\", version, }) {\n        this.callbacks = [];\n        this.done = false;\n        this.loading = false;\n        this.errors = [];\n        this.apiKey = apiKey;\n        this.authReferrerPolicy = authReferrerPolicy;\n        this.channel = channel;\n        this.client = client;\n        this.id = id || DEFAULT_ID; // Do not allow empty string\n        this.language = language;\n        this.libraries = libraries;\n        this.mapIds = mapIds;\n        this.nonce = nonce;\n        this.region = region;\n        this.retries = retries;\n        this.url = url;\n        this.version = version;\n        if (Loader.instance) {\n            if (!isEqual(this.options, Loader.instance.options)) {\n                throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(Loader.instance.options)}`);\n            }\n            return Loader.instance;\n        }\n        Loader.instance = this;\n    }\n    get options() {\n        return {\n            version: this.version,\n            apiKey: this.apiKey,\n            channel: this.channel,\n            client: this.client,\n            id: this.id,\n            libraries: this.libraries,\n            language: this.language,\n            region: this.region,\n            mapIds: this.mapIds,\n            nonce: this.nonce,\n            url: this.url,\n            authReferrerPolicy: this.authReferrerPolicy,\n        };\n    }\n    get status() {\n        if (this.errors.length) {\n            return LoaderStatus.FAILURE;\n        }\n        if (this.done) {\n            return LoaderStatus.SUCCESS;\n        }\n        if (this.loading) {\n            return LoaderStatus.LOADING;\n        }\n        return LoaderStatus.INITIALIZED;\n    }\n    get failed() {\n        return this.done && !this.loading && this.errors.length >= this.retries + 1;\n    }\n    /**\n     * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n     *\n     * @ignore\n     * @deprecated\n     */\n    createUrl() {\n        let url = this.url;\n        url += `?callback=__googleMapsCallback&loading=async`;\n        if (this.apiKey) {\n            url += `&key=${this.apiKey}`;\n        }\n        if (this.channel) {\n            url += `&channel=${this.channel}`;\n        }\n        if (this.client) {\n            url += `&client=${this.client}`;\n        }\n        if (this.libraries.length > 0) {\n            url += `&libraries=${this.libraries.join(\",\")}`;\n        }\n        if (this.language) {\n            url += `&language=${this.language}`;\n        }\n        if (this.region) {\n            url += `&region=${this.region}`;\n        }\n        if (this.version) {\n            url += `&v=${this.version}`;\n        }\n        if (this.mapIds) {\n            url += `&map_ids=${this.mapIds.join(\",\")}`;\n        }\n        if (this.authReferrerPolicy) {\n            url += `&auth_referrer_policy=${this.authReferrerPolicy}`;\n        }\n        return url;\n    }\n    deleteScript() {\n        const script = document.getElementById(this.id);\n        if (script) {\n            script.remove();\n        }\n    }\n    /**\n     * Load the Google Maps JavaScript API script and return a Promise.\n     * @deprecated, use importLibrary() instead.\n     */\n    load() {\n        return this.loadPromise();\n    }\n    /**\n     * Load the Google Maps JavaScript API script and return a Promise.\n     *\n     * @ignore\n     * @deprecated, use importLibrary() instead.\n     */\n    loadPromise() {\n        return new Promise((resolve, reject) => {\n            this.loadCallback((err) => {\n                if (!err) {\n                    resolve(window.google);\n                }\n                else {\n                    reject(err.error);\n                }\n            });\n        });\n    }\n    importLibrary(name) {\n        this.execute();\n        return google.maps.importLibrary(name);\n    }\n    /**\n     * Load the Google Maps JavaScript API script with a callback.\n     * @deprecated, use importLibrary() instead.\n     */\n    loadCallback(fn) {\n        this.callbacks.push(fn);\n        this.execute();\n    }\n    /**\n     * Set the script on document.\n     */\n    setScript() {\n        var _a, _b;\n        if (document.getElementById(this.id)) {\n            // TODO wrap onerror callback for cases where the script was loaded elsewhere\n            this.callback();\n            return;\n        }\n        const params = {\n            key: this.apiKey,\n            channel: this.channel,\n            client: this.client,\n            libraries: this.libraries.length && this.libraries,\n            v: this.version,\n            mapIds: this.mapIds,\n            language: this.language,\n            region: this.region,\n            authReferrerPolicy: this.authReferrerPolicy,\n        };\n        // keep the URL minimal:\n        Object.keys(params).forEach(\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        (key) => !params[key] && delete params[key]);\n        if (!((_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.importLibrary)) {\n            // tweaked copy of https://developers.google.com/maps/documentation/javascript/load-maps-js-api#dynamic-library-import\n            // which also sets the base url, the id, and the nonce\n            /* eslint-disable */\n            ((g) => {\n                // @ts-ignore\n                let h, a, k, p = \"The Google Maps JavaScript API\", c = \"google\", l = \"importLibrary\", q = \"__ib__\", m = document, b = window;\n                // @ts-ignore\n                b = b[c] || (b[c] = {});\n                // @ts-ignore\n                const d = b.maps || (b.maps = {}), r = new Set(), e = new URLSearchParams(), u = () => \n                // @ts-ignore\n                h || (h = new Promise((f, n) => __awaiter(this, void 0, void 0, function* () {\n                    var _a;\n                    yield (a = m.createElement(\"script\"));\n                    a.id = this.id;\n                    e.set(\"libraries\", [...r] + \"\");\n                    // @ts-ignore\n                    for (k in g)\n                        e.set(k.replace(/[A-Z]/g, (t) => \"_\" + t[0].toLowerCase()), g[k]);\n                    e.set(\"callback\", c + \".maps.\" + q);\n                    a.src = this.url + `?` + e;\n                    d[q] = f;\n                    a.onerror = () => (h = n(Error(p + \" could not load.\")));\n                    // @ts-ignore\n                    a.nonce = this.nonce || ((_a = m.querySelector(\"script[nonce]\")) === null || _a === void 0 ? void 0 : _a.nonce) || \"\";\n                    m.head.append(a);\n                })));\n                // @ts-ignore\n                d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : (d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)));\n            })(params);\n            /* eslint-enable */\n        }\n        // While most libraries populate the global namespace when loaded via bootstrap params,\n        // this is not the case for \"marker\" when used with the inline bootstrap loader\n        // (and maybe others in the future). So ensure there is an importLibrary for each:\n        const libraryPromises = this.libraries.map((library) => this.importLibrary(library));\n        // ensure at least one library, to kick off loading...\n        if (!libraryPromises.length) {\n            libraryPromises.push(this.importLibrary(\"core\"));\n        }\n        Promise.all(libraryPromises).then(() => this.callback(), (error) => {\n            const event = new ErrorEvent(\"error\", { error }); // for backwards compat\n            this.loadErrorCallback(event);\n        });\n    }\n    /**\n     * Reset the loader state.\n     */\n    reset() {\n        this.deleteScript();\n        this.done = false;\n        this.loading = false;\n        this.errors = [];\n        this.onerrorEvent = null;\n    }\n    resetIfRetryingFailed() {\n        if (this.failed) {\n            this.reset();\n        }\n    }\n    loadErrorCallback(e) {\n        this.errors.push(e);\n        if (this.errors.length <= this.retries) {\n            const delay = this.errors.length * Math.pow(2, this.errors.length);\n            console.error(`Failed to load Google Maps script, retrying in ${delay} ms.`);\n            setTimeout(() => {\n                this.deleteScript();\n                this.setScript();\n            }, delay);\n        }\n        else {\n            this.onerrorEvent = e;\n            this.callback();\n        }\n    }\n    callback() {\n        this.done = true;\n        this.loading = false;\n        this.callbacks.forEach((cb) => {\n            cb(this.onerrorEvent);\n        });\n        this.callbacks = [];\n    }\n    execute() {\n        this.resetIfRetryingFailed();\n        if (this.done) {\n            this.callback();\n        }\n        else {\n            // short circuit and warn if google.maps is already loaded\n            if (window.google && window.google.maps && window.google.maps.version) {\n                console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader.\" +\n                    \"This may result in undesirable behavior as options and script parameters may not match.\");\n                this.callback();\n                return;\n            }\n            if (this.loading) ;\n            else {\n                this.loading = true;\n                this.setScript();\n            }\n        }\n    }\n}\n\nexport { DEFAULT_ID, Loader, LoaderStatus };\n//# sourceMappingURL=index.mjs.map\n","import { Loader } from '@googlemaps/js-api-loader';\nimport { buildWaitForEvent } from './utils';\n\nconst gMapsLoaded = buildWaitForEvent('gMapsLoaded');\n\nexport class GMapsHelper {\n    constructor() {\n        this.loader = new Loader({\n            apiKey: window.gMapsApi,\n            version: 'weekly',\n            libraries: ['places'],\n        });\n        this.status = 'unloaded';\n    }\n\n    async getGMaps() {\n        if (this.status == 'loaded') {\n            return window.google.maps;\n        } else if (this.status == 'loading') {\n            await gMapsLoaded(document.body);\n            return window.google.maps;\n        } else if (this.status == 'unloaded') {\n            this.status = 'loading';\n            try {\n                await this.loadGMaps();\n                this.status = 'loaded';\n                return window.google.maps;\n            } catch (error) {\n                console.error(error);\n                this.status = 'error';\n            }\n        } else {\n            console.error('Cannot get gmaps js api');\n        }\n    }\n\n    async loadGMaps() {\n        await this.loader.load();\n        const event = new CustomEvent('gMapsLoaded');\n        document.body.dispatchEvent(event);\n    }\n\n    async getMarkerClusterer() {\n        const markerModule = await import('@googlemaps/markerclusterer');\n        return markerModule.MarkerClusterer;\n    }\n}\n\n/**\n * Get the current GMapsHelper\n * @returns {GMapsHelper}\n */\nexport const getGMapsHelper = () => {\n    if (!window.rcGMapsHelper) {\n        window.rcGMapsHelper = new GMapsHelper();\n    }\n    return window.rcGMapsHelper;\n};\n","import { ApiProvider } from './api-provider';\n\nclass MyConadApiProvider extends ApiProvider {\n    constructor() {\n        super();\n        const serviceLang = document.documentElement.dataset.serviceLang || 'it-it';\n        this.baseUrl = `${window.myConadDomain}/api/myconad/${serviceLang}`;\n\n        this.urlMap = {\n            all: this.baseUrl + '.%%.json',\n            regolamentolink: this.baseUrl + '.regolamentolink.pdf',\n            privacyLink: this.baseUrl + '.privacylink.pdf',\n        };\n    }\n}\n\n/**\n *\n * @returns {ApiProvider} api provider\n */\nexport const getMyConadApiProvider = () => {\n    if (!window.mcApiProvider) {\n        window.mcApiProvider = new MyConadApiProvider();\n    }\n    return window.mcApiProvider;\n};\n","import { getApiProvider } from './api-provider';\nimport { getMyConadApiProvider } from './myconad-api-provider';\nimport { TIME_IN_MILLIS } from './constants';\nimport { getStoreManager } from './store-manager';\nimport { buildWaitForEvent, getCookieByName, isReferrerCurrentDomain, writeCookieWithName, nextTick } from './utils';\n\nexport class UserService {\n    constructor() {\n        this.reg = [];\n        this.storeManager = getStoreManager();\n        this.apiProvider = getApiProvider();\n        this.myConadApiProvider = getMyConadApiProvider();\n        this.userLoadedReady = buildWaitForEvent('userLoadedReady');\n        this.userLoaded = 0;\n\n        this.complementaryDataReady = buildWaitForEvent('complementaryDataReady');\n        this.complementaryDataLoaded = 0;\n\n        this.disFavoriteProductsLoaded = {};\n    }\n\n    /**\n     *\n     * @returns The user if is logged, null otherwise\n     */\n    async getUser() {\n        switch (this.userLoaded) {\n            case 0:\n                await this._loadUser();\n                return this._getUser();\n            case 1:\n                await this.userLoadedReady(document.body);\n                return this._getUser();\n            case 2:\n                return this._getUser();\n            default:\n                console.error('Could not retrieve user');\n                break;\n        }\n        return null;\n    }\n\n    /**\n     *\n     * @returns The preferred store if user is logged, the last visited store if user is anonymous or null\n     */\n    async getStore() {\n        await this.getUser(); // wait user loading\n        return this._getStore(this.storeManager.get('userData'));\n    }\n\n    /**\n     *\n     * @returns The saved stores if user is logged, an empty array if not\n     */\n    async getSavedStores() {\n        await this.getUser(); // wait user loading\n        return await this._getSavedStores(this.storeManager.get('userData'));\n    }\n\n    /**\n     * Check if a content is in complementary data of the user, if true returns an object with id\n     * @param {*} path\n     * @p\n     */\n    async checkComplementaryData(path) {\n        const complementaryData = await this.getComplementaryData();\n        return complementaryData[path];\n    }\n\n    /**\n     * The complementary data for the user, used in recipes and advices to mantain preferred recipes\n     * @returns\n     */\n    async getComplementaryData() {\n        const user = await this.getUser();\n        if (user == null) return {};\n\n        switch (this.complementaryDataLoaded) {\n            case 0:\n                return await this._loadComplementaryData();\n            case 1:\n                await this.complementaryDataReady(document.body);\n                return this.storeManager.get('userComplementaryData');\n            case 2:\n                return this.storeManager.get('userComplementaryData');\n            default:\n                console.error('Could not retrieve user complementary data');\n                break;\n        }\n        return {};\n    }\n\n    /**\n     * Add complementary data by path\n     * @param {*} param0\n     * @returns true on success\n     */\n    async addComplementaryData(path) {\n        try {\n            const data = await this.myConadApiProvider.associateComplementaryData(path);\n            if (data) {\n                const cd = this.storeManager.get('userComplementaryData');\n                cd[path] = data.id;\n                this.storeManager.emit('userComplementaryData', cd, true);\n                // invalidate fe cache\n                window.localStorage?.removeItem('user-cdata-fe-cache');\n                return true;\n            }\n        } catch (error) {\n            console.error(`Could not add complementary data for path ${path}`);\n        }\n        return false;\n    }\n\n    /**\n     * Remove complementary data by path.\n     * @param {*} param0\n     * @returns true if success\n     */\n    async removeComplementaryData(path) {\n        try {\n            const id = await this.checkComplementaryData(path);\n            if (id) {\n                await this.myConadApiProvider.removeComplementaryData(id);\n                const cd = this.storeManager.get('userComplementaryData');\n                delete cd[path];\n                this.storeManager.emit('userComplementaryData', cd);\n                // invalidate fe cache\n                window.localStorage?.removeItem('user-cdata-fe-cache');\n                return true;\n            }\n        } catch (error) {\n            console.error(`Could not remove complementary data with path: ${path}`);\n        }\n        return false;\n    }\n\n    /**\n     * Check if a content is in complementary data of the user, if true returns an object with id\n     * @param {*} path\n     * @p\n     */\n    async checkDisFavoriteProduct(anacanId, disaggregatedId, productId) {\n        const disFavorites = await this.getDisFavoriteProduct(anacanId);\n        if (!disFavorites) return null;\n        const items = disFavorites.items;\n        if (!disFavorites.items) return null;\n        for (const disFav of items) {\n            if (disFav.anacanId == anacanId && disFav.lsfid == productId) return disFav.idProdottoNegozioUtente;\n        }\n        return null;\n    }\n\n    /**\n     * The complementary data for the user, used in recipes and advices to mantain preferred recipes\n     * @returns\n     */\n    async getDisFavoriteProduct(anacanId) {\n        const user = await this.getUser();\n        if (user == null) return {};\n\n        switch (this.disFavoriteProductsLoaded[anacanId]) {\n            case 1: {\n                const disFavoriteProductsReady = buildWaitForEvent(`disFavoriteProductsReady-${anacanId}`);\n                await disFavoriteProductsReady(document.body);\n                return this.storeManager.get(`userDisFavoriteProducts-${anacanId}`);\n            }\n            case 2: {\n                return this.storeManager.get(`userDisFavoriteProducts-${anacanId}`);\n            }\n            default:\n                return await this._loadDisFavoritesProducts(anacanId);\n        }\n    }\n\n    /**\n     * Add favorite product\n     * @param {*} product\n     * @returns true on success\n     */\n    async addDisFavoriteProduct(anacanId, flyerCode, productId) {\n        try {\n            await this.myConadApiProvider.addDisFavoriteProduct(anacanId, flyerCode, productId);\n            await this.reloadDisFavoriteProduct(anacanId);\n            return true;\n        } catch (error) {\n            console.error(`Could not set dis favorites for current user`, error);\n            return false;\n        }\n    }\n\n    /**\n     * Remove dis favorite product using idProdottoNegozioUtente\n     * @param {*} idProdottoNegozioUtente\n     * @returns true if success\n     */\n    async removeDisFavoriteProduct(anacanId, idProdottoNegozioUtente) {\n        try {\n            await this.myConadApiProvider.removeDisProduct(idProdottoNegozioUtente);\n            await this.reloadDisFavoriteProduct(anacanId);\n            return true;\n        } catch (error) {\n            console.error(`Could not set dis favorites for current user`, error);\n            return false;\n        }\n    }\n\n    /**\n     * Set the preferred store for the user\n     * @param {*} anacanId\n     */\n    async setPreferredStore(anacanId) {\n        try {\n            await this.myConadApiProvider.setPreferredStore({ anacanId });\n            await this.reloadUser();\n            return true;\n        } catch (error) {\n            console.error(`Could not set preferred store for current user`, error);\n            return false;\n        }\n    }\n\n    /**\n     * Add the saved  store for the user\n     * @param {*} anacanId\n     */\n    async addSavedStore(anacanId) {\n        try {\n            const res = await this.myConadApiProvider.setSavedStore(anacanId);\n            await this.reloadUser();\n            return res?.anacanId;\n        } catch (error) {\n            console.error(`Could not add ${anacanId} as saved store for current user`, error);\n            return false;\n        }\n    }\n\n    /**\n     * Removed the saved store for the user\n     * @param {*} anacanId\n     */\n    async removeSavedStore(anacanId) {\n        try {\n            await this.myConadApiProvider.removeSavedStore(anacanId);\n            await this.reloadUser();\n            return true;\n        } catch (error) {\n            console.error(`Could not remove ${anacanId} form saved store list for current user`, error);\n            return false;\n        }\n    }\n\n    /**\n     * Set the last visited shop\n     * @param {*} anacanId\n     */\n    async setLastVisitedStore(anacanId) {\n        try {\n            const store = await this.apiProvider.getPointOfServiceByAnacanId({ anacanId });\n            store.syncDate = Date.now();\n            window.localStorage.setItem('lastShop', JSON.stringify(store));\n            return store;\n        } catch (err) {\n            console.warn(`store ${anacanId} not found`);\n            window.localStorage.removeItem('lastShop');\n        }\n        return null;\n    }\n\n    resetUser() {\n        this.userLoaded = 0;\n        window.sessionStorage?.removeItem('user-info-fe-cache');\n    }\n\n    async reloadUser() {\n        this.resetUser();\n        await this._loadUser();\n    }\n\n    async reloadDisFavoriteProduct(anacanId) {\n        this.disFavoriteProductsLoaded[anacanId] = 0;\n        window.localStorage?.removeItem(`user-disfav-fe-cache-${anacanId}`);\n        await this._loadDisFavoritesProducts(anacanId);\n    }\n\n    /////////////////////////////// INTERNAL\n\n    _getUser() {\n        const userData = this.storeManager.get('userData');\n        if (userData && userData.feType == 'anonymous') return null;\n        return userData.user;\n    }\n\n    _getStore(userData) {\n        if (userData && userData.feType == 'anonymous') {\n            //get store from local storage\n            let store = null;\n            const storeJson = window.localStorage.getItem('lastShop');\n            if (!storeJson) return null;\n\n            store = JSON.parse(storeJson);\n            if (!store) return null;\n\n            //check if store was sync in last 24h\n            if (!store.syncDate || !this._isToday(new Date(store.syncDate))) {\n                store = this.setLastVisitedStore(store.anacanId);\n                if (!store) return null;\n            }\n\n            store.lastVisited = true;\n            return store;\n        } else {\n            return userData.negozioPreferitoObj;\n        }\n    }\n\n    _getSavedStores(userData) {\n        const savedStore = userData && userData.feType == 'anonymous' ? [] : userData.negoziDiInteresse;\n        return savedStore ? savedStore : [];\n    }\n\n    async _loadUser() {\n        this.userLoaded = 1;\n\n        let user;\n        const loc = window.sessionStorage?.getItem('user-info-fe-cache');\n        if (loc) {\n            const deserialized = JSON.parse(loc);\n            if (\n                deserialized &&\n                deserialized.update > Date.now() - TIME_IN_MILLIS.THIRTY_SECONDS &&\n                isReferrerCurrentDomain()\n            ) {\n                user = deserialized.data;\n                await nextTick();\n            }\n        }\n\n        if (!user) {\n            // fix strange app cookies\n            const tokenId = getCookieByName('ssoTokenId');\n            const appTokenFixed = getCookieByName('appTokenFixed');\n            if (tokenId && !appTokenFixed) {\n                //read domain\n                let domainParts = location.hostname.split('.');\n                let domain = location.hostname;\n                if (domainParts.length >= 2) {\n                    domain = '.' + domainParts.slice(-2).join('.');\n                }\n                writeCookieWithName('ssoTokenId', tokenId, domain);\n                writeCookieWithName('appTokenFixed', 'true', domain);\n                console.log('Rewritten TOKEN for APP');\n            }\n\n            try {\n                user = await this.myConadApiProvider.user();\n                window.sessionStorage?.setItem(\n                    'user-info-fe-cache',\n                    JSON.stringify({ update: Date.now(), data: user })\n                );\n            } catch (e) {\n                console.warn(e);\n            }\n        }\n\n        //wait store manager event\n        this.storeManager.addListener('userData', () => {\n            this.userLoaded = 2;\n            document.body.dispatchEvent(new CustomEvent('userLoadedReady'));\n        });\n\n        //userData\n        let userData = { feType: 'anonymous' };\n        if (user && user != 'anonymous') {\n            userData = { ...user, feType: 'logged' };\n        }\n\n        this.storeManager.emit('userData', userData);\n        return userData;\n    }\n\n    async _loadComplementaryData() {\n        this.complementaryDataLoaded = 1;\n\n        let complementaryData;\n        const loc = window.localStorage?.getItem('user-cdata-fe-cache');\n        if (loc) {\n            const deserialized = JSON.parse(loc);\n            if (\n                deserialized &&\n                deserialized.update > Date.now() - TIME_IN_MILLIS.FIVE_MINUTES &&\n                isReferrerCurrentDomain()\n            ) {\n                complementaryData = deserialized.data;\n            }\n        }\n\n        if (!complementaryData) {\n            try {\n                complementaryData = await this.myConadApiProvider.getComplementaryData();\n\n                window.localStorage?.setItem(\n                    'user-cdata-fe-cache',\n                    JSON.stringify({ update: Date.now(), data: complementaryData })\n                );\n            } catch (e) {\n                console.warn(e);\n                complementaryData = {};\n            }\n        }\n\n        //wait store manager event\n        this.storeManager.addListener('userComplementaryData', () => {\n            this.complementaryDataLoaded = 2;\n            document.body.dispatchEvent(new CustomEvent('complementaryDataReady'));\n        });\n\n        this.storeManager.emit('userComplementaryData', complementaryData);\n        return complementaryData;\n    }\n\n    async _loadDisFavoritesProducts(anacanId) {\n        this.disFavoriteProductsLoaded[anacanId] = 1;\n\n        let disFavoriteProducts;\n        const loc = window.localStorage?.getItem(`user-disfav-fe-cache-${anacanId}`);\n        if (loc) {\n            const deserialized = JSON.parse(loc);\n            if (\n                deserialized &&\n                deserialized.update > Date.now() - TIME_IN_MILLIS.FIVE_MINUTES &&\n                isReferrerCurrentDomain()\n            ) {\n                disFavoriteProducts = deserialized.data;\n            }\n        }\n\n        if (!disFavoriteProducts) {\n            try {\n                disFavoriteProducts = await this.myConadApiProvider.getDisProduct(anacanId);\n\n                window.localStorage?.setItem(\n                    `user-disfav-fe-cache-${anacanId}`,\n                    JSON.stringify({ update: Date.now(), data: disFavoriteProducts })\n                );\n            } catch (e) {\n                console.warn(e);\n                disFavoriteProducts = {};\n            }\n        }\n\n        //wait store manager event\n        this.storeManager.addListener(`userDisFavoriteProducts-${anacanId}`, () => {\n            this.disFavoriteProductsLoaded[anacanId] = 2;\n            document.body.dispatchEvent(new CustomEvent(`disFavoriteProductsReady-${anacanId}`));\n        });\n\n        this.storeManager.emit(`userDisFavoriteProducts-${anacanId}`, disFavoriteProducts);\n        return disFavoriteProducts;\n    }\n\n    _isToday(date) {\n        const today = new Date();\n        if (today.toDateString() === date.toDateString()) {\n            return true;\n        }\n        return false;\n    }\n}\n\n/**\n * Get the current UserService\n * @returns {UserService}\n */\nexport const getUserService = () => {\n    if (!window.rcUserService) {\n        window.rcUserService = new UserService();\n    }\n    return window.rcUserService;\n};\n","import { getApiProvider } from './api-provider';\nimport { getStoreManager } from './store-manager';\nimport { getUserService } from './user-service';\nimport { getClosestAll, mergeDeep, isObject, replaceAsync } from './utils';\n\nclass TrackingManager {\n    constructor() {\n        this.document = document;\n        this.body = this.document.body;\n        this.userService = getUserService();\n        this.storeManager = getStoreManager();\n        this.isProd = window.IS_PROD_ENV;\n    }\n\n    appendVariable(vars) {\n        this.storeManager.emit(\n            'trackingVars',\n            {\n                ...vars,\n            },\n            true\n        );\n    }\n\n    /**\n     * Track page view event\n     */\n    async trackPageView() {\n        //load owr info\n        const owr = this.storeManager.get('trackingPageView');\n        owr.event = 'pageView';\n\n        const data = await this._loadTrackContext(this.body, owr);\n        this._track(data);\n    }\n\n    /**\n     * Standard track, event need to be put inside owr object\n     * @param {*} el\n     * @param {*} owr\n     */\n    async track(el, owr = {}) {\n        const data = await this._loadTrackContext(el, owr);\n        this._track(data);\n    }\n\n    /**\n     * Track link\n     * @param {*} el The link element\n     * @param {*} options The options\n     */\n    async trackLink(el, options = {}) {\n        //load fallback infos\n        const fallback = {};\n        fallback.event = 'Click su CTA';\n        fallback.CustomLink = el.text?.trim() || el.href;\n\n        //load context\n        const data = await this._loadTrackContext(el, options, fallback);\n        this._track(data);\n    }\n\n    async _loadBasicInfo() {\n        return {\n            userinfo: await this.userService.getUser(),\n        };\n    }\n\n    async _loadTrackContext(el, owr, fallback = {}) {\n        let jsonContext = mergeDeep(fallback, this.storeManager.get('trackingContext'));\n\n        const els = getClosestAll(el, '[data-tracking-context]');\n        for (const el of els) {\n            jsonContext = mergeDeep(jsonContext, JSON.parse(el.dataset.trackingContext));\n        }\n\n        const tmpContext = {\n            ...jsonContext,\n            ...(await this._loadBasicInfo()),\n        };\n\n        const result = !owr ? tmpContext : mergeDeep(tmpContext, owr);\n        return await this._resolveVars(el, result);\n    }\n\n    getVars(el) {\n        let trackingVars = {};\n\n        const els = getClosestAll(el, '[data-tracking-vars]');\n        for (const el of els) {\n            trackingVars = mergeDeep(trackingVars, JSON.parse(el.dataset.trackingVars));\n        }\n\n        const storeTrackingVars = this.storeManager.get('trackingVars');\n        if (storeTrackingVars) {\n            trackingVars = mergeDeep(trackingVars, storeTrackingVars);\n        }\n\n        return trackingVars;\n    }\n\n    _track(data) {\n        if (!this.isProd) {\n            console.log(`>>>> TRACKING DEBUG: ${data.event}`, data);\n        }\n        /* push to adobeDataLayer */\n        if (!window.adobeDataLayer) {\n            console.warn('adobeDataLayer not found, cannot push analytics tracking data');\n            return;\n        }\n        window.adobeDataLayer.push(data);\n    }\n\n    async _resolveVars(el, data) {\n        let trackingVars = this.getVars(el);\n\n        let json = JSON.stringify(data);\n        json = await replaceAsync(\n            json,\n            /\"(vars|fn|data|text|cmp)\\.([A-Za-z-_]+)(?:\\|\\|([A-Za-z-_ ]+))?\"/g,\n            async (found, p1, p2, p3) => {\n                let data = '';\n                switch (p1) {\n                    case 'data':\n                        data = this._findClosestData(el, p2) || p3 || '';\n                        break;\n                    case 'fn':\n                        data = (await this._runFunction(el, p2)) || p3 || '';\n                        break;\n                    case 'text':\n                        data = this._findClosestText(el, p2) || p3 || '';\n                        break;\n                    case 'cmp':\n                        data = this._findComponentText(el, p2) || p3 || '';\n                        break;\n                    case 'vars':\n                        data = trackingVars[p2] || p3 || '';\n                        break;\n                }\n\n                if (data instanceof Object) {\n                    return JSON.stringify(data);\n                } else if (Array.isArray(data)) {\n                    return JSON.stringify(data);\n                }\n                return `\"${data}\"`;\n            }\n        );\n        json = json.replace(/[\\n\\r]+/g, ' ');\n        const result = JSON.parse(json);\n        return this._cleanTrackingObject(result);\n    }\n\n    _findClosestData(el, name) {\n        const dataToFind = 'data-' + name.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase());\n        const closest = el.closest(`[${dataToFind}]`);\n        if (!closest) return null;\n\n        const value = closest.dataset[name];\n        return value;\n    }\n\n    _findClosestText(el, name) {\n        const dataToFind = 'data-' + name.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase());\n        const closest = el.closest(`[${dataToFind}]`);\n        if (!closest) return null;\n\n        return closest.textContent?.trim();\n    }\n\n    _findComponentText(el, name) {\n        const validCmp = (el) => {\n            const component = el.closest(`[data-component]`);\n            if (!component) return null;\n\n            const firstClass = component.classList[0];\n            if (firstClass.match(/^rt0[01234][0-9]-.*$/))\n                return validCmp(component.parentElement || component.parentNode);\n            return component;\n        };\n\n        const component = validCmp(el);\n        if (!component) return null;\n\n        const firstClass = component.classList[0];\n        const selector = '.' + firstClass + '__' + name;\n\n        const items = Array.from(component.querySelectorAll(selector));\n        if (!items || items.length == 0) return null;\n        return items[0].textContent?.trim();\n    }\n\n    async _runFunction(el, name) {\n        switch (name) {\n            case 'currentLabel': {\n                return el.textContent?.trim();\n            }\n            case 'anacanParams': {\n                return await this._getStoreFromParams();\n            }\n            case 'delete': {\n                return '__delete__';\n            }\n            case 'customLink': {\n                let title = this._findComponentText(el, 'title');\n                let label = el.textContent?.trim();\n                if (el.matches('a')) return label + ' ' + title;\n                else return '__delete__';\n            }\n            case 'eventLink': {\n                return this._eventLink(el);\n            }\n            default:\n                return null;\n        }\n    }\n\n    async _getStoreFromParams() {\n        const urlParams = new URLSearchParams(window.location.search);\n        const anacanId = urlParams.get('anacanId');\n        if (!anacanId) return '__delete__';\n\n        try {\n            const pdv = await getApiProvider().getPointOfServiceByAnacanId({ anacanId });\n            return {\n                CooperativaNegozio: pdv.codiceCooperativa,\n                Insegna: pdv.descrizioneInsegna,\n                idNegozio: pdv.anacanId,\n            };\n        } catch (e) {\n            console.warn('Cannot get pdv {}', anacanId);\n            return '__delete__';\n        }\n    }\n\n    _eventLink(el) {\n        let href = el.href;\n        if (!href) return '__delete__';\n\n        switch (true) {\n            case /https?:\\/\\/(?:ecommerce\\.nsc.*|spesaonline\\.conad\\.it)/.test(href):\n                return 'AcquistaSuEcommerce';\n            case /https?:\\/\\/mipremio\\.(?:nsc.*|conad)\\.it/.test(href):\n                return 'VaiAlCatalogoMiPremio';\n            case /https?:\\/\\/www\\.saporie(tst)?\\.com/.test(href):\n                return 'ScopriSuSaporie';\n            case /https?:\\/\\/www\\.conadserviziassicurativi\\.it/.test(href):\n                return 'ServiziAssicurativi';\n            default:\n                return 'Click su CTA';\n        }\n    }\n\n    _cleanTrackingObject(source) {\n        let obj = source;\n        let result = {};\n\n        if (isObject(obj)) {\n            for (const key in obj) {\n                if (obj[key] != '__delete__') {\n                    if (isObject(obj[key])) {\n                        result[key] = this._cleanTrackingObject(obj[key]);\n                    } else {\n                        result[key] = obj[key];\n                    }\n                }\n            }\n        }\n\n        return result;\n    }\n}\n\nwindow.rcTrackingManager = new TrackingManager();\n\n/**\n *\n * @returns {TrackingManager} the tracking manager\n */\nexport const getTrackingManager = () => {\n    return window.rcTrackingManager;\n};\n\nexport const trackingManager = window.rcTrackingManager;\n","import './style.scss';\nimport ValidableComponent from '../../../../../libs/components/validable-component';\nimport { getGMapsHelper } from '../../../../../libs/gmaps-helper';\nimport { getStoreManager } from '../../../../../libs/store-manager';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { closeLoader, delay, getZIndex, openLoader } from '../../../../../libs/utils';\n\nexport default class SearchField extends ValidableComponent {\n    constructor(name, root) {\n        super(name, root);\n        this.gMapsHelper = getGMapsHelper();\n        this.storeManager = getStoreManager();\n        this.trackingManager = getTrackingManager();\n        this.isProd = window.IS_PROD_ENV;\n        this._getElements();\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        // if google search\n        if (!this.searchQuery) {\n            await this._initGoogleAutocomplete();\n            this.selectedOptionIndex = 0; // by default the first option is selected \n        }\n        this._addEventListeners();\n\n        //if geolocation is active & autogeocode active, default start search with user location\n        if (this.root.dataset.autogeocode == 'true' && window.navigator.geolocation) {\n            /*setTimeout(() => {\n                this._detectLocation();\n            }, 500);*/\n            //wait 500ms to be sure that page is loaded\n        }\n    }\n\n    _getElements() {\n        // constants\n        this.CANCEL_HIDDEN = this._elMod('cancel', 'hidden');\n        this.DETECT_LOCATION_ACTIVE = this._elMod('detectLocationContainer', 'active');\n\n        this.input = this._dEl('input');\n        this.searchBtn = this._dEl('searchBtn');\n        this.cancel = this._dEl('cancel');\n        this.error = this._dEl('error');\n        this.detectLocationContainer = this._dEl('detectLocationContainer');\n        this.detectLocationItem = this._dEl('detectLocationItem');\n        this.resultsSelect = this._dEl('resultsSelect');\n\n        this.country = this.root.dataset.country;\n        if (this.country.indexOf(',') >= 0) {\n            this.country = this.country.split(',');\n        }\n        this.checkStreet = this.root.hasAttribute('data-check-street');\n        this.value = null;\n        this.searchType = null;\n        this.searchQuery = this.root.hasAttribute('data-search-query');\n    }\n\n    _getInput() {\n        return this.input;\n    }\n\n    getValue() {\n        return this.value;\n    }\n\n    isValid() {\n        return !this._getInput().required || this.value;\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            ['input', 'change'],\n            () => {\n                if (this.input.value === '' && !this.cancel.classList.contains(this.CANCEL_HIDDEN))\n                    this.cancel.classList.add(this.CANCEL_HIDDEN);\n                if (this.input.value != '') {\n                    this.error.innerText = '';\n                    this._showCancelField();\n                }\n            },\n            this.input\n        );\n\n        // google search\n        if (!this.searchQuery) {\n            this._addListener(\n                ['input', 'focus'],\n                (event) => {\n                    this._showDetectLocation(this.input.value === '');\n                    if (this.input.value !== '') {\n                        this._handleInput(event);\n                        return;\n                    }\n                    this._clearSelect();\n                },\n                this.input\n            );\n            this._addListener(\n                'click',\n                () => {\n                    this._detectLocation();\n                },\n                this.detectLocationItem\n            );\n            // add listener to listen to clicks on options \n            this._addListener(\n                'mousedown',\n                (event) => {\n                    event.preventDefault();\n                    const option = event.target.closest('.pac-item');\n                    if (!this.isProd) {\n                        console.debug('Clicked on resultsSelect on option ' + option.textContent);\n                    }\n                    this.selectedOptionIndex = Number(option.getAttribute('data-index'));\n                    this._doGoogleSearch(option);\n                    event.stopPropagation();\n                }, \n                this.resultsSelect\n            );\n\n            // navigation with arrows for google search\n            this._addListener(\n                'keydown',\n                (event) => {\n                    if (!this.resultsSelect.classList.contains(this._elMod('resultsSelect', 'active'))) return;\n\n                    const options = this.resultsSelect.querySelectorAll('.pac-item');\n                    if (options.length === 0) return;\n\n                    switch (event.key) {\n                        case 'ArrowDown':\n                            event.preventDefault();\n                            if (this.selectedOptionIndex < options.length - 1) {\n                                this.selectedOptionIndex++;\n                            } else {\n                                this.selectedOptionIndex = 0;\n                            }\n                            this._highlightOption(options, this.selectedOptionIndex);\n                            break;\n                        case 'ArrowUp':\n                            event.preventDefault();\n                            if (this.selectedOptionIndex > 0) {\n                                this.selectedOptionIndex--;\n                            } else {\n                                this.selectedOptionIndex = options.length - 1;\n                            }\n                            this._highlightOption(options, this.selectedOptionIndex);\n                            break;\n                        case 'Enter': {\n                                event.preventDefault();\n                                const selectedOption = options[this.selectedOptionIndex];\n                                if (selectedOption) {\n                                    const mouseEvent = new MouseEvent('mousedown', {\n                                        'view': window,\n                                        'bubbles': true,\n                                        'cancelable': true\n                                    });\n                                    selectedOption.dispatchEvent(mouseEvent);\n                                }\n                                break;\n                            }\n                        default:\n                            break;\n                    }\n                },\n                this.input\n            );\n        }\n\n        this._addListener(\n            'keypress',\n            async (event) => {\n                if (!(event.key == 'Enter')) return;\n                // google search\n                if (!this.searchQuery) {\n                    await this._doGoogleSearch();\n                    return;\n                }\n                this._searchQuery();\n            },\n            this.input\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                // google search\n                if (!this.searchQuery) {\n                    this._doGoogleSearch();\n                    return;\n                }\n                this._searchQuery();\n            },\n            this.searchBtn\n        );\n\n        this._addListener(\n            'click',\n            (event) => {\n                event.preventDefault();\n                this.reset();\n                this._changedInput();\n                this.root.dispatchEvent(new CustomEvent('rt10CanceledField', { bubbles: true }));\n            },\n            this.cancel\n        );\n\n        this._addListener(\n            'focusout',\n            async () => {\n                if (this.searchQuery) return;\n                // google search\n                /* add little delay because focusout preceeds click on detectLocationItem */\n                await delay(100);\n                this._showDetectLocation(false);\n                if (this.input.required && this.input.value == '') {\n                    this.setState('error');\n                    this._requireField();\n                }\n                if (this.input.value !== '' && this.value == null) {\n                    this.setState('error');\n                    this._invalidField();\n                }\n                this._clearSelect(false); \n            },\n            this.input\n        );\n\n        this._addListener(\n            'focusin',\n            (event) => {\n                if (this.root.dataset.disableTracking == 'true') return;\n\n                // set z-index = input\n                let zindex;\n                try {\n                    zindex = getZIndex(this.input);\n                    this.trackingManager.track(event.target, {\n                        event: 'BarraRicerca',\n                        CustomLink: 'Click barra ricerca',\n                        funnel: {\n                            stepFunnel: 'Ricerca Store Locator',\n                        },\n                    });\n                } catch (error) {\n                    zindex = 1000;\n                }\n                Array.from(document.querySelectorAll('.pac-container')).forEach((pc) => {\n                    pc.style.zIndex = `${zindex}`;\n                });\n            },\n            this.input\n        );\n    }\n\n    // google search - recupero del valore dell'input dopo il click\n    _handleOption(event) {\n        const addressOption = event.target.closest('.pac-item');\n\n        // Recuperiamo il testo dell'opzione scelta.\n        // Usiamo 'textContent' per ottenere il testo pulito, senza i tag <strong>.\n        const selectedText = addressOption.textContent;\n\n        // Impostiamo il valore del campo di input con il testo selezionato.\n        this.setInputValue(selectedText);\n        this.setState('valid');\n        this._changedInput();\n        this.searchType = 'Manuale';\n        this._emit('rt10AddressSearchType', { searchType: this.searchType });\n        // Una volta fatta la scelta, puliamo la lista dei suggerimenti.\n        this._clearSelect();\n    }\n\n    // google search - evidenzia l'opzione quando ci si naviga con le frecce\n    _highlightOption(options, index) {\n        options.forEach((option, i) => {\n            if (i === index) {\n                option.classList.add(this._elMod('resultItem', 'highlighted'));\n            } else {\n                option.classList.remove(this._elMod('resultItem', 'highlighted'));\n            }\n        });\n    }\n\n    // google search - recupera le predictions e chiama funzione per popolare la select custom\n    _handleInput(event) {\n        clearTimeout(this.gApiSearchDebounce);\n        const inputText = event.target.value;\n\n        // Se l'input è vuoto o è minor di tre caratteri, pulisce la select e non fa nulla\n        if (!inputText || inputText.length < 3) {\n            this._clearSelect();\n            return;\n        }\n\n        this.gApiSearchDebounce = setTimeout(() => {\n            // Richiesta al servizio di Autocomplete\n            const request = {\n                input: inputText,\n                sessionToken: this.token,\n                componentRestrictions: { country: this.country }\n            };\n\n            if (this.checkStreet) request.types = ['address'];\n\n            this.autocompleteService.getPlacePredictions(request, (predictions, status) => {\n                if (status === window.google.maps.places.PlacesServiceStatus.OK && predictions) {\n                    this._populateSelect(predictions);\n                    this.resultsSelect.classList.add(this._elMod('resultsSelect', 'active'));\n                } else if (status === window.google.maps.places.PlacesServiceStatus.ZERO_RESULTS) {\n                    this._clearSelect();\n                    const option = document.createElement('div');\n                    option.classList.add('pac-item');\n                    option.textContent = 'Nessun indirizzo trovato';\n                    option.setAttribute('role', 'option');\n                    option.setAttribute('aria-disabled', 'true');\n                    this.resultsSelect.appendChild(option);\n\n                    this.resultsSelect.setAttribute('aria-expanded', 'true');\n                    this.resultsSelect.appendChild(option);\n                    this.resultsSelect.classList.add(this._elMod('resultsSelect', 'active'));\n                } else {\n                    // Gestisce altri stati come OVER_QUERY_LIMIT\n                    this._clearSelect();\n                    console.error(`Errore dell'API di Google: ${status}`);\n                }\n            });\n        }, 400);\n    }\n\n    // google search - nasconde le opzioni della select, se clearContent = true, elimina anche il contenuto\n    _clearSelect(clearContent = true) {\n        if (clearContent) {\n            this.resultsSelect.innerHTML = '';\n        }\n        if (this.resultsSelect.classList.contains(this._elMod('resultsSelect', 'active'))) {\n            this.resultsSelect.classList.remove(this._elMod('resultsSelect', 'active'));\n        }\n        this.resultsSelect.setAttribute('aria-expanded', 'false'); \n        this.selectedOptionIndex = 0; \n    }\n\n    // google search - prende le prediction arrivate da google e crea le opzioni dentro la select s\n    _populateSelect(predictions) {\n        this._clearSelect();\n        this.resultsSelect.setAttribute('aria-expanded', 'true'); // Lista aperta\n        predictions.forEach((prediction, index) => {\n            const option = document.createElement('div');\n            option.classList.add('pac-item');\n            option.setAttribute('data-index', index);\n            option.setAttribute('data-value', prediction.place_id);\n            option.setAttribute('role', 'option');\n            if (index == 0) {\n                option.classList.add(this._elMod('resultItem', 'highlighted')); \n            }\n            \n            let innerHTML = '<span class=\"pac-icon pac-icon-marker\"></span>'; // Icona del marcatore\n\n            // --- Gestione del main_text ---\n            innerHTML += '<span class=\"pac-item-query\">';\n            const mainText = prediction.structured_formatting.main_text;\n            const mainTextMatches = prediction.structured_formatting.main_text_matched_substrings || [];\n\n            let lastIndexMain = 0;\n            mainTextMatches.forEach(match => {\n                // Aggiunge la parte di testo prima della corrispondenza nel main_text\n                innerHTML += mainText.substring(lastIndexMain, match.offset);\n                // Aggiunge la parte corrispondente in grassetto\n                innerHTML += '<strong class=\"pac-matched\">' + mainText.substring(match.offset, match.offset + match.length) + '</strong>';\n                // Aggiorna l'indice per la prossima iterazione\n                lastIndexMain = match.offset + match.length;\n            });\n            // Aggiunge la parte finale del main_text, dopo l'ultima corrispondenza\n            innerHTML += mainText.substring(lastIndexMain);\n            innerHTML += '</span>';\n\n            // --- Gestione del secondary_text (se presente) ---\n            const secondaryText = prediction.structured_formatting.secondary_text;\n            if (secondaryText) {\n                const secondaryTextMatches = prediction.structured_formatting.secondary_text_matched_substrings || [];\n                innerHTML += ' <span class=\"pac-item-secondary\">';\n\n                let lastIndexSecondary = 0;\n                secondaryTextMatches.forEach(match => {\n                    // Aggiunge la parte di testo prima della corrispondenza nel secondary_text\n                    innerHTML += secondaryText.substring(lastIndexSecondary, match.offset);\n                    // Aggiunge la parte corrispondente in grassetto\n                    innerHTML += '<span class=\"pac-matched\">' + secondaryText.substring(match.offset, match.offset + match.length) + '</span>';\n                    // Aggiorna l'indice per la prossima iterazione\n                    lastIndexSecondary = match.offset + match.length;\n                });\n                // Aggiunge la parte finale del secondary_text, dopo l'ultima corrispondenza\n                innerHTML += secondaryText.substring(lastIndexSecondary);\n                innerHTML += '</span>';\n            }\n            // Imposta l'HTML interno dell'opzione invece del semplice testo\n            option.innerHTML = innerHTML;\n\n            this.resultsSelect.appendChild(option);\n          \n        });\n    }\n\n    async _initGoogleAutocomplete() {\n        this.gApiSearchDebounce;\n        const gmaps = await this.gMapsHelper.getGMaps();\n        this.autocompleteService = new gmaps.places.AutocompleteService();\n        this.token = new gmaps.places.AutocompleteSessionToken();\n        this.geocoder = new gmaps.Geocoder();\n    }\n\n    _showDetectLocation(show = true) {\n        if (!this.detectLocationContainer) return;\n        if (show) {\n            if (!this.detectLocationContainer.classList.contains(this.DETECT_LOCATION_ACTIVE))\n                this.detectLocationContainer.classList.add(this.DETECT_LOCATION_ACTIVE);\n        } else {\n            this.detectLocationContainer.classList.remove(this.DETECT_LOCATION_ACTIVE);\n        }\n    }\n\n    _detectLocation() {\n        if (window.navigator.geolocation) {\n            /* a cold GPS fix + reverse geocode can take seconds: give feedback right on click.\n               Ignore further clicks until this request settles. */\n            if (this._detectingLocation) return;\n            this._detectingLocation = true;\n            openLoader('main');\n            window.navigator.geolocation.getCurrentPosition(\n                (pos) => {\n                    this._locationDetectionSuccess(pos);\n                },\n                (error) => {\n                    this._endLocationDetection();\n                    this._locationDetectionFailed(error);\n                },\n                {\n                    maximumAge: 3600000 /* 1 hour */,\n                    /* 3s often expired on a cold high-accuracy fix, so the first click silently failed */\n                    timeout: 10000 /* 10 seconds */,\n                    enableHighAccuracy: true,\n                }\n            );\n        } else {\n            console.warn('geolocation not found in navigator object');\n        }\n    }\n\n    _locationDetectionSuccess(pos) {\n        const coords = {\n            lat: pos.coords.latitude,\n            lng: pos.coords.longitude,\n        };\n        this.geocoder.geocode({ location: coords }, (results, status) => {\n            /* close before _changedInput: a listener (e.g. store locator _loadPoi) may reopen\n               the same loader synchronously, so it never flickers off while results load */\n            this._endLocationDetection();\n            if (status === 'OK') {\n                const place = results[0];\n                this.input.value = place.formatted_address;\n                if (!this._manageState(place)) {\n                    return;\n                }\n                this.value = place;\n                this._changedInput();\n                this.searchType = 'Geolocalizzazione';\n                this._emit('rt10AddressSearchType', { searchType: this.searchType });\n                this._toggleCancelField();\n            } else {\n                console.warn(`Geocoder failed with code ${status}`);\n            }\n        });\n    }\n    _endLocationDetection() {\n        this._detectingLocation = false;\n        closeLoader('main');\n    }\n\n    _locationDetectionFailed(error) {\n        switch (error.code) {\n            case window.GeolocationPositionError.PERMISSION_DENIED:\n                console.warn(`Geolocation permission denied. ${error.message}`);\n                break;\n            case window.GeolocationPositionError.POSITION_UNAVAILABLE:\n                console.warn(`Geolocation position not available. ${error.message}`);\n                break;\n            case window.GeolocationPositionError.TIMEOUT:\n                console.warn(`Geolocation request went in timeout. ${error.message}`);\n                break;\n            default:\n                console.warn(`Unknown error ${error.code}: ${error.message}`);\n                break;\n        }\n    }\n\n    _requireField() {\n        this.error.innerText = 'Campo obbligatorio';\n    }\n\n    _invalidField() {\n        this.error.innerText = 'Campo non valido';\n    }\n\n    _toggleCancelField() {\n        this.input.value !== '' ? this._showCancelField() : this._hideCancelField();\n    }\n    _hideCancelField() {\n        if (this.cancel.classList.contains(this.CANCEL_HIDDEN)) return;\n        this.cancel.classList.add(this.CANCEL_HIDDEN);\n    }\n    _showCancelField() {\n        this.cancel.classList.remove(this.CANCEL_HIDDEN);\n    }\n\n    // google search - effettua la ricerca dopo aver cliccato su un'opzione, usando il placeId\n    _doGoogleSearch(option) {\n        // fallback 1\n        if (!option) {\n            option = this.resultsSelect.querySelector(`div[role=\"option\"][data-index=\"${this.selectedOptionIndex}\"]${this._elMod('resultItem', 'highlighted', true)}`);\n        }\n        // fallback 2\n        if (!option) {\n            option = this.resultsSelect.querySelector(`div[role=\"option\"][data-index=\"${this.selectedOptionIndex}\"]`);\n        }\n        const placeId = option.dataset.value;\n        const description = option.textContent; // Usa la description originale per l'input\n\n        if (placeId && description) {\n            this.setInputValue(description); // Popola l'input con la descrizione non formattata\n            this.geocoder.geocode({ placeId: placeId }, (results, status) => {\n                if (status === window.google.maps.GeocoderStatus.OK && results && results[0]) {\n                    if (this._manageState(results[0])) {\n                        const place = results[0];\n                        this.input.value = place.formatted_address;\n                        if (!this._manageState(place)) {\n                            return;\n                        }\n                        this.value = place;\n                        this._changedInput();\n                        this.searchType = 'Manuale';\n                        this._emit('rt10AddressSearchType', { searchType: this.searchType });\n                        this._toggleCancelField();\n                        // tracking\n                        this._track(place.formatted_address);\n                    }\n                } else {\n                    console.error(`Geocoding failed for placeId ${placeId}: ${status}`);\n                }\n            });\n            this._clearSelect();\n        }\n    }\n\n    // track place change \n    _track(formattedAddress) {\n        if (this.root.dataset.disableTracking == 'true') return;\n\n        this.trackingManager.track(this.root, {\n            event: 'ItemRicerca',\n            CustomLink: 'Selezione item ricerca',\n            negozioInfo: {\n                indirizzoRicerca: formattedAddress,\n            },\n            funnel: {\n                stepFunnel: 'Ricerca Store Locator',\n            },\n        });\n    }\n\n    _manageState(currentPlace) {\n        if (!currentPlace || !currentPlace.types || !currentPlace.address_components) {\n            /* null address */\n            this._invalidField();\n            return false;\n        }\n        if (this.checkStreet && currentPlace.types.indexOf('street_address') == -1) {\n            /* address without street or street number */\n            this.setState('error');\n            if (currentPlace.types.indexOf('route') == -1) {\n                /* address without street (default invalid error text) */\n                this._invalidField();\n                return false;\n            }\n            /* address with street but without street number (custom error text) */\n            this._invalidField('Inserisci numero civico');\n        } else {\n            this.setState('valid');\n        }\n        return true;\n    }\n\n    _getAddressComp(comps, type, field) {\n        const comp = comps.filter((cmp) => cmp.types.includes(type))[0];\n        return comp ? comp[field] : '';\n    }\n\n    _searchQuery() {\n        const value = this._getInput().value;\n        if (!value || value == '') return;\n        const event = new CustomEvent('rt10SearchQuery', { bubbles: true });\n        event.data = {\n            value: this._getInput().value,\n        };\n        this.root.dispatchEvent(event);\n    }\n\n    setInputValue(value) {\n        this._getInput().value = value;\n        this._showCancelField();\n        this.value = null;\n        this.setState('');\n    }\n\n    reset() {\n        this._getInput().value = '';\n        this._hideCancelField();\n        this.value = null;\n        this.setState('');\n    }\n\n    dispose() {\n        super.dispose();\n        this.gmaps?.event.clearListeners(this.autocomplete, 'place_changed');\n        this.gmaps?.event.clearInstanceListeners(this.autocomplete);\n        this.autocomplete.unbindAll();\n        this.input.classList.remove('pac-target-input');\n    }\n}\n\n\n","import { buildWaitForEvent } from './utils';\n\nexport class ExtApiHelper {\n    constructor() {\n        this.s7viewersReady = buildWaitForEvent('s7ViewersReady');\n        this.s7viewersLoaded = 0;\n        this.shopfullyReady = buildWaitForEvent('shopfullyReady');\n        this.shopfullyLoaded = 0;\n    }\n\n    async getS7ViewersApi() {\n        switch (this.s7viewersLoaded) {\n            case 0:\n                this._downloadS7ViewersApi();\n                await this.s7viewersReady(document.body);\n                return window.s7viewers;\n            case 1:\n                await this.s7viewersReady(document.body);\n                return window.s7viewers;\n            case 2:\n                return window.s7viewers;\n            default:\n                console.error('Could not retrieve s7viewersApi');\n                break;\n        }\n    }\n\n    async getLeaflet() {\n        // import css\n        await import('leaflet/dist/leaflet.css');\n        return (await import('leaflet')).L;\n    }\n\n    async getSwiper() {\n        const swiperModule = await import('swiper');\n        const Swiper = swiperModule.default;\n        Swiper.use([swiperModule.Pagination, swiperModule.Navigation, swiperModule.Mousewheel, swiperModule.Scrollbar, swiperModule.Autoplay, swiperModule.Thumbs, swiperModule.FreeMode]);\n        return Swiper;\n    }\n\n    async getPerfectScrollbar() {\n        const perfectModule = await import('perfect-scrollbar');\n        return perfectModule.default;\n    }\n\n    _downloadS7ViewersApi() {\n        if (window.s7viewers) {\n            // s7viewers already loaded\n            this.s7viewersLoaded = 2;\n            document.body.dispatchEvent(new CustomEvent('s7ViewersReady'));\n            return;\n        }\n        // load first script tag in page\n        const firstScriptTag = document.getElementsByTagName('script')[0];\n\n        // s7viewers not loaded, launch download\n        const tag = document.createElement('script');\n        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n        tag.onload = () => {\n            this.s7viewersLoaded = 2;\n            console.log('--- Loaded external API Scene7');\n            document.body.dispatchEvent(new CustomEvent('s7ViewersReady'));\n        };\n        tag.src = 'https://s7e5a.scene7.com/s7viewers/html5/js/InteractiveImage.js';\n        this.s7viewersLoaded = 1;\n    }\n\n    /**\n     * Load Shopfully SmartViewer init script and resolve to window.SFviewer.\n     * @returns {Promise<Function>}\n     */\n    async getShopfullyViewerApi() {\n        switch (this.shopfullyLoaded) {\n            case 0:\n                this._downloadShopfullyApi();\n                await this.shopfullyReady(document.body);\n                return window.SFviewer;\n            case 1:\n                await this.shopfullyReady(document.body);\n                return window.SFviewer;\n            case 2:\n                return window.SFviewer;\n            default:\n                console.error('Could not retrieve Shopfully SmartViewer API');\n                break;\n        }\n    }\n\n    _downloadShopfullyApi() {\n        if (typeof window.SFviewer === 'function') {\n            this.shopfullyLoaded = 2;\n            document.body.dispatchEvent(new CustomEvent('shopfullyReady'));\n            return;\n        }\n        const firstScriptTag = document.getElementsByTagName('script')[0];\n        const tag = document.createElement('script');\n        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n        tag.onload = () => {\n            this.shopfullyLoaded = 2;\n            console.log('--- Loaded external API Shopfully SmartViewer');\n            document.body.dispatchEvent(new CustomEvent('shopfullyReady'));\n        };\n        tag.onerror = () => {\n            this.shopfullyLoaded = 0;\n            console.error('Failed to load Shopfully SmartViewer script');\n            document.body.dispatchEvent(new CustomEvent('shopfullyReady'));\n        };\n        tag.src = window.shopfullyViewerUrl;\n        this.shopfullyLoaded = 1;\n    }\n}\n\n/**\n * Get the current ExtApiHelper\n * @returns {ExtApiHelper}\n */\nexport const getExtApiHelper = () => {\n    if (!window.rcExtApiHelper) {\n        window.rcExtApiHelper = new ExtApiHelper();\n    }\n    return window.rcExtApiHelper;\n};\n","import './style.scss';\nimport ValidableComponent from '../../../../../libs/components/validable-component';\nimport { getRegister } from '../../../../../libs/register';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { debounce, emptyElement, transitionEnd, isInViewport } from '../../../../../libs/utils';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class Select extends ValidableComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        // constants\n        this.register = getRegister();\n        this.SELECTED = 'selected';\n        this.OPEN = this._mod('open');\n        this.DISABLED = this._mod('disabled');\n        this.LABEL_HIDDEN = this._elMod('label', 'hidden');\n\n        this.page = document.querySelector('.rs1-page');\n        this.id = this.root.id;\n        this.button = this._dEl('button');\n        this.label = this._dEl('label');\n        this.selectLabel = this._dEl('selectLabel');\n        this.input = this._dEl('input');\n        this.inputLabel = this._dEl('inputLabel');\n        this.content = this._dEl('content');\n        this.error = this._dEl('error');\n        this.items = this._dEl('item', true);\n        this.selectedItem = this.items.filter((item) => item.classList.contains(this.SELECTED))[0];\n        this.selValue = this.input.value;\n        this.keyDownText = '';\n        this._itemsGeneration = 0;\n        this._populating = false;\n        this._pendingLock = undefined;\n\n        this._init();\n        this._applyOrClearValue(this.input.value);\n    }\n\n    async _init() {\n        this.PerfectScrollbar = await getExtApiHelper().getPerfectScrollbar();\n        this.scrollbarOptions = {\n            swipeEasing: true,\n            suppressScrollX: true,\n            wheelPropagation: false,\n        };\n        this.ps = null;\n        this._addEventListeners();\n        this._applyOrClearValue(this.input.value);\n    }\n\n    _getInput() {\n        return this.input;\n    }\n\n    /* override */\n    _checkState() {\n        if (!this.isValid()) {\n            this.setState('error');\n        } else if (this.isValid() && this.getValue()) {\n            this.setState('valid');\n        } else {\n            this.setState('');\n        }\n    }\n\n    _addEventListeners() {\n        /* open dropdown */\n        this._addListener(\n            'click',\n            (event) => {\n                event.preventDefault();\n                /* close other select dropdowns on the page */\n                this.page.querySelectorAll(this.getSelector()).forEach((sel) => {\n                    if (sel.id === this.id) return;\n                    this.register.getClass(sel).closeDropdown();\n                });\n                if (this.isDropdownOpen()) {\n                    this.closeDropdown();\n                    //check required\n                    if (this.input.required && this.input.value == '') {\n                        this.setState('error');\n                        this._requireField();\n                    }\n                } else {\n                    this.openDropdown();\n                }\n            },\n            this.button\n        );\n\n        /* select option */\n        this._addListener(\n            ['click', 'keydown'],\n            (event) => {\n                if (event.type === 'keydown' && event.key !== 'Enter') return;\n                const item = event.target.closest(this._el('item', true));\n                if (!item) return;\n                event.preventDefault();\n                this.setSelected(item.dataset.value);\n                this.setState('valid');\n                this.closeDropdown();\n                this.button.focus();\n            },\n            this.content\n        );\n\n        /* invalid field, set message */\n        this._addListener(\n            'invalid',\n            () => {\n                this._checkState();\n                if (this.input.required && this.input.value == '') {\n                    this.setState('error');\n                    this._requireField();\n                }\n            },\n            this.input\n        );\n\n        this._addListener(\n            'change',\n            () => {\n                this.input.setCustomValidity('');\n            },\n            this.input\n        );\n\n        this._addListener(\n            ['keyup', 'change', 'input', 'focusout'],\n            (e) => {\n                if (e.type === 'focusout') this.keyDownText = '';\n                if (this._populating) return;\n                if ((e.type === 'input' || e.type === 'change') && this._applyOrClearValue(this.input.value)) {\n                    return;\n                }\n                this._checkState();\n            },\n            this.input\n        );\n\n        /* debounced scrolling to best match option on keydown */\n        const scrollDebounced = debounce((text) => {\n            const scored = [...this.items]\n                .map((item) => {\n                    let label = item.querySelector(this._el('option', true))?.innerText?.toLowerCase();\n                    return {\n                        item: item,\n                        label: label,\n                        score: label.indexOf(text),\n                    };\n                })\n                .filter((x) => x.score >= 0)\n                .sort((x, y) => x.score - y.score);\n            if (scored.length <= 0) return;\n            const bestOption = scored[0];\n            this.content.scrollTop = bestOption.item.offsetTop;\n            bestOption.item?.focus();\n            this.keyDownText = '';\n        }, 800);\n        this._addListener(\n            'keydown',\n            (event) => {\n                if (['Enter', 'Tab', 'Shift'].includes(event.key)) return;\n                event.preventDefault();\n                if (!event.key.match(/^[a-zA-Z]$/)) {\n                    event.stopPropagation();\n                    return;\n                }\n                this.keyDownText += event.key;\n                scrollDebounced(this.keyDownText);\n                event.stopPropagation();\n            },\n            this.root\n        );\n\n        /* fix parent scrolling on mobile */\n        this._addListener(\n            'touchmove',\n            (event) => {\n                event.stopPropagation();\n            },\n            this.content\n        );\n\n        this._addListener(\n            'click',\n            (event) => {\n                const target = event.target;\n                if (!target.closest(`.${this.name}`)) {\n                    this.closeDropdown();\n                }\n            },\n            document.body\n        );\n    }\n\n    isDropdownOpen() {\n        return this.root.classList.contains(this.OPEN);\n    }\n\n    async _scrollIntoView() {\n        if (!this.isDropdownOpen()) return;\n        if (!this.content) return;\n        await transitionEnd(this.content);\n        if (isInViewport(this.content)) return;\n        this.content.scrollIntoView();\n    }\n\n    openDropdown() {\n        if (this.isDropdownOpen() || this.root.classList.contains(this.DISABLED)) return;\n        this.root.classList.add(this.OPEN);\n        this._scrollIntoView();\n        transitionEnd(this.content).then(() => {\n            if (!this.ps) {\n                this.ps = new this.PerfectScrollbar(this.content, this.scrollbarOptions);\n            } else {\n                this.ps.update();\n            }\n        });\n    }\n\n    closeDropdown() {\n        if (!this.isDropdownOpen()) return;\n        this.root.classList.remove(this.OPEN);\n\n        setTimeout(() => {\n            this.button?.focus();\n        }, 200);\n    }\n\n    setSelected(value) {\n        const item = this._optionByValue(value);\n        if (!item) return;\n\n        this._resetItems();\n        item.classList.add(this.SELECTED);\n        this.selectedItem = item;\n        this.label.textContent = item.textContent;\n        this._showLabel();\n        this.selValue = value;\n        this.input.value = item.dataset.value;\n        this.inputLabel.value = item.textContent.trim();\n        this._changedInput();\n    }\n\n    setValue(value) {\n        this._applyOrClearValue(value);\n    }\n\n    async setItems(items, preferredValue = null) {\n        const generation = ++this._itemsGeneration;\n        this._populating = true;\n        try {\n            emptyElement(this.content);\n\n            const selectItemCall = (await import('./partials/select-item.html')).default;\n            if (generation !== this._itemsGeneration) return;\n\n            const documentFragment = document.createDocumentFragment();\n            for (const item of items || []) {\n                const el = await runTemplate(selectItemCall, item);\n                if (generation !== this._itemsGeneration) return;\n                documentFragment.appendChild(el);\n            }\n            if (generation !== this._itemsGeneration) return;\n\n            this.content.appendChild(documentFragment);\n            this.items = this._dEl('item', true);\n            this._populating = false;\n            this._applyItemsSelection(preferredValue);\n            this._finishPendingLock();\n        } finally {\n            if (generation === this._itemsGeneration) this._populating = false;\n        }\n    }\n\n    _optionByValue(value) {\n        if (value == null || value === '') return null;\n        const wanted = String(value).trim();\n        return this.items.find((item) => item.dataset.value === wanted) || null;\n    }\n\n    /* A value forced from outside is kept only when it matches an option. */\n    _applyOrClearValue(raw) {\n        const value = raw == null ? '' : String(raw).trim();\n        const option = this._optionByValue(value);\n        if (option) {\n            const optionValue = option.dataset.value;\n            if (this.input.value === optionValue && this.getValue() === optionValue) return false;\n            this.setSelected(optionValue);\n            this._checkState();\n            return true;\n        }\n\n        this._clearForcedValue();\n        return true;\n    }\n\n    _clearForcedValue() {\n        const locked = this._isLocked();\n        if (locked) this._unlockSelect();\n        this.reset();\n        this._changedInput();\n    }\n\n    _applyItemsSelection(preferredValue) {\n        if (preferredValue != null && preferredValue !== '') {\n            const option = this._optionByValue(preferredValue);\n            if (option) this.setSelected(option.dataset.value);\n            else this._clearForcedValue();\n            return;\n        }\n\n        const selected = this.items.find((item) => item.classList.contains(this.SELECTED));\n        if (selected) {\n            this.setSelected(selected.dataset.value);\n            return;\n        }\n\n        if (this.input.value) {\n            this._applyOrClearValue(this.input.value);\n            return;\n        }\n\n        this.selectedItem = null;\n        this.label.textContent = '';\n        this._hideLabel();\n        this.inputLabel.value = '';\n        this.selValue = '';\n        this.setState('');\n    }\n\n    _showLabel() {\n        this.label.classList.remove(this.LABEL_HIDDEN);\n    }\n    _hideLabel() {\n        if (this.label.classList.contains(this.LABEL_HIDDEN)) return;\n        this.label.classList.add(this.LABEL_HIDDEN);\n    }\n\n    getSelected() {\n        return this.selectedItem;\n    }\n\n    getLabel() {\n        return this.getSelected() ? this.getSelected().querySelector(this._el('option', true)).textContent : '';\n    }\n\n    getName() {\n        return this.root.dataset.name;\n    }\n\n    getValue() {\n        return this.getSelected() ? this.getSelected().dataset.value : '';\n    }\n\n    isValid() {\n        if (!this._getInput().required) return true;\n        return this.items.map((item) => item.dataset.value).filter((val) => val === this.input.value).length == 1;\n    }\n\n    reset() {\n        this._resetItems();\n        this.label.textContent = '';\n        this._hideLabel();\n        this.selValue = '';\n        this.input.value = '';\n        this.inputLabel.value = '';\n        this.closeDropdown();\n        this.setState('');\n    }\n\n    _resetItems() {\n        this.items.forEach((item) => item.classList.remove(this.SELECTED));\n    }\n\n    _isLocked() {\n        return this.root.classList.contains(this._mod('locked')) || this.root.hasAttribute('data-locked');\n    }\n\n    enable() {\n        if (!this.root.classList.contains(this.DISABLED)) return;\n        this.root.classList.remove(this.DISABLED);\n        if (this.input) this.input.disabled = false;\n        if (this.inputLabel) this.inputLabel.disabled = false;\n        if (this.button) this.button.disabled = this._isLocked();\n    }\n\n    disable() {\n        if (this.root.classList.contains(this.DISABLED)) return;\n        this.root.classList.add(this.DISABLED);\n        if (this.button) this.button.disabled = true;\n        if (this.input) this.input.disabled = true;\n        if (this.inputLabel) this.inputLabel.disabled = true;\n        this.closeDropdown();\n    }\n\n    _requireField() {\n        this.error.innerText = 'Campo obbligatorio';\n    }\n\n    _lockSelect(value = null) {\n        if (!this.root) return;\n\n        if (this._populating) {\n            this._pendingLock = { value };\n            this._applyLockChrome();\n            return;\n        }\n\n        this._pendingLock = undefined;\n        if (value !== null) {\n            const option = this._optionByValue(value);\n            if (!option) {\n                this._clearForcedValue();\n                return;\n            }\n            if (this.getValue() !== option.dataset.value) {\n                this.setSelected(option.dataset.value);\n            }\n        }\n        this._applyLockChrome();\n    }\n\n    _finishPendingLock() {\n        if (!this._pendingLock) return;\n        const { value } = this._pendingLock;\n        this._pendingLock = undefined;\n        this._lockSelect(value);\n    }\n\n    _applyLockChrome() {\n        const root = this.root;\n        root.setAttribute('data-locked', '');\n        root.classList.add('rt011-select--locked');\n\n        const button = root.querySelector('.rt011-select__button');\n        const input = root.querySelector('.rt011-select__input');\n        const inputLabel = root.querySelector('.rt011-select__inputLabel');\n        const icon = root.querySelector('.rt011-select__icon');\n\n        if (button) button.disabled = true;\n        if (input) input.readOnly = true;\n        if (inputLabel) inputLabel.readOnly = true;\n\n        if (icon) {\n            icon.classList.add('rt011-select__icon--locked', 'ec-icon-lock');\n            icon.classList.remove('ec-icon-text-field-dropdown');\n        }\n    }\n\n    _unlockSelect() {\n        if (!this.root) return;\n        this._pendingLock = undefined;\n        const root = this.root;\n        root.removeAttribute('data-locked');\n        root.classList.remove('rt011-select--locked');\n        const button = root.querySelector('.rt011-select__button');\n        const input = root.querySelector('.rt011-select__input');\n        const inputLabel = root.querySelector('.rt011-select__inputLabel');\n        const icon = root.querySelector('.rt011-select__icon');\n        if (button) button.disabled = root.classList.contains(this.DISABLED);\n        if (input) input.readOnly = false;\n        if (inputLabel) inputLabel.readOnly = false;\n        if (icon) {\n            icon.classList.remove('rt011-select__icon--locked', 'ec-icon-lock');\n            icon.classList.add('ec-icon-text-field-dropdown');\n        }\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class Switch extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            (event) => {\n                event.preventDefault();\n                this.root.setAttribute('data-on', 'left');\n            },\n            'left'\n        );\n\n        this._addListener(\n            'click',\n            (event) => {\n                event.preventDefault();\n                this.root.setAttribute('data-on', 'right');\n            },\n            'right'\n        );\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class Step extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        // constants\n        this.SELECTED = this._mod('selected');\n        this.FILLED = this._mod('filled');\n    }\n\n    isSelected() {\n        return this.root.classList.contains(this.SELECTED);\n    }\n    select() {\n        if (this.isSelected()) return;\n        this.root.classList.add(this.SELECTED);\n    }\n    unselect() {\n        this.root.classList.remove(this.SELECTED);\n    }\n    \n    isFilled() {\n        return this.root.classList.contains(this.FILLED);\n    }\n    fill() {\n        if (this.isFilled()) return;\n        this.root.classList.add(this.FILLED);\n    }\n    unfill() {\n        this.root.classList.remove(this.FILLED);\n    }\n}\n\n","import './style.scss';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport ValidableComponent from '../../../../../libs/components/validable-component';\n\nexport default class FileUpload extends ValidableComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        let parsingError = null;\n        try {\n            this.maxNumFiles = JSON.parse(this.root.dataset.maxNumFiles);\n            this.maxFileSize = JSON.parse(this.root.dataset.maxFileSize);\n        } catch (error) {\n            parsingError = true;\n        }\n        if (parsingError) {\n            console.error('Could not parse max num files and/or max file size');\n            return;\n        }\n        this.formattedMaxSize = this._formattedFileSize(this.maxFileSize);\n        this._initText();\n\n        this.input = this._dEl('input');\n        this.title = this.root.dataset.title || '';\n        this.requiredTitle = this.root.dataset.requiredTitle || this.title;\n        this.optionalLabel = this.root.dataset.optionalLabel || '(optional)';\n        this.accept = this.input.accept ? this.input.accept.split(',') : [];\n        this.dropzone = this._dEl('label');\n        this.files = null;\n        this.filesMap = {};\n        this.filesUploaded = null;\n        this.preview = this._dEl('preview');\n\n        this._addEventListeners();\n    }\n\n    _getInput() {\n        return this.input;\n    }\n\n    enable() {\n        if (!this.input) return;\n        this.input.disabled = false;\n    }\n\n    disable() {\n        if (!this.input) return;\n        this.input.disabled = true;\n        this._setMaxFilesExceeded(false);\n    }\n\n    setRequired(required) {\n        if (!this.input) return;\n        this.input.required = required;\n        this._renderTitle(required ? this.requiredTitle : this.title, required);\n        if (!required) {\n            this.setState('');\n            this.root.classList.remove(this._mod('requiredMissing'));\n        }\n    }\n\n    _renderTitle(title, required) {\n        const titleEl = this._dEl('title');\n        if (!titleEl) return;\n        const optional = required ? '' : ` ${this.optionalLabel}`;\n        titleEl.innerHTML = `${title}${optional}<span class=\"ec-icon-plus\"></span>`;\n    }\n\n    getName() {\n        return this._getInput().name;\n    }\n\n    getLabel() {\n        return this.getName();\n    }\n\n    getFiles() {\n        return Array.from(this._getInput().files);\n    }\n\n    getValue() {\n        return this.getFiles();\n    }\n\n    isValid() {\n        if (this.getFiles().length <= 0) return !this._getInput().required;\n        if (!this._validNumFiles()) return false;\n        return this.getFiles()\n            .map((file) => this._validFileType(file) && this._validFileSize(file))\n            .reduce((x, y) => x && y);\n    }\n\n    _checkState() {\n        super._checkState();\n        const requiredMissing = this.input.required && this.getFiles().length === 0;\n        this.root.classList.toggle(this._mod('requiredMissing'), requiredMissing);\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'change',\n            () => {\n                this._addFiles(Array.from(this.input.files));\n                this._updateFiles();\n                this._checkState();\n                this._changedInput();\n            },\n            this.input\n        );\n        this._addListener(\n            'drop',\n            (event) => {\n                /* prevent default behavior (prevent file from being opened) */\n                event.preventDefault();\n                let droppedFiles = [];\n                if (event.dataTransfer.items) {\n                    /* use DataTransferItemList interface to access the file(s) */\n                    droppedFiles = Array.from(event.dataTransfer.items)\n                        .filter((item) => item.kind === 'file')\n                        .map((item) => item.getAsFile());\n                } else {\n                    /* use DataTransfer interface to access the file(s) */\n                    droppedFiles = Array.from(event.dataTransfer.files);\n                }\n                this._addFiles(droppedFiles);\n                this._updateFiles();\n                this._checkState();\n                this._changedInput();\n            },\n            this.dropzone\n        );\n        this._addListener(\n            'dragover',\n            (event) => {\n                /* prevent default behavior (prevent file from being opened) */\n                event.preventDefault();\n            },\n            this.dropzone\n        );\n\n        /* hide default browser error popup on enter pressed */\n        this._addListener(\n            'invalid',\n            () => {\n                this._checkState();\n            },\n            this.root,\n            true\n        );\n    }\n\n    _addFiles(newFiles) {\n        let maxFilesExceeded = false;\n        newFiles.forEach((file) => {\n            const isNewFile = !Object.prototype.hasOwnProperty.call(this.filesMap, file.name);\n            if (isNewFile && Object.keys(this.filesMap).length >= this.maxNumFiles) {\n                maxFilesExceeded = true;\n                return;\n            }\n            this.filesMap[file.name] = file;\n        });\n        this.files = Object.values(this.filesMap);\n        this.input.files = this._getDataTransfer(this.files).files;\n        this._setMaxFilesExceeded(maxFilesExceeded);\n    }\n\n    _setMaxFilesExceeded(exceeded) {\n        this.root.classList.toggle(this._mod('maxFilesExceeded'), exceeded);\n    }\n\n    resetMaxFilesValidation() {\n        this._setMaxFilesExceeded(false);\n    }\n\n    async _updateFiles() {\n        this._resetPreview();\n        await this._loadPreview();\n        this._attachRemoveHandlers();\n    }\n\n    _resetPreview() {\n        while (this.preview.firstChild) {\n            this.preview.removeChild(this.preview.firstChild);\n        }\n    }\n\n    async _loadPreview() {\n        if (this.files.length === 0) return;\n        for (const file of this.files) {\n            let errorText = null;\n            if (!this._validFileType(file)) errorText = `Formato del file non supportato.`;\n            if (!errorText && !this._validFileSize(file))\n                errorText = `Il file è troppo grande (${this._formattedFileSize(file.size)}). Massimo: ${\n                    this.formattedMaxSize\n                }.`;\n            const invalid = !this._validFileType(file) || !this._validFileSize(file);\n            const data = {\n                name: file.name,\n                size: file.size,\n                formattedSize: this._formattedFileSize(file.size),\n                errorText: errorText,\n                invalid: invalid,\n            };\n\n            const fileUploadedCall = (await import('./partials/file-uploaded.html')).default;\n            const fileUploaded = runTemplate(fileUploadedCall, data);\n            this.preview.appendChild(fileUploaded);\n        }\n    }\n\n    _attachRemoveHandlers() {\n        this.filesUploaded = Array.from(this.preview.querySelectorAll(this._el('fileUploaded', true)));\n        if (!this.filesUploaded || this.filesUploaded.length <= 0) return;\n        this.filesUploaded.forEach((fu) => {\n            const remove = fu.querySelector(this._el('remove', true));\n            const fileName = fu.dataset.fileName;\n            remove.addEventListener('click', (event) => {\n                event.preventDefault();\n                delete this.filesMap[fileName];\n                this.files = Object.values(this.filesMap);\n                this.input.files = this._getDataTransfer(this.files).files;\n                this._setMaxFilesExceeded(false);\n                this._updateFiles();\n                this._checkState();\n                this._changedInput();\n            });\n        });\n    }\n\n    _getDataTransfer(files) {\n        const dataTransfer = new DataTransfer();\n        for (const file of files) {\n            dataTransfer.items.add(file);\n        }\n        return dataTransfer;\n    }\n\n    _validNumFiles() {\n        return this.getFiles().length <= this.maxNumFiles;\n    }\n\n    _validFileSize(file) {\n        return file.size <= this.maxFileSize;\n    }\n\n    _validFileType(file) {\n        return (\n            this.accept.length <= 0 ||\n            this.accept.includes(file.type) ||\n            this.accept.includes('.' + file.name.split('.').pop())\n        );\n    }\n\n    _formattedFileSize(number) {\n        if (number < 1024) {\n            return `${number} B`;\n        }\n        if (number >= 1024 && number < 1048576) {\n            return `${(number / 1024).toFixed(1)} KB`;\n        }\n        return `${(number / 1048576).toFixed(1)} MB`;\n    }\n\n    _initText() {\n        const textEl = this._dEl('text');\n        if (!textEl.innerText.includes('{{maxFileSize}}')) return;\n        textEl.innerText = textEl.innerText.replace('{{maxFileSize}}', this.formattedMaxSize);\n    }\n}\n\n\n","import { getDictionary } from './dictionary-provider';\n\n/* poi types: fuel, margherita, pet */\nconst DEFAULT_POI_TYPE = 'margherita';\n\n/* Ottico and Parafarmacia filters match these insignia codes, Conad and Benessity. */\nconst STANDALONE_INSIGNIA_IDS = new Set([74, 76, 92, 93]);\n\nexport const isStandaloneInsigniaId = (id) => STANDALONE_INSIGNIA_IDS.has(parseInt(id, 10));\n\nexport const getInsigniaKey = (pdv) => {\n    switch (pdv.descrizioneInsegna) {\n        case 'SPAZIO CONAD': return 'spazio';\n        case 'MARGHERITA': case 'MARGHERITA CONAD': return 'margherita';\n        case 'CONAD CITY': return 'city';\n        case 'CONAD SUPERSTORE': return 'superstore';\n        case 'CONAD': return 'conad';\n        case 'MARKET CONAD': return 'market';\n        case 'IPERCONAD': return 'iper';\n        case 'CONAD IPERMERCATO': return 'ipermercato';\n        case 'SAPORI & DINTORNI CONAD': return 'sapori';\n        case 'TUDAY CONAD': return 'tuday';\n        case 'SPESA FACILE': return 'spesa';\n        case 'BENESSITY CONAD': return 'benessity';\n        case 'PARAFARMACIA CONAD': return 'pharmacy';\n        case 'BENESSITY PARAFARMACIA': return 'benessity-pharmacy';\n        case 'OTTICO CONAD': return 'eye';\n        case 'BENESSITY OTTICO': return 'benessity-eye';\n        case 'PET STORE CONAD': return 'pet';\n        case 'CONAD SELF 24h': return 'fuel';\n        default: return 'store';\n    }\n};\n\n/* Supermarket parents share one rank. Concepts follow: pet, pharmacy, eye, self. */\nconst PARENT_INSIGNIA_KEYS = new Set([\n    'spazio', 'margherita', 'city', 'superstore', 'conad', 'market',\n    'iper', 'ipermercato', 'sapori', 'tuday', 'spesa', 'benessity',\n]);\nconst CONCEPT_ORDER = ['pet', 'pharmacy', 'eye', 'fuel'];\n/* Benessity Ottico/Parafarmacia sort with their Conad concept peers. */\nconst CONCEPT_SORT_ALIASES = {\n    'benessity-pharmacy': 'pharmacy',\n    'benessity-eye': 'eye',\n};\n\n/** Larger than any rank, so a selected insignia stays ahead of every unselected one. */\nexport const INSIGNIA_SORT_SPAN = CONCEPT_ORDER.length + 2;\n\nexport const getInsigniaSortRank = (key) => {\n    if (PARENT_INSIGNIA_KEYS.has(key)) return 0;\n    const conceptKey = CONCEPT_SORT_ALIASES[key] || key;\n    const conceptIdx = CONCEPT_ORDER.indexOf(conceptKey);\n    return conceptIdx === -1 ? CONCEPT_ORDER.length + 1 : conceptIdx + 1;\n};\n\n/** Full legend of the \"i\" tooltip. Editorial overrides replace a field only when it is filled in. */\nexport const DEFAULT_INSIGNIA_LEGEND = {\n    title: 'Negozi Conad',\n    troviAnche: 'Trovi anche',\n    items: [\n        { insignia: 'margherita', name: 'Supermercati' },\n        { insignia: 'benessity', name: 'Benessity' },\n        { insignia: 'pet', name: 'Pet Store' },\n        { insignia: 'pharmacy', name: 'Parafarmacia' },\n        { insignia: 'eye', name: 'Ottico' },\n        { insignia: 'fuel', name: 'Self 24h Conad' },\n    ],\n};\n\nconst legendText = (value, fallback) => (typeof value === 'string' && value.trim()) || fallback;\n\nconst mergeLegendItem = (insignia, custom, fallback) => ({\n    insignia,\n    name: legendText(custom?.name, fallback?.name || insignia),\n    iconSrc: legendText(custom?.iconSrc, ''),\n});\n\n/**\n * When {@code itemsOrdered} is set (multifield dialog), authored order wins.\n * Otherwise legacy per-insignia overrides are merged onto the default order.\n */\nexport const resolveInsigniaLegend = (override) => {\n    const defaultsByKey = new Map(DEFAULT_INSIGNIA_LEGEND.items.map((item) => [item.insignia, item]));\n    const customList = Array.isArray(override?.items) ? override.items : [];\n\n    let items;\n    if (override?.itemsOrdered && customList.length > 0) {\n        items = customList\n            .filter((item) => item?.insignia)\n            .map((item) => mergeLegendItem(item.insignia, item, defaultsByKey.get(item.insignia)));\n    } else {\n        const customByKey = new Map(customList.map((item) => [item?.insignia, item]));\n        items = DEFAULT_INSIGNIA_LEGEND.items.map((item) =>\n            mergeLegendItem(item.insignia, customByKey.get(item.insignia), item));\n    }\n\n    return {\n        title: legendText(override?.title, DEFAULT_INSIGNIA_LEGEND.title),\n        troviAnche: legendText(override?.troviAnche, DEFAULT_INSIGNIA_LEGEND.troviAnche),\n        items,\n    };\n};\n\nexport const getInsigniaLabel = (insigniaKey) => {\n    switch (insigniaKey) {\n        case 'spazio':\n        case 'margherita':\n        case 'city':\n        case 'superstore':\n        case 'conad':\n        case 'market':\n        case 'iper':\n        case 'ipermercato':\n        case 'sapori':\n        case 'tuday':\n        case 'spesa': return 'Supermercati';\n        case 'benessity': return 'Benessity';\n        case 'pharmacy': return 'Parafarmacia Conad';\n        case 'benessity-pharmacy': return 'Benessity Parafarmacia';\n        case 'eye': return 'Ottico Conad';\n        case 'benessity-eye': return 'Benessity Ottico';\n        case 'pet': return 'Pet Store';\n        case 'fuel': return 'Self 24h';\n        default: return insigniaKey;\n    }\n};\n\n/**\n * Leading brand names in a geographic search query (longest first).\n * \"Parafarmacia\" / \"Ottico\" also match the Benessity twin of the same concept.\n */\nconst SEARCH_INSIGNIA_PREFIXES = [\n    { prefix: 'benessity parafarmacia', keys: ['benessity-pharmacy'] },\n    { prefix: 'benessity ottico', keys: ['benessity-eye'] },\n    { prefix: 'parafarmacia', keys: ['pharmacy', 'benessity-pharmacy'] },\n    { prefix: 'ottico', keys: ['eye', 'benessity-eye'] },\n    { prefix: 'pet store', keys: ['pet'] },\n    { prefix: 'self 24h', keys: ['fuel'] },\n    { prefix: 'self24h', keys: ['fuel'] },\n    { prefix: 'benessity', keys: ['benessity'] },\n];\n\n/** Insignia keys to promote when the typed search starts with a brand name. */\nexport const resolveInsigniaKeysFromSearchQuery = (query) => {\n    if (!query || typeof query !== 'string') return new Set();\n    const normalized = query.trim().toLowerCase();\n    if (!normalized) return new Set();\n    for (const { prefix, keys } of SEARCH_INSIGNIA_PREFIXES) {\n        if (normalized.startsWith(prefix)) return new Set(keys);\n    }\n    return new Set();\n};\n\n/**\n *\n * @param {PDV} pdv\n * @returns The pdv distance\n */\nexport const getPdvDistance = (pdv) => {\n    return pdv.distanza\n        ? `${pdv.distanza.toLocaleString('it-IT', {\n              maximumFractionDigits: 2,\n              minimumFractionDigits: 2,\n          })} km`\n        : null;\n};\n\n/**\n * Get the types of pdv\n * @param {*} pdv\n * @returns\n */\nexport const getPoiType = (pdv) => {\n    const isSpecialized = pdv.specialized;\n    if (!isSpecialized) return DEFAULT_POI_TYPE;\n\n    switch (pdv.descrizioneInsegna) {\n        case 'OTTICO CONAD':\n        case 'BENESSITY OTTICO':\n            return 'eye';\n        case 'PARAFARMACIA CONAD':\n        case 'BENESSITY PARAFARMACIA':\n            return 'pharmacy';\n        case 'CONAD SELF 24h':\n            return 'fuel';\n        case 'PET STORE CONAD':\n            return 'pet';\n        case 'BENESSITY CONAD':\n            return 'benessity';\n    }\n    // default poi type\n    return DEFAULT_POI_TYPE;\n};\n\n///////////////////////////////////////////////////\n//////////// STORE\n///////////////////////////////////////////////////\nexport const storeData = (pdv, uniqueId = null) => {\n    const dictionary = getDictionary();\n\n    const title = pdv.pdvTitle;\n    const address = pdv.pdvAddress;\n    let opening = null;\n    if (pdv.pdvDayOpen) {\n        opening = pdv.pdvOpening;\n    } else if (pdv.pdvCurrentDay) {\n        opening = dictionary.get('Closed');\n    }\n\n    const open = pdv.pdvOpen;\n    const insignia = pdv.descrizioneInsegna;\n    const distance = getPdvDistance(pdv);\n\n    const link = pdv.pdvLink;\n\n    const ctaDirections = {\n        label: dictionary.get('How to arrive'),\n        link: pdv.pdvDirectionsLink,\n    };\n    const ctaSecondary = {\n        label: dictionary.get('Store card'),\n        link: link,\n    };\n    let ctaPrimary = null;\n    if (pdv.volantiniCount > 0) {\n        try {\n            ctaPrimary = {\n                label: dictionary.get('Flyer'),\n                link: {\n                    href: '#',\n                    target: '_blank',\n                },\n            };\n        } catch (error) {\n            ctaPrimary = null;\n        }\n    }\n\n    const storeLink = {\n        label: title,\n        link: link,\n    };\n\n    let finalData = {\n        title: title,\n        name: title,\n        address: address,\n        subtitle: address,\n        opening: opening,\n        open: open,\n        ctaDirections: ctaDirections,\n        ctaSecondary: ctaSecondary,\n        ctaPrimary: ctaPrimary,\n        link: link,\n        storeId: pdv.anacanId,\n        storeLink: storeLink,\n        coopId: pdv.codiceCooperativa,\n        insignia: insignia,\n        insigniaKey: getInsigniaKey(pdv),\n        distance: distance,\n\n        //labels\n        linkLabel: dictionary.get('Go to store card'),\n        flyersLabel: dictionary.get('Look up flyers'),\n        storeSavedLabel: dictionary.get('Store saved!'),\n        favoriteLabel: dictionary.get('Favorite'),\n        maxStoresLabel: dictionary.get('You reached the maximum number of saved stores'),\n        saveAsFav: dictionary.get('Save as favorite'),\n        save: dictionary.get('Save store'),\n        inStoreLabel: dictionary.get('In store:'),\n    };\n    if (uniqueId) finalData.uniqueId = uniqueId;\n\n    return finalData;\n};\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getGMapsHelper } from '../../../../../libs/gmaps-helper';\nimport { getRegister } from '../../../../../libs/register';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getStoreManager } from '../../../../../libs/store-manager';\nimport { getPoiType, storeData } from '../../../../../libs/pdv-utils';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\n\nexport default class MapPin extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        // constants\n        this.gMapsHelper = getGMapsHelper();\n        this.register = getRegister();\n        this.storeManager = getStoreManager();\n        this.trackingManager = getTrackingManager();\n\n        this.runTemplate = runTemplate;\n        this.SELECTED = this._mod('selected');\n        this.AGGREGATOR = this._mod('aggregator');\n        this.MIXED = this._mod('mixed');\n        this.MOBILE = window.innerWidth < BREAKPOINTS.l;\n        this.PAGE_SELECTOR = '.rs1-page';\n\n        this.mixed = false;\n        this.id = this.root.id;\n        this.pinId = this.root.dataset.pinId;\n        this.pin = this._dEl('pin') || this._dEl('multiPill');\n        this.map = null;\n        this.position = null;\n        this.mapPinObj = null;\n        this.fav = false;\n\n        this.pois = [];\n        this.multiPois = [];\n        this.infoWindows = [];\n        this.infoWindowElements = [];\n\n        this._activeType = null;\n        this._activeIdx = null;\n        this._swiper = null;\n        this._infoWindowsByType = null;\n        this._infoWindowsByIndex = null;\n\n        this._addMapListeners();\n    }\n\n    async setMapParams(map, position, mapPinObj, poi = null, simplified = false) {\n        this.map = map;\n        this.position = position;\n        this.mapPinObj = mapPinObj;\n        if (!poi) return;\n\n        this.pois = [poi];\n        this.simplified = simplified;\n        await this._initInfoWindow();\n    }\n\n    _addMapListeners() {\n        /* Arm suppress before click: on mobile the map 'click' can fire before ours. */\n        this._addListener(\n            ['touchstart', 'pointerdown', 'mousedown'],\n            () => {\n                this._emitSuppressMapClick();\n            },\n            this.pin\n        );\n        /* handle click on map markers pin */\n        this._addListener(\n            'click',\n            (event) => {\n                event.stopPropagation();\n                if (!this.mapPinObj?.getVisible()) return;\n                this._emitSuppressMapClick();\n                /* aggregator case (cluster) */\n                if (this.isAggregator()) {\n                    this._trackPinMappa();\n                    const clickedAggregator = new CustomEvent('clickedAggregator', { bubbles: true });\n                    clickedAggregator.data = { position: this.getPosition() };\n                    this.root.dispatchEvent(clickedAggregator);\n                } else if (this._dEl('multiPill')) {\n                    this._onMultiLocationClick(event);\n                } else {\n                    this._trackPinMappa();\n                    const clickedStore = new CustomEvent('clickedStore', { bubbles: true });\n                    clickedStore.data = { pinId: this.pinId };\n                    this.root.dispatchEvent(clickedStore);\n                }\n            },\n            this.pin\n        );\n    }\n\n    _emitSuppressMapClick() {\n        this.root.dispatchEvent(new CustomEvent('suppressMapClick', { bubbles: true }));\n    }\n\n    /**\n     * CPO-782 / CPO-560 event 6 — PinMappa must always be present.\n     * JSON.stringify in TrackingManager drops undefined keys, so never pass an empty label.\n     */\n    _trackPinMappa() {\n        const poi = this.multiPois[this._activeIdx ?? 0] || this.pois[0];\n        const isCluster = this.isAggregator();\n        const isAggregated = isCluster || !!this._dEl('multiPill');\n        this.trackingManager.track(this.root, {\n            event: 'PinMappa',\n            CustomLink: 'Click Pin Mappa',\n            funnel: {\n                nomeFunnel: 'Store Locator',\n                stepFunnel: 'Interazioni con Risultati Store Locator',\n            },\n            negozioInfo: {\n                indirizzoRicerca: 'vars.currentSearchAddress',\n                /* Cluster + multipin: always \"Pin Aggregatore\" (CPO-782). */\n                PinMappa: isAggregated ? 'Pin Aggregatore' : this.getPinType() || this._pinLabelForPoi(poi),\n                idNegozio: isCluster ? '' : poi?.anacanId || '',\n                CooperativaNegozio: isCluster ? '' : poi?.codiceCooperativa || '',\n                Insegna: isCluster ? '' : poi?.descrizioneInsegna || '',\n                tipologiaRisultati: 'Mappa',\n            },\n        });\n    }\n\n    _pinLabelForPoi(poi) {\n        if (!poi) return 'Pin Store';\n        const labels = {\n            margherita: 'Pin Store',\n            fuel: 'Pin Carburante',\n            eye: 'Pin Ottico',\n            pharmacy: 'Pin Parafarmacia',\n            pet: 'Pin PetStore',\n            benessity: 'Pin Benessity',\n        };\n        return labels[getPoiType(poi)] || 'Pin Store';\n    }\n\n    _onMultiLocationClick(event) {\n        const icon = this._multiIconFromEvent(event);\n        if (this.isSelected()) {\n            if (icon) this._activateMultiIcon(icon);\n            /* Subsequent icon taps must still emit Click Pin Mappa (CPO-560). */\n            this._trackPinMappa();\n            return;\n        }\n        this._trackPinMappa();\n        const clickedStore = new CustomEvent('clickedStore', { bubbles: true });\n        clickedStore.data = { pinId: this.pinId };\n        this.root.dispatchEvent(clickedStore);\n    }\n\n    _multiIconFromEvent(event) {\n        const path = typeof event.composedPath === 'function' ? event.composedPath() : [];\n        for (const node of path) {\n            if (node?.classList?.contains('rt016-map-pin__multiIcon')) return node;\n        }\n        if (event.target?.closest) {\n            const fromTarget = event.target.closest('.rt016-map-pin__multiIcon');\n            if (fromTarget) return fromTarget;\n        }\n        const point = event.changedTouches?.[0] || event.touches?.[0] || event;\n        const x = point.clientX;\n        const y = point.clientY;\n        if (typeof x !== 'number' || typeof y !== 'number') return null;\n        const stack =\n            typeof document.elementsFromPoint === 'function'\n                ? document.elementsFromPoint(x, y)\n                : [document.elementFromPoint(x, y)].filter(Boolean);\n        for (const el of stack) {\n            const icon = el?.closest?.('.rt016-map-pin__multiIcon');\n            if (icon && this.root.contains(icon)) return icon;\n        }\n        return null;\n    }\n\n    _activateMultiIcon(icon) {\n        const idx = parseInt(icon.dataset.swiperIdx, 10);\n        if (Number.isNaN(idx)) return;\n        const type = icon.dataset.brandType;\n        this.setActiveType(type, idx);\n        if (this._swiper) this._swiper.slideTo(idx);\n    }\n\n    addMixed(poi) {\n        this.root.classList.add(this._mod('mixed'));\n        this.pois.push(poi);\n        this._initInfoWindow();\n    }\n\n    setMultiLocation(types) {\n        const pill = this._dEl('multiPill');\n        if (!pill) return;\n        types.forEach((type, i) => {\n            const icon = document.createElement('div');\n            icon.className = `rt016-map-pin__multiIcon rt016-map-pin__multiIcon--${type}`;\n            icon.dataset.swiperIdx = i;\n            icon.dataset.brandType = type;\n            icon.setAttribute('role', 'button');\n            icon.tabIndex = 0;\n            pill.appendChild(icon);\n        });\n    }\n\n    setSwiperData(swiper) {\n        this._swiper = swiper;\n    }\n\n    async setMultiPois(pois) {\n        this.multiPois = pois;\n        const mapInfoWindowCall = (await import('../rt020-map-info-window/rt020-map-info-window.html')).default;\n        this._infoWindowsByType = {};\n        this._infoWindowsByIndex = [];\n        for (let i = 0; i < pois.length; i++) {\n            const poi = pois[i];\n            const type = getPoiType(poi);\n            const iwData = {\n                simplified: this.simplified,\n                pinId: this.pinId,\n                mixed: false,\n                ...storeData(poi, `${this.id}-info-window-${i}`),\n            };\n            const el = this.runTemplate(mapInfoWindowCall, iwData);\n            this._infoWindowsByIndex[i] = el;\n            this._infoWindowsByType[type] = el;\n        }\n    }\n\n    getActiveIdx() {\n        return this._activeIdx;\n    }\n\n    /** Align multipin highlight + carousel to the list card with the given store id. */\n    activateStore(storeId) {\n        if (!this._swiper || storeId == null) return false;\n        const slides = this._swiper.slides || [];\n        for (let i = 0; i < slides.length; i++) {\n            const card = slides[i].querySelector(`[data-store-id=\"${storeId}\"]`);\n            if (!card) continue;\n            this.setActiveType(card.dataset.storeType, i);\n            if (this._swiper.activeIndex !== i) this._swiper.slideTo(i);\n            return true;\n        }\n        return false;\n    }\n\n    setActiveType(type, idx = null) {\n        this._activeType = type;\n        this._activeIdx = idx;\n        const pill = this._dEl('multiPill');\n        if (!pill) return;\n        const activeClass = 'rt016-map-pin__multiIcon--active';\n        pill.querySelectorAll(`.${activeClass}`).forEach((el) => el.classList.remove(activeClass));\n        const target = idx !== null\n            ? pill.querySelector(`.rt016-map-pin__multiIcon[data-swiper-idx=\"${idx}\"]`)\n            : pill.querySelector(`.rt016-map-pin__multiIcon--${type}`);\n        if (!target) return;\n        /* Highlight only: icon order stays as built (default hierarchy or filter/search reorder). */\n        target.classList.add(activeClass);\n        const iwEl = idx !== null ? this._infoWindowsByIndex?.[idx] : this._infoWindowsByType?.[type];\n        if (this.isSelected() && this.infoWindows[0] && iwEl) {\n            this.infoWindows[0].setContent(iwEl);\n            const iwComp = this.register.getClass(iwEl);\n            if (iwComp?.refresh) iwComp.refresh();\n        }\n    }\n\n    async _initInfoWindow() {\n        const maps = await this.gMapsHelper.getGMaps();\n        const mapInfoWindowCall = (await import('../rt020-map-info-window/rt020-map-info-window.html')).default;\n\n        this.infoWindowElements = []; // reset elements\n        this.infoWindows = []; // reset infoWindows\n        const isMultiLocation = !!this._dEl('multiPill');\n        for (let i = 0; i < this.pois.length; i++) {\n            let offset = 358 * i - 175 * (this.pois.length > 1 ? 1 : 0);\n            if (this.MOBILE && this.isMixed()) offset = 188 * i - 90 * (this.pois.length > 1 ? 1 : 0);\n\n            /* CPO-793 / Figma: 8px between card bottom and pin/pill top.\n             * Google IW keeps ~8px tip chrome even with tip display:none, so\n             * offsets are 8px less than the pure geometry (50+8+8 multipill /\n             * 8 single) — otherwise the visual gap lands around 16px. */\n            const pixelOffset = isMultiLocation\n                ? new maps.Size(0, -58, 'px', 'px')\n                : new maps.Size(8 + offset, 0, 'px', 'px');\n\n            this.infoWindows.push(\n                new maps.InfoWindow({\n                    minWidth: this.MOBILE && this.isMixed() ? 180 : 350,\n                    maxWidth: this.MOBILE && this.isMixed() ? 180 : 350,\n                    pixelOffset,\n                    position: this.position,\n                })\n            );\n        }\n\n        for (const poi of this.pois) {\n            // info window data\n            const infoWindowData = {\n                simplified: this.simplified,\n                pinId: this.pinId,\n                mixed: this.isMixed(),\n                ...storeData(poi, `${this.id}-info-window`),\n            };\n\n            this.infoWindowElements.push(this.runTemplate(mapInfoWindowCall, infoWindowData));\n        }\n    }\n\n    getPosition() {\n        return this.position;\n    }\n\n    isSelected() {\n        return this.root.classList.contains(this.SELECTED);\n    }\n\n    isAggregator() {\n        return this.root.classList.contains(this.AGGREGATOR);\n    }\n\n    isMixed() {\n        return this.root.classList.contains(this.MIXED);\n    }\n\n    setSelected(select = true, infoWindowOptions = this.DEFAULT_INFO_WINDOW_OPTIONS) {\n        this.mapPinObj?.setOnTop?.(select);\n        if (select) {\n            this.root.classList.add(this.SELECTED);\n            for (let i = 0; i < this.infoWindows.length; i++) {\n                const infoWindow = this.infoWindows[i];\n                if (infoWindowOptions) infoWindow.setOptions(infoWindowOptions);\n                const iwEl = this._activeIdx !== null\n                    ? this._infoWindowsByIndex?.[this._activeIdx]\n                    : this._infoWindowsByType?.[this._activeType];\n                const content = (i === 0 && iwEl) ? iwEl : this.infoWindowElements[i];\n                infoWindow.setContent(content);\n                infoWindow.open(this.map, this.mapPinObj);\n                if (content) {\n                    const iwComp = this.register.getClass(content);\n                    if (iwComp?.refresh) iwComp.refresh();\n                }\n            }\n        } else {\n            this.root.classList.remove(this.SELECTED);\n            for (let i = 0; i < this.infoWindows.length; i++) {\n                const infoWindow = this.infoWindows[i];\n                infoWindow.close();\n                infoWindow.setOptions(this.DEFAULT_INFO_WINDOW_OPTIONS);\n            }\n        }\n    }\n\n    resetPins() {\n        const page = document.querySelector(this.PAGE_SELECTOR);\n        const pins = Array.from(page.querySelectorAll(this.getSelector()));\n        for (const pin of pins) {\n            const pinObj = this.register.getClass(pin);\n            if (pinObj.isAggregator()) continue;\n            if (pinObj.id !== this.id) pinObj.setSelected(false);\n        }\n    }\n\n    getPinType() {\n        if (this.root.classList.contains(this._mod('aggregator'))) return 'Pin Aggregatore';\n        if (this.root.classList.contains(this._mod('multiLocation'))) return 'Pin Aggregatore';\n        if (this.root.classList.contains(this._mod('fuel'))) return 'Pin Carburante';\n        if (this.root.classList.contains(this._mod('margherita'))) return 'Pin Store';\n        if (this.root.classList.contains(this._mod('eye'))) return 'Pin Ottico';\n        if (this.root.classList.contains(this._mod('pharmacy'))) return 'Pin Parafarmacia';\n        if (this.root.classList.contains(this._mod('pet'))) return 'Pin PetStore';\n        if (this.root.classList.contains(this._mod('mixed'))) return 'Pin Mixed';\n        return this._pinLabelForPoi(this.pois[0]);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { emptyElement } from '../../../../../libs/utils';\n\n\nexport default class Accordion extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        // constants\n        this.OPEN = this._mod('open');\n        this.BADGE_SHOW = this._mod('badge');\n\n        this.heading = this._dEl('heading');\n        this.badge = this._dEl('badge');\n        this.content = this._dEl('content');\n\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            (event) => {\n                event.preventDefault();\n                if (!this.isOpen()) {\n                    // about to be opened\n                    this.content.style.visibility = 'visible';\n                }\n                this.root.classList.toggle(this.OPEN);\n                this.updateContentHeight();\n                this._updateAriaAttributes();\n                if (!this.isOpen()) {\n                    // just closed\n                    this.content.style.visibility = 'hidden';\n                }\n                const customEvent = new CustomEvent('rt17HeightChanged', { bubbles: true });\n                customEvent.data = { isOpen: this.isOpen() };\n                this.root.dispatchEvent(customEvent);\n            },\n            this.heading\n        );\n        this._addListener(\n            'resize',\n            () => {\n                this.updateContentHeight();\n            },\n            window\n        );\n    }\n\n    updateContentHeight() {\n        this.content.style.maxHeight = `${!this.isOpen() ? 1 : this.content.scrollHeight + 100}px`;\n    }\n\n    setBadgeText(badgeText) {\n        this.badge.innerText = badgeText;\n        badgeText === '' ? this.hideBadge() : this.root.classList.add(this.BADGE_SHOW);\n    }\n    getBadgeText() {\n        return this.badge.innerText;\n    }\n\n    hideBadge() {\n        this.root.classList.remove(this.BADGE_SHOW);\n    }\n\n    isOpen() {\n        return this.root.classList.contains(this.OPEN);\n    }\n\n    setContent(contentEl) {\n        emptyElement(this.content);\n        this.content.append(contentEl);\n    }\n\n    /* Programmatic open/close (e.g. store locator pane <-> filters modal sync)\n       must toggle visibility like the click handler: the content is\n       visibility:hidden by default, so without it an accordion opened from\n       code keeps its height but shows nothing (CPO-789). */\n    openContent() {\n        if (this.isOpen()) return;\n        this.content.style.visibility = 'visible';\n        this.root.classList.add(this.OPEN);\n        this.content.style.maxHeight = `${this.content.scrollHeight + 100}px`;\n        this._updateAriaAttributes();\n    }\n\n    closeContent() {\n        this.root.classList.remove(this.OPEN);\n        this.content.style.maxHeight = '1px';\n        this._updateAriaAttributes();\n        this.content.style.visibility = 'hidden';\n    }\n\n    _updateAriaAttributes() {\n        const isOpen = this.isOpen();\n        this.heading.setAttribute('aria-expanded', `${isOpen ? 'true' : 'false'}`);\n        this.content.setAttribute('tabindex', `${isOpen ? '0' : '-1'}`);\n        this.content.setAttribute('aria-hidden', `${isOpen ? 'false' : 'true'}`);\n    }\n}\n\n\n","import './style.scss';\nimport ValidableComponent from '../../../../../libs/components/validable-component';\n\nexport default class Textarea extends ValidableComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        this.input = this._dEl('input');\n        this.optional = this._dEl('label').querySelector('span');\n        this.error = this._dEl('error');\n\n        this.showOptional(!this.input.required);\n        if (this.root.hasAttribute('data-new-line-disabled')) {\n            this._disableNewLine();\n        }\n        this._addEventListeners();\n    }\n\n    _getInput() {\n        return this.input;\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            ['keyup', 'change', 'input'],\n            () => {\n                this._checkState();\n                this._changedInput();\n            },\n            this.input\n        );\n\n        this._addListener(\n            'focusout',\n            () => {\n                if (this.input.required && this.input.value == '') {\n                    this.setState('error');\n                    this._requireField();\n                }\n            },\n            this.input\n        );\n\n        /* hide default browser error popup on enter pressed */\n        this._addListener(\n            'invalid',\n            () => {\n                this._checkState();\n                if (this.input.required && this.input.value == '') {\n                    this.setState('error');\n                    this._requireField();\n                }\n            },\n            this.root,\n            true\n        );\n    }\n\n    _requireField() {\n        this.error.innerText = 'Campo obbligatorio';\n    }\n\n    _disableNewLine() {\n        this._addListener(\n            'keydown',\n            (event) => {\n                if (event.keyCode == 13) event.preventDefault();\n            },\n            this.input\n        );\n    }\n\n    enable() {\n        if (!this.input) return;\n        this.input.disabled = false;\n    }\n\n    disable() {\n        if (!this.input) return;\n        this.input.disabled = true;\n    }\n\n    showOptional(show = true) {\n        this.optional.style.display = show ? 'inline' : 'none';\n    }\n\n    getLabel() {\n        return this.input.placeholder;\n    }\n\n    getName() {\n        return this.input.name;\n    }\n\n    getValue() {\n        return this.input.value;\n    }\n\n    isValid() {\n        return !this.input.required || (this.input.required && this.input.value);\n    }\n\n    reset() {\n        this.input.value = '';\n        this.setState('');\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\n\nexport default class StatusDot extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        // constants\n        this.STATUS = ['success', 'error', 'warning', 'info'];\n    }\n\n    setStatus(status) {\n        if (!this.STATUS.includes(status)) return;\n        this.root.dataset.status = status;\n    }\n}\n\n\n","import { getApiProvider } from '../../../../../libs/api-provider';\nimport './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { getGMapsHelper } from '../../../../../libs/gmaps-helper';\nimport { getStoreManager } from '../../../../../libs/store-manager';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { closeLoader, generateTrackVolantinoInfo, openLoader } from '../../../../../libs/utils';\n\nexport default class MapInfoWindow extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        // constants\n        this.register = getRegister();\n        this.gMapsHelper = getGMapsHelper();\n        this.storeManager = getStoreManager();\n        this.userService = getUserService();\n        this.trackingManager = getTrackingManager();\n        this.apiProvider = getApiProvider();\n\n        this.MAP_PIN_SELECTOR = '.rt016-map-pin';\n\n        this.FAVORITE = this._mod('favorite');\n        this.SAVED = this._mod('saved');\n        this.FAV_DISABLED = this._mod('savedDisabled');\n        this.SHOW_POPUP = this._mod('showPopup');\n        this.SHOW_TOOLTIP = this._mod('showTooltip');\n        this.SHOW_TOOLTIP_MAX_STORES = this._mod('showTooltipMaxStores');\n\n        this.id = this.root.id;\n        this.pinId = this.root.dataset.pinId;\n        this.storeId = this.root.dataset.storeId;\n        this.poiLink = this._dEl('poiLink');\n        this.flyerLink = this._dEl('flyerLink');\n        this.closeBtn = this._dEl('close');\n        this.favorite = this._dEl('favorite');\n        this.setFavoriteBtn = this._dEl('setFavorite');\n        this.setSavedBtn = this._dEl('setSaved');\n        this._flyerPromise = null;\n        this._flyer = null;\n        this.FLYER_LOADING = this._elMod('flyerLink', 'loading');\n\n        if (this.flyerLink && !this._isFlyerHrefReady()) {\n            this._setFlyerLoading(true);\n        }\n\n        this._addEventListeners();\n        this._addStoreListeners();\n    }\n\n    async _updateStatus() {\n        this.root.classList.remove(this.FAVORITE, this.SAVED, this.FAV_DISABLED);\n        this.root.classList.remove(this.SHOW_POPUP);\n\n        const user = await this.userService.getUser();\n        if (!user) return;\n\n        this.favorite?.classList.add(this._elMod('favorite', 'show'));\n\n        const favoriteStore = await this.userService.getStore();\n        const savedStores = await this.userService.getSavedStores();\n\n        if (this.storeId == favoriteStore?.anacanId) {\n            this.root.classList.add(this.FAVORITE);\n            return;\n        }\n\n        for (const store of savedStores) {\n            if (this.storeId == store.anacanId) {\n                this.root.classList.add(this.SAVED);\n                return;\n            }\n        }\n\n        if (savedStores.length >= window.maxStoreOfInterest) {\n            this.root.classList.add(this.FAV_DISABLED);\n        }\n    }\n\n    refresh() {\n        this._updateStatus();\n        if (!this.flyerLink) return;\n        if (this._isFlyerHrefReady()) {\n            this._setFlyerLoading(false);\n            return;\n        }\n        /* Fire-and-forget: resolve the real flyer href while the pin detail\n         * is already visible. CTA stays as skeleton until ready. */\n        this._setFlyerLoading(true);\n        this._prefetchFlyer();\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('userData', () => {\n            this._updateStatus();\n        });\n    }\n\n    _isFlyerHrefReady() {\n        const href = this.flyerLink?.getAttribute('href');\n        return !!href && href !== '#';\n    }\n\n    _setFlyerLoading(loading) {\n        if (!this.flyerLink) return;\n        this.flyerLink.classList.toggle(this.FLYER_LOADING, loading);\n        this.flyerLink.setAttribute('aria-busy', loading ? 'true' : 'false');\n        if (loading) {\n            this.flyerLink.setAttribute('tabindex', '-1');\n        } else {\n            this.flyerLink.removeAttribute('tabindex');\n        }\n    }\n\n    _hideFlyerCta() {\n        if (!this.flyerLink) return;\n        this._setFlyerLoading(false);\n        this.flyerLink.hidden = true;\n    }\n\n    _prefetchFlyer() {\n        if (!this.flyerLink) return this._flyerPromise;\n        if (!this._flyerPromise) {\n            this._flyerPromise = this._resolveFlyer();\n        }\n        return this._flyerPromise;\n    }\n\n    async _resolveFlyer() {\n        try {\n            const flyers = await this.apiProvider.getStoreFlyers(this.storeId);\n            if (!flyers || flyers.length == 0) {\n                this._hideFlyerCta();\n                return null;\n            }\n            const flyer = flyers[0];\n            const href = flyer?.link?.href;\n            if (!href) {\n                this._hideFlyerCta();\n                return null;\n            }\n            this._flyer = flyer;\n            this.flyerLink.href = href;\n            this.flyerLink.hidden = false;\n            this._setFlyerLoading(false);\n            return { flyer, href };\n        } catch (error) {\n            console.warn('Could not get store flyers');\n            this._flyerPromise = null;\n            this._hideFlyerCta();\n            return null;\n        }\n    }\n\n    _trackFlyerClick(flyer) {\n        const f = flyer || this._flyer;\n        if (!f) return;\n        this.trackingManager.track(this.root, {\n            event: 'VaiAlVolantino',\n            CustomLink: 'Click Vai al volantino',\n            negozioInfo: {\n                indirizzoRicerca: 'vars.currentSearchAddress',\n                idNegozio: 'data.storeId',\n                CooperativaNegozio: 'data.coopId',\n                Insegna: 'data.insegna',\n                tipologiaRisultati: 'data.resultType',\n            },\n            volantinoInfo: {\n                ...generateTrackVolantinoInfo(f),\n            },\n        });\n    }\n\n    _trackFavorite(action) {\n        this.trackingManager.track(this.root, {\n            event: 'PdvPreferito',\n            CustomLink: `${action} Pdv preferito`,\n            funnel: {\n                nomeFunnel: 'Store Locator',\n                stepFunnel: 'Interazioni con Risultati Store Locator',\n            },\n            negozioInfo: {\n                indirizzoRicerca: 'vars.currentSearchAddress',\n                idNegozio: 'data.storeId',\n                CooperativaNegozio: 'data.coopId',\n                Insegna: 'data.insegna',\n                tipologiaRisultati: 'data.resultType',\n            },\n        });\n    }\n\n    _addEventListeners() {\n        if (this.poiLink)\n            this._addListener(\n                'click',\n                () => {\n                    this.trackingManager.track(this.root, {\n                        event: 'VaiAllaSchedaNegozio',\n                        CustomLink: 'Click Vai alla Scheda Negozio',\n                        negozioInfo: {\n                            indirizzoRicerca: 'vars.currentSearchAddress',\n                            idNegozio: 'data.storeId',\n                            CooperativaNegozio: 'data.coopId',\n                            Insegna: 'data.insegna',\n                            tipologiaRisultati: 'data.resultType',\n                        },\n                    });\n                },\n                this.poiLink\n            );\n\n        if (this.flyerLink)\n            this._addListener(\n                'click',\n                (event) => {\n                    event.stopPropagation();\n                    if (!this._isFlyerHrefReady()) {\n                        event.preventDefault();\n                        return;\n                    }\n                    this._trackFlyerClick();\n                },\n                this.flyerLink\n            );\n\n        if (this.closeBtn)\n            this._addListener(\n                'click',\n                () => {\n                    const pinEl = document.querySelector(`.rt016-map-pin[data-pin-id=\"${this.pinId}\"]`);\n                    if (pinEl) {\n                        const pin = this.register.getClass(pinEl);\n                        if (pin) pin.setSelected(false);\n                    }\n                },\n                this.closeBtn\n            );\n\n        if (this.favorite)\n            this._addListener(\n                'click',\n                async (event) => {\n                    event.preventDefault();\n\n                    if (this.root.classList.contains(this.SHOW_POPUP)) {\n                        this.root.classList.remove(this.SHOW_POPUP);\n                        return;\n                    }\n\n                    this.root.classList.remove(this.SHOW_POPUP);\n                    const savedStores = await this.userService.getSavedStores();\n                    if (this.root.classList.contains(this.SAVED)) {\n                        openLoader('main');\n                        const removed = await this.userService.removeSavedStore(this.storeId);\n                        if (removed) this._trackFavorite('Rimozione');\n                        closeLoader('main');\n                    } else if (savedStores.length >= window.maxStoreOfInterest) {\n                        this.root.classList.add(this.SHOW_TOOLTIP_MAX_STORES);\n                        setTimeout(() => this.root.classList.remove(this.SHOW_TOOLTIP_MAX_STORES), 5000);\n                    } else {\n                        this.root.classList.add(this.SHOW_POPUP);\n                    }\n                },\n                this.favorite\n            );\n\n        if (this.setFavoriteBtn && this.setSavedBtn) {\n            this._addListener(\n                'click',\n                async () => {\n                    openLoader('main');\n                    const res1 = await this.userService.setPreferredStore(this.storeId);\n                    const res2 = await this.userService.getSavedStores();\n                    const isStoreSaved = Array.isArray(res2) && res2.find((s) => s.anacanId == this.storeId);\n                    if (!isStoreSaved) this.userService.addSavedStore(this.storeId);\n                    if (res1) {\n                        this.root.classList.remove(this.SHOW_POPUP);\n                        this._trackFavorite('Aggiunta');\n                    }\n                    closeLoader('main');\n                },\n                this.setFavoriteBtn\n            );\n\n            this._addListener(\n                'click',\n                async () => {\n                    openLoader('main');\n                    const res = await this.userService.addSavedStore(this.storeId);\n                    if (res) {\n                        this._trackFavorite('Aggiunta');\n                        this.root.classList.add(this.SHOW_TOOLTIP);\n                        setTimeout(() => this.root.classList.remove(this.SHOW_TOOLTIP), 2000);\n                        this.root.classList.remove(this.SHOW_POPUP);\n                    }\n                    closeLoader('main');\n                },\n                this.setSavedBtn\n            );\n        }\n    }\n\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport mockStoreFlyers from '../../../../../mocks/storeFlyers.json';\nimport { getStoreManager } from '../../../../../libs/store-manager';\nimport { getRegister } from '../../../../../libs/register';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { closeLoader, flyerData, generateTrackVolantinoInfo, openLoader } from '../../../../../libs/utils';\nconst USE_MOCK = false;\n\nexport default class StoreCard extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        // constants\n        this.storeManager = getStoreManager();\n        this.register = getRegister();\n        this.trackingManager = getTrackingManager();\n        this.userService = getUserService();\n        this.apiProvider = getApiProvider();\n\n        this.SELECTED = this._mod('selected');\n        this.SAVED = this._mod('saved');\n        this.FAV_DISABLED = this._mod('savedDisabled');\n        this.FAVORITE = this._mod('favorite');\n        this.SHOW_TOOLTIP = this._mod('showTooltip');\n        this.SHOW_TOOLTIP_MAX_STORES = this._mod('showTooltipMaxStores');\n        this.SHOW_POPUP = this._mod('showPopup');\n        this.FLYERS_OPEN = this._elMod('flyers', 'open');\n        this.PAGE_SELECTOR = '.rs1-page';\n\n        this.servicesUrlMap = [];\n        if (this.root.hasAttribute('data-services-url-map')) {\n            const list = JSON.parse(this.root.dataset.servicesUrlMap);\n            if (Array.isArray(list)) for (let mapping of list) this.servicesUrlMap[mapping.serviceId] = mapping.url;\n        }\n\n        this.id = this.root.id;\n        this.storeId = this.root.dataset.storeId;\n        this.coopId = this.root.dataset.coopId;\n        this.cplData = this.root.dataset.cplData;\n\n        this.content = this._dEl('content');\n        this.favorite = this._dEl('favorite');\n        this.setFavoriteBtn = this._dEl('setFavorite');\n        this.setSavedBtn = this._dEl('setSaved');\n        this.flyers = this._dEl('flyers');\n        this.flyersHeading = this._dEl('flyersHeading');\n        this.nameEl = this._dEl('name');\n        this.services = this._dEl('serviceImage', true);\n        this._addEventListeners();\n        this._addStoreListeners();\n        this._updateStatus();\n    }\n\n    async _updateStatus() {\n        // Reset\n        this.root.classList.remove(this.FAVORITE);\n        this.root.classList.remove(this.SAVED);\n        this.root.classList.remove(this.FAV_DISABLED);\n        this._hidePopups();\n\n        // check user\n        const user = await this.userService.getUser();\n        if (user == null) return;\n\n        // show favorite button\n        this.favorite.classList.add(this._elMod('favorite', 'show'));\n\n        const savedStores = await this.userService.getSavedStores();\n        const favoriteStore = await this.userService.getStore();\n\n        // check favorites\n        if (this.storeId == favoriteStore.anacanId) {\n            this.root.classList.add(this.FAVORITE);\n            return;\n        } else {\n            for (let store of savedStores) {\n                if (this.storeId == store.anacanId) {\n                    this.root.classList.add(this.SAVED);\n                    return;\n                }\n            }\n        }\n\n        //if max reached\n        if (savedStores.length >= window.maxStoreOfInterest) {\n            this.root.classList.add(this.FAV_DISABLED);\n        }\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('userData', () => {\n            this._updateStatus();\n        });\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            () => {\n                /* case selected */\n                if (this.isSelected()) return;\n                /* case not selected */\n                this.unselectCards();\n                this.setSelected();\n                /* emit res item clicked */\n                const clickedStore = new CustomEvent('clickedStoreCard', { bubbles: true });\n                clickedStore.data = { storeId: this.storeId };\n                this.root.dispatchEvent(clickedStore);\n            },\n            this.content\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                /* Tracking */\n                this.trackingManager.track(this.root, {\n                    event: 'VaiAllaSchedaNegozio',\n                    CustomLink: 'Click Vai alla Scheda Negozio',\n                    negozioInfo: {\n                        indirizzoRicerca: 'vars.currentSearchAddress',\n                        idNegozio: 'data.storeId',\n                        CooperativaNegozio: 'data.coopId',\n                        Insegna: 'data.insegna',\n                        tipologiaRisultati: 'data.resultType',\n                    },\n                });\n            },\n            this.nameEl\n        );\n\n        this._addListener(\n            'click',\n            (event) => {\n                const flyerLink = event.target.closest(this._el('flyerLink', true));\n                if (!flyerLink) return;\n\n                /* Tracking */\n                this.trackingManager.track(flyerLink, {\n                    event: 'VaiAlVolantino',\n                    CustomLink: 'Click Vai al volantino',\n                    negozioInfo: {\n                        indirizzoRicerca: 'vars.currentSearchAddress',\n                        idNegozio: 'data.storeId',\n                        CooperativaNegozio: 'data.coopId',\n                        Insegna: 'data.insegna',\n                        tipologiaRisultati: 'data.resultType',\n                    },\n                    volantinoInfo: {\n                        ...generateTrackVolantinoInfo({\n                            flyerCode: flyerLink.dataset.flyerId,\n                            cooperative: flyerLink.dataset.flyerCoop,\n                            title: flyerLink.dataset.flyerName,\n                            flyerFormat: flyerLink.dataset.flyerType,\n                        }),\n                    },\n                });\n            },\n            this.flyers\n        );\n\n        if (this.setFavoriteBtn && this.setSavedBtn) {\n            this._addListener(\n                'click',\n                async () => {\n                    openLoader('main');\n                    const res1 = await this.userService.setPreferredStore(this.storeId);\n                    const res2 = await this.userService.getSavedStores();\n                    let isStoreSaved = false;\n                    if (Array.isArray(res2) && res2.find((element) => element.anacanId == this.storeId)) {\n                        isStoreSaved = true;\n                    }\n                    if (!isStoreSaved) {\n                        this.userService.addSavedStore(this.storeId);\n                    }\n                    if (res1) {\n                        this.root.classList.remove(this.SHOW_POPUP);\n                    }\n\n                    /* Tracking */\n                    this.trackingManager.track(this.root, {\n                        event: 'PdvPreferito',\n                        CustomLink: 'Aggiunta Pdv preferito',\n                        negozioInfo: {\n                            indirizzoRicerca: 'vars.currentSearchAddress',\n                            idNegozio: 'data.storeId',\n                            CooperativaNegozio: 'data.coopId',\n                            Insegna: 'data.insegna',\n                            tipologiaRisultati: 'data.resultType',\n                        },\n                    });\n\n                    closeLoader('main');\n                },\n                this.setFavoriteBtn\n            );\n            this._addListener(\n                'click',\n                async () => {\n                    openLoader('main');\n                    let res = await this.userService.addSavedStore(this.storeId);\n                    if (res) {\n                        this.root.classList.add(this.SHOW_TOOLTIP);\n                        setTimeout(() => this.root.classList.remove(this.SHOW_TOOLTIP), 2000);\n                        this.root.classList.remove(this.SHOW_POPUP);\n                    }\n                    closeLoader('main');\n                },\n                this.setSavedBtn\n            );\n        }\n\n        //// POPUP FAVORITE\n        if (this.favorite)\n            this._addListener(\n                'click',\n                async (event) => {\n                    event.preventDefault();\n\n                    // hide current popup\n                    if (this.root.classList.contains(this.SHOW_POPUP)) {\n                        this._hidePopups();\n                        return;\n                    }\n\n                    // open another popup\n                    this._hidePopups();\n                    const savedStores = await this.userService.getSavedStores();\n                    if (this.root.classList.contains(this.SAVED)) {\n                        openLoader('main');\n                        await this.userService.removeSavedStore(this.storeId);\n                        closeLoader('main');\n                    } else if (savedStores.length >= window.maxStoreOfInterest) {\n                        this.root.classList.add(this.SHOW_TOOLTIP_MAX_STORES);\n                        setTimeout(() => this.root.classList.remove(this.SHOW_TOOLTIP_MAX_STORES), 5000);\n                    } else {\n                        this.root.classList.add(this.SHOW_POPUP);\n                        this._dEl('popup')?.focus();\n                    }\n                },\n                this.favorite\n            );\n\n        if (this.flyersHeading)\n            this._addListener(\n                'click',\n                async (event) => {\n                    event.preventDefault();\n\n                    if (!this._dEl('flyersContent')) {\n                        const flyers = await this._callStoreFlyers(this.storeId);\n                        let flyersData = [];\n                        for (let f of flyers) {\n                            const fData = await flyerData(f);\n                            fData.title = fData.feTitle;\n                            flyersData.push(fData);\n                        }\n\n                        const accContentHtml = (await import('./partials/acc-content.html')).default;\n                        const accContent = runTemplate(accContentHtml, { storeId: this.storeId, flyers: flyersData });\n                        this.flyers.append(accContent);\n                        // set aria-controls on button\n                        this.flyersHeading.setAttribute('aria-controls', this._dEl('flyersContent').id);\n                    }\n\n                    if (!this.isAccOpen()) {\n                        // about to be opened\n                        this._dEl('flyersContent').style.visibility = 'visible';\n                    }\n                    this.flyers.classList.toggle(this.FLYERS_OPEN);\n                    this._updateAriaAttributes();\n                    if (!this.isAccOpen()) {\n                        // just closed\n                        this._dEl('flyersContent').style.visibility = 'hidden';\n                    }\n\n                    this.trackingManager.track(event.target, {\n                        event: 'AccordionVolantini',\n                        funnel: {\n                            stepFunnel: 'Interazioni con Risultati Store Locator',\n                        },\n                        CustomLink: 'Esplodi Accordion Volantini',\n                        negozioInfo: {\n                            indirizzoRicerca: 'vars.currentSearchAddress',\n                            idNegozio: this.storeId,\n                            CooperativaNegozio: this.coopId,\n                            Insegna: 'data.insegna',\n                            tipologiaRisultati: 'Elenco',\n                        },\n                    });\n                },\n                this.flyersHeading\n            );\n\n        this.services?.forEach((service) => {\n            this._addListener(\n                'click',\n                () => {\n                    if (\n                        service.hasAttribute('data-service') &&\n                        this.servicesUrlMap[service.getAttribute('data-service')]\n                    )\n                        window.open(this.servicesUrlMap[service.getAttribute('data-service')].href, '_blank');\n                },\n                service\n            );\n        });\n    }\n\n    async _callStoreFlyers(storeId) {\n        if (USE_MOCK) return mockStoreFlyers.data;\n        let flyers = [];\n        try {\n            flyers = await this.apiProvider.getStoreFlyers(storeId);\n        } catch (error) {\n            console.warn('Could not get store flyers');\n        }\n        return flyers;\n    }\n\n    isSelected() {\n        return this.root.classList.contains(this.SELECTED);\n    }\n    setSelected(select = true) {\n        if (select) {\n            this.root.classList.add(this.SELECTED);\n        } else {\n            this.root.classList.remove(this.SELECTED);\n        }\n    }\n\n    unselectCards() {\n        const page = document.querySelector(this.PAGE_SELECTOR);\n        const cards = Array.from(page.querySelectorAll(this.getSelector()));\n        for (const card of cards) {\n            const cardObj = this.register.getClass(card);\n            if (cardObj.id !== this.id) cardObj.setSelected(false);\n        }\n    }\n\n    _hidePopups() {\n        const page = document.querySelector(this.PAGE_SELECTOR);\n        const cards = Array.from(page.querySelectorAll(this.getSelector()));\n        cards.forEach((card) => card.classList.remove(this.SHOW_POPUP));\n    }\n\n    isAccOpen() {\n        if (!this._dEl('flyersContent')) return false;\n        return this.flyers.classList.contains(this.FLYERS_OPEN);\n    }\n\n    _updateAriaAttributes() {\n        const isOpen = this.isAccOpen();\n        this.flyersHeading.setAttribute('aria-expanded', `${isOpen ? 'true' : 'false'}`);\n        this._dEl('flyersContent').setAttribute('tabindex', `${isOpen ? '0' : '-1'}`);\n        this._dEl('flyersContent').setAttribute('aria-hidden', `${isOpen ? 'false' : 'true'}`);\n    }\n}\n\n\n","const digit =\n    '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz#$%*+,-.:;=?@[]^_{|}~';\nconst decode83 = (str, start, end) => {\n    let value = 0;\n    while (start < end) {\n        value *= 83;\n        value += digit.indexOf(str[start++]);\n    }\n    return value;\n};\n\nconst pow = Math.pow;\nconst PI = Math.PI;\nconst PI2 = PI * 2;\n\nconst d = 3294.6;\nconst e = 269.025;\nconst sRGBToLinear = (value) =>\n    value > 10.31475 ? pow(value / e + 0.052132, 2.4) : value / d;\n\nconst linearTosRGB = (v) =>\n    ~~(v > 0.00001227 ? e * pow(v, 0.416666) - 13.025 : v * d + 1);\n\nconst signSqr = (x) => (x < 0 ? -1 : 1) * x * x;\n\n/**\n * Fast approximate cosine implementation\n * Based on FTrig https://github.com/netcell/FTrig\n */\nconst fastCos = (x) => {\n    x += PI / 2;\n    while (x > PI) {\n        x -= PI2;\n    }\n    const cos = 1.27323954 * x - 0.405284735 * signSqr(x);\n    return 0.225 * (signSqr(cos) - cos) + cos;\n};\n\n/**\n * Extracts average color from BlurHash image\n * @param {string} blurHash BlurHash image string\n * @returns {[number, number, number]}\n */\nexport function getBlurHashAverageColor(blurHash) {\n    const val = decode83(blurHash, 2, 6);\n    return [val >> 16, (val >> 8) & 255, val & 255];\n}\n\n/**\n * Decodes BlurHash image\n * @param {string} blurHash BlurHash image string\n * @param {number} width Output image width\n * @param {number} height Output image height\n * @param {?number} punch\n * @returns {Uint8ClampedArray}\n */\nexport function decodeBlurHash(blurHash, width, height, punch) {\n    const sizeFlag = decode83(blurHash, 0, 1);\n    const numX = (sizeFlag % 9) + 1;\n    const numY = ~~(sizeFlag / 9) + 1;\n    const size = numX * numY;\n\n    let i = 0,\n        j = 0,\n        x = 0,\n        y = 0,\n        r = 0,\n        g = 0,\n        b = 0,\n        basis = 0,\n        basisY = 0,\n        colorIndex = 0,\n        pixelIndex = 0,\n        yh = 0,\n        xw = 0,\n        value = 0;\n\n    const maximumValue = ((decode83(blurHash, 1, 2) + 1) / 13446) * (punch | 1);\n\n    const colors = new Float64Array(size * 3);\n\n    const averageColor = getBlurHashAverageColor(blurHash);\n    for (i = 0; i < 3; i++) {\n        colors[i] = sRGBToLinear(averageColor[i]);\n    }\n\n    for (i = 1; i < size; i++) {\n        value = decode83(blurHash, 4 + i * 2, 6 + i * 2);\n        colors[i * 3] = signSqr(~~(value / (19 * 19)) - 9) * maximumValue;\n        colors[i * 3 + 1] = signSqr((~~(value / 19) % 19) - 9) * maximumValue;\n        colors[i * 3 + 2] = signSqr((value % 19) - 9) * maximumValue;\n    }\n\n    const bytesPerRow = width * 4;\n    const pixels = new Uint8ClampedArray(bytesPerRow * height);\n\n    for (y = 0; y < height; y++) {\n        yh = (PI * y) / height;\n        for (x = 0; x < width; x++) {\n            r = 0;\n            g = 0;\n            b = 0;\n            xw = (PI * x) / width;\n\n            for (j = 0; j < numY; j++) {\n                basisY = fastCos(yh * j);\n                for (i = 0; i < numX; i++) {\n                    basis = fastCos(xw * i) * basisY;\n                    colorIndex = (i + j * numX) * 3;\n                    r += colors[colorIndex] * basis;\n                    g += colors[colorIndex + 1] * basis;\n                    b += colors[colorIndex + 2] * basis;\n                }\n            }\n\n            pixelIndex = 4 * x + y * bytesPerRow;\n            pixels[pixelIndex] = linearTosRGB(r);\n            pixels[pixelIndex + 1] = linearTosRGB(g);\n            pixels[pixelIndex + 2] = linearTosRGB(b);\n            pixels[pixelIndex + 3] = 255; // alpha\n        }\n    }\n    return pixels;\n}\n","import './style.scss';\nimport LazyLoad from 'vanilla-lazyload';\nimport Component from '../../../../../libs/components/component';\nimport { nextTick } from '../../../../../libs/utils';\nimport { decodeBlurHash } from 'fast-blurhash';\n\nexport default class Picture extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.isSimple = this.root.matches('img');\n        if (!this.isSimple) this.img = this._dEl('img');\n        else this.img = this.root;\n\n        this.urlDefault = this.root.dataset.placeHolder;\n        this.lazy = this.root.classList.contains(this._mod('lazy'));\n        if (this.lazy) {\n            this._initAsync();\n        }\n    }\n\n    async _initAsync() {\n        await nextTick(); // wait next tick\n        if (this.img.dataset.blurhash) {\n            this._addBlurHash(this.img.dataset.blurhash);\n        }\n        this._addLazy();\n    }\n\n    _addBlurHash(blurhash) {\n        try {\n            const ratio = this.img.width / this.img.height;\n            const dWidth = Math.trunc(ratio >= 1 ? 32 * ratio : 32);\n            const dHeight = Math.trunc(ratio < 1 ? 32 / ratio : 32);\n\n            const pixels = decodeBlurHash(blurhash, dWidth, dHeight);\n            const canvas = document.createElement('canvas');\n            canvas.width = dWidth;\n            canvas.height = dHeight;\n            const ctx = canvas.getContext('2d');\n            const imageData = ctx.createImageData(dWidth, dHeight);\n            imageData.data.set(pixels);\n            ctx.putImageData(imageData, 0, 0);\n\n            const dataURL = canvas.toDataURL('image/png');\n            this.img.src = dataURL;\n\n            this.root.classList.add(this._mod('init'));\n        } catch (e) {\n            console.warn('Cannot add blurhash', e);\n        }\n    }\n\n    _addLazy() {\n        this.lazyLoad = new LazyLoad(\n            {\n                callback_loaded: () => {\n                    this._callbackLazy();\n                },\n                callback_error: () => {\n                    if (!this.urlDefault) return;\n\n                    // change src of image\n                    this.img.setAttribute('src', this.urlDefault);\n\n                    // if picture, remove all sources\n                    if (!this.isSimple) {\n                        this.img.setAttribute('srcset', `${this.urlDefault} 1x, ${this.urlDefault} 2x`);\n                        const sources = Array.from(this.root.querySelectorAll('source'));\n                        for (let i = 0; i < sources.length; i++) {\n                            sources[i].remove();\n                        }\n                    }\n                    this._callbackLazy();\n                },\n            },\n            [this.img]\n        );\n    }\n\n    _callbackLazy() {\n        this.root.classList.add(this._mod('loaded'));\n    }\n}\n\n\n","import './style.scss';\nimport ValidableComponent from '../../../../../libs/components/validable-component';\n\nexport default class InsigniaCard extends ValidableComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        this.input = this._dEl('input');\n\n        this._addEventListeners();\n    }\n\n    _getInput() {\n        return this.input;\n    }\n\n    /* override */\n    getValue() {\n        return this.input.checked ? this.input.value : null;\n    }\n\n    /* override */\n    getLabel() {\n        return this.root.dataset.insignia;\n    }\n\n    _addEventListeners() {\n\n        this._addListener(\n            'keypress',\n            (event) => {\n                if (!(event.key == 'Enter')) return;\n                this.root.click();\n                this.root.focus();\n            }\n        );\n\n        this._addListener(\n            'change',\n            (event) => {\n                event.preventDefault();\n                this._checkState();\n                this._changedInput();\n            },\n            this.input\n        );\n\n        /* hide default browser error popup on enter pressed */\n        this._addListener(\n            'invalid',\n            () => {\n                this._checkState();\n            },\n            this.root,\n            true\n        );\n    }\n\n    isValid() {\n        return this.input.required\n            ? this.input.validity.valid && !this.input.validity.valueMissing\n            : this.input.validity.valid || this.input.validity.valueMissing;\n    }\n\n    reset() {\n        this.input.checked = false;\n        this.setState('');\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class Strillo extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.withCta = this.root.hasAttribute('with-cta');\n        this.ctaHoverColor = this.root.dataset.ctaHoverColor;\n        this.title = this._dEl('title');\n        this.text = this._dEl('text');\n        this.link = this._dEl('link');\n        this.originalCtaColor = this.title.style.color;\n\n        this._init();\n    }\n\n    _init() {\n        if (!this.withCta || !this.ctaHoverColor || !this.link) {\n            return;\n        }\n        this._addListeners();\n    }\n\n    _addListeners() {\n        this._addListener('mouseover', () => {\n            this.title.style.color = this.ctaHoverColor;\n            this.text.style.color = this.ctaHoverColor;\n        }, this.link);\n\n        this._addListener('mouseout', () => {\n            this.title.style.color = this.originalCtaColor;\n            this.text.style.color = this.originalCtaColor;\n        }, this.link);\n\n    }\n}","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class SearchAlert extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.trailingText = this._dEl('text').querySelector('span:last-child');\n        this.close = this._dEl('close');\n\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            () => {\n                this.closeSearchAlert();\n            },\n            this.close\n        );\n        this._addListener(\n            'closeSearchAlert',\n            (e) => {\n                this.closeSearchAlert();\n                e.stopPropagation();\n            },\n            this.root\n        );\n    }\n\n    setTrailingText(text) {\n        this.trailingText.innerText = `${text}`;\n    }\n\n    setTheme(theme) {\n        this.root.setAttribute('data-theme', theme);\n    }\n\n    closeSearchAlert() {\n        this.root.dispatchEvent(new CustomEvent('closedSearchAlert', { bubbles: true }));\n        this.root.remove();\n    }\n}\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class PaginatorComp extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.pageBack = this._dEl('pageBack');\n        this.pageNext = this._dEl('pageNext');\n        this.pageItems = this._dEl('pageItem', true);\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        if (this.pageBack) {\n            this._addListener('click', (event) => {\n                event.preventDefault();\n                this._sendGoTo(this.pageBack.dataset.value);\n            },\n            this.pageBack);\n        }\n\n        if (this.pageNext) {\n            this._addListener('click', (event) => {\n                event.preventDefault();\n                this._sendGoTo(this.pageNext.dataset.value);\n            },\n            this.pageNext);\n        }\n\n        this.pageItems.forEach((element) => {\n            this._addListener('click', (event) => {\n                event.preventDefault();\n                this._sendGoTo(element.dataset.value);\n            },\n            element);\n        });\n    }\n\n    _sendGoTo(value) {\n        const event = new CustomEvent('rtPageChanged', { bubbles: true });\n        event.data = { page: value };\n        this.root.dispatchEvent(event);\n    }\n\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { makeid } from '../../../../../libs/utils';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\n\nexport default class DynamicImage extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.extApiHelper = getExtApiHelper();\n        this.HOTSPOT_SELECTOR = '.s7mapoverlay.s7icon';\n        this.CARD_SELECTOR = '.rt030-hotspot-card';\n\n        this.config = this.root.hasAttribute('data-configuration') ? JSON.parse(this.root.dataset.configuration) : null;\n        this.skuArray = this.root.hasAttribute('data-sku-array') ? JSON.parse(this.root.dataset.skuArray) : null;\n        this.container = this._dEl('container');\n        this.id = this.container.id;\n        this.hotspotsMap = null;\n        this._init();\n    }\n\n    async _init() {\n        await this._initImage();\n        await this._renderHotspotCards();\n    }\n\n    async _initImage() {\n        /* get s7viewers api */\n        const s7viewers = await this.extApiHelper.getS7ViewersApi();\n        /* create interactive image */\n        this.interactiveImage = new s7viewers.InteractiveImage({\n            containerId: this.container.id,\n            params: this.config,\n        });\n        /* set image handlers */\n        this.interactiveImage.setHandlers({\n            initComplete: () => {\n                this._getHotspotsMap();\n                this._addHotspotsListeners();\n            },\n            quickViewActivate: (data) => {\n                if (!data.sku) {\n                    console.error('Missing sku in quickViewActivate');\n                    return;\n                }\n                const cardId = this.skuArray.filter((skuData) => skuData.sku == data.sku)[0].id;\n                if (!cardId) {\n                    console.error(`Missing cardId for sku ${data.sku}`);\n                    return;\n                }\n                this._callHotspotCard(this.hotspotsMap[data.sku], cardId);\n            },\n        });\n        /* init */\n        this.interactiveImage.init();\n    }\n\n    _addHotspotsListeners() {\n        if (!this.hotspotsMap) {\n            console.error('Could not add hotspots listeners, null hotspots map');\n            return;\n        }\n        Object.values(this.hotspotsMap).forEach((el) => {\n            this._addListener(\n                'click',\n                (event) => {\n                    el.classList.toggle('open');\n                    // if just closed, return\n                    if (!el.classList.contains('open')) return;\n                    // if just opened, close others\n                    this._closeOthers(el);\n                    event.stopPropagation();\n                },\n                el\n            );\n            /* click outside the hotspot or its card */\n            this._addListener(\n                'click',\n                (event) => {\n                    if (!el.classList.contains('open')) return;\n                    const target = event.target;\n                    if (\n                        target.closest(this.HOTSPOT_SELECTOR) ||\n                        target.closest(`${this.CARD_SELECTOR}[data-sku=\"${el.dataset.sku}\"]`)\n                    )\n                        return;\n                    el.classList.remove('open');\n                },\n                document\n            );\n        });\n    }\n\n    async _closeOthers(self) {\n        // close other hotspots cards\n        for (const skuData of this.skuArray) {\n            if (skuData.sku == null) continue;\n            if (skuData.sku == self.dataset.sku) continue;\n            await this._callHotspotCard(this.hotspotsMap[skuData.sku], skuData.id, true);\n        }\n        // close other hotspots\n        Object.values(this.hotspotsMap).forEach((other) => {\n            if (other == self) return;\n            other.classList.remove('open');\n        });\n    }\n\n     _callHotspotCard(hotspot, cardId, forceClose = false) {\n        const event = new CustomEvent('showHotspotCard', { bubbles: true });\n        event.data = {\n            hotspot: hotspot,\n            forceClose: forceClose,\n        };\n        document.getElementById(cardId).dispatchEvent(event);\n    }\n\n    _getHotspotsMap() {\n        if (this.hotspotsMap) return;\n        const hotspotsArray = Array.from(this.container.querySelectorAll(this.HOTSPOT_SELECTOR));\n        this.hotspotsMap = {};\n        let i = 0;\n        for (const skuData of this.skuArray) {\n            if (skuData.sku == null) {\n                const invalidHotspot = hotspotsArray[i++];\n                invalidHotspot.style.display = 'none';\n                continue;\n            }\n            this.hotspotsMap[skuData.sku] = hotspotsArray[i++];\n            this.hotspotsMap[skuData.sku].setAttribute('data-sku', skuData.sku);\n        }\n    }\n\n    async _renderHotspotCards() {\n        const hotspotCardHtml = (await import('../rt030-hotspot-card/rt030-hotspot-card.html')).default;\n        for (const skuData of this.skuArray) {\n            if (!skuData.sku) continue;\n            const cardId = this._generateHotspotCard(hotspotCardHtml, skuData.sku, skuData.href, skuData.label);\n            skuData.id = cardId;\n        }\n    }\n\n    _generateHotspotCard(tpl, sku, href, label, extraClasses = null) {\n        const id = makeid(10);\n        const hotspotCardData = {\n            uniqueId: id,\n            extraClasses: extraClasses,\n            sku: sku,\n            href: href,\n            label: label,\n        };\n        const hotspotCard = runTemplate(tpl, hotspotCardData);\n        const mainPage = document.body.querySelector('.rs1-page');\n        mainPage.appendChild(hotspotCard);\n        return id;\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { calcLeft, calcTop, emptyElement } from '../../../../../libs/utils';\n\nexport default class ShareLinks extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.sharers = {\n            facebook: 'Facebook',\n            twitter: 'Twitter',\n            linkedin: 'LinkedIn',\n            whatsapp: 'Whatsapp',\n            pinterest: 'Pinterest',\n            email: 'Email',\n        };\n        this.shareUrl = this.root.dataset.shareUrl;\n        if (!this.shareUrl) return;\n        this.shareTitle = this.root.hasAttribute('data-share-title') ? this.root.dataset.shareTitle : null;\n        this.ignoreSharers = this.root.hasAttribute('data-ignore-sharers')\n            ? this.root.dataset.ignoreSharers.split(',')\n            : null;\n        this.shareOptions = this._dEl('shareOptions');\n\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        await this._renderShareLinks();\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'showShareLinks',\n            (event) => {\n                if (!event.data.root) {\n                    console.warn('Missing root for the popup');\n                    return;\n                }\n                this.hookedRoot = event.data.root;\n                if (!this.isOpen()) {\n                    this._setTooltipPosition();\n                }\n                this.root.classList.toggle(this._mod('show'));\n                if (this.isOpen()) this.root.focus();\n            },\n            this.root\n        );\n        this._addListener(\n            'resize',\n            () => {\n                if (!this.isOpen()) return;\n                this._setTooltipPosition();\n            },\n            window\n        );\n        /* click outside the popup */\n        this._addListener(\n            'click',\n            (event) => {\n                if (!this.isOpen()) return;\n                const target = event.target;\n                if (target.closest(this.getSelector())) return;\n                this.root.classList.remove(this._mod('show'));\n            },\n            document\n        );\n    }\n\n    isOpen() {\n        return this.root.classList.contains(this._mod('show'));\n    }\n\n    _setTooltipPosition() {\n        if (!this.hookedRoot) return;\n        this.root.style.top = calcTop(this.root, this.hookedRoot, 4);\n        this.root.style.left = calcLeft(this.root, this.hookedRoot);\n    }\n\n    async _renderShareLinks() {\n        const shareOptionHtml = (await import('./partials/share-option.html')).default;\n        emptyElement(this.shareOptions);\n        this.shareLinksMap = this._computeShareLinks(this.shareUrl, this.shareTitle, this.ignoreSharers);\n        for (const key of Object.keys(this.shareLinksMap)) {\n            const shareOptionData = {\n                sharer: key,\n                sharerLabel: this.sharers[key],\n                shareUrl: this.shareLinksMap[key],\n                target: '_blank',\n            };\n            const shareOption = runTemplate(shareOptionHtml, shareOptionData);\n            this.shareOptions.appendChild(shareOption);\n        }\n    }\n\n    _computeShareLinks(href, title, ignoreSharers = []) {\n        const ignore = ignoreSharers || [];\n        const shareLinksMap = {};\n\n        // facebook\n        if (!ignore.includes('facebook')) {\n            try {\n                const url = new URL('https://www.facebook.com/sharer.php');\n                if (href) url.searchParams.set('u', href);\n                if (title) url.searchParams.set('title', title);\n                shareLinksMap.facebook = url.href;\n            } catch (error) {\n                console.error('Could not get facebook share link');\n            }\n        }\n\n        // twitter\n        if (!ignore.includes('twitter')) {\n            try {\n                const url = new URL('https://twitter.com/intent/tweet');\n                if (href) url.searchParams.set('url', href);\n                if (title) url.searchParams.set('text', title);\n                url.searchParams.set('via', 'conad_it');\n                shareLinksMap.twitter = url.href;\n            } catch (error) {\n                console.error('Could not get twitter share link');\n            }\n        }\n\n        // linkedin\n        if (!ignore.includes('linkedin')) {\n            try {\n                const url = new URL('https://www.linkedin.com/shareArticle');\n                url.searchParams.set('mini', 'true');\n                if (href) url.searchParams.set('url', href);\n                if (title) url.searchParams.set('title', title);\n                shareLinksMap.linkedin = url.href;\n            } catch (error) {\n                console.error('Could not get linkedin share link');\n            }\n        }\n\n        // whatsapp\n        if (!ignore.includes('whatsapp')) {\n            try {\n                const url = new URL('https://api.whatsapp.com/send');\n                if (href) url.searchParams.set('text', href);\n                shareLinksMap.whatsapp = url.href;\n            } catch (error) {\n                console.error('Could not get whatsapp share link');\n            }\n        }\n\n        // pinterest\n        if (!ignore.includes('pinterest')) {\n            try {\n                const url = new URL('https://www.pinterest.com/pin/create/button/');\n                if (href) url.searchParams.set('url', href);\n                if (title) url.searchParams.set('description', title);\n                shareLinksMap.pinterest = url.href;\n            } catch (error) {\n                console.error('Could not get pinterest share link');\n            }\n        }\n\n        // email\n        if (!ignore.includes('email')) {\n            try {\n                const url = new URL('mailto:');\n                if (title) url.searchParams.set('subject', title);\n                if (href) url.searchParams.set('body', href);\n                shareLinksMap.email = url.href;\n            } catch (error) {\n                console.error('Could not get email share link');\n            }\n        }\n\n        return shareLinksMap;\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { calcLeft, calcTop } from '../../../../../libs/utils';\n\n\nexport default class HotspotCard extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n\n        this._addListener(\n            'showHotspotCard',\n            (event) => {\n                if (event.data.forceClose) {\n                    this.root.classList.remove(this._mod('show'));\n                    return;\n                }\n                if (!event.data.hotspot) return;\n                this.hotspot = event.data.hotspot;\n                if (!this.isOpen()) this._setTooltipPosition();\n                this.root.classList.toggle(this._mod('show'));\n                if (this.isOpen()) this.root.focus();\n            },\n        );\n\n        this._addListener(\n            'resize',\n            () => {\n                if (!this.isOpen()) return;\n                this._setTooltipPosition();\n            },\n            window\n        );\n\n        /* click outside the card */\n        this._addListener(\n            'click',\n            (event) => {\n                if (!this.isOpen()) return;\n                const target = event.target;\n                if (target.closest(this.getSelector())) return;\n                this.root.classList.remove(this._mod('show'));\n            },\n            document\n        );\n    }\n\n    isOpen() {\n        return this.root.classList.contains(this._mod('show'));\n    }\n\n    _setTooltipPosition() {\n        if (!this.hotspot) return;\n        this.root.style.top = calcTop(this.root, this.hotspot);\n        this.root.style.left = calcLeft(this.root, this.hotspot);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { makeid } from '../../../../../libs/utils';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\n\nexport default class Filter extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.register = getRegister();\n\n        this.btn = this._dEl('btn');\n        this.count = this._dEl('count');\n        this.SHOW_COUNT = this._mod('showCount');\n        this.title = this.root.dataset.title;\n\n        this._generateFilterPopup();\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            (event) => {\n                this._manageFilterPopup();\n                event.stopPropagation();\n            },\n            this.btn\n        );\n\n        /* click outside the popup */\n        this._addListener(\n            'click',\n            (event) => {\n                const target = event.target;\n                if (target.closest(this.getSelector()) || target.closest('.rt032-filter-popup')) return;\n                this.root.classList.remove('open');\n            },\n            document\n        );\n\n        this._addListener(\n            'resize',\n            () => {\n                if (window.innerWidth < BREAKPOINTS.l) {\n                    /* mobile */\n                    this._close();\n                }\n            },\n            window\n        );\n    }\n\n    _manageFilterPopup() {\n        if (this.isOpen()) {\n            this.root.classList.remove('open');\n            this.btn.blur();\n            this._callFilterPopup(this.root, this.popupId, true);\n            return;\n        }\n        this._closeOthers();\n        this.root.classList.add('open');\n        this._callFilterPopup(this.root, this.popupId);\n        this._emit('rt150ExplodeFilters', {\n            filterName: this.title,\n        });\n    }\n\n    isOpen() {\n        return this.root.classList.contains('open');\n    }\n\n    _close() {\n        this.root.classList.remove('open');\n    }\n    _open() {\n        this.root.classList.add('open');\n    }\n\n    _callFilterPopup(filter, popupId, forceClose = false) {\n        const event = new CustomEvent('showFilterPopup', { bubbles: true });\n        event.data = {\n            filter: filter,\n            forceClose: forceClose,\n            title: this.title,\n        };\n        document.getElementById(popupId).dispatchEvent(event);\n    }\n\n    _closeOthers() {\n        // blur other filter buttons\n        Array.from(document.querySelectorAll(`${this.getSelector()}`)).forEach((other) => {\n            other.classList.remove('open');\n            other.querySelector('button').blur();\n        });\n        // close other popups\n        const all = Array.from(document.querySelectorAll('.rt032-filter-popup.open'));\n        for (const other of all) {\n            if (other.id == this.popupId) continue;\n            this._callFilterPopup(null, other.id, true);\n        }\n    }\n\n    setCount(count) {\n        this.count.innerText = count;\n        if (count <= 0) {\n            this.root.classList.remove(this.SHOW_COUNT);\n            return;\n        }\n        if (this.root.classList.contains(this.SHOW_COUNT)) return;\n        this.root.classList.add(this.SHOW_COUNT);\n    }\n\n    async _generateFilterPopup() {\n        if (!this.root.dataset.category) {\n            console.error(`Missing filter category for filter \"${this.btn.innerText}\"`);\n            return;\n        }\n\n        if (!this.root.dataset.filters) {\n            console.error(`Could not generate filter popup for filter \"${this.btn.innerText}\"`);\n            return;\n        }\n\n        try {\n            this.category = this.root.dataset.category;\n            this.filters = JSON.parse(this.root.dataset.filters);\n        } catch (error) {\n            console.error(`Error during parsing of filters for filter \"${this.btn.innerText}\"`);\n            return;\n        }\n\n        const popup = document.querySelector(`.rt032-filter-popup[data-filter-id='${this.root.id}']`);\n        if (popup) {\n            popup.remove();\n        }\n\n        const filterPopupHtml = (await import('../rt032-filter-popup/rt032-filter-popup.html')).default;\n        const id = makeid(10);\n        const filterPopupData = {\n            uniqueId: id,\n            filterId: this.root.id,\n            filterCategory: this.category,\n            filters: this.filters,\n            labels: {\n                reset: getDictionary().get('Reset'),\n                apply: getDictionary().get('Apply'),\n            },\n            searchable: this.root.hasAttribute('data-searchable'),\n            searchLabel: this.root.dataset.searchLabel,\n        };\n        const filterPopup = runTemplate(filterPopupHtml, filterPopupData);\n\n        const mainPage = document.body.querySelector('.rs1-page');\n        mainPage.appendChild(filterPopup);\n\n        this.popupId = id;\n    }\n}\n\n\n","/**\n * Checks that an element has a non-empty `name`\n * @param  {Element} element  the element to check\n * @return {Bool}             true if the has a name\n */\nconst isValidElement = (element) => {\n    return !!element.name;\n};\n\n/**\n * Checks that an element has a non-empty `value` property.\n * @param  {Element} element  the element to check\n * @return {Bool}             true if the element has a non empty value\n */\nconst hasValue = (element) => {\n    return !!element.value;\n};\n\n/**\n * Checks if an element’s value can be saved (e.g. not an unselected checkbox).\n * @param  {Element} element  the element to check\n * @return {Boolean}          true if the value should be added, false if not\n */\nconst isValidValue = (element) => {\n    return !['checkbox', 'radio'].includes(element.type) || element.checked;\n};\n\n/**\n * Checks if an input is a checkbox, because checkboxes allow multiple values.\n * @param  {Element} element  the element to check\n * @return {Boolean}          true if the element is a checkbox, false if not\n */\nconst isCheckbox = (element) => element.type === 'checkbox';\n\nconst isRadio = (element) => element.type === 'radio';\n\n/**\n * Checks if an input is a `select` with the `multiple` attribute.\n * @param  {Element} element  the element to check\n * @return {Boolean}          true if the element is a multiselect, false if not\n */\nconst isMultiSelect = (element) => element.options && element.multiple;\n\n/**\n * Retrieves the selected options from a multi-select as an array.\n * @param  {HTMLOptionsCollection} options  the options for the select\n * @return {Array}                          an array of selected option values\n */\nconst getSelectValues = (options) =>\n    [].reduce.call(\n        options,\n        (values, option) => {\n            return option.selected ? values.concat(option.value) : values;\n        },\n        []\n    );\n\n/**\n * Retrieves input data from a form and returns it as a JSON object.\n * @param  {HTMLFormControlsCollection} elements  the form elements\n * @param  {Boolean} includeEmpty                 include empty fields flag\n * @return {Object}                               form data as an object literal\n */\nexport const formToJSON = (elements, includeEmpty = false) => {\n    return [].reduce.call(\n        elements,\n        (data, element) => {\n            // Make sure the element has the required properties and should be added.\n            if (isValidElement(element) && (hasValue(element) || includeEmpty) && isValidValue(element)) {\n                /*\n                 * Some fields allow for more than one value, so we need to check if this\n                 * is one of those fields and, if so, store the values as an array.\n                 */\n                if (isCheckbox(element)) {\n                    const value = element.value == 'true' ? true : element.value;\n                    if (!data[element.name]) {\n                        data[element.name] = value;\n                    } else {\n                        data[element.name] = [value].push(data[element.name]);\n                    }\n                } else if (isRadio(element)) {\n                    data[element.name] = element.value == 'true' ? true : element.value;\n                } else if (isMultiSelect(element)) {\n                    data[element.name] = getSelectValues(element);\n                } else {\n                    data[element.name] = element.value;\n                }\n            }\n            return data;\n        },\n        {}\n    );\n};\n\n/**\n * Retrieves input data from a form and returns it as a JSON object.\n * @param  {HTMLFormControlsCollection} elements  the form elements\n * @parm {Object}                               json data as an object literal\n * @param {HTMLElement[]} ignore elements to ignore during form set\n */\nexport const jsonToForm = (form, json, ignore) => {\n    for (const element of form.elements) {\n        if (!isValidElement(element)) continue;\n        if (ignore && ignore.indexOf(element) >= 0) continue;\n\n        const name = element.name;\n        const value =\n            typeof json[name] == 'boolean' ? '' + json[name] : typeof json[name] == 'undefined' ? '' : json[name];\n        if (isCheckbox(element)) {\n            element.checked = value && element.value && (value == element.value || value.indexOf(element.value) >= 0);\n        } else if (isRadio(element)) {\n            element.checked = value && element.value && (value == element.value || value.indexOf(element.value) >= 0);\n        } else if (isMultiSelect(element)) {\n            element.options.each((option) => {\n                option.selected = value == element.value || value.indexOf(option.value) >= 0;\n            });\n        } else {\n            element.value = value;\n        }\n    }\n};\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { calcLeft, calcTop, isObjectEmpty } from '../../../../../libs/utils';\nimport { formToJSON } from '../../../../../libs/form-to-json';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class FilterPopup extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.register = getRegister();\n\n        this.filterId = this.root.dataset.filterId;\n        this.category = this.root.dataset.filterCategory;\n        if (!this.filterId || !this.category) {\n            console.error(`Missing filter id and/or category for filter popup of id \"${this.root.id}\"`);\n            return;\n        }\n        this.form = this._dEl('form');\n        this.reset = this._dEl('reset');\n        this.apply = this._dEl('apply');\n        this.search = this._dEl('search');\n        this.register = getRegister();\n\n        this._init();\n    }\n\n    async _init() {\n        await this._addPerfectScrollBar();\n        this._addEventListeners();\n    }\n\n    async _addPerfectScrollBar() {\n        const PerfectScrollbar = await getExtApiHelper().getPerfectScrollbar();\n        const scrollbarOptions = {\n            swipeEasing: true,\n            suppressScrollX: true,\n        };\n        this.ps = new PerfectScrollbar(this.form, scrollbarOptions);\n    }\n\n    _addEventListeners() {\n        this._addListener('showFilterPopup', (event) => {\n            if (event.data.forceClose) {\n                this.root.classList.remove('open');\n                return;\n            }\n            if (!event.data.filter) return;\n            this.filter = event.data.filter;\n            this.title = event.data.title;\n            if (!this.isOpen()) this._setTooltipPosition();\n            this.root.classList.toggle('open');\n            if (this.isOpen()) this.root.focus();\n\n            //check and disable buttons if necessary\n            const data = formToJSON(this.form);\n            if (isObjectEmpty(data)) {\n                this.register.getClass(this.apply).setStatus('disabled');\n                this.register.getClass(this.reset).setStatus('disabled');\n            }\n        });\n\n        this._addListener(\n            'resize',\n            () => {\n                if (window.innerWidth < BREAKPOINTS.l) {\n                    /* mobile */\n                    this._close();\n                }\n                if (!this.isOpen()) return;\n                this._setTooltipPosition();\n            },\n            window\n        );\n\n        /* click outside the popup */\n        this._addListener(\n            'click',\n            (event) => {\n                if (!this.isOpen()) return;\n                const target = event.target;\n                if (target.closest(this.getSelector())) return;\n                this.root.classList.remove('open');\n            },\n            document\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                this._close();\n                this._updateFilters([]);\n            },\n            this.reset\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                this._close();\n                const filters = Object.keys({ ...formToJSON(this.form) });\n                this._updateFilters(filters);\n            },\n            this.apply\n        );\n\n        if (this.search) {\n            this._addListener(\n                'rcInputChanged',\n                (e) => {\n                    const currentString = e.data.value;\n                    this._maskFilters(currentString);\n                },\n                this.search\n            );\n        }\n\n        this._addListener(\n            'rcInputChanged',\n            () => {\n                this.register.getClass(this.apply).setStatus('enabled');\n                this.register.getClass(this.reset).setStatus('enabled');\n            },\n            this.form\n        );\n    }\n\n    _updateFilters(filters = []) {\n        /* add filters and emit */\n        const appliedFilters = {\n            ...this.storeManager.get('appliedFilters'),\n        };\n        if (appliedFilters[this.category]) delete appliedFilters[this.category];\n        appliedFilters[this.category] = filters;\n        this._emit('appliedFilters', appliedFilters);\n\n        /* emit listing filters */\n        const json = {};\n        Object.keys(appliedFilters).forEach((k) => {\n            const value = appliedFilters[k];\n            if (value) json[k] = value;\n        });\n        this._emit('rt111Filters', { filters: json });\n        this._emit('rt150Filters', { filters: json, currentFilterName: this.title });\n    }\n\n    _maskFilters(currentString) {\n        const options = this._dEl('option', true);\n        for (const option of options) {\n            if ((option.innerText || option.textContent)?.toLowerCase().includes(currentString.toLowerCase())) {\n                option.classList.remove(this._elMod('option', 'hidden'));\n                continue;\n            }\n            option.classList.add(this._elMod('option', 'hidden'));\n        }\n    }\n\n    isOpen() {\n        return this.root.classList.contains('open');\n    }\n\n    _close() {\n        this.root.classList.remove('open');\n    }\n    _open() {\n        this.root.classList.add('open');\n    }\n\n    _setTooltipPosition() {\n        if (!this.filter) return;\n        this.root.style.top = calcTop(this.root, this.filter);\n        this.root.style.left = calcLeft(this.root, this.filter);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { buildWaitForEvent } from '../../../../../libs/utils';\n\nconst ytReadyEvent = buildWaitForEvent('rt33VideoYTReady');\nconst loadedMetadataEvent = buildWaitForEvent('loadedmetadata');\n\nlet ytLoaded = 0;\nwindow.onYouTubeIframeAPIReady = function () {\n    ytLoaded = 2;\n    document.body.dispatchEvent(new CustomEvent('rt33VideoYTReady')); //emit yt ready event\n};\n\nexport default class Video extends Component {\n    constructor(name,root) {\n        super(name,root);\n        this.element = root;\n        this.ytId = this.element.dataset.ytid;\n        this.videoUrl = this.element.dataset.videoUrl;\n        if (this.ytId) {\n            this.type = 'YT';\n        } else if (this.videoUrl) {\n            this.type = 'URL';\n        } else {\n            console.warn('Created video component without a video');\n            return;\n        }\n        this.type = this.ytId ? 'YT' : 'URL';\n        this.autoplay = this.element.dataset.autoplay == 'true';\n        this.controls = this.element.dataset.controls == 'true';\n        this.fullscreen = this.element.dataset.fullscreen == 'true';\n        this.loop = this.element.dataset.loop == 'true';\n        this.mute = this.element.dataset.mute == 'true';\n        this.maxHeight = this.element.dataset.maxHeight;\n        this.seekFrom = this.element.dataset.seekFrom;\n        this.placeholder = this.element.querySelector(this._el('placeholder', true));\n        this._initVideo();\n    }\n\n    async _initVideo() {\n        switch (this.type) {\n            case 'YT':\n                await this._initYt();\n                break;\n            case 'URL':\n                await this._initUrl();\n                break;\n        }\n\n        this.placeholder.remove();\n        this._initResponsive();\n        window.addEventListener('resize', () => {\n            this._resizeResponsive();\n        });\n        this._resizeResponsive();\n    }\n\n    async _initUrl() {\n        this.playerEl = document.createElement('video');\n        this.playerEl.classList.add(this._el('video'));\n        this.playerEl.src = this.videoUrl;\n        this.playerEl.autoplay = this.autoplay;\n        this.playerEl.muted = this.mute;\n        this.playerEl.loop = this.loop;\n        this.playerEl.controls = this.controls;\n\n        await loadedMetadataEvent(this.playerEl);\n        this.playerEl.currentTime = this.seekFrom;\n\n        const oldPlayerEl = this.element.querySelector(this._el('video', true));\n        oldPlayerEl.parentNode.replaceChild(this.playerEl, oldPlayerEl);\n    }\n\n    async _initYt() {\n        this.ytApi = await this._getYouTubeApi();\n\n        this.player = new this.ytApi.Player(this.element.querySelector(this._el('video', true)), {\n            videoId: this.ytId,\n            playerVars: {\n                modestbranding: '1',\n                autoplay: this.autoplay ? '1' : '0',\n                controls: this.controls ? '1' : '0',\n                showinfo: '0',\n                rel: '0',\n                start: this.seekFrom ? this.seekFrom : 0,\n                mute: this.mute ? '1' : '0',\n                fs: this.fullscreen ? '1' : '0',\n            },\n            events: {\n                onReady: () => {\n                    console.log('YT Player ready');\n                },\n            },\n        });\n        this.playerEl = this.element.querySelector(this._el('video', true));\n    }\n\n    async _getYouTubeApi() {\n        switch (ytLoaded) {\n            case 0:\n                this._downloadYtApi();\n                await ytReadyEvent(document.body);\n                return window.YT;\n            case 1:\n                await ytReadyEvent(document.body);\n                return window.YT;\n            case 2:\n                return window.YT;\n        }\n    }\n\n    play() {\n        switch (this.type) {\n            case 'YT':\n                this.player.playVideo();\n                break;\n            case 'URL':\n                this.playerEl.play();\n                break;\n        }\n    }\n\n    pause() {\n        switch (this.type) {\n            case 'YT':\n                this.player.pauseVideo();\n                break;\n            case 'URL':\n                this.playerEl.pause();\n                break;\n        }\n    }\n\n    seekTo(seconds) {\n        switch (this.type) {\n            case 'YT':\n                this.player.seekTo(seconds, true);\n                break;\n            case 'URL':\n                this.playerEl.currentTime = this.seekFrom;\n                break;\n        }\n    }\n\n    togglePlay() {\n        switch (this.type) {\n            case 'YT': {\n                const playerState = this.player.getPlayerState();\n                if (playerState == 1) {\n                    this.pause();\n                } else {\n                    this.play();\n                }\n                break;\n            }\n            case 'URL': {\n                const isPaused = this.playerEl.paused;\n                if (isPaused) {\n                    this.play();\n                } else {\n                    this.pause();\n                }\n                break;\n            }\n        }\n    }\n\n    _downloadYtApi() {\n        if (window.YT) {\n            //YT already loaded\n            ytLoaded = 2;\n            document.dispatchEvent(new CustomEvent('rt33VideoYTReady'));\n            return;\n        }\n        //YT not loaded, launch download\n        let tag = document.createElement('script');\n        tag.src = 'https://www.youtube.com/iframe_api';\n        let firstScriptTag = document.getElementsByTagName('script')[0];\n        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n        ytLoaded = 1;\n    }\n\n    _initResponsive() {\n        this.playerEl.dataset.aspectRatio = this.playerEl.offsetHeight / this.playerEl.offsetWidth;\n        this.playerEl.removeAttribute('height');\n        this.playerEl.removeAttribute('width');\n    }\n\n    _resizeResponsive() {\n        const computedStyle = getComputedStyle(this.element);\n        let newWidth = this.element.clientWidth;\n        newWidth -= parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);\n        let newHeight = newWidth * this.playerEl.dataset.aspectRatio;\n        if (this.maxHeight && this.maxHeight < newHeight) newHeight = this.maxHeight;\n        this.playerEl.setAttribute('width', newWidth);\n        this.playerEl.setAttribute('height', newHeight);\n    }\n}\n\n\n","import './style.scss';\nimport ValidableComponent from '../../../../../libs/components/validable-component';\n\nexport default class PinCodeField extends ValidableComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        this.maxLength = parseInt(this.root.dataset.maxLength);\n        this.input = this._dEl('input');\n        this.error = this._dEl('error');\n        this.invalidFieldMessage = this.root.dataset.invalidFieldMessage\n            || 'Il codice non è corretto. Controlla di aver inserito tutti i caratteri e le lettere maiuscole.';\n\n        this._initPinCode();\n        this._addEventListeners();\n    }\n\n    _getInput() {\n        return this.input;\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            ['keyup', 'change', 'input'],\n            () => {\n                this._checkState();\n                if (this.root.classList.contains(this.ERROR)) {\n                    this._invalidField();\n                }\n                this._changedInput();\n            },\n            this.input\n        );\n\n        this._addListener(\n            'focusout',\n            () => {\n                if (this.input.required && this.input.value == '') {\n                    this.setState('error');\n                    this._requireField();\n                }\n            },\n            this.input\n        );\n\n        /* hide default browser error popup on enter pressed */\n        this._addListener(\n            'invalid',\n            () => {\n                this._checkState();\n                if (this.root.classList.contains(this.ERROR)) {\n                    this._invalidField();\n                }\n            },\n            this.root,\n            true\n        );\n    }\n\n    _initPinCode() {\n        this.input.value = '';\n    }\n\n    _requireField() {\n        this.error.innerText = 'Campo obbligatorio';\n    }\n\n    _invalidField() {\n        this.error.innerText = this.invalidFieldMessage;\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { calcLeft, calcTop } from '../../../../../libs/utils';\n\n\nexport default class Tooltip extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n\n        this._addListener(\n            'showTooltip',\n            (event) => {\n                if (!event.data.tooltipIcon) return;\n                this.tooltipIcon = event.data.tooltipIcon;\n                if (!event.data.show) {\n                    this.root.classList.remove(this._mod('show'));\n                    return;\n                }\n                this._setTooltipPosition();\n                this.root.classList.add(this._mod('show'));\n            },\n        );\n\n        this._addListener(\n            'resize',\n            () => {\n                if (!this.isOpen()) return;\n                this._setTooltipPosition();\n            },\n            window\n        );\n\n        /* click outside the popup */\n        this._addListener(\n            'click',\n            (event) => {\n                if (!this.isOpen()) return;\n                const target = event.target;\n                if (target.closest(this.getSelector()) || target.closest('.rt008-text-field__info')) return;\n                this.root.classList.remove(this._mod('show'));\n            },\n            document\n        );\n    }\n\n    isOpen() {\n        return this.root.classList.contains(this._mod('show'));\n    }\n\n    _setTooltipPosition() {\n        if (!this.tooltipIcon) return;\n        this.root.style.top = calcTop(this.root, this.tooltipIcon);\n        this.root.style.left = calcLeft(this.root, this.tooltipIcon);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\n\nexport default class Feedback extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.close = this._dEl('close');\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        if (this.close) {\n            this._addListener(\n                'click',\n                () => {\n                    this._close();\n                },\n                this.close\n            );\n        }\n    }\n\n    _close() {\n        if (this.root.closest('#feedback-container') || this.root.hasAttribute('data-close-self')) {\n            this.root.remove();\n            return;\n        }\n        /* remove from layout */\n        const event = new CustomEvent('removeLayoutItem', { bubbles: true });\n        event.data = {\n            remove: true,\n        };\n        this.root.dispatchEvent(event);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { getUserService } from '../../../../../libs/user-service';\n\nexport default class Bookmark extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.ctaEl = this._dEl('cta');\n        this.favorite = null;\n        this.flowManager = getFlowManager();\n        this.trackingManager = getTrackingManager();\n\n        this._addEventListeners();\n        this._checkBookmark();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            () => {\n                this._setBookmark();\n            },\n            this.ctaEl\n        );\n    }\n\n    async _setBookmark() {\n        //control if user is logged, if not open popup\n        if ((await getUserService().getUser()) == null) {\n            this.flowManager.startFlow({\n                flowName: 'login-popup',\n                flowSteps: [{ name: 'login-popup' }],\n            });\n            return;\n        }\n\n        if (this.favorite) {\n            await getUserService().removeComplementaryData(this.root.dataset.path);\n        } else {\n            await getUserService().addComplementaryData(this.root.dataset.path);\n        }\n\n        const el = this.root.closest(`[data-card-type]`);\n        if (el) {\n            this._track(el.dataset.cardType);\n        }\n\n        this._checkBookmark();\n    }\n\n    async _checkBookmark() {\n        this.cta =  getRegister().getClass(this.ctaEl);\n        const data = await getUserService().checkComplementaryData(this.root.dataset.path);\n        if (data) {\n            this.favorite = data;\n            this.cta.setIcon('ec-icon-bookmark-on');\n        } else {\n            this.favorite = null;\n            this.cta.setIcon('ec-icon-bookmark-off');\n        }\n    }\n\n    _track(type) {\n        switch (type) {\n            case 'ADVICE':\n                this.trackingManager.track(this.root, {\n                    event: 'ConsiglioPreferito',\n                    CustomLink: (!this.favorite ? 'Aggiunta' : 'Rimozione') + ' consiglio dai preferiti',\n                });\n                break;\n            case 'RECIPE':\n                this.trackingManager.track(this.root, {\n                    event: 'RicettaPreferita',\n                    CustomLink: !this.favorite ? 'Aggiunta' : 'Rimozione' + ' ricetta dai preferiti',\n                });\n                break;\n        }\n    }\n}\n\n\n","import './style.scss';\nimport ValidableComponent from '../../../../../libs/components/validable-component';\n\nexport default class CategoryFilterCard extends ValidableComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        this.input = this._dEl('input');\n        this.input.checked ? this.select(false) : this.unselect(false);\n        \n        this._addEventListeners();\n    }\n\n    _getInput() {\n        return this.input;\n    }\n\n    /* override */\n    getValue() {\n        return this.input.checked ? this.input.value : null;\n    }\n\n    /* override */\n    getLabel() {\n        return this.root.dataset.label;\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'change',\n            (event) => {\n                event.preventDefault();\n                this._checkState();\n                this._changedInput();\n            },\n            this.input\n        );\n    }\n\n    isSelected() {\n        return this.input.checked;\n    }\n\n    select(sendChangedInputEvent = true) {\n        this.input.checked = true;\n        this._checkState();\n        if (!sendChangedInputEvent) return;\n        this._changedInput();\n    }\n\n    unselect(sendChangedInputEvent = true) {\n        this.input.checked = false;\n        this._checkState();\n        if (!sendChangedInputEvent) return;\n        this._changedInput();\n    }\n\n    setDisabled(disabled = true) {\n        this.input.checked = false;\n        disabled ? this.root.classList.add(this.DISABLED) : this.root.classList.remove(this.DISABLED);\n    }\n}\n\n\n","import Component from '../../../../../libs/components/component';\nimport './style.scss';\n\nconst GAP = 8;\nconst VIEWPORT_PADDING = 8;\n\nexport default class GenericTooltip extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.icon = this._dEl('icon');\n        this._appendPopup();\n        this._addEventListeners();\n        this._watchHostLifecycle();\n    }\n\n    _appendPopup() {\n        this.popup = document.createElement('div');\n        this.popup.classList.add('rt039-generic-tooltip-popup');\n        this.popup.setAttribute('id', `${this.root.id}-popup`);\n        this.popup.setAttribute('role', 'tooltip');\n        this.popup.setAttribute('aria-hidden', 'true');\n        this.popup.innerHTML = this._dEl('richtextText').innerHTML;\n        document.body.appendChild(this.popup);\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            (event) => {\n                event.preventDefault();\n                event.stopPropagation();\n                if (this.root.classList.contains(this._mod('show'))) {\n                    this._closeTooltip();\n                } else {\n                    this._openTooltip();\n                }\n            },\n            this.icon\n        );\n\n        // Use pointerdown: on rt021 mousedown is often suppressed (no event at all).\n        this._addListener(\n            'pointerdown',\n            (event) => {\n                if (!this.icon.contains(event.target) && !this.popup.contains(event.target)) {\n                    this._closeTooltip();\n                }\n            },\n            document,\n            { capture: true }\n        );\n\n        this._addListener(\n            'keydown',\n            (event) => {\n                if (event.key === 'Escape' && this.root.classList.contains(this._mod('show'))) {\n                    this._closeTooltip();\n                    this.icon.focus();\n                }\n            },\n            document,\n            { capture: true }\n        );\n\n        this._addListener(\n            'resize',\n            () => {\n                if (!this.root.classList.contains(this._mod('show'))) return;\n                this._setTooltipPosition();\n            },\n            window\n        );\n\n        this._addListener(\n            'scroll',\n            () => {\n                if (!this.root.classList.contains(this._mod('show'))) return;\n                this._closeTooltip();\n            },\n            window,\n            { capture: true, passive: true }\n        );\n    }\n\n    _openTooltip() {\n        if (this.root.classList.contains(this._mod('show'))) return;\n        this.root.classList.add(this._mod('show'));\n        this.popup.classList.add('rt039-generic-tooltip-popup--show');\n        this.popup.setAttribute('aria-hidden', 'false');\n        this.icon.setAttribute('aria-expanded', 'true');\n        this._setTooltipPosition();\n    }\n\n    _closeTooltip() {\n        this.root.classList.remove(this._mod('show'));\n        this.popup.classList.remove('rt039-generic-tooltip-popup--show');\n        this.popup.setAttribute('aria-hidden', 'true');\n        this.icon.setAttribute('aria-expanded', 'false');\n    }\n\n    _setTooltipPosition() {\n        this.popup.style.maxHeight = '';\n        this.popup.style.top = this._calcTop();\n        this.popup.style.left = this._calcLeft();\n    }\n\n    _calcTop() {\n        const rect = this.root.getBoundingClientRect();\n        const popHeight = this.popup.offsetHeight;\n        const viewportHeight = window.innerHeight;\n        const spaceBelow = viewportHeight - rect.bottom - VIEWPORT_PADDING;\n        const spaceAbove = rect.top - VIEWPORT_PADDING;\n\n        if (popHeight <= spaceBelow) {\n            return `${rect.bottom + GAP}px`;\n        }\n\n        if (popHeight <= spaceAbove) {\n            return `${rect.top - popHeight - GAP}px`;\n        }\n\n        if (spaceBelow >= spaceAbove) {\n            this.popup.style.maxHeight = `${Math.max(spaceBelow - GAP, 0)}px`;\n            return `${rect.bottom + GAP}px`;\n        }\n\n        this.popup.style.maxHeight = `${Math.max(spaceAbove - GAP, 0)}px`;\n        return `${VIEWPORT_PADDING}px`;\n    }\n\n    _calcLeft() {\n        const rect = this.root.getBoundingClientRect();\n        const popWidth = this.popup.offsetWidth;\n        const viewportWidth = window.innerWidth;\n        let left = rect.left;\n\n        if (left + popWidth > viewportWidth - VIEWPORT_PADDING) {\n            left = viewportWidth - popWidth - VIEWPORT_PADDING;\n        }\n        if (left < VIEWPORT_PADDING) {\n            left = VIEWPORT_PADDING;\n        }\n\n        return `${left}px`;\n    }\n\n    _watchHostLifecycle() {\n        this._lifeObserver = new IntersectionObserver(() => {\n            if (!this.root.isConnected) {\n                this.dispose();\n            }\n        });\n        this._lifeObserver.observe(this.root);\n    }\n\n    dispose() {\n        if (this._disposed) return;\n        this._disposed = true;\n        this._lifeObserver?.disconnect();\n        this._closeTooltip();\n        this.popup?.remove();\n        super.dispose();\n    }\n}\n","import Component from '../../../../../libs/components/component';\nimport './style.scss';\n\nexport default class RefreshPrizeCoupon extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.root = root;\n\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {}\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../../libs/components/component';\nimport { getFirstChild } from '../../../../../../libs/utils';\n\nexport default class L1Layout extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.items = this._dEl('item', true);\n        this.metas = this._dEl('meta', true);\n        this._addItemListeners();\n        this._addEventListeners();\n    }\n\n    _addItemListeners() {\n        this._addListener('hideLayoutItem', (event) => {\n            const item = event.target.closest(this._el('item', true));\n            if (!item) return;\n\n            if (event.data.hide) {\n                item.classList.add(this._elMod('item', 'hidden'));\n            } else {\n                item.classList.remove(this._elMod('item', 'hidden'));\n            }\n            event.stopPropagation();\n        });\n        this._addListener('removeLayoutItem', (event) => {\n            const item = event.target.closest(this._el('item', true));\n            if (!item) return;\n\n            const child = getFirstChild(item);\n            if (child != event.target) return;\n\n            item.remove();\n            event.stopPropagation();\n        });\n    }\n\n    _addEventListeners() {\n        this._addListener('insertFirstLayoutItem', (event) => {\n            event.preventDefault();\n            this._insertFirstLayoutItem(event.data);\n            event.stopPropagation();\n        });\n\n        this._addListener('rl1flyerSwitchSpaceBottom', (event) => {\n            const { action, htmlTarget } = event.data;\n            if (!action || !htmlTarget) return;\n\n            if (action === 'hide') {\n                this.spacedBottom = htmlTarget.classList.value\n                    .split(' ')\n                    .find((element) => element.includes('rl1-layout__item--spaced-bottom'));\n\n                if (this.spacedBottom != null) htmlTarget.classList.remove(this.spacedBottom);\n            } else if (action === 'show') {\n                if (\n                    this.spacedBottom != null &&\n                    !htmlTarget.classList.value.includes('rl1-layout__item--spaced-bottom')\n                )\n                    htmlTarget.classList.add(this.spacedBottom);\n            }\n            event.stopPropagation();\n        });\n    }\n\n    _insertFirstLayoutItem({ content, spacingMods, shrinkDsk, shrinkDskContest }) {\n        if (!content) return;\n        const section = document.createElement('section');\n        section.classList.add(this._el('item'));\n        if (spacingMods) {\n            for (const mod of spacingMods) {\n                section.classList.add(this._elMod('item', mod));\n            }\n        }\n        if (shrinkDsk) section.classList.add(this._elMod('item', 'shrinkDsk'));\n        if (shrinkDskContest) section.classList.add(this._elMod('item', 'shrinkDskContest'));\n        section.appendChild(content);\n        this.root.prepend(section);\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getUserService } from '../../../../../libs/user-service';\n\nexport default class Footer extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.links = this._dEl('links');\n        this.privacyPolicyLink = document.getElementById('privacy-policy-link');\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            (e) => {\n                const container = e.target.closest(this._el('linkContainer', true));\n                const linkContent = container?.querySelector(this._el('linkContent', true));\n                if (!container || !linkContent) return;\n\n                if (container.classList.contains(this._elMod('linkContainer', 'open'))) {\n                    container.classList.remove(this._elMod('linkContainer', 'open'));\n                    linkContent.style.maxHeight = 0;\n                } else {\n                    container.classList.add(this._elMod('linkContainer', 'open'));\n                    linkContent.style.maxHeight = linkContent.scrollHeight + 'px';\n                }\n            },\n            this.links\n        );\n        if (this.privacyPolicyLink) {\n            this._addListener(\n                'click',\n                async (e) => {\n                    e.preventDefault();\n                    let coop = 'cnd';\n                    const user = await getUserService().getUser();\n                    if (user) coop = user?.newMappedCooperative ? user.newMappedCooperative : 'cnd';\n                    const url = new URL(this.privacyPolicyLink.href, window.origin);\n                    url.searchParams.set('coop', coop?.toLowerCase());\n                    window.location = url.href;\n                },\n                this.privacyPolicyLink\n            );\n        }\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { getRegister } from '../../../../../libs/register';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { delay, openLoader, closeLoader } from '../../../../../libs/utils';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { flowManager } from '../../../../../libs/flow-manager';\n\nexport default class Header extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.trackingManager = getTrackingManager();\n        this.flowManager = flowManager;\n\n        this.lastScroll = window.scrollY || window.pageYOffset;\n        this.anonymousLoginBtn = this._dEl('anonymousLoginBtn');\n        this.anonymousRegisterBtn = this._dEl('anonymousRegisterBtn');\n        if (this.anonymousLoginBtn) this._setCallbackCb(this.anonymousLoginBtn);\n        if (this.anonymousRegisterBtn) this._setCallbackCb(this.anonymousRegisterBtn);\n        this.menu = this._dEl('menu');\n        this.submenu = this._dEl('submenu');\n        this.menuItems = this._dEl('menuItem', true);\n        this.submenuItems = this._dEl('submenuItem', true);\n        this.activeMenuItemEl = null;\n        this.currentSubmenuEl = null;\n        this.skipLinkSeen = false;\n        this.currentSubmenuId = null;\n        this.menuMobTransition = 0;\n        this.searchBtn = this._dEl('searchBtn');\n        this.searchBar = this._dEl('searchBar');\n        this.desktopBenefitCta = this._dEl('benefitCtaDesktop');\n        this.mobileBenefitCta = this._dEl('benefitCtaMobile');\n        this.mobileBenefitCtaLabel = this.mobileBenefitCta ? this._dEl('benefitCtaMobileLabel') : null;\n        this.benefitPanel = this._dEl('benefitPanel');\n        this.benefitChevron = this._dEl('benefitCtaMobileChevron');\n\n        this.skipLink = this._dEl('skipLink');\n        this.backdrop = this._dEl('backdrop');\n        this.page = getRegister().getClass(document.querySelector('.rs1-page'));\n        this._addEventListeners();\n        this._addStoreListeners();\n        this._updateHeaderHeightVar();\n        new ResizeObserver(() => this._updateHeaderHeightVar()).observe(this.root);\n        setTimeout(() => {\n            this._calcMenuPosition();\n        }, 100);\n\n        //check current user\n        this._checkUser();\n\n        // calculate the height of the mouseover submenu and hide them after calculating the max height\n        this._doCalculationsOnMouseoverSubmenuAndHideThem();\n    }\n\n    _doCalculationsOnMouseoverSubmenuAndHideThem() {\n        this.submenuItems?.forEach((submenuItem) => {\n            let mouseoverSubmenuWrappers = submenuItem.querySelectorAll('.rt055-menu-dsk__mouseoverSubmenuWrapper');\n            if (mouseoverSubmenuWrappers.length > 0) {\n                let maxHeight = this._calculateMaxHeight(mouseoverSubmenuWrappers);\n                submenuItem.style.height = `${maxHeight + 40}px`;\n            }\n            this._hideSubmenusWrappers(mouseoverSubmenuWrappers);\n        });\n    }\n\n    _hideSubmenusWrappers(mouseoverSubmenuWrappers) {\n        mouseoverSubmenuWrappers.forEach((el) => {\n            el.classList.add('hidden');\n        });\n    }\n\n    _calculateMaxHeight(mouseoverSubmenuWrappers) {\n        let heights = [];\n        mouseoverSubmenuWrappers?.forEach((el) => {\n            heights.push(el.offsetHeight);\n        });\n        return Math.max(...heights);\n    }\n\n    _addEventListeners() {\n        if (this.skipLink) {\n            this.skipLink.addEventListener('focus', () => {\n                this.skipLinkSeen = true;\n                this.skipLink.addEventListener('blur', () => {\n                    this.skipLink.classList.add(this._elMod('skipLink', 'seen'));\n                }, { once: true });\n            }, { once: true });\n\n            this._addListener(\n                'click',\n                (e) => {\n                    e.preventDefault();\n                    const main = document.querySelector('main');\n                    if (!main) return;\n                    main.setAttribute('tabindex', '-1');\n                    main.focus();\n                    main.addEventListener('blur', () => main.removeAttribute('tabindex'), { once: true });\n                },\n                this.skipLink\n            );\n        }\n\n        this._addListener(\n            'click',\n            (e) => {\n                const menuItem = e.target.closest(this._el('menuItem', true));\n                if (!menuItem) return;\n                if (!menuItem.classList.contains(this._elMod('menuItem', 'submenu'))) return;\n                e.preventDefault();\n                this._clickMenuItem(menuItem);\n            },\n            this.menu\n        );\n\n        // Escape closes the open submenu and returns focus to its trigger.\n        this._addListener(\n            'keydown',\n            (e) => {\n                if (e.key !== 'Escape') return;\n                if (!this.submenu?.classList.contains('active')) return;\n                e.preventDefault();\n                this._closeMenu();\n                this.activeMenuItemEl?.focus();\n            },\n            document\n        );\n\n        // The submenu panel is a DOM sibling of the nav (not a child).\n        // Default tab order skips it. This handler virtualises the focus sequence.\n        this._addListener(\n            'keydown',\n            (e) => {\n                if (e.key !== 'Tab') return;\n                if (!this.submenu?.classList.contains('active')) return;\n                if (!this.currentSubmenuEl) return;\n\n                const current = document.activeElement;\n                const order = this._focusableEls(this.currentSubmenuEl);\n                if (!order.length) return;\n\n                const idx = order.indexOf(current);\n                const onTrigger = current === this.activeMenuItemEl;\n\n                if (!e.shiftKey) {\n                    if (onTrigger) {\n                        // Tab on the open trigger: enter the submenu.\n                        e.preventDefault();\n                        order[0].focus();\n                    } else if (idx >= 0 && idx < order.length - 1) {\n                        // Tab on a mid-order item: advance to the next.\n                        e.preventDefault();\n                        order[idx + 1].focus();\n                    } else {\n                        // Tab past the last item (or focus outside order): close and move to the next nav trigger.\n                        e.preventDefault(); // Prevent focus on <body>\n                        const navLinks = Array.from(this.menu.querySelectorAll(this._el('menuItem', true)));\n                        const trigIdx = navLinks.indexOf(this.activeMenuItemEl);\n                        this._closeMenu();\n                        navLinks[trigIdx + 1]?.focus();\n                    }\n                } else {\n                    if (onTrigger) {\n                        // Shift-Tab on the trigger: close and let the browser continue backwards naturally.\n                        this._closeMenu();\n                    } else if (idx > 0) {\n                        // Shift-Tab on a mid-order item: go back to the previous.\n                        e.preventDefault();\n                        order[idx - 1].focus();\n                    } else {\n                        // Shift-Tab before the first item (or focus outside order): close and return to trigger.\n                        e.preventDefault();\n                        this._closeMenu();\n                        this.activeMenuItemEl?.focus();\n                    }\n                }\n            },\n            document\n        );\n\n        this._addListener(\n            'mouseover',\n            (e) => {\n                const menuItem = e.target.closest('.rt055-menu-dsk__menuItem');\n                if (!menuItem) return;\n                e.preventDefault();\n                this._mouseoverMenuItem(menuItem);\n            },\n            this.root\n        );\n\n        this._addListener(\n            'resize',\n            () => {\n                window.innerWidth < BREAKPOINTS.l && this.submenu && this.submenu.classList.contains('active')\n                    ? this._closeMenu()\n                    : this._calcMenuPosition();\n\n                if (this._isSearchBarOpen()) {\n                    window.innerWidth < BREAKPOINTS.l ? this.page.removeBlockScroll() : this.page.setBlockScroll();\n                }\n\n                this._updateHeaderHeightVar();\n            },\n            window\n        );\n\n        this._addListener(\n            'click',\n            (e) => {\n                if (e.target.closest('.' + this.getName())) return;\n                this._closeMenu();\n            },\n            document.body\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                this._emit('menuMobStatus', true);\n            },\n            'menuBtn'\n        );\n\n        this._addListener(\n            'scroll',\n            () => {\n                this._setHeaderScroll();\n                this._updateHeaderHeightVar();\n            },\n            document,\n            { passive: true }\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                if (this._isSearchBarOpen()) {\n                    this._closeSearchBar();\n                    return;\n                }\n                this._closeMenu();\n                this._openSearchBar();\n\n                this.trackingManager.track(this.root, {\n                    event: 'HeaderIntestazione',\n                    funnel: {\n                        stepFunnel: 'Intestazione',\n                        elementoHeader: 'Cerca',\n                    },\n                    CustomLink: 'Click Header Intestazione',\n                });\n            },\n            this.searchBtn\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                this._closeSearchBar();\n            },\n            this.backdrop\n        );\n\n        this._addListener(\n            'rt69Close',\n            () => {\n                this._closeSearchBar();\n            },\n            this.searchBar\n        );\n\n        // Desktop CTA -> modal via flowManager\n        if (this.desktopBenefitCta) {\n            this._addListener(\n                'click',\n                () => {\n                    this.trackingManager.track(this.desktopBenefitCta, {\n                        event: 'HeaderIntestazione',\n                        funnel: {\n                            nomeFunnel: 'Header',\n                            stepFunnel: 'Intestazione',\n                            elementoHeader: this.desktopBenefitCta.innerText?.trim() || '',\n                        },\n                        CustomLink: 'Click Header Intestazione',\n                    });\n                    this.flowManager.startFlow({\n                        flowName: 'user-benefits',\n                        flowSteps: [{ name: 'user-benefits' }],\n                    });\n                },\n                this.desktopBenefitCta\n            );\n        }\n\n        // Mobile CTA bar -> toggle inline dropdown panel\n        if (this.mobileBenefitCta) {\n            this._addListener(\n                'click',\n                () => {\n                    this.trackingManager.track(this.mobileBenefitCta, {\n                        event: 'HeaderIntestazione',\n                        funnel: {\n                            nomeFunnel: 'Header',\n                            stepFunnel: 'Intestazione',\n                            elementoHeader: this.mobileBenefitCtaLabel ? this.mobileBenefitCtaLabel.innerText.trim() : '',\n                        },\n                        CustomLink: 'Click Header Intestazione',\n                    });\n                    this._toggleBenefitPanel();\n                },\n                this.mobileBenefitCta\n            );\n        }\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('menuMobStatus', async (path, data) => {\n            const transition = ++this.menuMobTransition;\n            if (data) {\n                this.root.classList.add(this._mod('menuMobOpen'));\n                return;\n            }\n            await delay(400);\n            // A newer open/close cycle owns the header layer until its animation ends.\n            if (transition !== this.menuMobTransition) return;\n            this.root.classList.remove(this._mod('menuMobOpen'));\n        });\n\n        this._addStoreListener('currentPage', (path, data) => {\n            this._checkPage(data.path);\n        });\n    }\n\n    _checkPage(currentPath) {\n        if (!currentPath) return;\n\n        const items = this._dEl('menuItem', true);\n        let matches = [];\n        for (const item of items) {\n            //remove selected if present\n            if (item.classList.contains('selected')) item.classList.remove('selected');\n\n            //check page path\n            if (!currentPath?.includes(item.dataset.itemPath)) continue;\n            matches.push({\n                item: item,\n                match: item.dataset.itemPath.length,\n            });\n        }\n\n        //add selected to most lenght path\n        if (matches && matches.length > 0) {\n            const reduced = matches.reduce((x, y) => (x.match >= y.match ? x : y));\n            reduced.item.classList.add('selected');\n        }\n    }\n\n    _isSearchBarOpen() {\n        return this.root.classList.contains(this._mod('searchOpen'));\n    }\n\n    _isBenefitPanelOpen() {\n        return this.root.classList.contains(this._mod('benefitOpen'));\n    }\n\n    _openSearchBar() {\n        if (this._isSearchBarOpen()) return;\n        this.root.classList.add(this._mod('searchOpen'));\n        this.page.setBlockScroll();\n        setTimeout(() => {\n            this.searchBtn.blur();\n            this.searchBar.querySelector('input').focus();\n        }, 400);\n    }\n\n    _closeSearchBar() {\n        if (!this._isSearchBarOpen()) return;\n        this.root.classList.remove(this._mod('searchOpen'));\n        this.page.removeBlockScroll();\n        this.searchBtn.focus();\n    }\n\n    async _openBenefitPanel() {\n        if (!this.benefitPanel || this._isBenefitPanelOpen()) return;\n        this._closeSearchBar();\n        await this._loadBenefitPanelContent();\n        this.root.classList.add(this._mod('benefitOpen'));\n        if (this.benefitChevron) {\n            this.benefitChevron.classList.remove('ec-icon-chevron-down');\n            this.benefitChevron.classList.add('ec-icon-close');\n        }\n        if (this.mobileBenefitCta) this.mobileBenefitCta.setAttribute('aria-expanded', 'true');\n        if (this.benefitPanel) this.benefitPanel.setAttribute('aria-hidden', 'false');\n        this.page.setBlockScroll();\n    }\n\n    async _loadBenefitPanelContent() {\n        if (this._benefitPanelLoaded) return;\n        openLoader('main');\n        try {\n            const entry = (window.modals || []).find((m) => m.name === 'user-benefits');\n            if (!entry) return;\n            const response = await fetch(entry.url);\n            const html = await response.text();\n            const doc = new DOMParser().parseFromString(html, 'text/html');\n            const content = doc.querySelector('.rt259-user-benefits');\n            if (content) {\n                this.benefitPanel.appendChild(content);\n                this._benefitPanelLoaded = true;\n            }\n        } catch (e) {\n            console.warn('rt051-header: failed to load benefit panel content', e);\n        } finally {\n            closeLoader('main');\n        }\n    }\n\n    _closeBenefitPanel() {\n        if (!this.benefitPanel || !this._isBenefitPanelOpen()) return;\n        this.root.classList.remove(this._mod('benefitOpen'));\n        if (this.benefitChevron) {\n            this.benefitChevron.classList.remove('ec-icon-close');\n            this.benefitChevron.classList.add('ec-icon-chevron-down');\n        }\n        if (this.mobileBenefitCta) this.mobileBenefitCta.setAttribute('aria-expanded', 'false');\n        if (this.benefitPanel) this.benefitPanel.setAttribute('aria-hidden', 'true');\n        this.page.removeBlockScroll();\n    }\n\n    _toggleBenefitPanel() {\n        if (this._isBenefitPanelOpen()) {\n            this._closeBenefitPanel();\n        } else {\n            this._closeMenu();\n            this._openBenefitPanel();\n        }\n    }\n\n    _setCallbackCb(linkA) {\n        if (!linkA || !linkA.href) return;\n        const link = new URL(linkA.href);\n        link.searchParams.set('cb', window.location.href);\n        linkA.href = link.href;\n    }\n\n    _clickMenuItem(menuItem) {\n        const menuId = menuItem.dataset.menu;\n        let currentSubmenu = null;\n\n        this._dEl('menuItem', true).forEach((item) => {\n            item.classList.remove('active');\n        });\n\n        for (const submenu of this.submenuItems) {\n            if (submenu.id == menuId) {\n                submenu.classList.add('active');\n                currentSubmenu = submenu;\n            } else {\n                submenu.classList.remove('active');\n            }\n        }\n\n        // Second click on the same trigger while the submenu is open: close it.\n        if (this.currentSubmenuEl == currentSubmenu && this.submenu.classList.contains('active')) {\n            this._closeMenu();\n            return;\n        }\n\n        this._closeSearchBar();\n        menuItem.classList.add('active');\n        this.submenu.style.visibility = 'visible';\n        this.submenuItems.forEach((item) => {\n            item.setAttribute('tabindex', item.id === menuId ? '0' : '-1');\n            item.style.visibility = item.id === menuId ? 'visible' : 'hidden';\n        });\n        this.submenu.classList.add('active');\n        this.submenu.style.height = `${currentSubmenu.clientHeight}px`;\n\n        this.activeMenuItemEl = menuItem;\n        this.currentSubmenuEl = currentSubmenu;\n\n        // Defer focus until the height transition ends\n        let focusDone = false;\n        const doFocus = () => {\n            if (focusDone) return;\n            focusDone = true;\n            this.submenu.removeEventListener('transitionend', onEnd);\n            if (this.currentSubmenuEl !== currentSubmenu) return;\n            const first = currentSubmenu.querySelector('a[href], button:not([disabled])');\n            (first || currentSubmenu).focus();\n        };\n        // transitionend fires once per animated property; guard on height to ignore others.\n        const onEnd = (e) => {\n            if (e.propertyName === 'height') doFocus();\n        };\n\n        this.submenu.addEventListener('transitionend', onEnd);\n    }\n\n    _mouseoverMenuItem(menuItem) {\n        let reference = menuItem.dataset.itemRef;\n        if (reference) {\n            let submenuItems = this.root.querySelectorAll('.rt055-menu-dsk__menuItem');\n            submenuItems.forEach((item) => {\n                if (item.classList.contains('underline')) {\n                    item.classList.remove('underline');\n                }\n            });\n            menuItem.classList.add('underline');\n            let elementToShow = document.getElementById(reference);\n            elementToShow?.classList.remove('hidden');\n\n            // hide elements\n            let menuItems = this.root.querySelectorAll('.rt055-menu-dsk__mouseoverSubmenuWrapper');\n            menuItems.forEach((item) => {\n                if (item.id != elementToShow?.id) {\n                    item.classList.add('hidden');\n                }\n            });\n        }\n    }\n\n    _focusableEls(container) {\n        return Array.from(container.querySelectorAll('a[href], button:not([disabled])'))\n            .filter((el) => el.offsetParent !== null);\n    }\n\n    _closeMenu() {\n        this._closeBenefitPanel();\n        this._dEl('menuItem', true).forEach((item) => {\n            item.classList.remove('active');\n        });\n        if (this.submenu) {\n            this.submenu.style.height = '0';\n            this.submenu.classList.remove('active');\n            this.submenu.style.visibility = 'hidden';\n\n            this.submenuItems.forEach((item) => {\n                item.setAttribute('tabindex', '-1');\n                item.style.visibility = 'hidden';\n            });\n        }\n        this.currentSubmenuEl = null;\n    }\n\n    _calcMenuPosition() {\n        for (const menu of this.menuItems) {\n            const submenuItem = document.getElementById(menu.dataset.menu);\n            if (!submenuItem) continue;\n\n            const rect = menu.getBoundingClientRect();\n            const popWidth = submenuItem.clientWidth;\n            const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\n            let left = rect.left + scrollLeft;\n            if (left + popWidth > document.documentElement.scrollWidth) {\n                const inRect = this.menu.getBoundingClientRect();\n                left =\n                    inRect.left +\n                    scrollLeft +\n                    parseInt(window.getComputedStyle(this.menu).getPropertyValue('padding-left'));\n            }\n\n            submenuItem.style.marginLeft = `${left}px`;\n        }\n    }\n\n    _setHeaderScroll() {\n        const printMedia = window.matchMedia('print');\n        const print = printMedia && printMedia.matches;\n        const limitScroll = this.root.offsetHeight;\n        const scrollY = window.scrollY || window.pageYOffset;\n\n        //change header position from standard to fixed during scroll\n        if (!print && scrollY > 0 && !this.root.classList.contains(this._mod('scrolled'))) {\n            this.root.classList.add(this._mod('scrolled'));\n        } else if (scrollY <= 0) {\n            this.root.classList.remove(this._mod('scrolled'));\n        }\n\n        //hide/show topbar during scroll up/down (mobile only)\n        if (window.innerWidth < BREAKPOINTS.l && !print && scrollY > limitScroll) {\n            const diff = scrollY - this.lastScroll;\n            if (diff > 0) {\n                this.root.classList.add(this._mod('topbarHidden'));\n            } else if (diff < 0) {\n                this.root.classList.remove(this._mod('topbarHidden'));\n            }\n        } else {\n            this.root.classList.remove(this._mod('topbarHidden'));\n        }\n\n        this.lastScroll = scrollY;\n    }\n\n    async _checkUser() {\n        const user = await getUserService().getUser();\n        if (user) {\n            this.root.classList.add(this._mod('user'));\n        }\n\n        this._updateBenefitCtaVisibility(user);\n\n        this._dEl('actions').classList.add(this._elMod('actions', 'visible'));\n    }\n\n    _getCoopsToExclude() {\n        if (!this.root.dataset.coopsToExclude) return [];\n        return this.root.dataset.coopsToExclude\n            .split(',')\n            .map((coop) => coop.trim().toLowerCase())\n            .filter(Boolean);\n    }\n\n    _isBenefitCtaEnabled(user) {\n        if (!user?.newMappedCooperative) return true;\n        return !this._getCoopsToExclude().includes(user.newMappedCooperative.toLowerCase());\n    }\n\n    _hideBenefitCtas() {\n        [this.desktopBenefitCta, this.mobileBenefitCta, this.benefitPanel].forEach((el) => {\n            if (el) el.style.setProperty('display', 'none', 'important');\n        });\n        this._closeBenefitPanel();\n        this._updateHeaderHeightVar();\n    }\n\n    _updateBenefitCtaVisibility(user) {\n        if (this._isBenefitCtaEnabled(user)) return;\n        this._hideBenefitCtas();\n    }\n\n    _updateHeaderHeightVar() {\n        document.documentElement.style.setProperty('--header-height', `${this.root.offsetHeight}px`);\n    }\n}\n","export const htmlMapPin = ({ OverlayView = window.google.maps.OverlayView, ...args }) => {\n    class HTMLMapPin extends OverlayView {\n        constructor() {\n            super();\n            this.position = args.position;\n            this.elem = args.elem;\n            this.setMap(args.map);\n        }\n\n        onAdd() {\n            if (!this.div) {\n                /* create div */\n                this.div = document.createElement('div');\n                this.div.style.position = 'absolute';\n                if (this.elem) {\n                    this.div.appendChild(this.elem);\n                }\n                this.isMultiLocation = this.elem?.classList.contains('rt016-map-pin--multiLocation');\n                this._attach();\n                this.visible = true;\n            }\n        }\n\n        /* Only the selected multipin goes to floatPane above the InfoWindow, so its brand\n         * icons stay tappable on mobile; the others stay below the selected store's card. */\n        _attach() {\n            const onTop = this.isMultiLocation && this.onTop;\n            const pane = onTop ? 'floatPane' : this.isMultiLocation ? 'overlayMouseTarget' : 'overlayImage';\n            this.div.style.zIndex = onTop ? '1000001' : '';\n            this.getPanes()[pane].appendChild(this.div);\n        }\n\n        setOnTop(onTop) {\n            this.onTop = onTop;\n            if (this.div && this.getPanes()) this._attach();\n        }\n\n        onRemove() {\n            if (!this.div) return;\n            this.div.parentNode?.removeChild(this.div);\n            this.div = null;\n        }\n\n        draw() {\n            const point = this.getProjection().fromLatLngToDivPixel(this.position);\n            if (point) {\n                this.div.style.left = `${point.x}px`;\n                this.div.style.top = `${point.y}px`;\n            }\n        }\n\n        getPosition() {\n            return this.position;\n        }\n\n        getVisible() {\n            return this.visible;\n        }\n\n        setVisible(visible) {\n            this.visible = visible;\n        }\n\n        getDraggable() {\n            return false;\n        }\n\n        getElem() {\n            return this.elem;\n        }\n    }\n\n    return new HTMLMapPin();\n};","import { runTemplate } from '../../../../../../libs/htl-runtime/HTMLRuntime';\nimport { htmlMapPin } from './html-map-pin';\n\nexport class ClusterPinRenderer {\n    constructor(map, register, mapPinCall) {\n        this.map = map;\n        this.register = register;\n        this.mapPinCall = mapPinCall;\n    }\n\n    /* override */\n    render({ count, position, markers } /*, stats*/) {\n        // deselect all markers of the cluster\n        for (const marker of markers) {\n            this.register.getClass(marker.getElem()).setSelected(false);\n        }\n\n        const elem = runTemplate(this.mapPinCall, { aggregator: true, textContent: `${count}` });\n        const clusterMapPin = htmlMapPin({\n            position: position,\n            elem: elem,\n            map: this.map,\n        });\n        this.register.getClass(elem).setMapParams(this.map, position, clusterMapPin);\n        return clusterMapPin;\n    }\n}\n","export const styledMapFeatures = [\n    {\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#f5f5f5',\n            },\n        ],\n    },\n    {\n        elementType: 'labels.icon',\n        stylers: [\n            {\n                visibility: 'off',\n            },\n        ],\n    },\n    {\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#616161',\n            },\n        ],\n    },\n    {\n        elementType: 'labels.text.stroke',\n        stylers: [\n            {\n                color: '#f5f5f5',\n            },\n        ],\n    },\n    {\n        featureType: 'administrative.land_parcel',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#bdbdbd',\n            },\n        ],\n    },\n    {\n        featureType: 'poi',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#eeeeee',\n            },\n        ],\n    },\n    {\n        featureType: 'poi',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#757575',\n            },\n        ],\n    },\n    {\n        featureType: 'poi.park',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#e5e5e5',\n            },\n        ],\n    },\n    {\n        featureType: 'poi.park',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#9e9e9e',\n            },\n        ],\n    },\n    {\n        featureType: 'road',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#ffffff',\n            },\n        ],\n    },\n    {\n        featureType: 'road.arterial',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#757575',\n            },\n        ],\n    },\n    {\n        featureType: 'road.highway',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#dadada',\n            },\n        ],\n    },\n    {\n        featureType: 'road.highway',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#616161',\n            },\n        ],\n    },\n    {\n        featureType: 'road.local',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#9e9e9e',\n            },\n        ],\n    },\n    {\n        featureType: 'transit.line',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#e5e5e5',\n            },\n        ],\n    },\n    {\n        featureType: 'transit.station',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#eeeeee',\n            },\n        ],\n    },\n    {\n        featureType: 'water',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#c9c9c9',\n            },\n        ],\n    },\n    {\n        featureType: 'water',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#9e9e9e',\n            },\n        ],\n    },\n];","export const mapDimLayer = ({ OverlayView = window.google.maps.OverlayView, map, className }) => {\n    class MapDimLayer extends OverlayView {\n        constructor() {\n            super();\n            this.boundsListener = null;\n            this.setMap(map);\n        }\n\n        onAdd() {\n            this.div = document.createElement('div');\n            this.div.className = className;\n            this.getPanes().mapPane.appendChild(this.div);\n            this.boundsListener = this.getMap().addListener('bounds_changed', () => this.draw());\n        }\n\n        onRemove() {\n            this.boundsListener?.remove();\n            this.boundsListener = null;\n            this.div?.parentNode?.removeChild(this.div);\n            this.div = null;\n        }\n\n        draw() {\n            const projection = this.getProjection();\n            const bounds = this.getMap()?.getBounds();\n            if (!this.div || !projection || !bounds) return;\n\n            const ne = projection.fromLatLngToDivPixel(bounds.getNorthEast());\n            const sw = projection.fromLatLngToDivPixel(bounds.getSouthWest());\n            if (!ne || !sw) return;\n\n            const width = Math.abs(ne.x - sw.x);\n            const height = Math.abs(sw.y - ne.y);\n            this.div.style.left = `${Math.min(ne.x, sw.x) - width}px`;\n            this.div.style.top = `${Math.min(ne.y, sw.y) - height}px`;\n            this.div.style.width = `${width * 3}px`;\n            this.div.style.height = `${height * 3}px`;\n        }\n    }\n\n    return new MapDimLayer();\n};\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport mockRetrievePointOfService from '../../../../../mocks/retrievePointOfService.json';\n\nconst USE_MOCK = false;\nimport { getRegister } from '../../../../../libs/register';\nimport { getStoreManager } from '../../../../../libs/store-manager';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { getGMapsHelper } from '../../../../../libs/gmaps-helper';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { htmlMapPin } from '../rt016-map-pin/scripts/html-map-pin';\nimport { ClusterPinRenderer } from '../rt016-map-pin/scripts/cluster-pin-renderer';\nimport { styledMapFeatures } from './scripts/styled-map';\nimport { mapDimLayer } from './scripts/map-dim-layer';\nimport {\n    getInsigniaKey,\n    getInsigniaSortRank,\n    resolveInsigniaKeysFromSearchQuery,\n    resolveInsigniaLegend,\n    getPoiType,\n    INSIGNIA_SORT_SPAN,\n    isStandaloneInsigniaId,\n    storeData,\n} from '../../../../../libs/pdv-utils';\nimport { closeLoader, delay, emptyElement, loadStep, openLoader } from '../../../../../libs/utils';\nimport { formToJSON, jsonToForm } from '../../../../../libs/form-to-json';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nconst FOUND_SINGULAR_KEY = 'found (singular)';\n\nexport default class StoreLocator extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        if (this.root.hasAttribute('data-disable-logic')) return;\n        \n        // services\n        this.register = getRegister();\n        this.storeManager = getStoreManager();\n        this.api = getApiProvider();\n        this.gMapsHelper = getGMapsHelper();\n        this.trackingManager = getTrackingManager();\n        this.dictionary = getDictionary();\n        this.userService = getUserService();\n\n        // constants\n        this.RES_ITEM = this._el('resItem');\n        this.PAD_BOX_SHADOW = 7;\n        this.CARD_PANEL_GAP = 8;\n        this.FILTERS_PANE_OPEN = this._mod('filtersOpen');\n        this.BG_FILTERS = this._elMod('bg', 'filters');\n        this.BREAKPOINT_L = BREAKPOINTS.l;\n        this.MAP_SELECTOR = this._el('map', true);\n        this.SHOW_MAP_MOB = this._mod('showMapMob');\n        this.FILTER_OPENING_SELECTOR = this._el('filterOpening', true);\n        this.NO_RESULTS = this._mod('noRes');\n        this.SEARCH_EMPTY = this._mod('searchEmpty');\n        this.PRE_FILTERED = this._mod('preFiltered');\n        this.HIGH_BG = this._elMod('bg', 'high');\n\n        this.bg = this._dEl('bg');\n        this.searchAlert = this._dEl('searchAlert');\n        this.address = this._dEl('address');\n        this.filtersContainer = this._dEl('filters');\n        this.numRes = this._dEl('resHeadingFound')?.querySelector('span:first-child');\n        this.results = this._dEl('results');\n        this.resList = this._dEl('resList');\n        this.openFiltersPane = this._dEl('openFiltersPane');\n        this.closeFiltersPane = this._dEl('closeFiltersPane');\n        this.filtersCount = this._dEl('filtersCount');\n        this.filtersOpening = this._dEl('filtersOpening');\n        this.filtersPane = this._dEl('filtersPane');\n        this.fAccInsignia = this._dEl('filtersAccordionInsignia');\n        this.fAccDepartment = this._dEl('filtersAccordionDepartment');\n        this.fAccService = this._dEl('filtersAccordionService');\n        this.fInsSpecTitle = this._dEl('insigniaSpecializedTitle');\n        this.fade = this._dEl('paneFade', true);\n        this.mapEl = this._dEl('map');\n        this.sidePane = this._dEl('sidePane');\n        this.mapMob = this._dEl('mapMob');\n        this.mapDsk = this._dEl('mapDsk');\n        this.showMap = this._dEl('showMap');\n        this.showList = this._dEl('showList');\n        this.mapToggle = this._dEl('mapToggle');\n        this.form = this._dEl('form');\n        this.reset = this._dEl('reset');\n        this.apply = this._dEl('apply');\n        this.stores = null;\n        this.map = null;\n        this.markers = [];\n        this.mapPins = {};\n        this.markerClusterer = null;\n        this.selectedAddress = null;\n        /* Typed query before Google overwrites the input with formatted_address. */\n        this._lastTypedSearchQuery = '';\n        this.searchPreferredInsigniaKeys = new Set();\n        this.yourStoreLink = this.root.dataset.yourStoreLink;\n        if (this.root.hasAttribute('data-specialized-store-filters'))\n            this.specializedStoreFilters = JSON.parse(this.root.dataset.specializedStoreFilters);\n        if (this.root.hasAttribute('data-services-url-map')) this.servicesUrlMap = this.root.dataset.servicesUrlMap;\n        this.insigniaLegend = resolveInsigniaLegend(this._parseInsigniaLegend());\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        /* init */\n        this.filtersPane?.setAttribute('inert', '');\n        this._showSearchEmpty();\n        this._disableReset();\n        this._disableApply();\n\n        this.ff = this._getFixedFilter();\n        if (this.ff) {\n            const ff = this.specializedStoreFilters.filter((sf) => sf.theme == this.ff)[0];\n            if (ff && ff.value) {\n                const obj = this.register.getClass(this.searchAlert);\n                obj.setTrailingText(ff.label);\n                obj.setTheme(ff.theme);\n\n                if (!this.root.classList.contains(this.PRE_FILTERED)) this.root.classList.add(this.PRE_FILTERED);\n\n                // force insigna checked\n                const realValue = ff.value\n                    .map((item) => item.value)\n                    .reduce((acc, value) => {\n                        return acc + value;\n                    }, '');\n                const ffInput = this.root.querySelector(`.rt023-insignia-card__input[value=\"${realValue}\"]`);\n                if (ffInput) ffInput.checked = true;\n            }\n            this._emit('prefiltersChanged', false);\n        }\n\n        await this._updateFilters();\n\n        this.psFilters?.destroy();\n        this.psFilters = null;\n        this.psResults?.destroy();\n        this.psResults = null;\n        this.psFiltersOpening?.destroy();\n        this.psFiltersOpening = null;\n\n        this.initMap();\n        await this._initScrollbarFilters();\n        await this._initScrollbarFiltersOpening();\n\n        this._addEventListeners();\n        this._addStoreListeners();\n\n        this.searchString = this._getSearch();\n        if (this.searchString) {\n            const s = decodeURIComponent(this.searchString);\n            this._lastTypedSearchQuery = s;\n            this.searchPreferredInsigniaKeys = resolveInsigniaKeysFromSearchQuery(s);\n            const obj = this.register.getClass(this.address);\n            obj.setInputValue(s);\n            obj._manualSearch();\n        }\n    }\n\n    _addEventListeners() {\n        const addressInput = this.address?.querySelector('input');\n        if (addressInput) {\n            this._addListener(\n                'input',\n                () => {\n                    this._lastTypedSearchQuery = addressInput.value;\n                },\n                addressInput\n            );\n            this._addListener(\n                'focus',\n                () => {\n                    this._holdScrollOnFocus(addressInput);\n                },\n                addressInput\n            );\n        }\n\n        this._addListener(\n            'rcInputChanged',\n            async (event) => {\n                if (!event.data.value || !event.data.value.geometry || !event.data.value.types) {\n                    this.selectedAddress = null;\n                    this.searchPreferredInsigniaKeys = new Set();\n                    this._closeFiltersPane();\n                    this._disableFilters();\n                    return;\n                }\n                this.selectedAddress = event.data.value;\n                this.searchPreferredInsigniaKeys = resolveInsigniaKeysFromSearchQuery(\n                    this._lastTypedSearchQuery\n                );\n                if (this.selectedAddress != null) {\n                    this.filtersContainer.classList.remove(this._elMod('filters', 'hidden'));\n                    this.mapToggle?.classList.remove(this._elMod('mapToggle', 'hidden'));\n                    this.bg.classList.remove(this.HIGH_BG);\n                    this.input = this._dEl('address')?.querySelector('input');\n\n                    /* CPO-792: the \"…\" is CSS text-overflow on the full address, which\n                       browsers paint only on a blurred input. Picking a suggestion keeps\n                       focus (mousedown preventDefault), so release it and rewind to the start. */\n                    if (this.input) {\n                        if (document.activeElement === this.input) {\n                            this.input.setSelectionRange(0, 0);\n                            this.input.blur();\n                        }\n                        this.input.scrollLeft = 0;\n                    }\n                }\n\n                if (this.storeManager.get('prefiltersChanged')) {\n                    await this._resetFilters();\n                    this._initFilters();\n                }\n\n                await this._loadPoi(this.selectedAddress);\n                this._enableFilters();\n            },\n            this.address\n        );\n\n        this._addListener(\n            'rcInputChanged',\n            async () => {\n                if (!this.storeManager.get('prefiltersChanged')) {\n                    this._emit('prefiltersChanged', true);\n                    this.searchAlert.dispatchEvent(new CustomEvent('closeSearchAlert', { bubbles: false }));\n                }\n                // refilter at every input change and mask filters accordingly to the results\n                await this._refreshSearchWithFilters();\n\n                // update ctas\n                const numChecked = Array.from(this.form.querySelectorAll('input')).filter((i) => i.checked).length;\n                this.register.getClass(this.reset).setStatus(numChecked <= 0 ? 'disabled' : 'enabled');\n                this.register.getClass(this.apply).setStatus('enabled');\n                await this._refreshModals();\n                this.register.getClass(this.filtersModal.reset).setStatus(numChecked <= 0 ? 'disabled' : 'enabled');\n                this.register.getClass(this.filtersModal.apply).setStatus('enabled');\n            },\n            this.form\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                if (window.innerWidth < this.BREAKPOINT_L) {\n                    /* mobile */\n                    this._openFiltersModal();\n                } else {\n                    /* desktop */\n                    this._openFiltersPane();\n                }\n                this.trackingManager.track(this.root, {\n                    event: 'ApriFiltro',\n                    CustomLink: 'Apri Filtro',\n                    funnel: {\n                        stepFunnel: 'Filtro',\n                    },\n                    negozioInfo: {\n                        indirizzoRicerca: 'vars.currentSearchAddress',\n                    },\n                });\n            },\n            this.openFiltersPane\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                this._closeFiltersPane();\n            },\n            this.closeFiltersPane\n        );\n\n        this._addListener(\n            'rt17HeightChanged',\n            async (event) => {\n                this.trackingManager.track(this.root, {\n                    event: 'EsplodiFiltro',\n                    CustomLink: 'Esplodi Filtro',\n                    funnel: {\n                        stepFunnel: 'Filtro',\n                    },\n                    filtro: {\n                        nomeFiltro: 'Insegne',\n                    },\n                    negozioInfo: {\n                        indirizzoRicerca: 'vars.currentSearchAddress',\n                    },\n                });\n                await delay(500);\n                await this._initScrollbarFilters();\n                await this._refreshModals();\n                this.filtersModal.manageAccordion('filtersAccordionInsignia', event.data.isOpen);\n            },\n            this.fAccInsignia\n        );\n        this._addListener(\n            'rt17HeightChanged',\n            async (event) => {\n                this.trackingManager.track(this.root, {\n                    event: 'EsplodiFiltro',\n                    CustomLink: 'Esplodi Filtro',\n                    funnel: {\n                        stepFunnel: 'Filtro',\n                    },\n                    filtro: {\n                        nomeFiltro: 'Reparti',\n                    },\n                    negozioInfo: {\n                        indirizzoRicerca: 'vars.currentSearchAddress',\n                    },\n                });\n                await delay(500);\n                await this._initScrollbarFilters();\n                await this._refreshModals();\n                this.filtersModal.manageAccordion('filtersAccordionDepartment', event.data.isOpen);\n            },\n            this.fAccDepartment\n        );\n        this._addListener(\n            'rt17HeightChanged',\n            async (event) => {\n                this.trackingManager.track(this.root, {\n                    event: 'EsplodiFiltro',\n                    CustomLink: 'Esplodi Filtro',\n                    funnel: {\n                        stepFunnel: 'Filtro',\n                    },\n                    filtro: {\n                        nomeFiltro: 'Altri Servizi',\n                    },\n                    negozioInfo: {\n                        indirizzoRicerca: 'vars.currentSearchAddress',\n                    },\n                });\n                await delay(500);\n                await this._initScrollbarFilters();\n                await this._refreshModals();\n                this.filtersModal.manageAccordion('filtersAccordionService', event.data.isOpen);\n            },\n            this.fAccService\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                this._showMapMob();\n            },\n            this.showMap\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                this._showMapMob(false);\n                this._updateSelectedRes();\n            },\n            this.showList\n        );\n\n        this._addListener(\n            'click',\n            async () => {\n                await this._resetFilters();\n                this._closeFiltersPane();\n                this._refreshSearchWithFilters();\n            },\n            this.reset\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                this._closeFiltersPane();\n                this._trackApplyFilter();\n            },\n            this.apply\n        );\n\n        this._addListener(\n            'rcInputChanged',\n            async () => {\n                await this._refreshSearchWithFilters();\n                //this._trackApplyFilter();\n            },\n            this.filtersOpening\n        );\n\n        this._addListener(\n            'rt10CanceledField',\n            () => {\n                this._lastTypedSearchQuery = '';\n                this.searchPreferredInsigniaKeys = new Set();\n                this._emptyMarkers();\n                this._emptyResults();\n                this._showSearchEmpty();\n            },\n            this.address\n        );\n\n        this._addListener(\n            'resize',\n            () => {\n                this._refreshMapPosition();\n                if (this.currentBounds) this.map.fitBounds(this.currentBounds);\n            },\n            window\n        );\n\n        this._addListener('suppressMapClick', () => {\n            this._suppressMapClick = true;\n            clearTimeout(this._suppressMapClickTimer);\n            this._suppressMapClickTimer = setTimeout(() => {\n                this._suppressMapClick = false;\n            }, 400);\n        });\n\n        this._addListener('clickedStore', (event) => {\n            const data = event.data;\n            if (!data.pinId) return;\n\n            const pinObj = this.mapPins[data.pinId];\n            if (!pinObj || !pinObj.getPosition() || !this.map) return;\n\n            if (pinObj.isSelected()) {\n                this._resetPin();\n                return;\n            }\n\n            this._resetPin(pinObj);\n            this._panToWithOffset(pinObj.getPosition(), pinObj);\n            this.selectedResItem = this.resList.querySelector(`.${this.RES_ITEM}[data-store-id='${data.pinId}']`);\n            if (!this.selectedResItem) return;\n            this._updateSelectedRes();\n        });\n\n        this._addListener(\n            'clickedAggregator',\n            (event) => {\n                const data = event.data;\n                if (!data.position) return;\n\n                this._resetPin();\n\n                this.map.panTo(data.position);\n                this.map.setZoom(this.map.getZoom() < 15 ? this.map.getZoom() + 2 : this.map.getZoom() + 1);\n            },\n            this.mapEl\n        );\n\n        this._addListener('clickedStoreCard', (event) => {\n            const data = event.data;\n            if (!data.storeId) return;\n\n            /* update selected marker */\n            const pinObj = this.mapPins[data.storeId];\n            if (!pinObj || !pinObj.getPosition() || !this.map) return;\n\n            /* Multipin: highlight the clicked brand without reordering pin icons. */\n            pinObj.activateStore?.(data.storeId);\n            this._resetPin(pinObj);\n\n            this._panToWithOffset(pinObj.getPosition(), pinObj);\n            this.map.setZoom(17);\n        });\n\n        this._addListener(\n            'closedSearchAlert',\n            (e) => {\n                this._doClosedSearchAlertLogic();\n                e.stopPropagation();\n            },\n            this.searchAlert\n        );\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('maskStoreLocatorFilters', (path, data) => {\n            this._maskFilters(data.stores);\n        });\n        this._addStoreListener('rt10AddressSearchType', (path, data) => {\n            /* Geolocate has no typed brand; drop any stale preference. */\n            if (data?.searchType === 'Geolocalizzazione') {\n                this._lastTypedSearchQuery = '';\n                this.searchPreferredInsigniaKeys = new Set();\n            }\n        });\n    }\n\n    async initMap() {\n        if (!this.map) {\n            const maps = await this.gMapsHelper.getGMaps();\n            this.map = new maps.Map(this.mapEl, {\n                center: { lat: 43, lng: 12 },\n                zoom: 10,\n                streetViewControl: false,\n                mapTypeControl: false,\n                fullscreenControl: false,\n                clickableIcons: false,\n            });\n\n            this.map.addListener('click', () => {\n                /* Pin/multipin DOM click also triggers map click on mobile — ignore. */\n                if (this._suppressMapClick) return;\n                this._resetPin();\n                this.selectedResItem = null;\n            });\n\n            const styledMapType = new maps.StyledMapType(styledMapFeatures);\n            this.map.mapTypes.set('styled_map', styledMapType);\n            this.map.setMapTypeId('styled_map');\n\n            this.mapDim = mapDimLayer({ map: this.map, className: this._el('mapDim') });\n        }\n        this._refreshMapPosition();\n    }\n\n    _refreshMapPosition() {\n        if (!this.mapEl) return;\n        if (window.innerWidth >= this.BREAKPOINT_L) {\n            this.mapDsk?.append(this.mapEl);\n            this.mapEl = this.mapDsk?.querySelector(this.MAP_SELECTOR);\n        } else {\n            this.mapMob?.append(this.mapEl);\n            this.mapEl = this.mapMob?.querySelector(this.MAP_SELECTOR);\n        }\n    }\n\n    _updateSelectedRes() {\n        if (!this.selectedResItem || !this.selectedResItem.offsetTop) return;\n        this.resList.scrollTop = this.selectedResItem.offsetTop - this.PAD_BOX_SHADOW;\n        const resObj = this.register.getClass(this.selectedResItem);\n        if (resObj) {\n            resObj.unselectCards();\n            resObj.setSelected();\n            return;\n        }\n        /* Aggregated carousel: wrapper is not a store-card — select the active slide's card. */\n        this._selectCarouselCard(this.selectedResItem);\n    }\n\n    _selectCarouselCard(carouselItem, idx = null) {\n        if (!carouselItem) return;\n        const pinObj = this.mapPins[carouselItem.dataset.storeId];\n        const slideIdx = idx ?? pinObj?.getActiveIdx?.() ?? 0;\n        const cards = carouselItem.querySelectorAll('.rt021-store-card');\n        const card = cards[slideIdx] || cards[0];\n        const cardObj = card && this.register.getClass(card);\n        if (!cardObj) return;\n        cardObj.unselectCards();\n        cardObj.setSelected();\n    }\n\n    /**\n     * CPO-791: in mobile map view the search pane sits right under the fixed header.\n     * When the keyboard opens, iOS Safari scrolls the page and the pane slides under the\n     * header bars. The pre-focus position already shows input and \"Detect my location\"\n     * above the keyboard, so hold it for as long as the field is focused: iOS can scroll\n     * well after the keyboard animation, so a fixed time window is not enough.\n     */\n    _holdScrollOnFocus(input) {\n        if (window.innerWidth >= this.BREAKPOINT_L) return;\n        if (!this.root.classList.contains(this.SHOW_MAP_MOB)) return;\n\n        this._releaseScrollHold?.();\n        const lockedY = window.scrollY;\n        let frame = null;\n        const snapBack = () => {\n            if (window.scrollY > lockedY) window.scrollTo(0, lockedY);\n        };\n        /* restore now and again on the next frame: iOS may reapply its own scroll right after ours */\n        const restore = () => {\n            snapBack();\n            if (frame === null) {\n                frame = requestAnimationFrame(() => {\n                    frame = null;\n                    snapBack();\n                });\n            }\n        };\n        const viewport = window.visualViewport;\n        window.addEventListener('scroll', restore, { passive: true });\n        viewport?.addEventListener('scroll', restore, { passive: true });\n        viewport?.addEventListener('resize', restore, { passive: true });\n\n        const release = () => this._releaseScrollHold?.();\n        input.addEventListener('blur', release, { once: true });\n        this._releaseScrollHold = () => {\n            if (frame !== null) cancelAnimationFrame(frame);\n            window.removeEventListener('scroll', restore);\n            viewport?.removeEventListener('scroll', restore);\n            viewport?.removeEventListener('resize', restore);\n            input.removeEventListener('blur', release);\n            this._releaseScrollHold = null;\n        };\n    }\n\n    _showMapMob(show = true) {\n        if (show) {\n            this.root.classList.add(this.SHOW_MAP_MOB);\n            const pinSelected = Object.values(this.mapPins).filter((pin) => pin.isSelected()).length > 0;\n            if (this.currentBounds && !pinSelected) this.map.fitBounds(this.currentBounds);\n        } else {\n            this.root.classList.remove(this.SHOW_MAP_MOB);\n        }\n    }\n\n    async _initScrollbarResults() {\n        this.psResults?.destroy();\n        this.psResults = null;\n        const PerfectScrollbar = await getExtApiHelper().getPerfectScrollbar();\n        this.psResults = new PerfectScrollbar(this.resList, {\n            swipeEasing: true,\n            suppressScrollX: true,\n            wheelPropagation: false,\n            minScrollbarLength: 32,\n        });\n    }\n\n    async _initScrollbarFilters() {\n        this.psFilters?.destroy();\n        this.psFilters = null;\n        const PerfectScrollbar = await getExtApiHelper().getPerfectScrollbar();\n        this.psFilters = new PerfectScrollbar(this.form, {\n            swipeEasing: true,\n            suppressScrollX: true,\n            wheelPropagation: false,\n            minScrollbarLength: 32,\n        });\n    }\n\n    async _initScrollbarFiltersOpening() {\n        this.psFiltersOpening?.destroy();\n        this.psFiltersOpening = null;\n        const PerfectScrollbar = await getExtApiHelper().getPerfectScrollbar();\n        this.psFiltersOpening = new PerfectScrollbar(this.filtersOpening, {\n            swipeEasing: true,\n            suppressScrollY: true,\n            wheelPropagation: false,\n            useBothWheelAxes: true,\n            minScrollbarLength: 32,\n        });\n        this._initFiltersOpeningDrag();\n    }\n\n    _initFiltersOpeningDrag() {\n        const el = this.filtersOpening;\n        if (!el) return;\n        let isDown = false;\n        let startX;\n        let scrollLeft;\n        el.addEventListener('mousedown', (e) => {\n            isDown = true;\n            startX = e.pageX - el.offsetLeft;\n            scrollLeft = el.scrollLeft;\n        });\n        el.addEventListener('mouseleave', () => { isDown = false; });\n        el.addEventListener('mouseup', () => { isDown = false; });\n        el.addEventListener('mousemove', (e) => {\n            if (!isDown) return;\n            e.preventDefault();\n            const x = e.pageX - el.offsetLeft;\n            el.scrollLeft = scrollLeft - (x - startX) * 1.5;\n        });\n    }\n\n    _openFiltersPane() {\n        this.filtersPane?.removeAttribute('inert');\n        this.bg.classList.add(this.BG_FILTERS);\n        this.root.classList.add(this.FILTERS_PANE_OPEN);\n        setTimeout(() => {\n            this.openFiltersPane.blur();\n            this.closeFiltersPane.focus();\n        }, 150);\n    }\n\n    hasFiltersOpen() {\n        return this.root.classList.contains(this.FILTERS_PANE_OPEN);\n    }\n\n    manageAccordion(name, isOpen) {\n        const el = this._dEl(name);\n        if (!el) return;\n        const elObj = this.register.getClass(el);\n        isOpen ? elObj.openContent() : elObj.closeContent();\n    }\n\n    async _refreshModals() {\n        if (!this.filtersModal) {\n            let modalEl = document.querySelector('[data-name=store-locator-filters]');\n            if (!modalEl) modalEl = await loadStep('store-locator-filters');\n            this.modalObj = this.register.getClass(modalEl);\n            this.filtersModal = this.register.getClass(modalEl.querySelector(\".rt253-store-locator-filters\"));\n        }\n    }\n\n    async _openFiltersModal() {\n        await this._refreshModals();\n        this.modalObj.open();\n    }\n\n    async _closeFiltersModal() {\n        await this._refreshModals();\n        this.modalObj.close();\n    }\n\n    async _closeFiltersPane() {\n        this.filtersPane?.setAttribute('inert', '');\n        this.root.classList.remove(this.FILTERS_PANE_OPEN);\n        this.openFiltersPane.focus();\n        await delay(150);\n        this.bg.classList.remove(this.BG_FILTERS);\n    }\n\n    _disableReset() {\n        this.register.getClass(this.reset).setStatus('disabled');\n        this.reset.blur();\n    }\n\n    _disableApply() {\n        this.register.getClass(this.apply).setStatus('disabled');\n        this.apply.blur();\n    }\n\n    _enableOpeningFilters() {\n        if (!this.filtersOpening) return;\n        [...this.filtersOpening.querySelectorAll(this.FILTER_OPENING_SELECTOR)]?.forEach((el) => {\n            this.register.getClass(el).setDisabled(false);\n        });\n    }\n\n    _disableOpeningFilters() {\n        if (!this.filtersOpening) return;\n        [...this.filtersOpening.querySelectorAll(this.FILTER_OPENING_SELECTOR)]?.forEach((el) => {\n            this.register.getClass(el).setDisabled();\n        });\n    }\n\n    _enableFilters() {\n        this._enableOpeningFilters();\n    }\n\n    _disableFilters() {\n        this._disableReset();\n        this._disableApply();\n        this._disableOpeningFilters();\n    }\n\n    _updateFiltersCount(filters) {\n        /* update single filters count on accordions */\n        this.register\n            .getClass(this.fAccInsignia)\n            .setBadgeText(`${filters.insignia.count + filters.insigniaSpecialized.count || ''}`);\n        this.register.getClass(this.fAccDepartment).setBadgeText(`${filters.department.count || ''}`);\n        this.register.getClass(this.fAccService).setBadgeText(`${filters.service.count || ''}`);\n        const sum =\n            filters.insignia.count +\n            filters.insigniaSpecialized.count +\n            filters.department.count +\n            filters.service.count +\n            filters.opening.count;\n        /* update global filters count */\n        this.filtersCount.textContent = sum > 0 ? String(sum) : '';\n    }\n\n    async _resetFilters() {\n        /* reset filters */\n        jsonToForm(this.form, {});\n        jsonToForm(this.filtersOpening, {});\n        this._resetFiltersCount();\n        await this._refreshModals();\n        this.filtersModal.setForm({});\n        this.filtersModal._resetFiltersCount();\n\n        /* reset applied filters */\n        this._emit('storeLocatorFilters', {});\n        this._disableReset();\n        this._disableApply();\n        this.filtersModal._disableReset();\n        this.filtersModal._disableApply();\n    }\n\n    _resetFiltersCount() {\n        /* reset single filters count on accordions */\n        this.register.getClass(this.fAccInsignia).setBadgeText('');\n        this.register.getClass(this.fAccDepartment).setBadgeText('');\n        this.register.getClass(this.fAccService).setBadgeText('');\n        this.filtersCount.textContent = '';\n    }\n\n    _panToWithOffset(position, pinObj = null) {\n        this.map.panTo(position);\n        if (window.innerWidth >= this.BREAKPOINT_L && this.sidePane) {\n            const sidePaneRight = this.sidePane.getBoundingClientRect().right;\n            this.map.panBy(Math.round(-sidePaneRight / 2), 0);\n        } else if (pinObj) {\n            this._keepCardBelowPanel(pinObj);\n        }\n    }\n\n    /* Mobile: once the map is still, move it so the map card sits below the inputs panel. */\n    async _keepCardBelowPanel(pinObj) {\n        const maps = await this.gMapsHelper.getGMaps();\n        let done = false;\n        const run = () => {\n            if (done) return;\n            done = true;\n            clearTimeout(timer);\n            if (!pinObj.isSelected() || !this.map) return;\n            const content = pinObj.infoWindows?.[0]?.getContent?.();\n            const card = content?.closest?.('.gm-style-iw-c');\n            if (!card) return;\n            const minTop = this.sidePane.getBoundingClientRect().bottom + this.CARD_PANEL_GAP;\n            const deficit = Math.round(minTop - card.getBoundingClientRect().top);\n            if (deficit > 1) this.map.panBy(0, -deficit);\n        };\n        const timer = setTimeout(run, 800);\n        maps.event.addListenerOnce(this.map, 'idle', () => requestAnimationFrame(run));\n    }\n\n    _resetPin(selectedPinObj = null) {\n        for (const prop in this.mapPins) {\n            if (Object.hasOwn(this.mapPins, prop)) {\n                if (selectedPinObj == this.mapPins[prop]) this.mapPins[prop].setSelected(true);\n                else this.mapPins[prop].setSelected(false);\n            }\n        }\n    }\n\n    _getEmptyFiltersCopy() {\n        return {\n            insignia: {\n                values: [],\n                count: 0,\n            },\n            insigniaSpecialized: {\n                values: [],\n                count: 0,\n            },\n            department: {\n                values: [],\n                count: 0,\n            },\n            service: {\n                values: [],\n                count: 0,\n            },\n            opening: {\n                values: [],\n                count: 0,\n            },\n        };\n    }\n\n    _initFilters() {\n        this._emit('storeLocatorFilters', this._getEmptyFiltersCopy());\n    }\n\n    async _updateFilters() {\n        /* get raw filters data and group it */\n        let filters = this._getEmptyFiltersCopy();\n\n        const filtersData = formToJSON(this.form);\n        const openingData = formToJSON(this.filtersOpening);\n        [filtersData, openingData].forEach((data) => {\n            Object.keys(data).forEach((key) => {\n                const prefix = key.split('-')[0];\n                if (!filters[prefix]) return;\n                filters[prefix].values.push(...data[key].split(','));\n                filters[prefix].count++;\n            });\n        });\n\n        this._updateFiltersCount(filters);\n        // update modal filters\n        await this._refreshModals();\n        this.filtersModal.setForm(formToJSON(this.form));\n        this.filtersModal._updateFiltersCount(filters);\n\n        this._emit('storeLocatorFilters', filters);\n    }\n\n    _appliedFilters() {\n        let appliedFilters = {};\n        let filters = this.storeManager.get('storeLocatorFilters');\n        for (const prop in filters) {\n            if (!filters[prop]) continue;\n            appliedFilters[prop] = filters[prop]?.values;\n        }\n        appliedFilters.cardEmitter = this._getCardEmitterFilter() === 'true' ? 18 : null;\n        return appliedFilters;\n    }\n\n    async _doClosedSearchAlertLogic() {\n        this.filtersContainer.classList.remove(this._elMod('filters', 'hidden'));\n        this.showMap.classList.remove(this._elMod('showMap', 'hidden'));\n        this.bg.classList.remove(this.HIGH_BG);\n        this._enableFilters();\n        await this._syncResetStatus();\n    }\n\n    /* Reset is enabled only while at least one filter is selected. */\n    async _syncResetStatus() {\n        const status = this.form.querySelector('input:checked') ? 'enabled' : 'disabled';\n        this.register.getClass(this.reset).setStatus(status);\n        await this._refreshModals();\n        this.register.getClass(this.filtersModal.reset).setStatus(status);\n    }\n\n    async _refreshSearchWithFilters() {\n        await this._updateFilters();\n\n        // if a selected address is missing, manually search with what's in the input\n        if (!this.selectedAddress) {\n            this.register.getClass(this.address)._manualSearch();\n            return;\n        }\n        this._loadPoi(this.selectedAddress);\n    }\n\n    async _loadPoi(address) {\n        if (!address || !address.geometry || !address.types) return;\n\n        this.trackingManager.appendVariable({\n            currentSearchAddress: address.formatted_address,\n        });\n\n        openLoader('main');\n\n        const data = {\n            latitudine: `${address.geometry.location.lat()}`,\n            longitudine: `${address.geometry.location.lng()}`,\n            raggioRicerca: this._getSearchRadius(address),\n        };\n\n        /* merge applied filters */\n        const appliedFilters = this._appliedFilters();\n        const specialized = appliedFilters.insigniaSpecialized || [];\n        const standaloneInsignia = specialized.filter((id) => isStandaloneInsigniaId(id));\n        const specializedServices = specialized.filter((id) => !isStandaloneInsigniaId(id));\n        if (appliedFilters.insignia || standaloneInsignia.length) {\n            data.insegneId = [...(appliedFilters.insignia || []), ...standaloneInsignia];\n        }\n        if (appliedFilters.department) data.repartiId = appliedFilters.department;\n        if (appliedFilters.insigniaSpecialized || appliedFilters.service || appliedFilters.cardEmitter) {\n            data.serviziId = [...specializedServices, ...(appliedFilters.service || [])];\n            if (appliedFilters.cardEmitter) data.serviziId.push(appliedFilters.cardEmitter);\n        }\n        if (appliedFilters.opening) data.apertura = appliedFilters.opening;\n\n        try {\n            const filtered = USE_MOCK\n                ? mockRetrievePointOfService.data\n                : await this.api.retrievePointOfService(data);\n            /* Filters (insegneId) drop sibling brands; hydrate so carousel / multipin still form. */\n            this.stores = await this._hydrateFamilySiblings(filtered, data);\n            await this._addResults(this.stores);\n            /* Mask from filtered hits only — siblings are display context, not filter matches. */\n            this._emit('maskStoreLocatorFilters', { stores: filtered });\n        } catch (error) {\n            console.error(error);\n            this._showNoResults();\n        }\n\n        closeLoader('main');\n    }\n\n    /**\n     * When an insignia filter is applied, the API returns only matching brands.\n     * Reload the same geo window without insegneId and reattach siblings that share\n     * a family with a filtered hit, so list carousel and map multipin still aggregate.\n     */\n    async _hydrateFamilySiblings(filteredHits, searchData) {\n        if (!filteredHits?.length || !searchData?.insegneId?.length) {\n            return filteredHits;\n        }\n\n        let nearby;\n        try {\n            nearby = USE_MOCK\n                ? mockRetrievePointOfService.data\n                : await this.api.retrievePointOfService({\n                      latitudine: searchData.latitudine,\n                      longitudine: searchData.longitudine,\n                      raggioRicerca: searchData.raggioRicerca,\n                  });\n        } catch (error) {\n            console.error(error);\n            return filteredHits;\n        }\n\n        if (!nearby?.length) return filteredHits;\n\n        const matchedFamilies = new Set(filteredHits.map((poi) => this._familyKey(poi)));\n        const byAnacanId = new Map();\n        for (const poi of filteredHits) {\n            byAnacanId.set(poi.anacanId, poi);\n        }\n        for (const poi of nearby) {\n            if (!matchedFamilies.has(this._familyKey(poi))) continue;\n            if (!byAnacanId.has(poi.anacanId)) {\n                byAnacanId.set(poi.anacanId, poi);\n            }\n        }\n\n        /* Preserve family order from the filtered hit list (distance of the match). */\n        const ordered = [];\n        const emittedFamilies = new Set();\n        for (const hit of filteredHits) {\n            const key = this._familyKey(hit);\n            if (emittedFamilies.has(key)) continue;\n            emittedFamilies.add(key);\n            for (const poi of byAnacanId.values()) {\n                if (this._familyKey(poi) === key) ordered.push(poi);\n            }\n        }\n        return ordered;\n    }\n\n    _getSearchRadius(_address) {\n        // for (const type of address.types) {\n        //     if (type == 'postal_code' || type == 'street_address' || type == 'route') return '5';\n        // }\n        return '15';\n    }\n\n    _showNoResults() {\n        this.root.classList.remove(this.SEARCH_EMPTY);\n        this.root.classList.add(this.NO_RESULTS);\n        this._removeFade();\n    }\n\n    _showSearchEmpty() {\n        this.root.classList.remove(this.NO_RESULTS);\n        this.root.classList.add(this.SEARCH_EMPTY);\n        this._removeFade();\n    }\n\n    _showResults() {\n        this.root.classList.remove(this.SEARCH_EMPTY);\n        this.root.classList.remove(this.NO_RESULTS);\n    }\n\n    async _addResults(results) {\n        if (!results || results.length <= 0) {\n            this._emptyMarkers();\n            this._emptyResults();\n            this._closeFiltersPane();\n            this._showNoResults();\n            return;\n        }\n        const maps = await this.gMapsHelper.getGMaps();\n        const mapPinCall = (await import('../rt016-map-pin/rt016-map-pin.html')).default;\n        const storeCardCall = (await import('../rt021-store-card/rt021-store-card.html')).default;\n\n        if (this.markers.length > 0) {\n            this._emptyMarkers();\n            this._emptyResults();\n        }\n\n        this._showResults();\n        const familyGroups = this._groupByFamily(results);\n        const numResults = familyGroups.length;\n        if (numResults >= 2) {\n            this._addFade();\n        } else {\n            this._removeFade();\n        }\n        this._updateNumRes(numResults);\n\n        this.trackingManager.appendVariable({\n            currentNumRes: numResults,\n        });\n\n        //track search number of results\n        this.trackingManager.track(this.root, {\n            event: 'pageView',\n            funnel: {\n                stepFunnel: 'Risultati ricerca negozi',\n            },\n            negozioInfo: {\n                numeroRisultati: 'vars.currentNumRes',\n                indirizzoRicerca: 'vars.currentSearchAddress',\n            },\n        });\n\n        this.currentBounds = new maps.LatLngBounds();\n        familyGroups.forEach((group, index) => {\n            const sorted = this._sortByBrandOrder(group);\n            if (sorted.length === 1) {\n                this._addResultToMap(maps, sorted[0], mapPinCall);\n                this._addResultToList(sorted[0], index, storeCardCall);\n            } else {\n                this._addMultiPinToMap(maps, sorted, mapPinCall);\n                this._addCarouselToList(sorted, index, storeCardCall);\n            }\n        });\n\n        this.map.fitBounds(this.currentBounds);\n\n        this.markerClusterer?.reset();\n        const MarkerClusterer = await getGMapsHelper().getMarkerClusterer();\n        this.markerClusterer = new MarkerClusterer({\n            map: this.map,\n            markers: this.markers,\n            renderer: new ClusterPinRenderer(this.map, this.register, mapPinCall),\n        });\n        await this._initScrollbarResults();\n    }\n\n    getStoreLocation(store) {\n        return `${store.latitudine}-${store.longitudine}`;\n    }\n\n    _addResultToMap(maps, poi, mapPinCall) {\n        const position = new maps.LatLng(poi.latitudine, poi.longitudine);\n        const pinData = {\n            uniqueId: `pin-${poi.anacanId}`,\n            pinId: poi.anacanId,\n            type: getPoiType(poi),\n            specialized: poi.specialized ? true : false,\n        };\n        const mapPin = runTemplate(mapPinCall, pinData);\n        const marker = htmlMapPin({ position, elem: mapPin, map: this.map });\n        const pinObj = this.register.getClass(mapPin);\n        pinObj.setMapParams(this.map, position, marker, poi);\n        this.mapPins[poi.anacanId] = pinObj;\n        this.markers.push(marker);\n        this.currentBounds.extend(position);\n    }\n\n    _addMultiPinToMap(maps, sortedGroup, mapPinCall) {\n        const primaryPoi = sortedGroup[0];\n        const anchorPoi = this._anchorPoi(sortedGroup);\n        const position = new maps.LatLng(anchorPoi.latitudine, anchorPoi.longitudine);\n        const pinData = {\n            uniqueId: `pin-${primaryPoi.anacanId}`,\n            pinId: primaryPoi.anacanId,\n            multiLocation: true,\n            specialized: false,\n        };\n        const mapPin = runTemplate(mapPinCall, pinData);\n        const marker = htmlMapPin({ position, elem: mapPin, map: this.map });\n        const pinObj = this.register.getClass(mapPin);\n        pinObj.setMapParams(this.map, position, marker, primaryPoi);\n        pinObj.setMultiLocation(sortedGroup.map((poi) => getPoiType(poi)));\n        pinObj.setMultiPois(sortedGroup);\n        for (const poi of sortedGroup) {\n            this.mapPins[poi.anacanId] = pinObj;\n            this.currentBounds.extend(new maps.LatLng(poi.latitudine, poi.longitudine));\n        }\n        this.markers.push(marker);\n    }\n\n    _buildStoreCardData(poi) {\n        const data = storeData(poi, `${poi.anacanId}-store-card`);\n        data.storeType = getPoiType(poi);\n        data.numFlyers = poi.volantiniCount;\n        data.servicesUrlMap = this.servicesUrlMap;\n\n        data.yourStoreLink = JSON.parse(this.yourStoreLink) || {};\n        if (\n            !!data.yourStoreLink ||\n            data.yourStoreLink == null ||\n            !!data.yourStoreLink.label ||\n            data.yourStoreLink.label == null ||\n            data.yourStoreLink.label == ''\n        ) {\n            data.yourStoreLink.label = this.dictionary.get('Your shops');\n        }\n\n        if (poi.specializedServices && poi.specializedServices.length > 0) {\n            data.serviceCodes = poi.specializedServices;\n        }\n        data.specialized = poi.specialized || false;\n\n        return data;\n    }\n\n    _addResultToList(poi, index, storeCardCall) {\n        const storeCardData = this._buildStoreCardData(poi);\n        storeCardData.extraClasses = this.RES_ITEM;\n        storeCardData.extraClasses += index === 0 ? ' rt021-store-card--firstOne' : '';\n\n        const storeCard = runTemplate(storeCardCall, storeCardData);\n        this.resList.appendChild(storeCard);\n    }\n\n    _familyKey(poi) {\n        const parentId = typeof poi.anacanIdPadre === 'string' ? poi.anacanIdPadre.trim() : '';\n        if (parentId && parentId !== poi.anacanId) return parentId;\n        return poi.anacanId;\n    }\n\n    _anchorPoi(group) {\n        const familyKey = this._familyKey(group[0]);\n        const parent = group.find((poi) => poi.anacanId === familyKey);\n        if (parent) return parent;\n        return group.reduce((nearest, poi) => {\n            const nearestDistance = nearest.distanza ?? Number.POSITIVE_INFINITY;\n            const distance = poi.distanza ?? Number.POSITIVE_INFINITY;\n            return distance < nearestDistance ? poi : nearest;\n        });\n    }\n\n    _groupByFamily(results) {\n        const groupMap = new Map();\n        const groups = [];\n        for (const poi of results) {\n            const key = this._familyKey(poi);\n            if (!groupMap.has(key)) {\n                const group = [];\n                groupMap.set(key, group);\n                groups.push(group);\n            }\n            groupMap.get(key).push(poi);\n        }\n        return groups;\n    }\n\n    _insigniaKeyForCode(code) {\n        if (!window.insigniaToId) return null;\n        const label = Object.keys(window.insigniaToId).find(\n            (key) => String(window.insigniaToId[key]) === String(parseInt(code, 10))\n        );\n        if (!label) return null;\n        return getInsigniaKey({ descrizioneInsegna: label });\n    }\n\n    _selectedInsigniaKeys() {\n        const filters = this.storeManager.get('storeLocatorFilters');\n        const codes = [\n            ...(filters?.insignia?.values || []),\n            ...(filters?.insigniaSpecialized?.values || []).filter((id) => isStandaloneInsigniaId(id)),\n        ];\n        return new Set(codes.map((code) => this._insigniaKeyForCode(code)).filter(Boolean));\n    }\n\n    _sortByBrandOrder(pois) {\n        const selected = this._selectedInsigniaKeys();\n        const fromSearch = this.searchPreferredInsigniaKeys || new Set();\n        /* Filters first, then brand typed in the search, then default hierarchy. */\n        const rank = (poi) => {\n            const key = getInsigniaKey(poi);\n            const base = getInsigniaSortRank(key);\n            if (selected.has(key)) return base;\n            if (fromSearch.has(key)) return base + INSIGNIA_SORT_SPAN;\n            return base + 2 * INSIGNIA_SORT_SPAN;\n        };\n        return [...pois].sort((a, b) => rank(a) - rank(b));\n    }\n\n    _addCarouselToList(pois, index, storeCardCall) {\n        const sorted = this._sortByBrandOrder(pois);\n        const primaryAnacanId = sorted[0].anacanId;\n\n        const wrapper = document.createElement('div');\n        wrapper.className = `rt021-store-card-carousel ${this.RES_ITEM}`;\n        wrapper.dataset.storeId = primaryAnacanId;\n        if (index === 0) wrapper.classList.add('rt021-store-card--firstOne');\n\n        const carousel = document.createElement('div');\n        carousel.className = 'rt021-store-card-carousel__carousel';\n\n        const track = document.createElement('div');\n        track.className = 'rt021-store-card-carousel__track';\n\n        sorted.forEach((poi, i) => {\n            const slide = document.createElement('div');\n            slide.className = 'rt021-store-card-carousel__slide';\n            const cardData = this._buildStoreCardData(poi);\n            cardData.colocatedTypes = sorted\n                .filter((_, j) => j !== i)\n                .map((other) => ({ insignia: getInsigniaKey(other) }));\n            cardData.legendTitle = this.insigniaLegend.title;\n            cardData.troviAncheLabel = this.insigniaLegend.troviAnche;\n            cardData.legend = this.insigniaLegend.items;\n            slide.appendChild(runTemplate(storeCardCall, cardData));\n            track.appendChild(slide);\n        });\n\n        carousel.appendChild(track);\n\n        const dotsEl = document.createElement('div');\n        dotsEl.className = 'rt021-store-card-carousel__dots';\n        carousel.appendChild(dotsEl);\n\n        wrapper.appendChild(carousel);\n        this.resList.appendChild(wrapper);\n\n        this._initCarouselSwiper(carousel, sorted, primaryAnacanId);\n    }\n\n    async _initCarouselSwiper(carousel, sorted, primaryAnacanId) {\n        const Swiper = await getExtApiHelper().getSwiper();\n        new Swiper(carousel, {\n            wrapperClass: 'rt021-store-card-carousel__track',\n            slideClass: 'rt021-store-card-carousel__slide',\n            slidesPerView: 'auto',\n            spaceBetween: 8,\n            watchOverflow: true,\n            observer: true,\n            /* A click with a few px of pointer movement must not count as a swipe to the next card. */\n            threshold: 10,\n            pagination: {\n                el: carousel.querySelector('.rt021-store-card-carousel__dots'),\n                bulletClass: 'rt021-store-card-carousel__dot',\n                bulletActiveClass: 'rt021-store-card-carousel__dot--active',\n                clickable: true,\n            },\n            on: {\n                init: (swiper) => {\n                    const pinObj = this.mapPins[primaryAnacanId];\n                    if (!pinObj || !sorted[swiper.activeIndex]) return;\n                    pinObj.setActiveType(getPoiType(sorted[swiper.activeIndex]), swiper.activeIndex);\n                    pinObj.setSwiperData(swiper);\n                },\n                slideChange: (swiper) => {\n                    const pinObj = this.mapPins[primaryAnacanId];\n                    if (!pinObj || !sorted[swiper.activeIndex]) return;\n                    pinObj.setActiveType(getPoiType(sorted[swiper.activeIndex]), swiper.activeIndex);\n                    /* Pin icon click / swipe while pin is open: keep list card in sync. */\n                    if (!pinObj.isSelected()) return;\n                    const wrapper = carousel.closest('.rt021-store-card-carousel');\n                    if (wrapper) {\n                        this.selectedResItem = wrapper;\n                        this.resList.scrollTop = wrapper.offsetTop - this.PAD_BOX_SHADOW;\n                    }\n                    this._selectCarouselCard(wrapper, swiper.activeIndex);\n                },\n            },\n        });\n    }\n\n    async _maskFilters(stores) {\n        const filters = this.storeManager.get('storeLocatorFilters');\n\n        // get insignia specialized ids\n        const insigniaSpecializedServiceIds = new Set(\n            this._dEl(`f-insigniaSpecialized`, true)\n                .map((item) => item.querySelector('input').value.split(','))\n                .reduce((_, i) => [..._, ...i])\n                .map((s) => parseInt(s))\n        );\n\n        // construct available filters from stores\n        const availableFilters = {\n            insignia: new Set(),\n            insigniaSpecialized: new Set(),\n            department: new Set(),\n            service: new Set(),\n            opening: new Set(),\n        };\n        stores.forEach((store) => {\n            const insigniaId = window.insigniaToId?.[store.descrizioneInsegna];\n            if (insigniaId) {\n                availableFilters.insignia.add(insigniaId);\n                if (isStandaloneInsigniaId(insigniaId)) availableFilters.insigniaSpecialized.add(insigniaId);\n            }\n            for (const dId of store.repartiId) {\n                availableFilters.department.add(dId);\n            }\n            for (const sId of store.serviziId) {\n                if (insigniaSpecializedServiceIds.has(sId)) {\n                    availableFilters.insigniaSpecialized.add(sId);\n                    continue;\n                }\n                availableFilters.service.add(sId);\n            }\n        });\n\n        // hide filters if not available\n        const hideIfNotAvailable = (item, availableSet) => {\n            const values = item.querySelector('input').value.split(',');\n            let hide = true;\n            for (const v of values) {\n                if (availableSet.has(parseInt(v))) {\n                    hide = false;\n                    break;\n                }\n            }\n            hide ? item.classList.add('f-hidden') : item.classList.remove('f-hidden');\n        };\n        Object.keys(filters)\n            .filter((key) => key !== 'opening')\n            .forEach((type) => {\n                this._dEl(`f-${type}`, true).forEach((item) => {\n                    hideIfNotAvailable(item, availableFilters[type]);\n                });\n                const allHiddenOfType = this._dEl(`f-${type}`, true)\n                    .map((item) => item.classList.contains('f-hidden'))\n                    .reduce((_, hidden) => _ && hidden);\n                // check if all insignia filters have been hidden\n                if (type === 'insignia') {\n                    allHiddenOfType\n                        ? this.fInsSpecTitle.classList.add(this._elMod('insigniaSpecializedTitle', 'noMarginTop'))\n                        : this.fInsSpecTitle.classList.remove(this._elMod('insigniaSpecializedTitle', 'noMarginTop'));\n                }\n                // check if all insigniaSpecialized filters have been hidden\n                if (type === 'insigniaSpecialized') {\n                    this.fInsSpecTitle.style.display = allHiddenOfType ? 'none' : 'block';\n                }\n                // hide accordion if all inner filters have been hidden\n                switch (type) {\n                    case 'insignia': {\n                        const allHiddenOfInsignia =\n                            this._dEl(`f-insignia`, true)\n                                .map((item) => item.classList.contains('f-hidden'))\n                                .reduce((_, hidden) => _ && hidden) &&\n                            this._dEl(`f-insigniaSpecialized`, true)\n                                .map((item) => item.classList.contains('f-hidden'))\n                                .reduce((_, hidden) => _ && hidden);\n                        allHiddenOfInsignia\n                            ? this.fAccInsignia.classList.add('acc-hidden')\n                            : this.fAccInsignia.classList.remove('acc-hidden');\n                        break;\n                    }\n                    case 'department': {\n                        allHiddenOfType\n                            ? this.fAccDepartment.classList.add('acc-hidden')\n                            : this.fAccDepartment.classList.remove('acc-hidden');\n                        break;\n                    }\n                    case 'service': {\n                        allHiddenOfType\n                            ? this.fAccService.classList.add('acc-hidden')\n                            : this.fAccService.classList.remove('acc-hidden');\n                        break;\n                    }\n                    case 'insigniaSpecialized':\n                    default:\n                        break;\n                }\n            });\n\n        // update accordions heights\n        (\n            await Promise.allSettled(\n                [this.fAccInsignia, this.fAccDepartment, this.fAccService].map((el) => this.register.getClass(el))\n            )\n        )\n            .map((promise) => promise.value)\n            .forEach((accObj) => accObj.updateContentHeight());\n    }\n\n    _trackApplyFilter() {\n        let filters = this.storeManager.get('storeLocatorFilters');\n        let nomeFiltro = new Array();\n        if (filters.insignia.count + filters.insigniaSpecialized.count > 0) nomeFiltro.push('Insegne');\n        if (filters.department.count > 0) nomeFiltro.push('Reparti');\n        if (filters.service.count > 0) nomeFiltro.push('Altri Servizi');\n\n        // skip tracking of applied filters if no filters applied\n        if (nomeFiltro.length <= 0) return;\n\n        this.trackingManager.track(this.root, {\n            event: 'ApplicaFiltro',\n            CustomLink: 'Applica Filtro',\n            funnel: {\n                stepFunnel: 'Filtro',\n            },\n            negozioInfo: {\n                indirizzoRicerca: 'vars.currentSearchAddress',\n            },\n            filtro: {\n                NomeFiltro: nomeFiltro.join('|'),\n                Insegne:\n                    filters.insignia.count + filters.insigniaSpecialized.count > 0\n                        ? [\n                              ...new Set(\n                                  this.storeManager\n                                      .get('storeLocatorFilters')\n                                      .insignia.values.map(\n                                          (value) =>\n                                              this.root.querySelector(`.rt023-insignia-card__input[value=\"${value}\"]`)\n                                                  ?.parentElement.dataset.label\n                                      )\n                                      .concat(\n                                          this.storeManager\n                                              .get('storeLocatorFilters')\n                                              .insigniaSpecialized.values.map(\n                                                  (value) =>\n                                                      this.root.querySelector(\n                                                          `.rt023-insignia-card__input[value*=\"${value}\"][name^=\"insigniaSpecialized\"]`\n                                                      )?.parentElement.dataset.label\n                                              )\n                                      )\n                              ),\n                          ].join('|')\n                        : '',\n                Reparti:\n                    filters.department.count > 0\n                        ? [\n                              ...new Set(\n                                  filters.department.values.map(\n                                      (value) =>\n                                          this.root.querySelector(`.rt003-checkbox__input[value*=\"${value}\"]`)\n                                              ?.parentElement.dataset.label\n                                  )\n                              ),\n                          ].join('|')\n                        : '',\n                AltriServizi:\n                    filters.service.count > 0\n                        ? [\n                              ...new Set(\n                                  filters.service.values.map(\n                                      (value) =>\n                                          this.root.querySelector(\n                                              `.rt003-checkbox__input[value*=\"${value}\"][name^=\"service\"]`\n                                          )?.parentElement.dataset.label\n                                  )\n                              ),\n                          ].join('|')\n                        : '',\n            },\n        });\n    }\n\n    setForm(json) {\n        // translate prop names from _mob to _dsk suffix\n        for (const prop in json) {\n            if (!prop.endsWith('_mob')) continue;\n            json[`${prop.substring(0, prop.indexOf('_mob'))}_dsk`] = json[prop];\n        }\n        jsonToForm(this.form, json);\n    }\n\n    _updateNumRes(numRes) {\n        this.numRes.innerText = numRes;\n        /* The label after the counter is rendered in the plural: use the singular one when the dictionary has it. */\n        const label = this.numRes.nextSibling;\n        if (label?.nodeType !== Node.TEXT_NODE) return;\n        this._foundLabelPlural ??= label.data;\n        const singular = getDictionary().get(FOUND_SINGULAR_KEY);\n        label.data = numRes === 1 && singular !== FOUND_SINGULAR_KEY ? ` ${singular}` : this._foundLabelPlural;\n    }\n\n    _emptyMarkers() {\n        //deselect all pins\n        this._resetPin();\n        //remove markers\n        for (const marker of this.markers) {\n            marker.setMap(null);\n        }\n        this.markers = [];\n        this.mapPins = {};\n        this.selectedMarker = null;\n        this.markerClusterer?.clearMarkers();\n    }\n\n    _emptyResults() {\n        emptyElement(this.resList);\n    }\n\n    _parseInsigniaLegend() {\n        const raw = this.root.dataset.insigniaLegend;\n        if (!raw) return null;\n        try {\n            return JSON.parse(raw);\n        } catch (error) {\n            return null;\n        }\n    }\n\n    _getFixedFilter() {\n        const urlParams = new URLSearchParams(window.location.search);\n        const ff = urlParams.get('ff');\n        if (ff) return ff;\n        return null;\n    }\n\n    _getCardEmitterFilter() {\n        const urlParams = new URLSearchParams(window.location.search);\n        const cef = urlParams.get('cardEmitter');\n        if (cef) return cef;\n        return null;\n    }\n\n    _hideFilters() {\n        if (!this.root.classList.contains(this.PRE_FILTERED)) this.root.classList.add(this.PRE_FILTERED);\n        this.bg.classList.add(this.HIGH_BG);\n    }\n\n    _getSearch() {\n        const urlParams = new URLSearchParams(window.location.search);\n        const s = urlParams.get('s');\n        if (s) return s;\n        return null;\n    }\n\n    _addFade() {\n        this.fade[0].classList.remove(this._elMod('paneFade', 'hidden'));\n        this.fade[1].classList.remove(this._elMod('paneFade', 'hidden'));\n    }\n\n    _removeFade() {\n        this.fade[0].classList.add(this._elMod('paneFade', 'hidden'));\n        this.fade[1].classList.add(this._elMod('paneFade', 'hidden'));\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getUserService } from '../../../../../libs/user-service';\n\nexport default class Topbar extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.userService = getUserService();\n        this.link = this._dEl('link');\n        this.next = this._dEl('next');\n        this.storeLocatorLink = this.root.hasAttribute('data-store-locator-link')\n            ? this.root.dataset.storeLocatorLink\n            : null;\n        this._load();\n\n        this._addStoreListeners();\n    }\n\n    async _load() {\n        const store = await this.userService.getStore();\n        if (store) {\n            if (store.lastVisited) {\n                this.root.classList.add(this._mod('lastShop'));\n            } else {\n                this.root.classList.add(this._mod('prefShop'));\n            }\n\n            if (this.link) {\n                this.link.innerText = store.descrizioneInsegna + ' - ' + store.indirizzo;\n                if (store.pdvLink) {\n                    this.link.setAttribute('href', store.pdvLink.href);\n                    if (this.next) this.next.setAttribute('href', store.pdvLink.href);\n                }\n            }\n        } else {\n            if (!this.storeLocatorLink) {\n                console.warn('Missing change favorite store link');\n                return;\n            }\n\n            if (this.link) {\n                this.link.setAttribute('href', this.storeLocatorLink);\n                if (this.next) this.next.setAttribute('href', this.storeLocatorLink);\n            }\n        }\n\n        //show link after load\n        this.root.classList.add(this._mod('loaded'));\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('userData', () => {\n            this._load();\n        });\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class MenuDesktop extends Component {\n    constructor(name, root) {\n      super(name, root);\n      this._addStoreListeners();\n    }\n\n    _addStoreListeners(){\n        this._addStoreListener('currentPage', (path, data) => {\n            const items = this._dEl('menuItem', true);\n            for (const item of items) {\n                if (item.matches(`[data-item-path='${data.path}']`)) item.classList.add('selected');\n            }\n        });\n    }\n}\n\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { openLoader } from '../../../../../libs/utils';\n\nexport default class MenuMob extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.menus = this._dEl('menu', true);\n        this.submenus = this._dEl('submenu', true);\n        this.menuItems = this._dElMod('menuItem', 'submenu', true);\n        this.form = this._dEl('search');\n        this.searchInput = this._dEl('searchInput');\n        this.searchResultsPath = this.root.dataset.searchResultsPath || console.warn('Missing search results path');\n        const submenuColumnItems = this.root.querySelectorAll('.rt056-menu-mob__columnItems');\n        this.submenuItems = [];\n        submenuColumnItems.forEach((el) => {\n            Array.from(el.children).forEach((subEl) => {\n                this.submenuItems.push(subEl);\n            });\n        });\n\n        this._addEventListeners();\n        this._addStoreListeners();\n    }\n\n    _addEventListeners() {\n        for (const menuItem of this.menuItems) {\n            this._addListener(\n                'click',\n                (event) => {\n                    event.preventDefault();\n                    const current = event.target.closest(this._el('menu', true)).dataset.name;\n                    this._showMenu(event.target.dataset.menu, current);\n                },\n                menuItem\n            );\n        }\n\n        for (const submenuItem of this.submenuItems) {\n            this._addListener(\n                'click',\n                (event) => {\n                    // if it has not child elements, than on click it goes directly into the page linked, otherwise,\n                    // open third level submenu\n                    if (submenuItem.dataset.otherSubmenu === 'true') {\n                        event.preventDefault();\n                        const current = event.target.closest(this._el('menuItem', true)).dataset.itemRef;\n                        this._showSubmenu(current);\n                    }\n                },\n                submenuItem\n            );\n        }\n\n        this._addListener('click', (event) => {\n            if (event.target.matches(this._el('close', true))) this._emit('menuMobStatus', false);\n        });\n\n        this._addListener('click', (event) => {\n            if (!event.target.matches(this._el('back', true))) return;\n            event.target.closest(this._el('menu', true)).classList.remove('active');\n        });\n\n        this._addListener('click', (event) => {\n            if (!event.target.matches(this._el('backSubmenu', true))) return;\n            event.target.closest(this._el('submenu', true)).classList.remove('active');\n        });\n\n        this._addListener(\n            'resize',\n            () => {\n                if (window.innerWidth >= BREAKPOINTS.l && this.root.classList.contains(this._mod('open'))) {\n                    this._emit('menuMobStatus', false);\n                }\n            },\n            window\n        );\n\n        this._addListener(\n            'rt10SearchQuery',\n            (e) => {\n                if (!e.data.value || !this.searchResultsPath) return;\n                const url = new URL(this.searchResultsPath);\n                url.searchParams.set('query', e.data.value);\n                openLoader('main');\n                window.location = url.href;\n            },\n            this.searchInput\n        );\n\n        this._addListener(\n            'submit',\n            (e) => {\n                e.preventDefault();\n            },\n            this.form\n        );\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('menuMobStatus', (path, data) => {\n            if (data) {\n                this._resetView();\n                this.root.classList.add(this._mod('open'));\n                this._emitIncrement('blockScroll');\n            } else {\n                this.root.classList.remove(this._mod('open'));\n                this._emitDecrement('blockScroll');\n            }\n        });\n\n        this._addStoreListener('currentPage', (path, data) => {\n            const items = this._dEl('menuItem', true);\n            for (const item of items) {\n                if (item.matches(`[data-item-path='${data.path}']`)) item.classList.add('selected');\n                else if (item.classList.contains('selected')) item.classList.remove('selected');\n            }\n        });\n    }\n\n    _resetView() {\n        for (const tpMenu of this.menus) {\n            tpMenu.classList.remove('active');\n        }\n    }\n\n    _showMenu(id) {\n        let menu = null;\n        for (const tpMenu of this.menus) {\n            if (tpMenu.dataset.name == id) {\n                menu = tpMenu;\n                break;\n            }\n        }\n\n        if (menu == null) return;\n        menu.classList.add('active');\n    }\n\n    _showSubmenu(id) {\n        let menu = null;\n        for (const tpMenu of this.submenus) {\n            if (tpMenu.dataset.name == id) {\n                menu = tpMenu;\n                break;\n            }\n        }\n\n        if (menu == null) return;\n        menu.classList.add('active');\n    }\n}\n\n\n","import Component from '../../../../../libs/components/component';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { getUserService } from '../../../../../libs/user-service';\nimport {\n    closeLoader,\n    flyerData,\n    generateTrackNegozioInfo,\n    generateTrackVolantinoInfo,\n    getScreenType,\n    openLoader\n} from '../../../../../libs/utils';\nimport './style.scss';\n\nexport default class StoreHeader extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.root = root;\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        this.BREAKPOINT_L = BREAKPOINTS.l;\n        this.FLYER_HIDDEN = this._elMod('flyer', 'hidden');\n\n        this.N_IMAGES_TO_PRELOAD = getScreenType() === 'mobile' ? 1 : 3;\n\n        this.flyersWrapper = this._dEl('flyers');\n        this.track = this._dEl('flyersTrack');\n        this.carousel = this._dEl('flyersCarousel');\n        this.showAll = this._dEl('showAll');\n        this.prevSlide = this._dEl('flyersPrev');\n        this.nextSlide = this._dEl('flyersNext');\n        this.btnPreferred = this._dEl('preferred');\n        this.pagination = this._dEl('pagination');\n        this.telButton = this._dEl('tel');\n        this.directions = this._dEl('directions');\n        this.hoursId = this.root.dataset.hours;\n        this.hours = document.getElementById(this.hoursId);\n        this.specialized = this.root.hasAttribute('data-specialized');\n        this.trackingManager = getTrackingManager();\n        // ServiziAggiuntivi = the stores of the \"Trovi anche\" banner, independent of RS72 In this store\n        this.trackingManager.appendVariable({\n            currentServices: this._configureAssociatedStoreTracking(),\n        });\n\n        this.swiper = null;\n        this.userService = getUserService();\n        this.fuel = this.root.hasAttribute('data-fuel');\n        if (this.fuel) {\n            await this._initSwiper();\n        } else {\n            await this._addFlyers();\n            this.flyerCards = this._dEl('flyer', true);\n\n            await this._initSwiper();\n        }\n        if (this.track && (this.track.childElementCount < 2 || (this.swiper && this.swiper.isLocked))) {\n            this.pagination?.classList.add(this._elMod('pagination', 'hidden'))\n        }\n\n        // Initialize arrow states: prev always disabled at start, both disabled if swiper is locked\n        this._initArrowStates();\n\n        this._addStoreListeners();\n        this._addEventListeners();\n        this._checkUser();\n        this._trackPageView();\n\n        // set this pdv as the last visited for current user\n        this.userService.setLastVisitedStore(this.root.dataset.storeId);\n    }\n\n    async _addFlyers() {\n        /* get flyers */\n        try {\n            this.flyers = JSON.parse(this.root.dataset.flyers);\n            this.bannersAdv = JSON.parse(this.root.dataset.bannersAdv);\n\n            const orderedFlyersBanners = Array.from({ length: Math.max(this.flyers.length, this.bannersAdv.length) })\n                .flatMap((_, i) => [\n                    this.flyers[i] ? { type: 'flyer', data: this.flyers[i] } : undefined,\n                    this.bannersAdv[i] ? { type: 'banneradv', data: this.bannersAdv[i] } : undefined,\n                ].filter((v) => v !== undefined));\n\n            this.flyersBanners = orderedFlyersBanners\n            this.flyersBannersLength = this.flyersBanners.length;\n        } catch (error) {\n            console.warn('Error in parsing flyers json');\n        }\n        if (!this.flyersBanners || this.flyersBanners.length <= 0) {\n            /* no flyers found */\n            return;\n        }\n\n        // load html\n        const flyerCardHtml = (await import('../rt223-card-flyer/rt223-card-flyer.html')).default;\n        const bannerAdvHtml = (await import('../rt226-banner-adv/rt226-banner-adv.html')).default;\n\n        /* enrich flyers and add to track */\n        this.flyersTrack = this._dEl('flyersTrack');\n        let typeTemplate;\n        const goToPromotionLabel = getDictionary().get('Go to the promotion');\n        for (let i = 0; i < this.flyersBannersLength; i++) {\n            const flyer = this.flyersBanners[i];\n            const data = flyerData(flyer.data);\n            // if its a banner adv \n            let optionsTemplate;\n            if (flyer.type === 'banneradv') {\n                const titleForTracking = this._getTextContentFromHtml(data.title) || data.id;\n                optionsTemplate = {\n                    uniqueId: `${this.root.id}-${data.id}`,\n                    extraClasses: `${this._el('banneradv')} ${this._el('flyer')}`,\n                    ...data,\n                    index: i + 1,\n                    title: data.title,\n                    titleForTracking,\n                    variant: 'tertiary',\n                    imageUrl: data.imageUrl,\n                    chipLabel: data.chipLabel,\n                    headerText: data.headerText,\n                    imageAlt: data.imageAlt || titleForTracking || data.chipLabel || `Banner ${i + 1} image`,\n                    link: {\n                        href: data.ctaUrl,\n                        target: data.linkTarget || '_blank',\n                        'data-link-tracking': JSON.stringify(this._getTrackBannerAdv()),\n                    },\n                    linkLabel: data.ctaLabel || goToPromotionLabel,\n                    ctaColor: data.ctaColor || '#ffffff',\n                    ctaTextColor: data.ctaTextColor || '#333333',\n                    ctaHoverColor: data.ctaHoverColor || '#e5e5e5',\n                    titleTag: 'h3',\n                    loadingEager: i < this.N_IMAGES_TO_PRELOAD, // set eager loading only for the first n flyers\n                    decodingAsync: i >= this.N_IMAGES_TO_PRELOAD, // set async decoding only for the flyers after the first n\n                };\n                typeTemplate = bannerAdvHtml;\n            } else {\n                optionsTemplate = {\n                    uniqueId: data.id,\n                    extraClasses: `${this._el('flyer')}`,\n                    ...data,\n                    title: data.feTitle,\n                    // variant: 1,\n                    imageUrl: data.image,\n                    link: {\n                        ...data.link,\n                        'data-link-tracking': JSON.stringify(this._getTrackVolantino()),\n                    },\n                    titleTag: 'h3',\n                    loadingEager: i < this.N_IMAGES_TO_PRELOAD, // set eager loading only for the first n flyers\n                    decodingAsync: i >= this.N_IMAGES_TO_PRELOAD, // set async decoding only for the flyers after the first n\n                };\n                typeTemplate = flyerCardHtml;\n            }\n            const flyerEl = runTemplate(typeTemplate, optionsTemplate);\n\n            this.flyersTrack.appendChild(flyerEl);\n        }\n    }\n\n    _configureAssociatedStoreTracking() {\n        const links = [...this.root.querySelectorAll('.rt057-store-header__associatedItem')];\n        // data-tracking-label = editorial tracking-only override (dialog tab \"Tracking\"), else the visible label\n        const labels = links.map(\n            (link) => link.dataset.trackingLabel || link.querySelector('.text')?.textContent.trim() || link.title\n        );\n        const services = labels.filter(Boolean).join('|');\n\n        links.forEach((link, index) => {\n            link.dataset.linkTracking = JSON.stringify({\n                event: 'InsegneAssociate',\n                CustomLink: 'Click Insegne Associate',\n                funnel: {\n                    nomeFunnel: 'Scheda Negozio',\n                    stepFunnel: 'Interazioni con Scheda negozio',\n                },\n                negozioInfo: {\n                    ...generateTrackNegozioInfo(),\n                    ServiziAggiuntivi: services,\n                    ServizioAggiuntivoScelto: labels[index],\n                },\n            });\n        });\n\n        return services;\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('userData', () => {\n            this._checkUser();\n        });\n    }\n\n    _addEventListeners() {\n        if (this.btnPreferred) {\n            this._addListener(\n                'click',\n                async () => {\n                    try {\n                        openLoader('main');\n                        await this.userService.setPreferredStore(this.root.dataset.storeId);\n                        this.btnPreferred.setAttribute('data-preferred', true);\n                        this.trackingManager.track(this.root, {\n                            event: 'PdvPreferito',\n                            CustomLink: 'Aggiunta Pdv preferito',\n                            negozioInfo: {\n                                ...generateTrackNegozioInfo(null, true),\n                            },\n                        });\n                    } finally {\n                        closeLoader('main');\n                    }\n                },\n                this.btnPreferred\n            );\n            this._addListener('mouseover', () => {\n                if (!this.btnPreferred.hasAttribute('data-preferred')) {\n                    this.btnPreferred.querySelector('.rt002-cta__icon').classList.remove('ec-icon-like-off');\n                    this.btnPreferred.querySelector('.rt002-cta__icon').classList.add('ec-icon-like-on');\n                }\n            }, this.btnPreferred);\n            this._addListener('mouseout', () => {\n                if (!this.btnPreferred.hasAttribute('data-preferred')) {\n                    this.btnPreferred.querySelector('.rt002-cta__icon').classList.remove('ec-icon-like-on');\n                    this.btnPreferred.querySelector('.rt002-cta__icon').classList.add('ec-icon-like-off');\n                }\n            }, this.btnPreferred);\n        }\n\n        /* click on show all, show all the opening hours*/\n        this._addListener(\n            'click',\n            (e) => {\n                e.preventDefault();\n                const offset = window.innerWidth < this.BREAKPOINT_L ? 130 : 200;\n                window.scrollBy(0, this.hours.getBoundingClientRect().top - offset);\n                this.trackingManager.track(this.root, {\n                    event: 'VediOrari',\n                    CustomLink: 'Click Vedi orari',\n                    funnel: {\n                        nomeFunnel: 'Scheda Negozio',\n                        stepFunnel: 'Interazioni con Scheda negozio',\n                    },\n                    negozioInfo: {\n                        ...generateTrackNegozioInfo(),\n                    },\n                });\n            },\n            this.showAll\n        );\n\n        /* click on prev of the side slider*/\n        this._addListener(\n            'click',\n            () => {\n                this.swiper.slidePrev(200);\n                this.trackingManager.track(this.root, this._getTrackSlide());\n            },\n            this.prevSlide\n        );\n\n        /* click on next of the side slider*/\n        this._addListener(\n            'click',\n            () => {\n                this.swiper.slideNext(200);\n                this.trackingManager.track(this.root, this._getTrackSlide());\n            },\n            this.nextSlide\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                this.trackingManager.track(this.root, {\n                    event: 'NumeroTelefono',\n                    CustomLink: 'Click numero telefono',\n                    funnel: {\n                        nomeFunnel: 'Scheda Negozio',\n                        stepFunnel: 'Interazioni con Scheda negozio',\n                    },\n                    negozioInfo: {\n                        ...generateTrackNegozioInfo(),\n                    },\n                });\n            },\n            this.telButton\n        );\n        this._addListener(\n            'click',\n            () => {\n                this.trackingManager.track(this.root, {\n                    event: 'ComeArrivare',\n                    CustomLink: 'Click come arrivare',\n                    funnel: {\n                        nomeFunnel: 'Scheda Negozio',\n                        stepFunnel: 'Interazioni con Scheda negozio',\n                    },\n                    negozioInfo: {\n                        ...generateTrackNegozioInfo(),\n                    },\n                });\n            },\n            this.directions\n        );\n\n        this._addListener('click', (e) => {\n            if (e.target.classList.contains(this._el('bullet'))) {\n                this.trackingManager.track(this.root, this._getTrackSlide());\n            }\n        }, this.root);\n\n        this.swiper.on('reachBeginning', () => {\n            this._disableEl(this.prevSlide, 'flyersPrev');\n            this._enableEl(this.nextSlide, 'flyersNext');\n        });\n        this.swiper.on('reachEnd', () => {\n            this._disableEl(this.nextSlide, 'flyersNext');\n            this._enableEl(this.prevSlide, 'flyersPrev');\n        });\n        this.swiper.on('progress', (swiper, progress) => {\n            if (swiper.isLocked) {\n                this._disableEl(this.prevSlide, 'flyersPrev');\n                this._disableEl(this.nextSlide, 'flyersNext');\n                return;\n            }\n            if (progress == 0) {\n                this._disableEl(this.prevSlide, 'flyersPrev');\n                return;\n            }\n            if (progress == 1) {\n                this._disableEl(this.nextSlide, 'flyersNext');\n                return;\n            }\n            this._enableEl(this.nextSlide, 'flyersNext');\n            this._enableEl(this.prevSlide, 'flyersPrev');\n        });\n    }\n\n    async _initSwiper() {\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.carousel, {\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n            watchOverflow: true,\n            wrapperClass: this._el('flyersTrack'),\n            slideClass: this.fuel ? this._el('fuelCard') : this._el('flyer'),\n            navigation: {\n                nextEl: this._dEl('flyersNext'),\n                prevEl: this._dEl('flyersPrev'),\n            },\n            pagination: {\n                el: this._dEl('pagination', true),\n                bulletClass: this._el('bullet'),\n                bulletActiveClass: this._elMod('bullet', 'active'),\n                clickable: true\n            },\n        });\n    }\n\n    async _checkUser() {\n        if (!this.btnPreferred) return;\n\n        let user = await this.userService.getUser();\n        if (user) {\n            if (this.btnPreferred.classList.contains(this._elMod('preferred', 'hide')))\n                this.btnPreferred.classList.remove(this._elMod('preferred', 'hide'));\n\n            this._dEl('left').classList.add(this._elMod('left', 'logged'))\n\n            const store = await this.userService.getStore();\n            if (store && store.anacanId == this.root.dataset.storeId && this.btnPreferred) {\n                this.btnPreferred.setAttribute('data-preferred', true);\n                const ctaPreferred = this.btnPreferred.querySelector('.ec-icon-like-off');\n                if (ctaPreferred) {\n                    ctaPreferred.classList.remove('ec-icon-like-off');\n                    ctaPreferred.classList.add('ec-icon-like-on');\n                }\n            }\n        } else if (!this.btnPreferred.classList.contains(this._elMod('preferred', 'hide'))) {\n            this.btnPreferred.classList.add(this._elMod('preferred', 'hide'));\n        }\n    }\n\n\n\n    _initArrowStates() {\n        if (!this.swiper) return;\n        const noSlides = this.track && this.track.childElementCount === 0;\n        if (this.swiper.isLocked || noSlides) {\n            // No slides or not enough to scroll: disable both arrows\n            this._disableEl(this.prevSlide, 'flyersPrev');\n            this._disableEl(this.nextSlide, 'flyersNext');\n        } else {\n            // At start: prev disabled, next enabled\n            this._disableEl(this.prevSlide, 'flyersPrev');\n            this._enableEl(this.nextSlide, 'flyersNext');\n        }\n    }\n\n    _disableEl(el, elName) {\n        if (!el || !elName) return;\n        if (!el.classList.contains(this._elMod(elName, 'disabled'))) el.classList.add(this._elMod(elName, 'disabled'));\n    }\n    _enableEl(el, elName) {\n        if (!el || !elName) return;\n        el.classList.remove(this._elMod(elName, 'disabled'));\n    }\n\n    _getTextContentFromHtml(html) {\n        if (!html) return '';\n\n        const parser = new DOMParser();\n        return parser.parseFromString(html, 'text/html').body.textContent?.trim() || '';\n    }\n\n    _trackPageView() {\n        let idsCards = '';\n        if (this.track) {\n            const bannerCards = this.track.querySelectorAll(this._el('banneradv', true));\n            if (bannerCards && bannerCards.length > 0) {\n                idsCards = [...bannerCards].map((card) => card.dataset.id)\n                    .join('|');\n            }\n        }\n        const track = {\n            event: 'pageView',\n            funnel: {\n                nomeFunnel: 'Scheda Negozio',\n                stepFunnel: 'Esplorazione Scheda Negozio',\n            },\n            negozioInfo: {\n                ...generateTrackNegozioInfo(null, true),\n            },\n            cardInfo: {\n                IDCard: idsCards,\n            }\n        };\n\n        this.trackingManager.track(this.root, track);\n    }\n\n    _getTrackVolantino() {\n        return {\n            event: 'data.flyerEvent||VaiAlVolantino',\n            CustomLink: 'Click Vai al volantino',\n            negozioInfo: {\n                ...generateTrackNegozioInfo(),\n            },\n            volantinoInfo: {\n                ...generateTrackVolantinoInfo(),\n            },\n        };\n    }\n\n    _getTrackBannerAdv() {\n        return {\n            event: 'CardPromo',\n            CustomLink: 'Click Banner ADV',\n            negozioInfo: {\n                ...generateTrackNegozioInfo(),\n            },\n            cardInfo: {\n                titoloCard: 'data.title',\n                chipCard: 'data.chip',\n                posizioneCard: 'data.index', // from 1 to n based on the card position among all cards (flyer and banner) in the section\n                IDCard: 'data.id', // flyer or banner id; to be defined whether it is the flyer id or a specific id for the card\n            }\n        }\n\n    }\n\n    _getTrackSlide() {\n        return {\n            event: 'SlideLaterale',\n            CustomLink: 'Click Slide laterale',\n            funnel: {\n                nomeFunnel: 'Scheda Negozio',\n                stepFunnel: 'Slide laterale Card Volantino',\n            },\n            negozioInfo: {\n                ...generateTrackNegozioInfo(),\n            },\n        };\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { generateTrackNegozioInfo, generateTooltip } from '../../../../../libs/utils';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\n\nexport default class StoreInfo extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.telButton = this._dEl('tel'); \n        this.directions = this._dEl('directions'); \n        this.trackingManager = getTrackingManager();\n        this._setGridRows();\n        this._addEventListeners();\n        this._initDesktopTabs();\n        this._initTooltips();\n    }\n\n    _setGridRows() {\n        // Column-first layout. Services cap at 3 columns; specialized services and departments cap at 6.\n        const lists = this._dEl('serviziList', true);\n\n        lists.forEach((list) => {\n            // Direct children only: the electric charging sub-list counts as one grid cell.\n            const itemCount = list.children.length;\n            // Services stay on 3 columns. Specialized services and departments grow to 6.\n            const wideSection = list.closest(this._el('serviziSpecializzati', true))\n                || list.closest(this._el('reparti', true));\n            const maxColumns = wideSection ? 6 : 3;\n            // Five rows per column, then grow rows beyond the section's column limit.\n            const rows = Math.max(5, Math.ceil(itemCount / maxColumns));\n            list.style.setProperty('--store-info-grid-rows', rows);\n            // Column count of the group, used by the CSS to size it as a share of the 6 columns of the tab.\n            const col = list.closest(this._el('serviziCol', true));\n            if (col) col.style.setProperty('--store-info-grid-cols', Math.ceil(itemCount / rows));\n        });\n    }\n\n\n    _initDesktopTabs() {\n        if (window.innerWidth >= BREAKPOINTS.l) {\n            const allHeadings = [...this._dEl('heading', true), ...this._dEl('headingSub', true)];\n            let hasActive = false;\n            allHeadings.forEach(h => {\n                if (this._isActive(h)) hasActive = true;\n                else this._closeTab(h);\n            });\n            if (!hasActive && allHeadings.length > 0) {\n                this._openTab(allHeadings[0]); // Open first by default\n            }\n        }\n    }\n\n    _addEventListeners() {\n\n        this._addListener(\n            ['click', 'keydown'],\n            (e) => {\n                if (e.type === 'keydown' && e.key !== 'Enter') return;\n                let heading = e.target.closest(this._el('heading', true));\n                if (!heading) heading = e.target.closest(this._el('headingSub', true));\n                if (!heading) return;\n\n                if (window.innerWidth >= BREAKPOINTS.l) {\n                    // Desktop Tabs Logic\n                    if (this._isActive(heading)) return; // already active\n\n                    const allHeadings = [...this._dEl('heading', true), ...this._dEl('headingSub', true)];\n                    allHeadings.forEach((h) => {\n                        if (h !== heading && this._isActive(h)) {\n                            this._closeTab(h);\n                        }\n                    });\n\n                    this._openTab(heading);\n                } else {\n                    // Mobile Accordion Logic\n                    if (this._isOpenMobile(heading)) {\n                        this._closeTab(heading);\n                    } else {\n                        this._openTab(heading);\n                    }\n                }\n            }\n        );\n\n        this._addListener(\n            'resize',\n            () => {\n                const allHeadings = [...this._dEl('heading', true), ...this._dEl('headingSub', true)];\n                if (window.innerWidth >= BREAKPOINTS.l) {\n                    // switch to desktop\n                    let hasActive = false;\n                    allHeadings.forEach(h => {\n                        if (this._isOpenMobile(h)) {\n                            if (!hasActive) {\n                                this._openTab(h);\n                                hasActive = true;\n                            } else {\n                                this._closeTab(h);\n                            }\n                        } else {\n                            this._closeTab(h);\n                        }\n                    });\n                    if (!hasActive && allHeadings.length > 0) {\n                        this._openTab(allHeadings[0]);\n                    }\n                } else {\n                    // switch to mobile -> preserve active tab as open accordion\n                    // close everything else (handled by desktop state anyway)\n                }\n            },\n            window\n        );\n\n        this._addListener('click',\n            () => {\n                this.trackingManager.track(this.root, {\n                    event: 'NumeroTelefono',\n                    CustomLink: 'Click numero telefono',\n                    funnel: {\n                        nomeFunnel: 'Scheda Negozio',\n                        stepFunnel: 'Interazioni con Scheda negozio',\n                    },\n                    negozioInfo: {\n                        ...generateTrackNegozioInfo(),\n                    },\n                });\n            },\n            this.telButton\n        );\n        this._addListener('click',\n            () => {\n                this.trackingManager.track(this.root, {\n                    event: 'ComeArrivare',\n                    CustomLink: 'Click come arrivare',\n                    funnel: {\n                        nomeFunnel: 'Scheda Negozio',\n                        stepFunnel: 'Interazioni con Scheda negozio',\n                    },\n                    negozioInfo: {\n                        ...generateTrackNegozioInfo(),\n                    },\n                });\n            },\n            this.directions\n        );\n    }\n\n    _isOpenMobile(heading) {\n        if (!heading) return false;\n        return !heading.classList.contains(this._elMod('heading', 'close'))\n            && !heading.classList.contains(this._elMod('headingSub', 'close'));\n    }\n\n    _isActive(heading) {\n        if (!heading) return false;\n        return heading.classList.contains(this._elMod('heading', 'active'))\n            || heading.classList.contains(this._elMod('headingSub', 'active'));\n    }\n\n    _openTab(heading) {\n        if (!heading) return;\n        const arrow = heading.querySelector(this._el('arrow', true));\n        const content = heading.nextElementSibling;\n        \n        content.style.visibility = 'visible';\n        \n        if (arrow) arrow.classList.remove(this._elMod('arrow', 'close'));\n        \n        content.classList.remove(this._elMod('content', 'close'));\n        heading.classList.remove(this._elMod('heading', 'close'));\n        content.classList.add(this._elMod('content', 'active'));\n        heading.classList.add(this._elMod('heading', 'active'));\n        \n        if (content.classList.contains(this._el('contentSub'))) {\n            content.classList.remove(this._elMod('contentSub', 'close'));\n            heading.classList.remove(this._elMod('headingSub', 'close'));\n            content.classList.add(this._elMod('contentSub', 'active'));\n            heading.classList.add(this._elMod('headingSub', 'active'));\n        }\n\n        this._updateAriaAttributes(heading, content, true);\n    }\n\n    _closeTab(heading) {\n        if (!heading) return;\n        const arrow = heading.querySelector(this._el('arrow', true));\n        const content = heading.nextElementSibling;\n        \n        if (arrow) arrow.classList.add(this._elMod('arrow', 'close'));\n        \n        content.classList.add(this._elMod('content', 'close'));\n        heading.classList.add(this._elMod('heading', 'close'));\n        content.classList.remove(this._elMod('content', 'active'));\n        heading.classList.remove(this._elMod('heading', 'active'));\n        \n        if (content.classList.contains(this._el('contentSub'))) {\n            content.classList.add(this._elMod('contentSub', 'close'));\n            heading.classList.add(this._elMod('headingSub', 'close'));\n            content.classList.remove(this._elMod('contentSub', 'active'));\n            heading.classList.remove(this._elMod('headingSub', 'active'));\n        }\n\n        this._updateAriaAttributes(heading, content, false);\n        this._hideTooltips(content);\n        content.style.visibility = 'hidden';\n    }\n\n    _updateAriaAttributes(heading, content, isOpen) {\n        heading.setAttribute('aria-expanded', `${isOpen ? 'true' : 'false'}`);\n        content.setAttribute('tabindex', `${isOpen ? '0' : '-1'}`);\n        content.setAttribute('aria-hidden', `${isOpen ? 'false' : 'true'}`);\n    }\n\n    async _initTooltips() {\n        this.tooltipIcons = this._dEl('tooltipIcon', true);\n        if (!this.tooltipIcons || this.tooltipIcons.length === 0) return;\n\n        this.tooltipsData = new Map();\n\n        for (const icon of this.tooltipIcons) {\n            const tooltipText = icon.dataset.tooltipText;\n            if (!tooltipText) continue;\n\n            const tooltipId = await generateTooltip(tooltipText, 'rt058-store-info__tooltip');\n            this.tooltipsData.set(icon, {\n                id: tooltipId,\n                isVisible: false,\n            });\n\n            this._addListener(\n                'click',\n                (event) => {\n                    event.stopPropagation();\n                    for (const [otherIcon, otherData] of this.tooltipsData.entries()) {\n                        if (otherIcon !== icon && otherData.isVisible) {\n                            otherData.isVisible = false;\n                            this._callTooltip(otherIcon, otherData.id, false);\n                        }\n                    }\n\n                    const data = this.tooltipsData.get(icon);\n                    data.isVisible = !data.isVisible;\n                    this._callTooltip(icon, data.id, data.isVisible);\n\n                    if (data.isVisible) {\n                        setTimeout(() => {\n                            const current = this.tooltipsData.get(icon);\n                            if (current && current.isVisible) {\n                                current.isVisible = false;\n                                this._callTooltip(icon, data.id, false);\n                            }\n                        }, 5000);\n                    }\n                },\n                icon\n            );\n        }\n\n        this._addListener(\n            'click',\n            (event) => {\n                if (event.target.closest(this._el('tooltipIcon', true))) return;\n\n                this._hideTooltips();\n            },\n            document\n        );\n    }\n\n    _hideTooltips(container = this.root) {\n        if (!this.tooltipsData) return;\n\n        for (const [icon, data] of this.tooltipsData.entries()) {\n            if (data.isVisible && container.contains(icon)) {\n                data.isVisible = false;\n                this._callTooltip(icon, data.id, false);\n            }\n        }\n    }\n\n    _callTooltip(icon, tooltipId, show = true) {\n        const tooltipEl = document.getElementById(tooltipId);\n        if (!tooltipEl) return;\n\n        const event = new CustomEvent('showTooltip', { bubbles: true });\n        event.data = {\n            tooltipIcon: icon,\n            show,\n        };\n        tooltipEl.dispatchEvent(event);\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { generateShareLinks } from '../../../../../libs/utils';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { NEWS_FILTER_QUERY_PARAM_VALUE_PRODUCT_RECALL, NEWS_FILTER_QUERY_PARAM_VALUE_NEWS } from '../../../../../libs/constants';\n\nexport default class Advice extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.share = this._dEl('ctaShare');\n        this.trackingManager = getTrackingManager();\n\n        this.cardType = this.root.dataset.cardType;\n        this.cardInEvidence = this.root.hasAttribute(\"data-card-is-in-evidence\");\n        this.categoryLink = this._dEl('categoryLink');\n\n        this._init();\n    }\n\n    async _init() {\n        if (this.cardType === 'NEWS') {\n            let url = new URL(this.categoryLink.getAttribute('href'), window.origin);\n            let params = new URLSearchParams(url.search);\n            params.append('tag', this.cardInEvidence ? NEWS_FILTER_QUERY_PARAM_VALUE_PRODUCT_RECALL : NEWS_FILTER_QUERY_PARAM_VALUE_NEWS);\n            url.search = params.toString();\n            this.categoryLink.setAttribute('href', url.pathname + url.search);\n        }\n        this.categoryLink.classList.add(this._elMod('categoryLink', 'enabled'));\n\n        await this._initShare();\n        this._addEventListeners();\n    }\n\n    \n    _addEventListeners() {\n\n        this._addListener(\n            'click',\n            (ev) => {\n                ev.preventDefault();\n                if (!this.shareId) return;\n                const event = new CustomEvent('showShareLinks', { bubbles: true });\n                event.data = {\n                    root: this._dEl('ctaBookmark'),\n                };\n                const popup = document.getElementById(this.shareId);\n                popup.dispatchEvent(event);\n                this.trackingManager.track(this.root, {\n                    event: 'Condividi',\n                    CustomLink: 'Click Condividi'\n                });\n                ev.stopPropagation();\n            },\n            this.share\n        );\n    }\n\n    async _initShare() {\n        this.shareId = await generateShareLinks(this.root.dataset.link, this.root.dataset.title);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { generateShareLinks } from '../../../../../libs/utils';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\n\nexport default class Recipe extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.BREAKPOINT_L = BREAKPOINTS.l;\n        this.trackingManager = getTrackingManager();\n\n        this.title = this._dEl('title');\n        this.top = this._dEl('top');\n        this.ctas = this._dEl('ctas');\n        this.container = this._dEl('ingredientsTabContainer');\n        this.tab = this._dEl('ingredientsTab');\n        this.num = this._dEl('peopleNum');\n        this.minus = this._dEl('minus');\n        this.plus = this._dEl('plus');\n        this.quantity = this._dEl('quantity', true);\n        this.showFraction = this.root.dataset.fraction;\n\n        this.ctas.style.top = `${this.title.getBoundingClientRect().height + this.top.getBoundingClientRect().height + 16 + 24}px`;\n        if(window.innerWidth >= this.BREAKPOINT_L) {\n            this.container.style.height = `${this.tab.getBoundingClientRect().height}px`;\n        } else {\n            this.container.style.height = `${this.tab.getBoundingClientRect().height - 45}px`;\n        }\n\n\n        this.unit = new Array();\n        this.initialQuantity = new Array();\n        let p = parseInt(this.num.innerHTML, 10);\n        this._calcUnit(this.quantity, p);\n\n        if (this.showFraction == 'true') {\n            this._multiply(this.unit, p);\n        }\n\n        this.share = this._dEl('ctaShare');\n        this._init();\n    }\n\n    async _init(){\n        await this._initShare();\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n\n        this._addListener(\n            'click',\n            (ev) => {\n                ev.preventDefault();\n                if (!this.shareId) return;\n                const event = new CustomEvent('showShareLinks', { bubbles: true });\n                event.data = {\n                    root: this._dEl('ctaBookmark'),\n                };\n                const popup = document.getElementById(this.shareId);\n                popup.dispatchEvent(event);\n                this.trackingManager.track(this.root, {\n                    event: 'Condividi',\n                    CustomLink: 'Click Condividi'\n                });\n                ev.stopPropagation();  \n            },\n            this.share\n        ); \n        this._addListener('click', (e) => {\n            const minus = e.target.closest(this._el('minus', true));\n            const plus = e.target.closest(this._el('plus', true));\n            if(!minus && !plus) return;\n\n            e.preventDefault();\n            let p = parseInt(this.num.innerHTML);\n            if (minus) {\n                if (p > 1) {\n                    this.num.innerHTML = p - 1;\n                    p = p - 1;\n                    this._multiply(this.unit, p);\n                }\n            } else if (plus) {\n                this.num.innerHTML = p + 1;\n                p = p + 1;\n                this._multiply(this.unit, p);\n            }\n        });\n\n        window.addEventListener('resize', () => {\n            if(window.innerWidth >= this.BREAKPOINT_L) {\n                this.container.style.height = `${this.tab.getBoundingClientRect().height}px`;\n            } else {\n                this.container.style.height = `${this.tab.getBoundingClientRect().height - 45}px`;\n            }\n        });\n    }\n\n    async _initShare() {\n        this.shareId = await generateShareLinks(this.root.dataset.link, this.root.dataset.title);\n    }\n\n    _multiply(unit, num) {\n        for (let i = 0; i < unit.length; i++) {\n            if (this.showFraction == 'false') {\n                if (Math.round(unit[i] * num) == 0) {\n                    this.quantity[i].innerHTML = 'q.b.';\n                } else {\n                    if (this.initialQuantity[i] >= 50) {\n                        this.quantity[i].innerHTML = Math.round((unit[i] * num) / 5) * 5;\n                    } else {\n                        this.quantity[i].innerHTML = Math.round(unit[i] * num);\n                    }\n                }\n            } else {\n                this.quantity[i].innerHTML = _frac(unit[i] * num);\n            }\n        }\n    }\n\n    _calcUnit(quantity, num) {\n        let q = new Array();\n        for (let i = 0; i < quantity.length; i++) {\n            q[i] = parseFloat(quantity[i].innerHTML);\n            this.initialQuantity[i] = q[i];\n            this.unit[i] = q[i] / num;\n        }\n    }\n}\n\nfunction _frac(num) {\n    if (num < 1) {\n        let fr;\n        switch (true) {\n            case num == 0: {\n                return num;\n            }\n            case num > 0 && num <= 0.25: {\n                fr = '1/4';\n                break;\n            }\n            case num > 0.25 && num < 0.33: {\n                fr = '1/2';\n                break;\n            }\n            case num >= 0.33 && num < 0.4: {\n                fr = '1/3';\n                break;\n            }\n            case num > 0.4 && num < 0.6: {\n                fr = '1/2';\n                break;\n            }\n            case num >= 0.6 && num < 0.8: {\n                fr = '2/3';\n                break;\n            }\n            case num >= 0.8 && num < 0.9: {\n                fr = '3/4';\n                break;\n            }\n            case num >= 0.9: {\n                return 1;\n            }\n            default:\n                break;\n        }\n        return fr;\n    } else {\n        let decimal = Math.floor(num);\n        let rest = num - decimal;\n        let fraction = _frac(rest);\n        if (fraction == 0) {\n            return decimal.toString();\n        }\n        if (fraction == 1) {\n            return (decimal + 1).toString();\n        }\n        return decimal.toString() + ' + ' + fraction.toString();\n    }\n}\n\n\n","\nimport './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport * as anchorCall from './partials/anchor.html';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\n\n\nexport default class Anchors extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.BREAKPOINT_L = BREAKPOINTS.l;\n        this.layout = this.root.closest('.rl2-anchors-layout');\n        this.layoutItems = Array.from(this.layout.querySelectorAll('.rl2-anchors-layout__item'));\n        this.anchorsMap = {};\n        this._initAnchors();\n        this._addEventListeners();\n    }\n\n    _initAnchors() {\n        for (const item of this.layoutItems) {\n            if (!item.dataset.anchorTitle) continue;\n            const anchorData = {\n                label: item.dataset.anchorTitle,\n            };\n            const anchor = runTemplate(anchorCall, anchorData);\n            this.anchorsMap[item.dataset.anchorTitle] = {\n                anchor: anchor,\n                item: item,\n            };\n            this.root.appendChild(anchor);\n        }\n    }\n\n    _addEventListeners() {\n        for (const anchor of Object.values(this.anchorsMap).map((entry) => entry.anchor)) {\n            this._addListener(\n                'click',\n                () => {\n                    const item = this.anchorsMap[anchor.innerText.trim()].item;\n                    const top = item.getBoundingClientRect().top;\n                    const offset = window.innerWidth < this.BREAKPOINT_L ? 64 : 168;\n                    window.scrollTo({\n                        top: top - offset,\n                        behavior: 'smooth',\n                    });\n                },\n                anchor\n            );\n        }\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class Faq extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this._checkHide();\n\n        this.tabList = this._dEl('tabs');\n        this.tabs = Array.from(this.tabList.children);\n        this.content = this._dEl('content', true);\n\n        this.tabFocus = this.root.dataset.activeTab || 0;\n        this.tabs[this.root.dataset.activeTab].setAttribute('tabindex', '0');\n        this._selectTab(this.tabs[this.root.dataset.activeTab], this.content[this.root.dataset.activeTab], true);\n\n        this._addListeners();\n    }\n\n    _addListeners() {\n        // mettere dimensione -3000px e dimensione w 6000\n        this.tabs.forEach((tab) => {\n            tab.addEventListener('click', () => {\n                if (this._isTabActive(tab)) return;\n                // Remove all current selected tabs\n                const selectedTabs = [...this.tabList.querySelectorAll('[aria-selected=\"true\"]')];\n                selectedTabs?.forEach((t) => {\n                    this._selectTab(t, this._getTabPanelFromTab(t), false);\n                });\n                // Set this tab as selected\n                this._selectTab(tab, this._getTabPanelFromTab(tab), true);\n            });\n        });\n        this.tabList.addEventListener('keydown', (e) => {\n            if (e.key !== 'ArrowRight' && e.key !== 'ArrowLeft') return;\n            this.tabs[this.tabFocus].setAttribute('tabindex', '-1');\n            if (e.key === 'ArrowRight') {\n                this.tabFocus++;\n                // if at the end, go to the start\n                if (this.tabFocus >= this.tabs.length) {\n                    this.tabFocus = 0;\n                }\n            } else if (e.key === 'ArrowLeft') {\n                this.tabFocus--;\n                // if at the start, move to the end\n                if (this.tabFocus < 0) {\n                    this.tabFocus = this.tabs.length - 1;\n                }\n            }\n            this.tabs[this.tabFocus].setAttribute('tabindex', '0');\n            this.tabs[this.tabFocus]?.focus();\n        });\n    }\n\n    _checkHide() {\n        if (!this.root.hasAttribute('data-hide')) return;\n        /* hide self */\n        const event = new CustomEvent('hideLayoutItem', { bubbles: true });\n        event.data = {\n            hide: true,\n        };\n        this.root.dispatchEvent(event);\n    }\n\n    _isTabActive(tab) {\n        return tab.classList.contains(this._el('activeTab'));\n    }\n\n    _selectTab(tab, tabPanel, select = true) {\n        if (select == true) {\n            tab.setAttribute('aria-selected', 'true');\n            tab.classList.add(this._el('activeTab'));\n            tabPanel.removeAttribute('hidden');\n            tabPanel.setAttribute('aria-hidden', 'false');\n        } else {\n            tab.setAttribute('aria-selected', 'false');\n            tab.classList.remove(this._el('activeTab'));\n            tabPanel.setAttribute('hidden', 'true');\n            tabPanel.setAttribute('aria-hidden', 'true');\n        }\n    }\n\n    _getTabPanelFromTab(tab) {\n        return this.root.querySelector(`#${tab.getAttribute('aria-controls')}`);\n    }\n}\n\n\n","export const CONTACT_FORM_CONSTANTS = {\n    /* card options (must match the values on BE side) */\n    cardTypeInsieme: 'cartainsieme',\n    cardTypeConadCard: 'conadcardpay',\n    cardTypePrepagata: 'prepagataconad',\n    cardTypePaymentServices: 'paymentservices',\n    /* form types (must match the CCRecordType values on BE side) */\n    formTypeBrandedProd: 'Prodotti_a_Marchio_Conad_Sapori_e_Dintorni',\n    formTypeOtherProd: 'Prodotti_di_altre_marche',\n    formTypeStores: 'Punti_Vendita',\n    formTypeInsurances: 'Assicurazioni',\n    formTypeAppSite: 'Segnalazioni_app_sito',\n    formTypePrizes: 'Premi_raccolte_bollini_catalogo_Mi_Premio_e_concorsi',\n    /* ccrt (must match the CCTipo values on BE side) */\n    ccrtComplBrandedProd: 'Reclamo su prodotti a marchio Conad',\n    ccrtComplOtherProd: 'Reclamo su prodotti di altre marche',\n    ccrtReqInfo: 'Richiesta di informazioni',\n    ccrtBlockCardRequest: 'Richiesta blocco carta',\n    ccrtReqTechSupport: 'Richiesta di supporto tecnico',\n    ccrtComplPayments: 'Reclami relativi ai pagamenti',\n    ccrtReqInfoPaymentCards: 'Richiesta di informazione sulle Carte di Pagamento',\n    ccrtReqSupportPaymentCards: 'Richieste di assistenza relativa a Carte di Pagamento',\n    ccrtRecharge: 'Ricarica',\n    ccrtConadPay: 'Conad Pay',\n    ccrtInfoPrizes: 'Informazioni su premi concorsi e short collection',\n    ccrtComplPrizes: 'Reclami premio collection difettoso',\n    /* thematics (must match the CCArgomento values on BE side) */\n    thematicExpiredBrandedProd: 'Prodotti a marchio Conad scaduti',\n    thematicExpiredOtherProd: 'Prodotti di altre marche scaduti',\n    thematicConadCard: 'Conad Card',\n    thematicRechargeableCard: 'Carta Insieme Conad Ricaricabile',\n    thematicConadPay: 'Conad Pay',\n    thematicConadPrepaidCard: 'La Prepagata Conad',\n    thematicInfoBollini: 'Informazione su raccolte bollini',\n    thematicInfoMiPremio: 'Informazione su catalogo Mi Premio NAZIONALE',\n    thematicInfoContest: 'Informazione su concorsi',\n    thematicComplContest: 'Reclami su concorsi Nazionali',\n    thematicComplBollini: 'Reclami su raccolte bollini',\n    thematicComplMiPremio: 'Reclami su catalogo Mi Premio Nazionale',\n    /* delay */\n    delayInMillis: 200,\n    /* param names */\n    paramRecordType: 'recordType',\n    paramTipo: 'tipo',\n    paramArgomento: 'argomento',\n    paramStoreId: 'pdvScelto',\n};\n\nexport const IGNORE_FORM_FIELDS = [\n    'carta',\n    'ccRequestType',\n    'ccRequestTypeLabel',\n    'thematic',\n    'thematicLabel',\n    'codiceCartaFidelity2',\n    'tipoCartaConadPay',\n    'tipoCartaConadPayLabel',\n];\n\nexport const FIELD_COMPONENTS_SELECTOR =\n    '.rt008-text-field,.rt011-select,.rt018-textarea,.rt004-radio,.rt014-file-upload';\n","/**\n * CCRT / thematic UI rules mixed into ContactForm prototype.\n */\nexport const contactFormLogic = {\n    _doFormLogic(ccrt) {\n        // cards form treated separately\n        if (this._isCardsForm()) {\n            const isPaymentServices = this._getCardRadioValue() === this.CONSTANTS.cardTypePaymentServices;\n            // when a thematic select is present it must be filled before the rest is revealed\n            const thematic = this._dEl('thematic');\n\n            if (!isPaymentServices) {\n                if (!thematic) {\n                    this._showMessageDataSection();\n                    this._showPrivacyAndCtas();\n                } else {\n                    // hide until thematic is selected\n                    this._hideMessageDataSection();\n                    this._setCardFieldState('fieldConadCard', false);\n                    this._addListener(\n                        'rcInputChanged',\n                        (e) => {\n                            if (!this._getThematicValue()) {\n                                e.stopPropagation();\n                                return;\n                            }\n                            this._setCardFieldState('fieldConadCard', true);\n                            this._showMessageDataSection();\n                            this._showPrivacyAndCtas();\n                            e.stopPropagation();\n                        },\n                        thematic\n                    );\n                }\n                return;\n            }\n\n            if (!thematic) {\n                this._showMessageDataSection();\n                this._showPrivacyAndCtas();\n            }\n        }\n\n        // other forms\n        if (\n            this.formType.value === this.CONSTANTS.formTypeBrandedProd ||\n            this.formType.value === this.CONSTANTS.formTypeOtherProd\n        ) {\n            this._setEanTooltip();\n            if (ccrt === this.CONSTANTS.ccrtComplBrandedProd || ccrt === this.CONSTANTS.ccrtComplOtherProd) {\n                this._doExpirationDateLogic();\n            }\n            this._showMessageDataSection();\n            this._showPrivacyAndCtas();\n            return;\n        }\n\n        if (\n            this.formType.value === this.CONSTANTS.formTypeStores ||\n            this.formType.value === this.CONSTANTS.formTypeAppSite\n        ) {\n            this._showMessageDataSection();\n            this._showPrivacyAndCtas();\n            return;\n        }\n\n        // Assicurazioni\n        if (\n            this.formType.value === this.CONSTANTS.formTypeInsurances ||\n            this.formType.value === this.CONSTANTS.formTypeAppSite\n        ) {\n            this._showMessageDataSection();\n            this._showPrivacyAndCtas();\n            return;\n        }\n        if (this.formType.value === this.CONSTANTS.formTypePrizes) {\n            const formSectionCCRTT = this._dEl('formSectionCCRTT');\n            const thematic = this._dEl('thematic');\n            if (thematic) {\n                this._addListener(\n                    'rcInputChanged',\n                    async (e) => {\n                        const ccrtt = e.data.value;\n                        await this._loadSubFormSectionCCRTT(ccrt, ccrtt, formSectionCCRTT);\n\n                        if (\n                            ccrtt === this.CONSTANTS.thematicInfoContest ||\n                            ccrtt === this.CONSTANTS.thematicComplContest\n                        ) {\n                            console.debug(\n                                'Sub-form loaded for contest thematic, hiding message data section and initializing listeners'\n                            );\n                            this._hideMessageDataSection();\n                            this._hidePrivacyAndCtas();\n                            this._clearPrivacyText();\n                            // both groups start hidden: their inputs must not take part in the form validity\n                            this._setFieldsGroupState('initiativeFields', false);\n                            this._setFieldsGroupState('altroInitiativeFields', false);\n\n                            const initiative = this._dEl('initiative');\n                            if (initiative) {\n                                console.debug('Found initiative select, registering rcInputChanged listener');\n                                this._addListener(\n                                    'rcInputChanged',\n                                    async (ev) => {\n                                        const selectedValue = ev.data.value;\n                                        console.debug('Initiative changed to:', selectedValue);\n\n                                        const initiativeBanner = this._dEl('initiativeBanner');\n\n                                        if (selectedValue) {\n                                            const isAltro =\n                                                selectedValue === 'altro' ||\n                                                selectedValue.toLowerCase() === 'altro (specificare)';\n                                            // \"Altro (specificare)\" and specific initiatives are mutually exclusive\n                                            this._setFieldsGroupState('initiativeFields', !isAltro);\n                                            this._setFieldsGroupState('altroInitiativeFields', isAltro);\n                                            this._setFileUploadRequired(\n                                                ccrt === this.CONSTANTS.ccrtComplPrizes && !isAltro\n                                            );\n                                            await this._setPrivacyText();\n                                            this._showMessageDataSection();\n                                            this._showPrivacyAndCtas();\n                                        } else {\n                                            // No selection: hide everything\n                                            this._setFieldsGroupState('initiativeFields', false);\n                                            this._setFieldsGroupState('altroInitiativeFields', false);\n                                            this._setFileUploadRequired(false);\n                                            this._clearPrivacyText();\n                                            this._hideMessageDataSection();\n                                            this._hidePrivacyAndCtas();\n                                        }\n\n                                        // Update initiative banner from the global map\n                                        if (initiativeBanner) {\n                                            this._updateInitiativeBanner(initiativeBanner, selectedValue);\n                                        } else {\n                                            console.warn('Initiative banner element not found in DOM');\n                                        }\n                                        ev.stopPropagation();\n                                    },\n                                    initiative\n                                );\n                            } else {\n                                console.warn('Initiative select element not found in DOM');\n                            }\n                        } else {\n                            await this._setPrivacyText();\n                            this._showMessageDataSection();\n                            this._showPrivacyAndCtas();\n                            this._initPrizeCodeOrPinValidation();\n                            this._setFileUploadRequired(ccrtt === this.CONSTANTS.thematicComplBollini);\n                        }\n\n                        e.stopPropagation();\n                    },\n                    thematic\n                );\n            }\n            return;\n        }\n\n        if (this._isCardsForm()) {\n            // if it is \"Servizi di pagamento\", add a listener on thematic\n            if (this._getCardRadioValue() === this.CONSTANTS.cardTypePaymentServices) {\n                const thematic = this._dEl('thematic');\n                if (!thematic) return;\n\n                const tipoCartaConadPayEl = this._dEl('tipoCartaConadPay');\n                if (tipoCartaConadPayEl && !tipoCartaConadPayEl.dataset.initialized) {\n                    const selectObj = this.register.getClass(tipoCartaConadPayEl);\n                    if (selectObj) {\n                        selectObj.setItems([\n                            { value: 'conadCard', label: 'N° Carta Insieme Più Conad Card' },\n                            { value: 'rechargeableCard', label: 'N° Carta Insieme Conad Ricaricabile' },\n                        ]);\n                        this._addListener(\n                            'rcInputChanged',\n                            (e) => {\n                                const val = e.data.value;\n                                if (val === 'conadCard') {\n                                    this._setCardFieldState('fieldConadPayPiuCard', true);\n                                    this._setCardFieldState('fieldConadPayRicaricabile', false);\n                                } else if (val === 'rechargeableCard') {\n                                    this._setCardFieldState('fieldConadPayPiuCard', false);\n                                    this._setCardFieldState('fieldConadPayRicaricabile', true);\n                                } else {\n                                    this._setCardFieldState('fieldConadPayPiuCard', false);\n                                    this._setCardFieldState('fieldConadPayRicaricabile', false);\n                                }\n                                e.stopPropagation();\n                            },\n                            tipoCartaConadPayEl\n                        );\n                        tipoCartaConadPayEl.dataset.initialized = 'true';\n                    }\n                }\n\n                const ccrtValue = this._getCCRTValue();\n                const isConadPay = ccrtValue === this.CONSTANTS.ccrtConadPay;\n                const isRecharge = ccrtValue === this.CONSTANTS.ccrtRecharge;\n                // Conad Pay and Ricarica show message data immediately\n                if (isConadPay || isRecharge) {\n                    this._showMessageDataSection();\n                    if (isConadPay) this._hideFileUpload();\n                    this._showPrivacyAndCtas();\n                    return;\n                }\n                // Other CCRTs: thematic must be selected before revealing message data and privacy\n                this._hideMessageDataSection();\n                this._addListener('rcInputChanged', (e) => {\n                    this._setPrivacyText();\n                    const thematicValue = this._getThematicValue();\n                    const ccrt = this._getCCRTValue();\n                    if (!thematicValue) {\n                        e.stopPropagation();\n                        return;\n                    }\n                    // if \"Tipologia richiesta\" is \"Richiesta blocco carta\" show block reason and card fields\n                    if (ccrt === this.CONSTANTS.ccrtBlockCardRequest) {\n                        const blockReason = this._dEl('blockReason');\n                        const fieldsBlockCard = this._dEl('fieldsBlockCard');\n                        blockReason?.classList.remove(this._elMod('blockReason', 'hidden'));\n                        fieldsBlockCard?.classList.remove(this._elMod('fieldsBlockCard', 'hidden'));\n                    }\n                    this._applyPaymentCardsFieldsByThematic(thematicValue, ccrt);\n                    // reveal message data once thematic is selected; conditionally hide file upload\n                    this._showMessageDataSection();\n                    const hideFileUpload =\n                        ccrt === this.CONSTANTS.ccrtBlockCardRequest &&\n                        (thematicValue === this.CONSTANTS.thematicConadCard ||\n                            thematicValue === this.CONSTANTS.thematicRechargeableCard);\n                    hideFileUpload ? this._hideFileUpload() : this._showFileUpload();\n                    this._showPrivacyAndCtas();\n                    e.stopPropagation();\n                });\n            }\n            return;\n        }\n\n        console.warn('Unknown form type.');\n    },\n\n    _setCardFieldState(fieldName, shouldEnable) {\n        const field = this._dEl(fieldName);\n        if (!field) return;\n        const fieldObj = this.register.getClass(field);\n        if (!fieldObj) return;\n\n        if (shouldEnable) {\n            fieldObj.enable();\n            field.classList.remove(this._elMod(fieldName, 'hidden'));\n            return;\n        }\n\n        fieldObj.disable();\n        field.classList.add(this._elMod(fieldName, 'hidden'));\n    },\n\n    /**\n     * Shows or hides every wrapper with the given element name, enabling or disabling the\n     * inputs it contains: hidden inputs must not take part in the form validity nor be submitted.\n     *\n     * @param {string} groupName    - element name of the wrapper(s), e.g. 'initiativeFields'\n     * @param {boolean} shouldShow\n     */\n    _setFieldsGroupState(groupName, shouldShow) {\n        const groups = this._dEl(groupName, true);\n        if (!groups.length) return;\n\n        const hiddenMod = this._elMod(groupName, 'hidden');\n        for (const group of groups) {\n            group.toggleAttribute('hidden', !shouldShow);\n            group.classList.toggle(hiddenMod, !shouldShow);\n            for (const field of group.querySelectorAll(this.FIELD_COMPONENTS_SELECTOR)) {\n                const fieldObj = this.register.getClass(field);\n                shouldShow ? fieldObj?.enable() : fieldObj?.disable();\n            }\n            // some components only handle the visual state, so sync the native inputs too\n            for (const input of group.querySelectorAll('input,select,textarea')) {\n                input.disabled = !shouldShow;\n            }\n        }\n    },\n\n    _setFileUploadRequired(required) {\n        const fileUpload = this._dEl('fileUpload');\n        const fileUploadObj = fileUpload && this.register.getClass(fileUpload);\n        fileUploadObj?.setRequired(required);\n    },\n\n    _applyPaymentCardsFieldsByThematic(thematicValue, ccrtValue) {\n        if (thematicValue === this.CONSTANTS.thematicConadCard) {\n            this._setCardFieldState('fieldConadCard', true);\n            this._setCardFieldState('fieldRechargeableCard', false);\n            this._setCardFieldState('fieldConadCardAndCartaInsiemeRicaricabile', false);\n            this._setCardFieldState('tipoCartaConadPay', false);\n            this._setCardFieldState('fieldConadPayPiuCard', false);\n            this._setCardFieldState('fieldConadPayRicaricabile', false);\n            return;\n        }\n\n        if (ccrtValue !== this.CONSTANTS.ccrtRecharge && thematicValue === this.CONSTANTS.thematicRechargeableCard) {\n            this._setCardFieldState('fieldConadCard', false);\n            this._setCardFieldState('fieldRechargeableCard', true);\n            this._setCardFieldState('fieldConadCardAndCartaInsiemeRicaricabile', false);\n            this._setCardFieldState('tipoCartaConadPay', false);\n            this._setCardFieldState('fieldConadPayPiuCard', false);\n            this._setCardFieldState('fieldConadPayRicaricabile', false);\n            return;\n        }\n\n        if (\n            ccrtValue !== this.CONSTANTS.ccrtReqInfoPaymentCards &&\n            ccrtValue !== this.CONSTANTS.ccrtReqSupportPaymentCards\n        ) {\n            return;\n        }\n\n        if (thematicValue === this.CONSTANTS.thematicConadPrepaidCard) {\n            this._setCardFieldState('fieldConadCard', false);\n            this._setCardFieldState('fieldRechargeableCard', false);\n            this._setCardFieldState('fieldConadCardAndCartaInsiemeRicaricabile', false);\n            this._setCardFieldState('tipoCartaConadPay', false);\n            this._setCardFieldState('fieldConadPayPiuCard', false);\n            this._setCardFieldState('fieldConadPayRicaricabile', false);\n            return;\n        }\n\n        if (thematicValue === this.CONSTANTS.thematicConadPay) {\n            this._setCardFieldState('fieldConadCard', false);\n            this._setCardFieldState('fieldRechargeableCard', false);\n            this._setCardFieldState('fieldConadCardAndCartaInsiemeRicaricabile', false);\n            this._setCardFieldState('tipoCartaConadPay', true);\n            const tipoCartaConadPayEl = this._dEl('tipoCartaConadPay');\n            if (tipoCartaConadPayEl) {\n                const selectObj = this.register.getClass(tipoCartaConadPayEl);\n                if (selectObj) {\n                    const val = selectObj.getValue();\n                    if (val === 'conadCard') {\n                        this._setCardFieldState('fieldConadPayPiuCard', true);\n                        this._setCardFieldState('fieldConadPayRicaricabile', false);\n                    } else if (val === 'rechargeableCard') {\n                        this._setCardFieldState('fieldConadPayPiuCard', false);\n                        this._setCardFieldState('fieldConadPayRicaricabile', true);\n                    } else {\n                        this._setCardFieldState('fieldConadPayPiuCard', false);\n                        this._setCardFieldState('fieldConadPayRicaricabile', false);\n                    }\n                }\n            }\n        }\n    },\n\n    _setEanTooltip() {\n        const ean = this._dEl('ean');\n        if (!ean) return;\n        this.register.getClass(ean).setTooltip(\n            `\n            <div class=\"${this._el('eanTooltipContent')}\">\n                <div></div>\n                <div>${this.eanTooltipText}</div>\n            </div>\n        `,\n            this._el('eanTooltip')\n        );\n    },\n\n    _doExpirationDateLogic() {\n        const productComplaintReason = this._dEl('productComplaintReason');\n        const expirationDate = this._dEl('expirationDate');\n        if (!productComplaintReason || !expirationDate) return;\n        this._addListener(\n            'rcInputChanged',\n            (e) => {\n                const obj = this.register.getClass(expirationDate);\n                obj.setRequired(\n                    e.data.value === this.CONSTANTS.thematicExpiredBrandedProd ||\n                        e.data.value === this.CONSTANTS.thematicExpiredOtherProd\n                );\n            },\n            productComplaintReason\n        );\n    },\n\n    /**\n     * Looks up the text for the selected initiative in the globally loaded banner map,\n     * and shows/hides the banner accordingly.\n     *\n     * @param {HTMLElement|null} bannerEl   - The `.rt063-contact-form__initiativeBanner` element.\n     * @param {string|null}      initiative - The currently selected initiative name/value.\n     */\n    _updateInitiativeBanner(bannerEl, initiative) {\n        if (!bannerEl) return;\n\n        const hiddenMod = this._elMod('initiativeBanner', 'hidden');\n\n        if (!initiative || !this.initiativeBannerMap) {\n            bannerEl.innerHTML = '';\n            bannerEl.classList.add(hiddenMod);\n            return;\n        }\n\n        const ccrt = this._getCCRTValue();\n        const flow = ccrt === this.CONSTANTS.ccrtComplPrizes ? 'complaint' : 'information';\n        const flowMap = this.initiativeBannerMap[flow] || this.initiativeBannerMap;\n        const text = flowMap[initiative];\n        if (text) {\n            bannerEl.innerHTML = '';\n            const paragraph = document.createElement('p');\n            paragraph.className = this._el('initiativeBannerText');\n            paragraph.textContent = text;\n            bannerEl.appendChild(paragraph);\n            bannerEl.classList.remove(hiddenMod);\n        } else {\n            bannerEl.innerHTML = '';\n            bannerEl.classList.add(hiddenMod);\n        }\n    },\n\n    /**\n     * Reclami > miPREMIO: at least one of codicePremio / codicePin must be filled.\n     * Only that section marks the two fields with these element classes, so their\n     * presence is what enables the rule.\n     * Wires listeners so filling one field clears the error on both.\n     */\n    _initPrizeCodeOrPinValidation() {\n        const { premioEl, pinEl } = this._getPrizeCodeOrPinElements();\n        if (!premioEl || !pinEl) return;\n        if (premioEl.dataset.orPinValidation) return;\n\n        premioEl.dataset.orPinValidation = 'true';\n        pinEl.dataset.orPinValidation = 'true';\n\n        const onChange = () => {\n            if (this._hasPrizeCodeOrPin()) {\n                this._setPrizeCodeOrPinRequired(false);\n            }\n        };\n        this._addListener('rcInputChanged', onChange, premioEl);\n        this._addListener('rcInputChanged', onChange, pinEl);\n    },\n\n    _getPrizeCodeOrPinElements() {\n        return {\n            premioEl: this._dEl('codicePremio'),\n            pinEl: this._dEl('codicePin'),\n        };\n    },\n\n    _hasPrizeCodeOrPin() {\n        const { premioEl, pinEl } = this._getPrizeCodeOrPinElements();\n        const premioObj = premioEl && this.register.getClass(premioEl);\n        const pinObj = pinEl && this.register.getClass(pinEl);\n        const premioValue = premioObj?.getValue()?.trim();\n        const pinValue = pinObj?.getValue()?.trim();\n        return !!(premioValue || pinValue);\n    },\n\n    /**\n     * Must run before the form validity check: when none of the two fields is filled\n     * both are flagged as required, so they are reported like any other missing field.\n     *\n     * @returns {boolean} true when the rule is satisfied or does not apply\n     */\n    _validatePrizeCodeOrPin() {\n        const { premioEl, pinEl } = this._getPrizeCodeOrPinElements();\n        if (!premioEl || !pinEl) return true;\n\n        const filled = this._hasPrizeCodeOrPin();\n        this._setPrizeCodeOrPinRequired(!filled);\n        return filled;\n    },\n\n    _setPrizeCodeOrPinRequired(required) {\n        const { premioEl, pinEl } = this._getPrizeCodeOrPinElements();\n        for (const el of [premioEl, pinEl]) {\n            const obj = el && this.register.getClass(el);\n            const input = obj?.getInput();\n            if (!input) continue;\n            input.required = required;\n            if (!required) obj.setState('');\n        }\n    },\n};\n","import * as richtextHtml from '../../rt001-richtext/rt001-richtext.html';\nimport { runTemplate } from '../../../../../../libs/htl-runtime/HTMLRuntime';\nimport { closeLoader, openLoader } from '../../../../../../libs/utils';\n\n/**\n * Privacy / informativa helpers mixed into ContactForm prototype.\n * Relies on form getters (_isCardsForm, _getThematicValue, …) and services on `this`.\n */\nexport const contactFormPrivacy = {\n    /**\n     * guest: not logged in\n     * bimodal: logged in with fidelity card\n     * light: logged in without fidelity card\n     */\n    _resolveUserType(user) {\n        if (!user) return 'guest';\n        if (user.cartaFedelta) return 'bimodal';\n        return 'light';\n    },\n\n    _resolveCooperative(user, forceCoop = null) {\n        if (forceCoop) return forceCoop;\n        return user?.newMappedCooperative || 'cnd';\n    },\n\n    _hasAnyCard(user) {\n        return !!(user && (user.cartaFedelta || user.conadCard || user.conadCardRicaricabile));\n    },\n\n    _isPrizesForm() {\n        return this.formType?.value === this.CONSTANTS.formTypePrizes;\n    },\n\n    _isContestThematic(thematicValue) {\n        return (\n            thematicValue === this.CONSTANTS.thematicInfoContest ||\n            thematicValue === this.CONSTANTS.thematicComplContest\n        );\n    },\n\n    _getInitiativeValue() {\n        const initiative = this._dEl('initiative');\n        if (!initiative) return null;\n        const obj = this.register.getClass(initiative);\n        return obj?.getValue() || null;\n    },\n\n    /**\n     * Maps cards-form UI state (card radio → CCRT → thematic) to informative CF card flags.\n     */\n    _resolveCardsFormCardFlags() {\n        if (this._getCardRadioValue() === this.CONSTANTS.cardTypeInsieme) {\n            return { insiemeCard: true };\n        }\n\n        const ccrtValue = this._getCCRTValue();\n        if (ccrtValue === this.CONSTANTS.ccrtRecharge) return { ricaricabileCard: true };\n        if (ccrtValue === this.CONSTANTS.ccrtConadPay) return { conadPay: true };\n\n        const thematicToCard = {\n            [this.CONSTANTS.thematicConadCard]: { piuCard: true },\n            [this.CONSTANTS.thematicRechargeableCard]: { ricaricabileCard: true },\n            [this.CONSTANTS.thematicConadPay]: { conadPay: true },\n            [this.CONSTANTS.thematicConadPrepaidCard]: { prepaidCard: true },\n        };\n        return thematicToCard[this._getThematicValue()] || {};\n    },\n\n    /**\n     * Builds getInformativa params for the current form.\n     * Returns null when required selections are missing (privacy should stay empty).\n     */\n    _buildPrivacyParams(user, forceCoop = null) {\n        const cooperativa = this._resolveCooperative(user, forceCoop);\n\n        if (this._isPrizesForm()) {\n            const thematic = this._getThematicValue();\n            if (!thematic) return null;\n\n            const initiative = this._isContestThematic(thematic) ? this._getInitiativeValue() : null;\n            if (this._isContestThematic(thematic) && !initiative) return null;\n\n            return {\n                informativeType: 'concorsiContactForm',\n                cooperativa,\n                userType: this._resolveUserType(user),\n                thematic,\n                initiative: initiative || undefined,\n            };\n        }\n\n        if (this._isCardsForm()) {\n            return {\n                informativeType: 'carteContactForm',\n                cooperativa,\n                ecommerce: '0',\n                isGuestUser: !user,\n                ...this._resolveCardsFormCardFlags(),\n            };\n        }\n\n        return {\n            cooperativa,\n            ecommerce: '0',\n            card: this._hasAnyCard(user),\n        };\n    },\n\n    _clearPrivacyText() {\n        const staleRichtext = this._dEl('richtext');\n        if (staleRichtext) staleRichtext.remove();\n    },\n\n    _renderPrivacyText(informativa) {\n        const informativaText = informativa?.text || '';\n        const informativaPdfLink = informativa?.linkPdfInformativa;\n        const textWithPdfLink = informativaText\n            .replace(/href=(['\"])#pdf\\1/g, informativaPdfLink ? `href=\"${informativaPdfLink}\"` : 'href=\"#pdf\"')\n            .replace(\n                /\\$pdf/g,\n                informativaPdfLink\n                    ? `<a href=\"${informativaPdfLink}\" title=\"Informativa\">Informativa</a>`\n                    : '$pdf'\n            );\n\n        const richtext = runTemplate(richtextHtml, {\n            extraClasses: this._el('richtext'),\n            textIsRich: true,\n            text: textWithPdfLink,\n        });\n        this._clearPrivacyText();\n        this.privacyDataText?.prepend(richtext);\n    },\n\n    async _setPrivacyText(forceCoop = null) {\n        const user = await this.userService.getUser();\n        const params = this._buildPrivacyParams(user, forceCoop);\n        if (!params) {\n            this._clearPrivacyText();\n            return;\n        }\n\n        try {\n            const informativa = await this._fetchInformativa(params, user);\n            this._renderPrivacyText(informativa);\n        } catch (error) {\n            console.warn(error);\n            this._clearPrivacyText();\n        }\n    },\n\n    /**\n     * Cards form can fall back to a consortium default CF when the specific one is missing.\n     * Prizes form has no generic default: each CF is keyed by coop/userType/thematic/initiative.\n     */\n    async _fetchInformativa(params, user) {\n        openLoader('main');\n        try {\n            return await this.apiProvider.getInformativa(params);\n        } catch (error) {\n            if (!this._isCardsForm()) throw error;\n            return this.apiProvider.getInformativa({\n                informativeType: 'carteContactForm',\n                cooperativa: 'cnd',\n                ecommerce: '0',\n                isGuestUser: !user,\n            });\n        } finally {\n            closeLoader('main');\n        }\n    },\n};\n","/* eslint-disable no-extra-boolean-cast */\nimport './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { jsonToForm } from '../../../../../libs/form-to-json';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport {\n    closeLoader,\n    delay,\n    emptyElement,\n    generateFeedback,\n    htmlToElement,\n    openLoader,\n} from '../../../../../libs/utils';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport * as statusMsgHtml from './partials/status-msg.html';\nimport {\n    CONTACT_FORM_CONSTANTS,\n    FIELD_COMPONENTS_SELECTOR,\n    IGNORE_FORM_FIELDS,\n} from './scripts/constants';\nimport { contactFormLogic } from './scripts/form-logic';\nimport { contactFormPrivacy } from './scripts/privacy';\n\nexport default class ContactForm extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.register = getRegister();\n        this.userService = getUserService();\n        this.apiProvider = getApiProvider();\n        this.trackingManager = getTrackingManager();\n\n        this.CONSTANTS = CONTACT_FORM_CONSTANTS;\n        this.IGNORE_FORM_FIELDS = IGNORE_FORM_FIELDS;\n        this.FIELD_COMPONENTS_SELECTOR = FIELD_COMPONENTS_SELECTOR;\n\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        if (!this._checkNecessaryData()) return;\n        this._getElements();\n        await this._initForm();\n        this._addEventListeners();\n        this._addStoreListeners();\n    }\n\n    _checkNecessaryData() {\n        // get necessary variables\n        if (!this.root.hasAttribute('data-loader-endpoint')) {\n            console.warn('Missing loader endpoint');\n            return false;\n        }\n        this.loaderEndpoint = this.root.dataset.loaderEndpoint;\n        if (!this.root.hasAttribute('data-form-type')) {\n            console.warn('Missing formType');\n            return false;\n        }\n        try {\n            this.formType = JSON.parse(this.root.dataset.formType);\n        } catch (error) {\n            console.warn('Could not parse formType');\n            return false;\n        }\n        if (this._isCardsForm()) {\n            try {\n                const values = JSON.parse(this.formType.value);\n                // keys = values of the card radios\n                this.cardRecordTypes = {\n                    [this.CONSTANTS.cardTypeInsieme]: values[0],\n                    [this.CONSTANTS.cardTypeConadCard]: values[1],\n                    [this.CONSTANTS.cardTypePrepagata]: values[1],\n                    [this.CONSTANTS.cardTypePaymentServices]: values[2],\n                };\n            } catch (error) {\n                console.warn('Could not parse formType values');\n                return false;\n            }\n            if (!this.root.hasAttribute('data-ccrt-by-card')) {\n                console.warn('Missing ccrt by card');\n                return false;\n            }\n            try {\n                this.ccrtByCard = JSON.parse(this.root.dataset.ccrtByCard);\n            } catch (error) {\n                console.warn('Could not parse ccrtByCard');\n                return false;\n            }\n        }\n        try {\n            this.invisibleCCRTMap = JSON.parse(this.root.dataset.invisibleCcrtMap);\n        } catch (error) {\n            console.warn('Could not parse invisibleCCRTMap');\n            return false;\n        }\n        try {\n            this.invisibleThematicMap = JSON.parse(this.root.dataset.invisibleThematicMap);\n        } catch (error) {\n            console.warn('Could not parse invisibleThematicMap');\n            return false;\n        }\n        this.thankyouPageUrl = this.root.dataset.thankyouPageUrl;\n        this.eanTooltipText = this.root.dataset.eanTooltipText;\n        try {\n            this.initiativeBannerMap = JSON.parse(this.root.dataset.initiativeBannerMap || '{}');\n        } catch (error) {\n            console.warn('Could not parse initiativeBannerMap');\n            this.initiativeBannerMap = {};\n        }\n\n        return true;\n    }\n\n    _getElements() {\n        this.form = this._dEl('form');\n        this.cardRadios = this._dEl('cardRadios');\n        this.ccRequestType = this._dEl('ccRequestType');\n        this.formSectionCCRT = this._dEl('formSectionCCRT');\n        this.privacyData = this._dEl('privacyData');\n        this.privacyDataText = this._dEl('privacyDataText');\n        this.privacyDataReadAll = this._dEl('readAll');\n        this.send = this._dEl('send');\n        this.cancel = this._dEl('cancel');\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'submit',\n            (e) => {\n                e.preventDefault();\n            },\n            this.form\n        );\n        // Only prizes reset privacy/CTAs before the thematic-specific listener.\n        // Other forms (e.g. stores) keep them visible when the thematic changes.\n        this._addListener(\n            'rcInputChanged',\n            (e) => {\n                if (this._isPrizesForm() && e.target?.classList?.contains(this._el('thematic'))) {\n                    this._hidePrivacyAndCtas();\n                }\n            },\n            this.form,\n            { capture: true }\n        );\n        if (this.cardRadios) {\n            this._addListener(\n                'rcInputChanged',\n                async (e) => {\n                    if (!this.ccRequestType) return;\n                    if (this._isCardsForm()) {\n                        this._setPrivacyText();\n                    }\n                    const selectObj = this.register.getClass(this.ccRequestType);\n                    const ccrtOptions = this.ccrtByCard[e.data.value] || null;\n                    if (ccrtOptions == null) {\n                        console.warn('Could not set ccRequestType options');\n                        e.stopPropagation();\n                        return;\n                    }\n                    emptyElement(this.formSectionCCRT);\n                    this._hidePrivacyAndCtas();\n                    await selectObj.reset();\n                    await selectObj.setItems(ccrtOptions);\n                    selectObj.enable();\n                    e.stopPropagation();\n                },\n                this.cardRadios\n            );\n        }\n        if (this.ccRequestType) {\n            this._addListener(\n                'rcInputChanged',\n                (e) => {\n                    const ccrt = e.data.value;\n                    this._loadCCRT(ccrt);\n                    if (this._isCardsForm()) {\n                        this._setPrivacyText();\n                    }\n                    e.stopPropagation();\n                },\n                this.ccRequestType\n            );\n        }\n        this._addListener(\n            'click',\n            (event) => {\n                event.preventDefault();\n                this.privacyData.classList.add(this._elMod('privacyData', 'readAll'));\n                event.stopPropagation();\n            },\n            this.privacyDataReadAll\n        );\n        this._addListener(\n            'click',\n            () => {\n                window.history.back();\n            },\n            this.cancel\n        );\n        this._addListener(\n            'click',\n            async () => {\n                if (!(await this._getFormValidity())) {\n                    this._showStoreValidity();\n                    this._scrollToFirstInvalid();\n                    this._showStatusError();\n                    return;\n                }\n\n                this._hideStatusError();\n                this._sendCustomerCare();\n                this.trackingManager.track(this.root, {\n                    event: 'InviaFormContatto',\n                    CustomLink: 'Click su Invia Form di contatto',\n                });\n            },\n            this.send\n        );\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('selectedStore', (path, data) => {\n            if (!data.anacanId) {\n                this.selectedStoreId = null;\n                return;\n            }\n            this.selectedStoreId = data.anacanId;\n            this._setPrivacyText(data.codiceCooperativa);\n        });\n    }\n\n    async _loadCCRT(ccrt, noLoader = false) {\n        this._hidePrivacyAndCtas();\n        const card = !this._isCardsForm() ? null : await this._getCardRadioValue();\n        await this._loadFormSectionCCRT(ccrt, card, noLoader, () => this._doFormLogic(ccrt));\n    }\n\n    async _loadFormSectionCCRT(ccrt, card = null, noLoader = false, afterLoad = null) {\n        if (!noLoader) openLoader('main');\n        const loaderParams = card != null ? { ccrt, card } : { ccrt };\n        const data = await this._callLoader(loaderParams);\n        if (data == null) {\n            console.warn('Null response for form section');\n            emptyElement(this.formSectionCCRT);\n            this._hidePrivacyAndCtas();\n            return;\n        }\n        this._setFormSection(data, this.formSectionCCRT);\n        afterLoad?.(); // runs while the loader overlay is still visible\n        await delay(this.CONSTANTS.delayInMillis);\n        if (!noLoader) closeLoader('main');\n    }\n\n    async _loadSubFormSectionCCRTT(ccrt, ccrtt, subsection) {\n        openLoader('main');\n        const data = await this._callLoader({ ccrt, ccrtt });\n        if (data == null) {\n            console.warn('Null response for form subsection');\n            emptyElement(subsection);\n            return;\n        }\n        this._setFormSection(data, subsection);\n        await delay(this.CONSTANTS.delayInMillis);\n        closeLoader('main');\n    }\n\n    async _getFormValidity() {\n        // must run first: it toggles the required flag that checkValidity() then reads\n        const prizeCodeOrPinValidity = this._validatePrizeCodeOrPin();\n        const browserValidity = this.form.checkValidity();\n        const filesValidity = await this._validFiles();\n        const storeValidity = !!this.selectedStoreId || this.formType.value === this.CONSTANTS.formTypeInsurances;\n        return browserValidity && filesValidity && storeValidity && prizeCodeOrPinValidity;\n    }\n\n    _showStoreValidity() {\n        const storeObj = this.register.getClass(this._dEl('storeDataSelectStore'));\n        if (storeObj) storeObj.checkMissingField();\n    }\n\n    async _scrollToFirstInvalid() {\n        //scroll to first input invalid\n        const browserValidity = this.form.checkValidity();\n        if (!browserValidity) {\n            const first = this.form.querySelector('input:invalid,textarea:invalid');\n            if (first) {\n                setTimeout(() => {\n                    first.scrollIntoView({\n                        block: 'center',\n                    });\n                }, 300);\n                return;\n            }\n        }\n        //scroll to files\n        const filesValidity = await this._validFiles();\n        if (!filesValidity) {\n            setTimeout(() => {\n                this._dEl('fileUpload').scrollIntoView({\n                    block: 'center',\n                });\n            }, 300);\n            return;\n        }\n        //scroll to store\n        const storeValidity = !!this.selectedStoreId;\n        if (!storeValidity) {\n            setTimeout(() => {\n                this._dEl('storeDataSelectStore').scrollIntoView({\n                    block: 'center',\n                });\n            }, 300);\n            return;\n        }\n    }\n\n    async _sendCustomerCare() {\n        openLoader('main');\n\n        try {\n            const formData = await this._getFormData();\n            await this.apiProvider.customerCare(formData);\n            if (!this.thankyouPageUrl) {\n                console.warn('Missing thankyou page url');\n                return;\n            }\n            const url = new URL(this.thankyouPageUrl, window.origin);\n            window.location = url.href;\n        } catch (error) {\n            console.warn('Could not send customer care request');\n            generateFeedback({\n                text: 'Errore generico',\n                semanticType: 2,\n            });\n        } finally {\n            setTimeout(() => {\n                closeLoader('main');\n            }, 200);\n        }\n    }\n\n    async _getFormData() {\n        const data = new FormData(this.form);\n\n        // append fields with custom logic\n        const recordType = this._isCardsForm() ? await this._getCardsFormRecordType() : this.formType.value;\n        if (!!recordType) data.append(this.CONSTANTS.paramRecordType, recordType);\n\n        const visibleCCRT = await this._getCCRTValue();\n        const tipo = visibleCCRT ? visibleCCRT : await this._getInvisibleCCRT();\n        if (!!tipo) data.append(this.CONSTANTS.paramTipo, tipo);\n\n        const visibleThematic = await this._getThematicValue();\n        const argomento = visibleThematic ? visibleThematic : await this._getInvisibleThematic();\n        if (!!argomento) data.append(this.CONSTANTS.paramArgomento, argomento);\n\n        if (this.selectedStoreId) data.append(this.CONSTANTS.paramStoreId, this.selectedStoreId);\n\n        // use fidelity 2 if defined\n        if (data.has('codiceCartaFidelity2')) {\n            data.set('codiceCartaFidelity', data.get('codiceCartaFidelity2'));\n        }\n\n        // delete fields to ignore\n        for (const ignored of this.IGNORE_FORM_FIELDS) {\n            data.delete(ignored);\n        }\n\n        this._normalizeCustomerCarePayload(data);\n\n        return data;\n    }\n\n    _normalizeCustomerCarePayload(data) {\n        // Accept content authored with the first CPO-638 field names, but always\n        // send the exact lower-camel-case names defined by the ESB contract.\n        const aliases = {\n            ConcorsoIniziativa: 'concorsoIniziativa',\n            CodiceConcorso: 'codiceConcorso',\n            NomeConcorsoInziativa: 'nomeConcorsoIniziativa',\n            NomeConcorsoIniziativa: 'nomeConcorsoIniziativa',\n            NomeCollection: 'nomeCollection',\n        };\n        for (const [legacyName, contractName] of Object.entries(aliases)) {\n            if (!data.has(legacyName)) continue;\n            if (!data.has(contractName)) data.set(contractName, data.get(legacyName));\n            data.delete(legacyName);\n        }\n\n        if (data.get('concorsoIniziativa')?.toLowerCase() === 'altro') {\n            data.set('concorsoIniziativa', 'Altro');\n        }\n\n        // Optional multipart fields must be absent, not present as an empty part:\n        // the ESB validators parse a present date/code even when its value is blank.\n        const emptyKeys = [];\n        for (const [key, value] of data.entries()) {\n            if (typeof value === 'string' && !value.trim()) emptyKeys.push(key);\n            if (value instanceof File && value.size === 0) emptyKeys.push(key);\n        }\n        for (const key of emptyKeys) data.delete(key);\n    }\n\n    _validFiles() {\n        const fileUpload = this._dEl('fileUpload');\n        if (!fileUpload) return true;\n        const fileUploadObj = this.register.getClass(fileUpload);\n        fileUploadObj.resetMaxFilesValidation();\n        return fileUploadObj.isValid();\n    }\n\n    async _initForm() {\n        try {\n            openLoader('main');\n\n            // load user\n            const user = await this.userService.getUser();\n            await this._setPrivacyText();\n\n            // load extra fields form data\n            const data = await this._getExtraFieldsFromData();\n            let toPopulate = data;\n            if (user) {\n                toPopulate = { ...toPopulate, ...user, codiceCartaFidelity: user.cartaFedelta };\n            }\n\n            // pre-populate the form\n            jsonToForm(this.form, toPopulate);\n        } catch (e) {\n            console.warn(e);\n        } finally {\n            closeLoader('main');\n        }\n    }\n\n    _showPrivacyAndCtas() {\n        this._dEl('formSectionPrivacy')?.toggleAttribute('hidden', false);\n        this.root.classList.add(this._mod('showBottom'));\n    }\n    _hidePrivacyAndCtas() {\n        this._dEl('formSectionPrivacy')?.toggleAttribute('hidden', true);\n        this.root.classList.remove(this._mod('showBottom'));\n    }\n    _showMessageDataSection() {\n        this._dEl('messageDataSection')?.classList.remove(this._elMod('messageDataSection', 'hidden'));\n        this.register.getClass(this._dEl('messageText'))?.enable();\n        this.register.getClass(this._dEl('fileUpload'))?.enable();\n    }\n    _hideMessageDataSection() {\n        this._dEl('messageDataSection')?.classList.add(this._elMod('messageDataSection', 'hidden'));\n        this.register.getClass(this._dEl('messageText'))?.disable();\n        this.register.getClass(this._dEl('fileUpload'))?.disable();\n    }\n    _showFileUpload() {\n        const el = this._dEl('fileUpload');\n        el?.classList.remove(this._elMod('fileUpload', 'hidden'));\n        this.register.getClass(el)?.enable();\n    }\n    _hideFileUpload() {\n        const el = this._dEl('fileUpload');\n        el?.classList.add(this._elMod('fileUpload', 'hidden'));\n        this.register.getClass(el)?.disable();\n    }\n\n    async _callLoader({ ccrt, ccrtt, card }) {\n        const url = this.loaderEndpoint;\n        const data = {\n            ccrt,\n            ccrtt,\n            card,\n        };\n        try {\n            const html = await this.apiProvider.loaderGet(url, data);\n            return html;\n        } catch (error) {\n            console.error(error);\n        }\n        return null;\n    }\n\n    _setFormSection(html, section) {\n        emptyElement(section);\n\n        const element = htmlToElement(html);\n\n        for (const child of [...element.children]) {\n            section.append(child);\n        }\n    }\n\n    _isCardsForm() {\n        return this.formType && this.formType.value && this.formType.value[0] === '[';\n    }\n\n    async _getCardsFormRecordType() {\n        if (!this._isCardsForm() || !this.cardRecordTypes) return null;\n        return this.cardRecordTypes[await this._getCardRadioValue()] || null;\n    }\n\n    _getCardRadioValue() {\n        if (!this.cardRadios) return null;\n        const radioObj = this.register.getClass(this.cardRadios);\n        return radioObj.getValue();\n    }\n\n    _getThematicValue() {\n        const thematic = this._dEl('thematic');\n        if (!thematic) return null;\n        const obj = this.register.getClass(thematic);\n        return obj.getValue() || null;\n    }\n\n    _getCCRTValue() {\n        const ccrtEl = this._dEl('ccRequestType');\n        if (!ccrtEl) return null;\n        const obj = this.register.getClass(ccrtEl);\n        return obj.getValue() || null;\n    }\n\n    _getInvisibleCCRT() {\n        if (!this.formType || !this.formType.value) return null;\n        return this.invisibleCCRTMap[this.formType.value];\n    }\n\n    async _getInvisibleThematic() {\n        const FALLBACK = null;\n        if (!this.formType || !this.formType.value) return FALLBACK;\n\n        // app/site form treated separately\n        if (this.formType.value === this.CONSTANTS.formTypeAppSite) {\n            const ccrt = await this._getCCRTValue();\n            let thematics;\n            try {\n                thematics = JSON.parse(this.invisibleThematicMap[this.formType.value]);\n            } catch (error) {\n                console.warn(\n                    `Could not parse thematics for formType ${this.formType.value}: ${\n                        this.invisibleThematicMap[this.formType.value]\n                    }`\n                );\n                return FALLBACK;\n            }\n            if (ccrt === this.CONSTANTS.ccrtReqInfo) return thematics[0] || FALLBACK;\n            if (ccrt === this.CONSTANTS.ccrtReqTechSupport) return thematics[1] || FALLBACK;\n        }\n\n        // stores form treated separately\n        if (this.formType.value === this.CONSTANTS.formTypeStores) {\n            const ccrt = await this._getCCRTValue();\n            if (ccrt === this.CONSTANTS.ccrtComplPayments)\n                return this.invisibleThematicMap[this.formType.value] || FALLBACK;\n            return FALLBACK;\n        }\n\n        // other forms\n        return this.invisibleThematicMap[this.formType.value] || FALLBACK;\n    }\n\n    _showStatusError() {\n        if (this.statusMsg) return;\n        this.statusMsg = runTemplate(statusMsgHtml, {\n            uniqueId: this.root.id,\n            message: 'Invio del form non riuscito. Alcuni campi non sono compilati correttamente.',\n        });\n        this.root.appendChild(this.statusMsg);\n    }\n\n    _hideStatusError() {\n        this.statusMsg?.remove();\n        this.statusMsg = null;\n    }\n\n    async _getExtraFieldsFromData() {\n        // Step 1: Recupero i parametri dall'URL\n        const params = new URLSearchParams(window.location.search);\n        const ccRequestType = params.get('ccRequestType');\n        const codiceErrore = params.get('codiceErrore');\n        const descrizioneErroreBase64Url = params.get('descrizioneErrore');\n        const dispositivoTelefono = params.get('dispositivoTelefono');\n\n        // if no ccRequestType, return.. we don't need to handle automatic loading\n        if (!ccRequestType) return {};\n\n        // function to decode base64Url\n        function base64UrlDecode(base64Url) {\n            let base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n            while (base64.length % 4 !== 0) {\n                base64 += '=';\n            }\n            let binaryString = atob(base64);\n            let bytes = new Uint8Array(binaryString.length);\n            for (let i = 0; i < binaryString.length; i++) {\n                bytes[i] = binaryString.charCodeAt(i);\n            }\n            return new TextDecoder().decode(bytes);\n        }\n\n        // Decodifica senza limitazione di lunghezza\n        let descrizioneErrore = '';\n        if (descrizioneErroreBase64Url) {\n            descrizioneErrore = base64UrlDecode(descrizioneErroreBase64Url);\n        }\n\n        // select ccRequestType - we need to force due to internal logic\n        if (ccRequestType) {\n            let ccrt = ccRequestType;\n            const select = this.register.getClass(this._dEl('ccRequestType'));\n            // load ccrt\n            if (select) {\n                select.setSelected(ccrt);\n                await this._loadCCRT(ccrt, true);\n            }\n        }\n\n        // populate form\n        return {\n            ccRequestType,\n            codiceErrore,\n            informazioniTecnicheErrore: descrizioneErrore,\n            dispositivoTelefono,\n        };\n    }\n}\n\nObject.assign(ContactForm.prototype, contactFormPrivacy, contactFormLogic);\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport { getRegister } from '../../../../../libs/register';\nimport { PRIVATE_TAG_QUERY_PARAM_NAME, TAG_QUERY_PARAM_ALLOWED_VALUES, TAG_QUERY_PARAM_NAME } from '../../../../../libs/constants';\nimport { getQueryParams, updateUrlQueryParams } from '../../../../../libs/utils';\n\nexport default class Filters extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.flowManager = getFlowManager();\n        this.register = getRegister();\n        this.useFilterTags = root.hasAttribute('data-use-filter-tags');\n        if (this.useFilterTags) {\n            this._doFilterTagsLogic();\n            return;\n        }\n        this._doDefaultFiltersLogic();\n    }\n\n    _doDefaultFiltersLogic() {\n        this.results = this._dEl('results', true);\n        this.count = this._dEl('count');\n        this.cta = this._dEl('cta');\n\n        this._addEventListeners();\n        this._addStoreListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            () => {\n                this.flowManager.startFlow({\n                    flowName: 'filters',\n                    flowSteps: [{ name: 'listing-filters' }],\n                });\n            },\n            this.cta\n        );\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('filterResults',  (path, data) => {\n            if (!data.results) return;\n            this._setResultsText(data.results);\n        });\n        this._addStoreListener('filterCountMob',  (path, data) => {\n            if (!data.count) return;\n            this._setCount(data.count);\n        });\n    }\n\n    _setResultsText(text) {\n        this.results.forEach((el) => {\n            el.innerText = text;\n        });\n    }\n\n    _setCount(count) {\n        this.count.innerText = count <= 0 ? '' : `(${count})`;\n    }\n\n    _doFilterTagsLogic() {\n        this.filterTagsForm = this._dEl('filterTagsForm');\n        this.filterTags = [...this._dEl('filter-tag', true)];\n\n        // a selected tag cannot be unselected\n        this.filterTags.forEach((tag) => {\n            tag.querySelector('input').addEventListener('click', (e) => {\n                if (!e.currentTarget.checked) {\n                    e.preventDefault();\n                    e.stopPropagation();\n                }\n            },);\n        })\n        // prevent default form submit behavior\n        this._addListener(\n            'submit',\n            (e) => {\n                e.preventDefault();\n            },\n            this.filterTagsForm\n        );\n        // handle filter tags change\n        this._addListener(\n            'rcInputChanged',\n            (e) => {\n                const { value } = e.data;\n                if (value) {\n                    // only one tag can be selected at once\n                    this.filterTags.filter((tag) => tag.querySelector('input').value !== value).forEach((tag) => {\n                        this.register.getClass(tag).unselect(true);\n                    });\n                    // emit listing filters\n                    this._emit('rt111Filters', {\n                        filters: {\n                            [PRIVATE_TAG_QUERY_PARAM_NAME]: value,\n                        },\n                    });\n                    updateUrlQueryParams({\n                        [TAG_QUERY_PARAM_NAME]: TAG_QUERY_PARAM_ALLOWED_VALUES.has(value) ? value : null,\n                    });\n                }\n            },\n            this.filterTagsForm\n        );\n\n        // init selected tag from query string parameter\n        const queryParams = getQueryParams();\n        if (queryParams[TAG_QUERY_PARAM_NAME] && TAG_QUERY_PARAM_ALLOWED_VALUES.has(queryParams[TAG_QUERY_PARAM_NAME])) {\n            const selectedTag = this.filterTags.find((tag) => tag.control.value === queryParams[TAG_QUERY_PARAM_NAME]);\n            if (selectedTag) {\n                this._emit('rt111Filters', {\n                    filters: {\n                        [PRIVATE_TAG_QUERY_PARAM_NAME]: selectedTag.control.value,\n                    },\n                });\n                this.filterTags.filter((tag) => tag.control.value !== selectedTag.control.value).forEach((tag) => {\n                    this.register.getClass(tag).unselect(false);\n                });\n                this.register.getClass(selectedTag).select(false);\n            }\n        }\n    }\n}\n\n\n","import { format } from 'date-fns';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport Component from '../../../../../libs/components/component';\nimport { formToJSON } from '../../../../../libs/form-to-json';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getRegister } from '../../../../../libs/register';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { flowManager } from '../../../../../libs/flow-manager';\nimport { closeLoader, generateTooltip, openLoader } from '../../../../../libs/utils';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport * as ctaHtml from '../rt002-cta/rt002-cta.html';\nimport './style.scss';\n\nexport default class FormPremio extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.register = getRegister();\n        this.apiProvider = getApiProvider();\n        this.userService = getUserService();\n        this.contestName = this.root.dataset.contestName;\n        this.positiveUrl = this.root.dataset.positiveUrl;\n        this.negativeUrl = this.root.dataset.negativeUrl;\n        this.trackingManager = getTrackingManager();\n        this.privacySelectorType = this.root.dataset.privacySelectorType;\n        this.isTooltipVisible = false;\n\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        this._getElements();\n        if (this.tooltipIcon) {\n            this._initTooltip();\n        }\n        if (!window.wcmmodeDisabled) {\n            this.form.classList.add('rt065-form-premio__form--visible');\n            this.privacyData.classList.remove(this._elMod('privacyData', 'hidden'));\n        } else {\n            openLoader('main');\n            this.user = await this.userService.getUser();\n            if (this.user) {\n                this._populateUserForm();\n                this._setInformativeLink();\n                this._setContacts();\n                this._addEventListeners();\n                closeLoader('main');\n                this.form.classList.add('rt065-form-premio__form--visible');\n            } else {\n                console.log('Anonymous user');\n                if (this.loginPageUrl) {\n                    const redirectUrl = new URL(this.loginPageUrl);\n                    redirectUrl.searchParams.set('cb', window.location);\n                    window.location = redirectUrl.href;\n                }\n            }\n        }\n    }\n\n    async _setInformativeLink() {\n        if (!this.privacyData) {\n            return;\n        }\n        const informativaLink = this.privacyData.querySelector('a[href=\"#informativa\"]');\n        if (!informativaLink) {\n            return;\n        }\n        const informativa = await this._getInformativa();\n        informativaLink.href = informativa.linkPdfInformativa;\n    }\n\n    _getElements() {\n        this.loginPageUrl = this.root.dataset.loginLink;\n        this.privacyDataReadAll = this._dEl('readAll');\n        this.privacyData = this._dEl('privacyData');\n        this.form = this._dEl('form');\n        this.sendCode = this._dEl('sendCode');\n        this.pinCode = this._dEl('pinCode');\n        this.errorCodeField = this.root.getElementsByClassName('rt034-pin-code-field__error');\n        this.errorSendCodeGeneric = this._dEl('errorSendCode');\n        this.incorrectPinErrorLabel = this.root.dataset.incorrectPinErrorLabel;\n        this.alreadyUsedPinErrorLabel = this.root.dataset.alreadyUsedPinErrorLabel;\n        this.tooltipText = this.root.dataset.tooltipText;\n        this.tooltipIcon = this._dEl('tooltipIcon');\n    }\n\n    _addEventListeners() {\n        this._addStoreListener(window.location.pathname + '/userHasAlreadyPlayedGdi',\n            (path, data) => {\n                const privacyData = this._dEl('privacyData');\n                if (this.contestName == 'giroDItalia') {\n                    if (data == false) {\n                        privacyData.classList.remove(this._elMod('privacyData', 'hidden'));\n                    } else {\n                        privacyData.remove();\n                    }\n                } else {\n                    privacyData.classList.remove(this._elMod('privacyData', 'hidden'));\n                }\n            }\n        );\n        this._addListener(\n            'rcInputChanged',\n            () => {\n                this._checkSendStatus();\n            },\n            this.form\n        );\n        if (this.contestName == 'giroDItalia') {\n            this._addListener(\n                'rcInputChanged',\n                () => {\n                    this.form.elements.code.value = this.form.elements.code.value.toUpperCase();\n                },\n                this.pinCode\n            );\n        }\n        this._addListener(\n            'click',\n            (event) => {\n                event.preventDefault();\n                this._sendCode();\n            },\n            this.sendCode\n        );\n        /* show/hide tooltip if present */\n        if (this.tooltipIcon) {\n\n            /*show tooltip if is clicked*/\n            this._addListener(\n                'click',\n                (event) => {\n                    event.stopPropagation();\n                    this.isTooltipVisible = !this.isTooltipVisible;\n                    this._callTooltip(this.isTooltipVisible);\n                },\n                this.tooltipIcon\n            );\n            \n            /* click outside the tooltip icon */\n            this._addListener(\n                'click',\n                (event) => {\n                    const target = event.target;\n                    if (target.closest(`${this._el('tooltipIcon', true)}`) && this.isTooltipVisible){\n                        this.isTooltipVisible = false;\n                        this._callTooltip(false);\n                    }\n                },\n                document\n            );\n        }\n    }\n\n    async _sendCode() {\n        let resultSendCode;\n        try {\n            let data = {\n                ...formToJSON(this.form, true),\n            };\n\n            data.loyaltyId = this.user.cartaFedelta;\n\n            const birthDate = data['birthDate'];\n            if (birthDate) {\n                const [day, month, year] = birthDate.split(\"-\").map(Number);\n                const date = new Date(year, month - 1, day);\n                data.birthDate = format(date, 'yyyy-MM-dd HH:mm');\n            }\n\n            openLoader('main');\n            resultSendCode = await this.apiProvider.sendPinCode(data, this.contestName);\n\n            if (\n                resultSendCode.errorCode &&\n                resultSendCode.errorCode == '0' &&\n                resultSendCode.errorDescription == 'Code burned'\n            ) {\n                if (\n                    this.errorCodeField[0]\n                        .closest('.rt034-pin-code-field')\n                        .classList.contains('rt034-pin-code-field--errorState')\n                ) {\n                    this.errorCodeField[0]\n                        .closest('.rt034-pin-code-field')\n                        .classList.remove('rt034-pin-code-field--errorState');\n                }\n                if (this.contestName == 'giroDItalia') {\n                    let redirectUrl;\n                    if (resultSendCode.prize != null && resultSendCode.prize != '') {\n                        redirectUrl = new URL(this.positiveUrl);\n                        sessionStorage.setItem('gdiPrize', JSON.stringify({\n                            title: resultSendCode.prize,\n                            description: resultSendCode.prizeDescription,\n                            image: resultSendCode.image, utenzaId: this.user.utenzaId\n                        }));\n                    } else {\n                        redirectUrl = new URL(this.negativeUrl);\n                    }\n                    window.location = redirectUrl.href;\n                } else {\n                    const redirectUrl = new URL(this.sendCode.href);\n                    redirectUrl.searchParams.set('result', 'success');\n                    window.location = redirectUrl.href;\n                }\n            }\n        } catch (error) {\n            switch (error.codice) {\n                case 'IS_ERR:CODICE_GIA_USATO': {\n                    if (\n                        !this.errorCodeField[0]\n                            .closest('.rt034-pin-code-field')\n                            .classList.contains('rt034-pin-code-field--errorState')\n                    ) {\n                        this.errorCodeField[0]\n                            .closest('.rt034-pin-code-field')\n                            .classList.add('rt034-pin-code-field--errorState');\n                    }\n                    this.errorCodeField[0].innerHTML = this.alreadyUsedPinErrorLabel;\n                    break;\n                }\n                case 'IS_ERR:CODICE_GIA_USATO_DA_UTENTE': {\n                    if (\n                        !this.errorCodeField[0]\n                            .closest('.rt034-pin-code-field')\n                            .classList.contains('rt034-pin-code-field--errorState')\n                    ) {\n                        this.errorCodeField[0]\n                            .closest('.rt034-pin-code-field')\n                            .classList.add('rt034-pin-code-field--errorState');\n                    }\n                    this.errorCodeField[0].innerHTML = this.alreadyUsedPinErrorLabel;\n                    break;\n                }\n                case 'IS_ERR:CODICE_NON_VALIDO': {\n                    if (\n                        !this.errorCodeField[0]\n                            .closest('.rt034-pin-code-field')\n                            .classList.contains('rt034-pin-code-field--errorState')\n                    ) {\n                        this.errorCodeField[0]\n                            .closest('.rt034-pin-code-field')\n                            .classList.add('rt034-pin-code-field--errorState');\n                    }\n                    this.errorCodeField[0].innerHTML = this.incorrectPinErrorLabel;\n                    break;\n                }\n                case 'IS_ERR:CREAZIONE_FALLITA': {\n                    if (!this.errorSendCodeGeneric.innerHTML) {\n                        this.errorSendCodeGeneric.innerHTML = 'Indirizzo email o numero di telefono non validi';\n                    }\n                    break;\n                }\n                case 'IS_ERR:BLOCKED_USER': {\n                    if (!this.errorSendCodeGeneric.innerHTML) {\n                        this.errorSendCodeGeneric.innerHTML = 'Utenza temporaneamente bloccata, riprova tra 48 ore';\n                    }\n                    break;\n                }\n                default: {\n                    if (this.contestName != 'giroDItalia') {\n                        if (!this.errorSendCodeGeneric.innerHTML) {\n                            this.errorSendCodeGeneric.innerHTML = 'Errore generico invio pin concorso';\n                        }\n                    } else {\n                        this.trackingManager.track(this.root,\n                            {\n                                event: 'pageview',\n                                funnel: {\n                                    nomeFunnel: 'Giro Italia',\n                                    stepFunnel: 'Errore generico concorso'\n                                }\n                            });\n                        flowManager.startFlow({\n                            flowName: 'open-generic-error-popup',\n                            flowSteps: [{ name: 'gdi-form-generic-error' }],\n                        });\n                    }\n                    break;\n                }\n            }\n            console.error(error.codice + ' ' + error.errore);\n        }\n\n        closeLoader('main');\n    }\n\n    async _initTooltip() {\n        this.tooltipId = await generateTooltip(this.tooltipText, this._el('tooltip'));\n    }\n\n    _callTooltip(show = true) {\n        const event = new CustomEvent('showTooltip', { bubbles: true });\n        event.data = {\n            tooltipIcon: this.tooltipIcon,\n            show: show,\n        };\n        document.getElementById(this.tooltipId).dispatchEvent(event);\n    }\n\n    _checkSendStatus() {\n        const sendObj = this.register.getClass(this.sendCode);\n        sendObj.setStatus(this._getFormValidity() ? 'enabled' : 'disabled');\n    }\n\n    _getFormValidity() {\n        if (!this.form.checkValidity()) return false;\n        const formData = new FormData(this.form);\n        if (this.privacySelectorType != 'checkbox') {\n            return formData.get('privacy') == 'S';\n        } else {\n            return formData.get('privacy') ? formData.get('privacy') == 'true' : true;\n        }\n    }\n\n    _setContacts() {\n        /* phone */\n        const phoneEl = this._dEl('phone');\n        const phone = phoneEl?.dataset.phone;\n        if (phoneEl && phone) {\n            const phoneData = {\n                extraClasses: this._el('link'),\n                variant: 'link',\n                type: 'none',\n                label: phone,\n                link: {\n                    href: `tel:${phone}`,\n                    target: '_blank',\n                },\n                size: 'small',\n            };\n            const phoneCta = runTemplate(ctaHtml, phoneData);\n            phoneEl.appendChild(phoneCta);\n        }\n        /* mail */\n        const mailEl = this._dEl('mail');\n        const mail = mailEl?.dataset.mail;\n        if (mailEl && mail) {\n            const mailData = {\n                extraClasses: this._el('link'),\n                variant: 'link',\n                type: 'none',\n                label: mail,\n                link: {\n                    href: `mailto:${mail}`,\n                    target: '_blank',\n                },\n                size: 'small',\n            };\n            const mailCta = runTemplate(ctaHtml, mailData);\n            mailEl.appendChild(mailCta);\n        }\n    }\n\n    _populateUserForm() {\n        let nameField = document.getElementsByName('name');\n        if (nameField.length >= 1) {\n            let parentDivName = nameField[0].closest('.rt008-text-field');\n            parentDivName.classList.add('rt008-text-field--locked');\n            nameField[0].value = this.user.nome;\n            nameField[0].disabled = true;\n        }\n        let surnameField = document.getElementsByName('surname');\n        if (surnameField.length >= 1) {\n            let parentDivSurname = surnameField[0].closest('.rt008-text-field');\n            parentDivSurname.classList.add('rt008-text-field--locked');\n            surnameField[0].value = this.user.cognome;\n            surnameField[0].disabled = true;\n        }\n        let emailField = document.getElementsByName('email');\n        if (emailField.length >= 1) {\n            let parentDivSurname = emailField[0].closest('.rt008-text-field');\n            parentDivSurname.classList.add('rt008-text-field--locked');\n            emailField[0].value = this.user.email;\n            emailField[0].disabled = true;\n        }\n        if (this.user.dataNascita) {\n            let birthDateField = document.getElementsByName('birthDate');\n            if (birthDateField.length >= 1) {\n                let parentDivBirthDate = birthDateField[0].closest('.rt009-date-picker');\n                parentDivBirthDate.classList.add('rt009-date-picker--locked');\n                birthDateField[0].value = this.user.dataNascita;\n                birthDateField[0].disabled = true;\n            }\n        }\n        if (this.user.telefonoCellulare) {\n            let telField = document.getElementsByName('mobilePhone');\n            if (telField.length >= 1) {\n                let parentDivTel = telField[0].closest('.rt008-text-field');\n                parentDivTel.classList.add('rt008-text-field--locked');\n                telField[0].value = this.user.telefonoCellulare;\n                telField[0].disabled = true;\n            }\n        }\n    }\n\n    async _getInformativa() {\n        return await this.apiProvider.getInformativa({\n            cooperativa: this.user.newMappedCooperative,\n            card: this.user.cartaFedelta || this.user.conadCard,\n        });\n    }\n}\n","import { getApiProvider } from '../../../../../libs/api-provider';\nimport Component from '../../../../../libs/components/component';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { closeLoader, openLoader } from '../../../../../libs/utils';\n\nimport './style.scss';\n\nexport default class ResultPremio extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.apiProvider = getApiProvider();\n        this.contestName = this.root.dataset.contestName;\n        this.positiveUrl = this.root.dataset.positiveUrl;\n        this.negativeUrl = this.root.dataset.negativeUrl;\n        this.gdiPrize = null;\n        this.homeLink = this._dEl('homeLink');\n        this.playCodeLink = this._dEl('playCodeLink');\n        this.enterYourDetailsLink = this._dEl('enterYourDetailsLink');\n\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        // if it is concorso Berti or it is in edit mode, show the elements of the component (editorial image, editorial title, editorial text and editorial ctas)\n        if (this.contestName != 'giroDItalia' || !window.wcmmodeDisabled) {\n            this.homeLink.classList.remove(this._elMod('homeLink', 'hidden'));\n            this.playCodeLink.classList.remove(this._elMod('playCodeLink', 'hidden'));\n            this.root.classList.remove(this._mod('hidden'));\n            return;\n        }\n\n\n        // if not logged, don't show the content of the component \n        const userService = getUserService();\n        const user = await userService.getUser();\n        if (!user) {\n            return;\n        }\n\n        /* FROM HERE IT IS GIRO D'ITALIA CONTEST! */\n        let gdiPrizeString = sessionStorage.getItem('gdiPrize');\n        // if it's a loss \n        if (!gdiPrizeString || gdiPrizeString == '') {\n            // if not in the loss page, redirect to it \n            if (!this._compareUrlsIgnoringQuery(window.location.href, this.negativeUrl)) {\n                window.location.href = this.negativeUrl;\n                return;\n            }\n            this.homeLink.classList.remove(this._elMod('homeLink', 'hidden'));\n            this.playCodeLink.classList.remove(this._elMod('playCodeLink', 'hidden'));\n            this.root.classList.remove(this._mod('hidden'));\n            return;\n        }\n        /* FROM HERE IS GIRO D'ITALIA CONTEST AND WINNER! */\n        this.gdiPrize = JSON.parse(gdiPrizeString);\n\n        // check if the session storage item is relative to the logged winner, or user is in the wrong page  \n        if (!this.gdiPrize?.utenzaId || user.utenzaId != this.gdiPrize.utenzaId) {\n            return;\n        }\n        // if it is not in the winner page, redirect to it \n        if (!this._compareUrlsIgnoringQuery(window.location.href, this.positiveUrl)) {\n            window.location.href = this.positiveUrl;\n            return;\n        }\n        // set title of the prize \n        const title = this._dEl('title');\n        if (title && this.gdiPrize.title) {\n            title.innerHTML = title.innerHTML.replace(/{prizeTitle}/g, this.gdiPrize.title);\n        }\n        // set the description of the prize \n        const description = this._dEl('text');\n        if (description && this.gdiPrize.description) {\n            description.innerHTML = description.innerHTML.replace(/{prizeText}/g, this.gdiPrize.description);\n        }\n        // set the image of the prize \n        const image = this._dEl('image');\n        if (image && this.gdiPrize.image) {\n            image.querySelectorAll('source').forEach(source => source.remove());\n            const imgTag = image.querySelector('img');\n            imgTag.src = this.gdiPrize.image;\n        }\n\n        this._addListener('click', async (event) => {\n            event.preventDefault();\n            openLoader('main');\n            try {\n                // get and add the jwt token for SSO login  \n                const appJwt = await this.apiProvider.getAppJwt();\n                this._setAppJwtParameter(appJwt);\n            } catch (error) {\n                console.error('Error setting the jwtToken'); \n                console.error(error); \n            } finally {\n                closeLoader('main');\n            }\n            window.location.href = this.enterYourDetailsLink.href;\n        }, this.enterYourDetailsLink);\n\n\n\n        this.enterYourDetailsLink.classList.remove(this._elMod('enterYourDetailsLink', 'hidden'));\n        this.root.classList.remove(this._mod('hidden'));\n    }\n\n    _setAppJwtParameter(appJwt) {\n        if (!this.enterYourDetailsLink.href) {\n            return;\n        }\n        const url = new URL(this.enterYourDetailsLink.href);\n        url.searchParams.set('jwt', appJwt);\n        this.enterYourDetailsLink.href = url.toString();\n    }\n\n    _compareUrlsIgnoringQuery(url1, url2) {\n        try {\n            const parsedUrl1 = new URL(url1);\n            const parsedUrl2 = new URL(url2);\n\n            return parsedUrl1.origin + parsedUrl1.pathname === parsedUrl2.origin + parsedUrl2.pathname;\n        } catch (error) {\n            console.error(\"Error during URLs parsing \", error);\n            return false;\n        }\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { openLoader, closeLoader } from '../../../../../libs/utils';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\n\nexport default class ResultPremio extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.apiProvider = getApiProvider();\n        this.userService = getUserService();\n        this.playsTable = this._dEl('table');\n        this.contestName = this.root.dataset.contestName;\n        this._init();\n\n    }\n\n    _addEventListeners() {\n\n    }\n\n    async _init() {\n        openLoader('main');\n        this.user = await this.userService.getUser();\n\n        if (this.playsTable && this.user) {\n            try {\n                let plays = await this.apiProvider.getPlaysComp(this.contestName);\n                if (this.contestName == 'giroDItalia') {\n                    if (plays && plays.length >= 1) {\n                        this._emit(window.location.pathname + '/userHasAlreadyPlayedGdi', true);\n                    }\n                }\n                if (plays) {\n                    plays.forEach(playSingle => {\n                        let row = this.playsTable.insertRow();\n                        let pinCode = row.insertCell(0);\n                        pinCode.innerHTML = playSingle.code;\n                        let usedInDate = row.insertCell(1);\n                        let winData = row.insertCell(2);\n                        let resHtml = '';\n                        if (playSingle.result.toLowerCase() == 'win') {                            \n                            resHtml = `<span class=\"block w-[106px] py-[5px] rounded-xl bg-[#009A27] text-xs leading-[12px] text-white text-center\">${getDictionary().get('You won!')}</span>`;\n                        } else if (playSingle.result.toLowerCase() == 'lost') {\n                            resHtml = `<span class=\"block w-[106px] py-[5px] rounded-xl bg-[#333333]/10 text-xs leading-[12px] text-[#333] text-center\">${getDictionary().get('You lost')}</span>`;\n                        }                        \n                        winData.innerHTML = resHtml;\n\n                        let date = new Date(playSingle.createdAt);\n                        let mm = date.getMonth() + 1;\n                        let dd = date.getDate();\n                        let yyyy = date.getFullYear();\n                        if (dd < 10) dd = '0' + dd;\n                        if (mm < 10) mm = '0' + mm;\n                        usedInDate.innerHTML = dd + '/' + mm + '/' + yyyy;\n                    });\n                }\n            } catch (error) {\n                console.error(\"error during plays retrieving - \" + error);\n            } finally {\n                this._emit(window.location.pathname + '/userHasAlreadyPlayedGdi', false); \n            }\n        }\n        this._addEventListeners();\n        closeLoader('main');\n    }\n\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { openLoader } from '../../../../../libs/utils';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class SearchResults extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.register = getRegister();\n        this.trackingManager = getTrackingManager();\n        this.apiProvider = getApiProvider();\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        await this._getElements();\n        this._initSearch();\n        this._initLoadMore();\n        this.trackingManager.track(this.root, {\n            event: 'pageView',\n            funnel: {\n                termineRicerca: this._getQuery(),\n                numeroRisultati: this.root.dataset.results,\n            },\n        });\n        this._addEventListeners();\n    }\n\n    async _getElements() {\n        /* loader data */\n        this.loaderEndpoint = this.root.dataset.loaderEndpoint;\n        let initLengths = null;\n        let downloadLengths = null;\n        let totalLengths = null;\n        try {\n            initLengths = JSON.parse(this.root.dataset.initLengths);\n            downloadLengths = JSON.parse(this.root.dataset.downloadLengths);\n            totalLengths = JSON.parse(this.root.dataset.totalLengths);\n        } catch (error) {\n            console.warn('Could not parse lengths');\n        }\n        /* sections */\n        this.section = {};\n        this._dEl('section', true)?.forEach((section) => {\n            if (!section.dataset.articleType) return;\n            this.section[section.dataset.articleType] = {\n                section: section,\n                cards: section.querySelector(this._el('cards', true)),\n                loadMore: section.querySelector(this._el('loadMore', true)),\n                currentSize: section.querySelectorAll(this._el('card', true)).length,\n                initLength: parseInt(initLengths[section.dataset.articleType]),\n                downloadLength: parseInt(downloadLengths[section.dataset.articleType]),\n                totalLength: parseInt(totalLengths[section.dataset.articleType]),\n            };\n        });\n        /* filters */\n        this.filters = this._dEl('filter', true);\n        if (this.filters && this.filters.length >= 1) {\n            this.track = this._dEl('filtersTrack');\n            this.filterObjs = (await Promise.allSettled(this.filters.map((f) => this.register.getClass(f)))).map(\n                (p) => p.value\n            );\n            this.filterAllObj = this.filterObjs.filter((fo) => fo.getInput().value == 'all')[0];\n            this.filterAll = this?.filterAllObj?.root;\n            await this._initScrollbarFilters();\n        }\n        /* search */\n        this.search = this._dEl('search');\n        this.searchObj = this.register.getClass(this.search);\n    }\n\n    _initSearch() {\n        this.query = this._getQuery();\n        this.searchObj?.setInputValue(this.query);\n    }\n\n    _initLoadMore() {\n        Object.values(this.section).forEach((s) => {\n            if (s.currentSize < s.totalLength) return;\n            s.loadMore.classList.add(this._elMod('loadMore', 'hidden'));\n        });\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'rt10SearchQuery',\n            (e) => {\n                if (!e.data.value) return;\n                const searchQuery = e.data.value;\n                const url = new URL(window.location);\n                url.searchParams.set('query', searchQuery);\n                openLoader('main');\n                window.location = url.href;\n            },\n            this.search\n        );\n\n        if (this._dEl('filters')) {\n            this._addListener(\n                'rcInputChanged',\n                (e) => {\n                    const value = this.register.getClass(e.target).getInput().value;\n                    const selected = value == e.data.value;\n                    /* handle the filter ALL */\n                    if (value == 'all') {\n                        if (selected) {\n                            /* deselect other filters (WITHOUT triggering the rcInputChanged event) */\n                            this.filterObjs\n                                .filter((fo) => fo.getInput().value != 'all')\n                                .forEach((fo) => fo.unselect(false));\n                            /* show all sections */\n                            this._dEl('section', true).forEach((s) => s.classList.add(this._elMod('section', 'show')));\n                        }\n                        if (!selected) {\n                            /* keep it selected (WITHOUT triggering the rcInputChanged event) */\n                            this.filterAllObj?.select(false);\n                        }\n                        return;\n                    }\n                    /* selecting any other filter -> deselect the filter ALL (WITHOUT triggering the rcInputChanged event) */\n                    if (selected) {\n                        this.filterAllObj?.unselect(false);\n                    }\n                    /* mask sections iff the filter ALL is not changed */\n                    this._maskSections();\n                },\n                this._dEl('filters')\n            );\n        }\n\n        if (this.track) {\n            this._addListener(\n                'ps-x-reach-end',\n                () => {\n                    this.root.classList.add(this._mod('noFade'));\n                },\n                this.track\n            );\n            this._addListener(\n                'ps-scroll-left',\n                () => {\n                    this.root.classList.remove(this._mod('noFade'));\n                },\n                this.track\n            );\n        }\n\n        Object.values(this.section)?.forEach((s) => {\n            if (!s.loadMore) return;\n            this._addListener(\n                'click',\n                () => {\n                    this._downloadResults(s.section.dataset.articleType);\n                },\n                s.loadMore\n            );\n        });\n    }\n\n    _maskSections() {\n        const allUnselected = this.filterObjs.map((fo) => !!fo.getValue()).every((x) => !x);\n        if (allUnselected) {\n            /* select the filter ALL (WITHOUT triggering the rcInputChanged event) */\n            this.filterAllObj?.select(false);\n            /* show all sections */\n            this._dEl('section', true).forEach((s) => s.classList.add(this._elMod('section', 'show')));\n            return;\n        }\n        /* show/hide sections accordingly */\n        this.filterObjs\n            .filter((fo) => fo.getInput().value != 'all')\n            .forEach((fo) => {\n                const articleType = fo.getInput().value;\n                if (!fo.isSelected()) {\n                    this.section[articleType]?.section.classList.remove(this._elMod('section', 'show'));\n                } else {\n                    this.section[articleType]?.section.classList.add(this._elMod('section', 'show'));\n                }\n            });\n    }\n\n    _getQuery() {\n        const urlParams = new URLSearchParams(window.location.search);\n        const query = urlParams.get('query');\n        if (query) return query;\n        return '';\n    }\n\n    async _downloadResults(articleType) {\n        const url = this.loaderEndpoint;\n        const section = this.section[articleType];\n        const data = {\n            query: this.query,\n            articleType: articleType,\n            from: section.currentSize,\n            to: section.currentSize + section.downloadLength,\n        };\n        try {\n            const html = await this.apiProvider.loaderGet(url, data);\n            this._appendResults(html, articleType);\n        } catch (error) {\n            console.error(error);\n        }\n    }\n\n    _appendResults(results, articleType) {\n        const section = this.section[articleType];\n        /* parse new results */\n        const parser = new DOMParser();\n        const doc = parser.parseFromString(results, 'text/html');\n        const loadMoreText = doc.querySelector(this._el('loader', true))?.dataset.loadMoreText;\n        const newResults = doc.querySelectorAll(this._el('card', true));\n        const countResults = newResults.length;\n\n        /* hide/show loadMore */\n        if (section.currentSize != 0 && countResults < section.downloadLength) {\n            /* no more results to download */\n            section?.loadMore?.classList.add(this._elMod('loadMore', 'hidden'));\n        } else {\n            /* possibly more results to download */\n            section?.loadMore?.classList.remove(this._elMod('loadMore', 'hidden'));\n        }\n\n        /* append new results */\n        section.cards.append(...newResults);\n        /* update current size */\n        section.currentSize += newResults.length;\n        /* update load more text */\n        section.loadMore.innerText = loadMoreText;\n        /* hide/show load more */\n        if (section.currentSize >= section.totalLength) {\n            section.loadMore?.classList.add(this._elMod('loadMore', 'hidden'));\n        }\n    }\n\n    async _initScrollbarFilters() {\n        this.psFilters?.destroy();\n        this.psFilters = null;\n        const PerfectScrollbar = await getExtApiHelper().getPerfectScrollbar();\n        this.psFilters = new PerfectScrollbar(this.track, {\n            swipeEasing: true,\n            suppressScrollY: true,\n            wheelPropagation: false,\n            useBothWheelAxes: true,\n            minScrollbarLength: 32,\n        });\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { openLoader } from '../../../../../libs/utils';\n\nexport default class SearchBar extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.search = this._dEl('search');\n        this.searchResultsPath = this.root.dataset.searchResultsPath || console.warn('Missing search results path');\n        this.close = this._dEl('close');\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            () => {\n                this.root.dispatchEvent(new CustomEvent('rt69Close', { bubbles: true }));\n            },\n            this.close\n        );\n        this._addListener(\n            'rt10SearchQuery',\n            (e) => {\n                if (!e.data.value || !this.searchResultsPath) return;\n                const url = new URL(this.searchResultsPath);\n                url.searchParams.set('query', e.data.value);\n                openLoader('main');\n                window.location = url.href;\n            },\n            this.search\n        );\n    }\n}\n\n\n\n","const E_TIMEOUT = new Error('timeout while waiting for mutex to become available');\nconst E_ALREADY_LOCKED = new Error('mutex already locked');\nconst E_CANCELED = new Error('request for lock canceled');\n\nvar __awaiter$2 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nclass Semaphore {\n    constructor(_maxConcurrency, _cancelError = E_CANCELED) {\n        this._maxConcurrency = _maxConcurrency;\n        this._cancelError = _cancelError;\n        this._queue = [];\n        this._waiters = [];\n        if (_maxConcurrency <= 0) {\n            throw new Error('semaphore must be initialized to a positive value');\n        }\n        this._value = _maxConcurrency;\n    }\n    acquire() {\n        const locked = this.isLocked();\n        const ticketPromise = new Promise((resolve, reject) => this._queue.push({ resolve, reject }));\n        if (!locked)\n            this._dispatch();\n        return ticketPromise;\n    }\n    runExclusive(callback) {\n        return __awaiter$2(this, void 0, void 0, function* () {\n            const [value, release] = yield this.acquire();\n            try {\n                return yield callback(value);\n            }\n            finally {\n                release();\n            }\n        });\n    }\n    waitForUnlock() {\n        return __awaiter$2(this, void 0, void 0, function* () {\n            if (!this.isLocked()) {\n                return Promise.resolve();\n            }\n            const waitPromise = new Promise((resolve) => this._waiters.push({ resolve }));\n            return waitPromise;\n        });\n    }\n    isLocked() {\n        return this._value <= 0;\n    }\n    /** @deprecated Deprecated in 0.3.0, will be removed in 0.4.0. Use runExclusive instead. */\n    release() {\n        if (this._maxConcurrency > 1) {\n            throw new Error('this method is unavailable on semaphores with concurrency > 1; use the scoped release returned by acquire instead');\n        }\n        if (this._currentReleaser) {\n            const releaser = this._currentReleaser;\n            this._currentReleaser = undefined;\n            releaser();\n        }\n    }\n    cancel() {\n        this._queue.forEach((ticket) => ticket.reject(this._cancelError));\n        this._queue = [];\n    }\n    _dispatch() {\n        const nextTicket = this._queue.shift();\n        if (!nextTicket)\n            return;\n        let released = false;\n        this._currentReleaser = () => {\n            if (released)\n                return;\n            released = true;\n            this._value++;\n            this._resolveWaiters();\n            this._dispatch();\n        };\n        nextTicket.resolve([this._value--, this._currentReleaser]);\n    }\n    _resolveWaiters() {\n        this._waiters.forEach((waiter) => waiter.resolve());\n        this._waiters = [];\n    }\n}\n\nvar __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nclass Mutex {\n    constructor(cancelError) {\n        this._semaphore = new Semaphore(1, cancelError);\n    }\n    acquire() {\n        return __awaiter$1(this, void 0, void 0, function* () {\n            const [, releaser] = yield this._semaphore.acquire();\n            return releaser;\n        });\n    }\n    runExclusive(callback) {\n        return this._semaphore.runExclusive(() => callback());\n    }\n    isLocked() {\n        return this._semaphore.isLocked();\n    }\n    waitForUnlock() {\n        return this._semaphore.waitForUnlock();\n    }\n    /** @deprecated Deprecated in 0.3.0, will be removed in 0.4.0. Use runExclusive instead. */\n    release() {\n        this._semaphore.release();\n    }\n    cancel() {\n        return this._semaphore.cancel();\n    }\n}\n\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction withTimeout(sync, timeout, timeoutError = E_TIMEOUT) {\n    return {\n        acquire: () => new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n            let isTimeout = false;\n            const handle = setTimeout(() => {\n                isTimeout = true;\n                reject(timeoutError);\n            }, timeout);\n            try {\n                const ticket = yield sync.acquire();\n                if (isTimeout) {\n                    const release = Array.isArray(ticket) ? ticket[1] : ticket;\n                    release();\n                }\n                else {\n                    clearTimeout(handle);\n                    resolve(ticket);\n                }\n            }\n            catch (e) {\n                if (!isTimeout) {\n                    clearTimeout(handle);\n                    reject(e);\n                }\n            }\n        })),\n        runExclusive(callback) {\n            return __awaiter(this, void 0, void 0, function* () {\n                let release = () => undefined;\n                try {\n                    const ticket = yield this.acquire();\n                    if (Array.isArray(ticket)) {\n                        release = ticket[1];\n                        return yield callback(ticket[0]);\n                    }\n                    else {\n                        release = ticket;\n                        return yield callback();\n                    }\n                }\n                finally {\n                    release();\n                }\n            });\n        },\n        /** @deprecated Deprecated in 0.3.0, will be removed in 0.4.0. Use runExclusive instead. */\n        release() {\n            sync.release();\n        },\n        cancel() {\n            return sync.cancel();\n        },\n        waitForUnlock: () => sync.waitForUnlock(),\n        isLocked: () => sync.isLocked(),\n    };\n}\n\n// eslint-disable-next-lisne @typescript-eslint/explicit-module-boundary-types\nfunction tryAcquire(sync, alreadyAcquiredError = E_ALREADY_LOCKED) {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return withTimeout(sync, 0, alreadyAcquiredError);\n}\n\nexport { E_ALREADY_LOCKED, E_CANCELED, E_TIMEOUT, Mutex, Semaphore, tryAcquire, withTimeout };\n","import { getApiProvider } from './api-provider';\nimport { getUserService } from './user-service';\nimport { Mutex } from 'async-mutex';\n\nexport class InsurancesManager {\n    constructor() {\n        this.apiProvider = getApiProvider();\n        this.userService = getUserService();\n\n        this.loginLink = window.loginLink;\n        this.cardRequestLink = window.cardRequestLink;\n        this.viewInsurancesLink = window.viewInsurancesLink;\n        this.policyActivationFormLink = window.policyActivationFormLink;\n        this.carrelloProtettoPolicyName = window.carrelloProtettoPolicyName;\n        this.lock = new Mutex();\n        this.informations = null;\n    }\n\n    _isLocalMock() {\n        const host = window.location.hostname;\n        const isLocalhost = host === 'localhost' || host === '127.0.0.1';\n        return isLocalhost && new URLSearchParams(window.location.search).get('mock') === 'true';\n    }\n\n    _getMockInsurancesInformation() {\n        const receiptDate = new Date();\n        receiptDate.setUTCHours(12, 0, 0, 0);\n\n        return {\n            status: 'logged',\n            user: {\n                utenzaId: '2024005',\n                nome: 'C',\n                cognome: 'B',\n                saldoPunti: 0,\n                stato: 'ATTIVATA',\n                dataNascita: '09-08-1996',\n                comuneNascita: 'Agrigento',\n                sesso: 'M',\n                indirizzo: 'via',\n                numeroCivico: '46',\n                cap: '27867',\n                citta: 'Ancona',\n                codiceProvincia: 'AN',\n                email: 'cristina.bonardi+35@pwc.com',\n                codiceCooperativa: 'CIA',\n                codiceCooperativaMigrazione: 'CND',\n                privacy1: 'N',\n                privacy2: 'N',\n                privacy3: 'N',\n                dataUltimoAggiornamento: '06-02-2023',\n                numeroComponentiNucleoFamiliare: 0,\n                animaliDomestici: [],\n                abitudiniAlimentariFamiglia: [],\n                hobbyFamiglia: [],\n                acquistiOnline: [],\n                cartaFedelta: '0223362013765',\n                provenienza: 'Conad',\n                versioneInformativaPrivacy: 'VER_CND_03_2021_GDPR',\n                mailOcdb: 'cristina.bonardi+35@pwc.com',\n                firmaDigitale: '2023-02-06T11:25:25',\n                codiceCitta: 'A271',\n                codiceComuneDiNascita: 'A089',\n                codiceNazione: 'IT',\n                cardistaAnteCPlus: 'N',\n                cartaDematerializzata: 'S',\n                saldoPuntiCollectionPrecedente: 0,\n                canaliDiContatto: [\n                    { codice: 'APP', consenso: 'N' },\n                    { codice: 'OST', consenso: 'N' },\n                    { codice: 'SMS', consenso: 'N' },\n                    { codice: 'SAE', consenso: 'N' },\n                    { codice: 'NWL', consenso: 'N' },\n                ],\n                negozioPreferito: '008759',\n                totCoupons: -1,\n                unreadMessages: -1,\n                socialRegistration: false,\n                agevolazioni: [],\n                cluster: [],\n                pdvPreferito: '008759',\n                oneAgevolazioneValid: false,\n                tesseraDisattivata: false,\n                negozioPreferitoCooperativa: 'CAD',\n                newMappedCooperative: 'CIA',\n                statoTessera: '02',\n                refresh: false,\n                refreshAlready: false,\n                preferenze: [],\n                codiciUtenzeSocial: [],\n            },\n            scontrino: {\n                date: receiptDate.toISOString(),\n                anacanId: '008759',\n                store: 'Conad City Ancona',\n                total: 42.5,\n            },\n        };\n    }\n\n    async _internalGetInsuranceInformations() {\n        if (this._isLocalMock()) {\n            return this._getMockInsurancesInformation();\n        }\n\n        const user = await this.userService.getUser();\n        if (!user) {\n            return {\n                status: 'guest',\n            };\n        }\n\n        if (!user.cartaFedelta) {\n            return {\n                status: 'light',\n            };\n        }\n\n        // get active policies\n        try {\n            const policyStatus = await this.apiProvider.getPolicyStatus(user.cartaFedelta);\n            if (policyStatus.active) {\n                return { status: 'policyAlreadyActive' };\n            }\n        } catch (e) {\n            console.warn('Failed get insurance products, skipped check', e);\n        }\n\n        // get scontrino\n        try {\n            const scontrino = await this.apiProvider.getScontrino();\n            if (!scontrino) {\n                return { status: 'noReceipts' };\n            }\n            if (!scontrino.date) {\n                return { status: 'noReceipts' };\n            }\n\n            return {\n                status: 'logged',\n                user: user,\n                scontrino: scontrino,\n            };\n        } catch (e) {\n            return { status: 'noReceipts' };\n        }\n    }\n\n    async getInsurancesInformation() {\n        const release = await this.lock.acquire();\n        try {\n            // return saved informations\n            if (this.informations) {\n                return this.informations;\n            }\n\n            // load informations\n            this.informations = await this._internalGetInsuranceInformations();\n            return this.informations;\n        } finally {\n            release();\n        }\n    }\n\n    async getLink() {\n        const insurancesInformation = await this.getInsurancesInformation();\n        if (insurancesInformation.status === 'guest') {\n            const loginLinkWithCallback = this.loginLink + '?cb=' + encodeURIComponent(this.policyActivationFormLink);\n            return {\n                status: insurancesInformation.status,\n                label: 'Login and go to activation',\n                url: loginLinkWithCallback,\n            };\n        }\n        if (insurancesInformation.status === 'light') {\n            return {\n                status: insurancesInformation.status,\n                label: 'Associate or request card',\n                url: this.cardRequestLink,\n            };\n        }\n        if (insurancesInformation.status === 'policyAlreadyActive') {\n            return { status: insurancesInformation.status, label: 'View active policy', url: this.viewInsurancesLink };\n        }\n\n        return {\n            status: insurancesInformation.status,\n            label: 'Go to activation',\n            url: this.policyActivationFormLink || '#',\n        };\n    }\n}\n\n/**\n * Get the current InsuranceManager\n * @returns {InsuranceManager}\n */\nexport const getInsurancesManager = () => {\n    if (!window.rcInsuranceManager) {\n        window.rcInsuranceManager = new InsurancesManager();\n    }\n    return window.rcInsuranceManager;\n};\n","import Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { openLoader, closeLoader, checkFormWithoutValidation } from '../../../../../libs/utils';\nimport { getInsurancesManager } from '../../../../../libs/insurances-manager';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { getMyConadApiProvider } from '../../../../../libs/myconad-api-provider';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport * as tableTemplate from './partials/table.html';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { formToJSON } from '../../../../../libs/form-to-json';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager'; \nimport './style.scss';\n\nexport default class AssicurazioniForm extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.form = this._dEl('form');\n\n        this.taxIdCodeField = this._dEl('taxIdCode');\n        this.fidelityCard = this._dEl('fidelityCard');\n        this.consentField = this._dEl('consent');\n        this.regulationField = this._dEl('regulation');\n        this.submitButton = this._dEl('submit');\n        this.isCasaPolicy = this.root.dataset.policyVariant === 'polizza-casa';\n\n        this.tableWrapper = this._dEl('tableWrapper');\n        this.loginPageUrl = this.root.dataset.loginLink;\n\n        this.receiptValidityDays = this.root.dataset.receiptValidityDays;\n        this.afterPolicyActivationPageUrl = this.root.dataset.afterPolicyActivationPageUrl;\n        this.maxAgeCheckEnabled = this.root.dataset.maxAgeCheckEnabled === 'true';\n        this.insurancesInformation;\n        this.user;\n\n        this.mobilePhone = this._dEl('mobilePhone');\n        this.mobilePhoneUnderLabel = this._dEl('mobilePhoneUnderLabel');\n\n        this.propertyAddress = this._dEl('propertyAddress');\n        this.streetNo = this._dEl('streetNo');\n        this.country = this._dEl('country');\n        this.province = this._dEl('province');\n        this.cityImmobile = this._dEl('cityImmobile');\n        this.postalCodeImmobile = this._dEl('postalCodeImmobile');\n        this.italyProvinceOptions = this._readJsonOptions(this.root.dataset.italyProvinceOptionsJson);\n        this.casaCountryMode = null;\n        this.casaProvinceLockedValue = null;\n\n        this.tableLabels = {\n            data: this.root.dataset.tableLabelDate,\n            puntoVendita: this.root.dataset.tableLabelShop,\n            totaleSpesa: this.root.dataset.tableLabelTotalCost,\n            stato: this.root.dataset.tableLabelStatus,\n        };\n\n        this.flowManager = getFlowManager();\n        this.apiProvider = getApiProvider();\n        this.insurancesManager = getInsurancesManager();\n        this.register = getRegister();\n        this.trackingManager = getTrackingManager(); \n\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        if (!window.wcmmodeDisabled) {\n            this.root.classList.remove('hidden');\n            return;\n        }\n\n        openLoader('main');\n\n        // get status of user (user, scontrini, insurance products)\n        this.insurancesInformation = await this.insurancesManager.getInsurancesInformation();\n        this.user = this.insurancesInformation.user;\n        if (this.insurancesInformation.status === 'guest') {\n            if (this.loginPageUrl) {\n                const redirectUrl = new URL(this.loginPageUrl);\n                redirectUrl.searchParams.set('cb', window.location);\n                window.location = redirectUrl.href;\n            } else {\n                closeLoader('main');\n            }\n            return;\n        }\n\n        if (this.insurancesInformation.status === 'light') {\n            this.flowManager.startFlow({\n                flowName: 'card-error',\n                flowSteps: [{ name: 'insurances-error' }],\n                initialData: {\n                    errorType: 'noCardError',\n                },\n            });\n            closeLoader('main');\n            return;\n        }\n\n        if (this.insurancesInformation.status === 'policyAlreadyActive') {\n            this.flowManager.startFlow({\n                flowName: 'insurance-error',\n                flowSteps: [{ name: 'insurances-error' }],\n                initialData: {\n                    errorType: 'insurancePolicyAlreadyActiveError',\n                },\n            });\n            this.trackingManager.track(this.root, {\n                event: 'pageview',\n                funnel: {\n                    nomeFunnel: 'Carrello protetto',\n                    stepFunnel: 'Modale errore polizza gia attiva'\n                } \n            });  \n            \n            closeLoader('main');\n            return;\n        }\n\n        // scontrini (deve essere nel range di validità e deve avere valore >= 30)\n        const scontriniError =\n            this.insurancesInformation.status === 'noReceipts' ||\n            this._getScontrinoValidity(this.insurancesInformation.scontrino) <= -1 ||\n            this.insurancesInformation.scontrino.total < 30;\n\n        if (scontriniError) {\n            this.flowManager.startFlow({\n                flowName: 'scontrini-error',\n                flowSteps: [{ name: 'insurances-error' }],\n                initialData: {\n                    errorType: 'noValidReceiptsError',\n                },\n            });\n            this.trackingManager.track(this.root, {\n                event: 'pageview',\n                funnel: {\n                    nomeFunnel: 'Carrello protetto',\n                    stepFunnel: 'Modale errore scontrino'\n                }\n            }); \n            closeLoader('main');\n            return;\n        }\n\n        // controllo età\n        if (!this._checkRegistry()) {\n            this.flowManager.startFlow({\n                flowName: 'registry-error',\n                flowSteps: [{ name: 'insurances-error' }],\n                initialData: {\n                    errorType: 'registryError',\n                },\n            });\n            this.trackingManager.track(this.root, {\n                event: 'pageview',\n\t            funnel: {\n                    nomeFunnel: 'Carrello protetto',\n                    stepFunnel: 'Modale errore eta'\n                }\n            }); \n            closeLoader('main');\n            return;\n        }\n\n        // populate table\n        this._prepareTable(this.insurancesInformation.scontrino);\n\n        this._populateUserForm();\n        this._setupCasaPolicy();\n        this._addEventListeners();\n        this.root.classList.remove('hidden');\n\n        this.trackingManager.track(this.root, {\n            event: 'pageview',\n            funnel: {\n                nomeFunnel: 'Carrello protetto',\n                stepFunnel: 'Form sottoscrizione'\n \n            } \n        }); \n        closeLoader('main');\n    }\n\n    _checkMobilePhoneLabel() {\n        if (!this.mobilePhoneUnderLabel) return;\n\n        const mbObj = this.register.getClass(this.mobilePhone);\n        if (mbObj.checkValidity()) {\n            this.mobilePhoneUnderLabel.classList.remove('!mt-5');\n        } else {\n            this.mobilePhoneUnderLabel.classList.add('!mt-5');\n        }\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'rcInputChanged',\n            () => {\n                if (this._getFormValidity()) {\n                    this._activateButton();\n                } else {\n                    this._deactivateButton();\n                }\n            },\n            this.form\n        );\n\n        this._addListener(\n            'focusout',\n            () => {\n                this._checkMobilePhoneLabel();\n            },\n            this.mobilePhone.querySelector('input')\n        );\n\n        this._addListener(\n            'rcInputChanged',\n            () => {\n                this._checkMobilePhoneLabel();\n            },\n            this.mobilePhone\n        );\n\n        this._addListener(\n            'submit',\n            async (e) => {\n                e.preventDefault();\n                await this._submitForm();\n            },\n            this.form\n        );\n\n        if (this.isCasaPolicy) {\n            this._addListener('rcInputChanged', () => this._syncCasaPolicyCountry(), this.country);\n            this._addListener('rcInputChanged', () => this._syncCasaPolicyProvince(), this.province);\n        }\n    }\n\n    _setupCasaPolicy() {\n        if (!this.isCasaPolicy) return;\n        this._syncCasaPolicyCountry();\n        this._syncCasaPolicyProvince();\n    }\n\n    _syncCasaPolicyCountry() {\n        if (!this.isCasaPolicy) return;\n        const countrySelect = this.country ? this.register.getClass(this.country) : null;\n        const provinceSelect = this.province ? this.register.getClass(this.province) : null;\n        const citySelect = this.cityImmobile ? this.register.getClass(this.cityImmobile) : null;\n        const countryValue = countrySelect?.getValue?.() || this.form.elements['country']?.value;\n        if (this.casaCountryMode === countryValue) {\n            return;\n        }\n        this.casaCountryMode = countryValue;\n\n        if (countryValue === 'Repubblica di San Marino') {\n            provinceSelect?.setItems?.(this._getSanMarinoProvinces(), 'Repubblica di San Marino');\n            provinceSelect?._lockSelect?.('Repubblica di San Marino');\n            this.casaProvinceLockedValue = 'Repubblica di San Marino';\n            citySelect?.setItems?.(this._getSanMarinoCities(), 'Acquaviva');\n            citySelect?._unlockSelect?.();\n            return;\n        }\n\n        if (countryValue === 'Stato della Città del Vaticano') {\n            provinceSelect?.setItems?.(this._getVaticanProvinces(), 'Stato della Città del Vaticano');\n            provinceSelect?._lockSelect?.('Stato della Città del Vaticano');\n            citySelect?.setItems?.(this._getVaticanCities(), 'Stato della Città del Vaticano');\n            citySelect?._lockSelect?.('Stato della Città del Vaticano');\n            this.casaProvinceLockedValue = 'Stato della Città del Vaticano';\n            return;\n        }\n\n        this.casaProvinceLockedValue = null;\n        provinceSelect?._unlockSelect?.();\n        provinceSelect?.reset?.();\n        provinceSelect?.setItems?.(this.italyProvinceOptions);\n        citySelect?.reset?.();\n        citySelect?._lockSelect?.();\n    }\n\n    _syncCasaPolicyProvince() {\n        if (!this.isCasaPolicy) return;\n        const countrySelect = this.country ? this.register.getClass(this.country) : null;\n        const provinceSelect = this.province ? this.register.getClass(this.province) : null;\n        const citySelect = this.cityImmobile ? this.register.getClass(this.cityImmobile) : null;\n        const countryValue = countrySelect?.getValue?.() || this.form.elements['country']?.value;\n        const provinceValue = provinceSelect?.getValue?.() || this.form.elements['province']?.value;\n\n        if (countryValue === 'Repubblica di San Marino') {\n            if (this.casaProvinceLockedValue !== 'Repubblica di San Marino') {\n                provinceSelect?.setItems?.(this._getSanMarinoProvinces(), 'Repubblica di San Marino');\n                provinceSelect?._lockSelect?.('Repubblica di San Marino');\n                this.casaProvinceLockedValue = 'Repubblica di San Marino';\n            }\n            citySelect?.setItems?.(this._getSanMarinoCities(), 'Acquaviva');\n            citySelect?._unlockSelect?.();\n            return;\n        }\n\n        if (countryValue === 'Stato della Città del Vaticano') {\n            if (this.casaProvinceLockedValue !== 'Stato della Città del Vaticano') {\n                provinceSelect?.setItems?.(this._getVaticanProvinces(), 'Stato della Città del Vaticano');\n                provinceSelect?._lockSelect?.('Stato della Città del Vaticano');\n                citySelect?.setItems?.(this._getVaticanCities(), 'Stato della Città del Vaticano');\n                citySelect?._lockSelect?.('Stato della Città del Vaticano');\n                this.casaProvinceLockedValue = 'Stato della Città del Vaticano';\n            }\n            return;\n        }\n\n        if (countryValue === 'Italia' && provinceValue) {\n            this._loadCasaCities(provinceValue);\n        } else {\n            if (countryValue === 'Italia') {\n                citySelect?.reset?.();\n                citySelect?._lockSelect?.();\n            }\n            citySelect?._lockSelect?.();\n        }\n    }\n\n    _readSelectOptions(selectRoot) {\n        if (!selectRoot) return [];\n        return Array.from(selectRoot.querySelectorAll('.rt011-select__item')).map((item) => ({\n            label: item.querySelector('.rt011-select__option')?.textContent?.trim() || item.dataset.value,\n            value: item.dataset.value,\n            selected: item.classList.contains('selected'),\n        }));\n    }\n\n    _readJsonOptions(jsonValue) {\n        if (!jsonValue) return [];\n        try {\n            return JSON.parse(jsonValue);\n        } catch (error) {\n            return [];\n        }\n    }\n\n    _getSanMarinoCities() {\n        return [\n            { label: 'Acquaviva', value: 'Acquaviva', selected: true },\n            { label: 'Borgo Maggiore', value: 'Borgo Maggiore' },\n            { label: 'Città di San Marino', value: 'Città di San Marino' },\n            { label: 'Chiesanuova', value: 'Chiesanuova' },\n            { label: 'Domagnano', value: 'Domagnano' },\n            { label: 'Faetano', value: 'Faetano' },\n            { label: 'Fiorentino', value: 'Fiorentino' },\n            { label: 'Montegiardino', value: 'Montegiardino' },\n            { label: 'Serravalle', value: 'Serravalle' },\n        ];\n    }\n\n    _getSanMarinoProvinces() {\n        return [\n            { label: 'Repubblica di San Marino', value: 'Repubblica di San Marino', selected: true },\n        ];\n    }\n\n    _getVaticanProvinces() {\n        return [\n            { label: 'Stato della Città del Vaticano', value: 'Stato della Città del Vaticano', selected: true },\n        ];\n    }\n\n    _getVaticanCities() {\n        return [\n            { label: 'Stato della Città del Vaticano', value: 'Stato della Città del Vaticano', selected: true },\n        ];\n    }\n\n    async _loadCasaCities(provinceId) {\n        if (!provinceId) return;\n        const citySelect = this.cityImmobile ? this.register.getClass(this.cityImmobile) : null;\n        const countrySelect = this.country ? this.register.getClass(this.country) : null;\n        const countryValue = countrySelect?.getValue?.() || this.form.elements['country']?.value;\n        if (countryValue !== 'Italia') return;\n        try {\n            const cities = await this._getCitiesFromProvince(provinceId);\n            citySelect?.reset?.();\n            citySelect?.setItems?.(cities);\n            citySelect?._unlockSelect?.();\n        } catch (error) {\n            console.warn('Cannot load municipalities', error);\n        }\n    }\n\n    async _getCitiesFromProvince(provinceId) {\n        const list = (await getMyConadApiProvider().comuni({ provinciaId: provinceId })) || [];\n        return list\n            .filter((item) => item && item.nome)\n            .sort((a, b) => a.nome.localeCompare(b.nome, 'it'))\n            .map((item) => ({\n                label: item.nome,\n                value: item.nome,\n                selected: false,\n            }));\n    }\n\n    _prepareTable(data) {\n        let scontrinoData;\n        if (data) {\n            scontrinoData = this._processRow(data);\n        }\n        const tableRendered = runTemplate(tableTemplate, { tableLabels: this.tableLabels, scontrino: scontrinoData });\n        if (tableRendered) {\n            this.tableWrapper.append(tableRendered);\n        }\n    }\n\n    _processRow(row) {\n        const diffDays = this._getScontrinoValidity(row);\n        let status;\n        if (diffDays == 1) {\n            status = 'Valido per ' + diffDays + ' giorno';\n        }\n        if (diffDays == 0) {\n            status = 'Valido fino ad oggi';\n        }\n        if (diffDays > 1) {\n            status = 'Valido per ' + diffDays + ' giorni';\n        }\n        let date = new Date(row.date);\n        let formattedDate = this._formatDate(date);\n        let total = (Math.round(row.total * 100) / 100).toFixed(2);\n        total = total.replace(/[,.]/g, function (m) {\n            return m === ',' ? '.' : ',';\n        });\n        return {\n            data: formattedDate,\n            puntoVendita: row.store,\n            totaleSpesa: total,\n            stato: status,\n        };\n    }\n\n    _formatDate(date) {\n        const yyyy = date.getFullYear();\n        let mm = date.getMonth() + 1;\n        let dd = date.getDate();\n\n        if (dd < 10) dd = '0' + dd;\n        if (mm < 10) mm = '0' + mm;\n\n        return dd + '/' + mm + '/' + yyyy;\n    }\n\n    _populateUserForm() {\n        let nameField = this.form.elements['name'];\n        if (nameField) {\n            let parentDivName = nameField.closest('.rt008-text-field');\n            parentDivName.classList.add('rt008-text-field--locked');\n            nameField.value = this.user.nome;\n            nameField.disabled = true;\n        }\n        let surnameField = this.form.elements['surname'];\n        if (surnameField) {\n            let parentDivSurname = surnameField.closest('.rt008-text-field');\n            parentDivSurname.classList.add('rt008-text-field--locked');\n            surnameField.value = this.user.cognome;\n            surnameField.disabled = true;\n        }\n        let emailField = this.form.elements['email'];\n        if (emailField) {\n            let parentDivSurname = emailField.closest('.rt008-text-field');\n            parentDivSurname.classList.add('rt008-text-field--locked');\n            emailField.value = this.user.email;\n            emailField.disabled = true;\n        }\n        if (this.user.dataNascita) {\n            let birthDateField = this.form.elements['birthDate'];\n            if (birthDateField) {\n                let parentDivBirthDate = birthDateField.closest('.rt009-date-picker');\n                parentDivBirthDate.classList.add('rt009-date-picker--locked');\n                birthDateField.value = this.user.dataNascita;\n                birthDateField.disabled = true;\n            }\n        }\n        if (this.user.comuneNascita) {\n            let birthCityField = this.form.elements['birthCity'];\n            if (birthCityField) {\n                let parentDivBirthCity = birthCityField.closest('.rt008-text-field');\n                parentDivBirthCity.classList.add('rt008-text-field--locked');\n                birthCityField.classList.add('capitalize');\n                birthCityField.value = this.user.comuneNascita;\n                birthCityField.disabled = true;\n            }\n        }\n        if (this.user.telefonoCellulare) {\n            let telField = this.form.elements['mobilePhone'];\n            if (telField) {\n                let parentDivTel = telField.closest('.rt008-text-field');\n                parentDivTel.classList.add('rt008-text-field--locked');\n                telField.value = this.user.telefonoCellulare;\n                telField.disabled = true;\n            }\n        } else {\n            let telField = this.form.elements['mobilePhone'];\n            if (telField) {\n                let parentDivTel = telField.closest('.rt008-text-field');\n                parentDivTel.classList.remove('rt008-text-field--locked');\n                parentDivTel.classList.add('rt008-text-field--validEnabled');\n                telField.disabled = false;\n            }\n        }\n        if (this.user.cartaFedelta) {\n            let fidelityCardField = this.form.elements['fidelityCard'];\n            if (fidelityCardField) {\n                let parentDivFidelityCard = fidelityCardField.closest('.rt008-text-field');\n                parentDivFidelityCard.classList.add('rt008-text-field--locked');\n                fidelityCardField.value = this.user.cartaFedelta;\n                fidelityCardField.disabled = true;\n            }\n        }\n        if (this.user.codiceFiscale) {\n            let codiceFiscaleField = this.form.elements['taxIdCode'];\n            if (codiceFiscaleField) {\n                codiceFiscaleField.value = this.user.codiceFiscale;\n            }\n        }\n        if (this.user.indirizzo && this.user.numeroCivico) {\n            let addressField = this.form.elements['address'];\n            if (addressField) {\n                addressField.value = this.user.indirizzo + ' ' + this.user.numeroCivico;\n            }\n        }\n        if (this.user.cap) {\n            let postalCodeField = this.form.elements['postalCode'];\n            if (postalCodeField) {\n                postalCodeField.value = this.user.cap;\n            }\n        }\n        if (this.user.citta) {\n            let cityField = this.form.elements['city'];\n            if (cityField) {\n                cityField.classList.add('capitalize');\n                cityField.value = this.user.citta;\n            }\n        }\n    }\n\n    _getFormValidity() {\n        return checkFormWithoutValidation(this.form);\n    }\n\n    _activateButton() {\n        if (this.submitButton.hasAttribute('disabled')) {\n            this.submitButton.removeAttribute('disabled');\n        }\n    }\n\n    _deactivateButton() {\n        if (!this.submitButton.hasAttribute('disabled')) {\n            this.submitButton.setAttribute('disabled', '');\n        }\n    }\n\n    async _submitForm() {\n        openLoader('main');\n        const url = new URL(this.afterPolicyActivationPageUrl, window.origin);\n        try {\n            let jsonForm = formToJSON(this.form);\n            if (this.isCasaPolicy) {\n                // Property data goes in riskProperty: address, city and postalCode stay the residence ones\n                jsonForm.casaPolicy = 'true';\n                const addressLine = this.form.elements['propertyAddress']?.value?.trim() || '';\n                const streetNo = this.form.elements['streetNo']?.value?.trim() || '';\n                jsonForm.riskProperty = {\n                    addressLine1: streetNo ? `${addressLine} ${streetNo}` : addressLine,\n                    city: this.form.elements['cityImmobile']?.value,\n                    province: this.form.elements['province']?.value,\n                    country: this.form.elements['country']?.value,\n                    postCode: this.form.elements['postalCodeImmobile']?.value,\n                };\n                ['propertyAddress', 'streetNo', 'cityImmobile', 'province', 'country', 'postalCodeImmobile']\n                    .forEach((key) => delete jsonForm[key]);\n            }\n            jsonForm.receiptDate = new Date(this.insurancesInformation.scontrino?.date).toISOString();\n            jsonForm.receiptAmount = this.insurancesInformation.scontrino?.total;\n            jsonForm.receiptPdv = this.insurancesInformation.scontrino?.anacanId;\n            jsonForm.birthDate = this._formatBirthdate();\n            const requestDate = new Date().toISOString();\n            jsonForm.requestDate = requestDate;\n            jsonForm.effectiveDate = requestDate;\n\n            await this.apiProvider.policyActivation(jsonForm);\n            if (!this.afterPolicyActivationPageUrl) {\n                console.warn('Missing after policy activation page url');\n                return;\n            }\n\n            url.searchParams.set('status', 'success');\n            window.location = url.href;\n        } catch (error) {\n            if (error?.code === 'BACKEND:CONFLICT_STATE') {\n                url.searchParams.set('status', 'policyAlreadyActiveError');\n            } else {\n                url.searchParams.set('status', 'genericError');\n            }\n            console.warn(error || 'Generic error from backend');\n        } finally {\n            window.location = url.href;\n            closeLoader('main');\n        }\n    }\n\n    _checkRegistry() {\n        const age = this._getAge();\n        return age >= 18 && (!this.maxAgeCheckEnabled || age <= 79);\n    }\n\n    _getAge() {\n        if(!this.user.dataNascita) return 0;\n        let ddMMYYYY = this.user.dataNascita.split('-');\n\n\t\t// Convert the birth date string into a Date object\n        let birthDate = new Date(ddMMYYYY[2], Number(ddMMYYYY[1]) - 1, ddMMYYYY[0]);\n        \n\t  \t// Get today's date\n\t  \tconst today = new Date();\n  \n\t\t// Calculate the difference in years\n\t\tlet age = today.getFullYear() - birthDate.getFullYear();\n\t\t  \n\t\t// Calculate the difference in months\n\t\tconst monthDifference = today.getMonth() - birthDate.getMonth();\n  \n\t\t// Adjust the age if the birthday has not yet occurred this year\n\t\t// This is true if the month difference is negative, \n\t\t// or if it's the same month but today's day is before the birth day.\n\t\tif (monthDifference < 0 || (monthDifference === 0 && today.getDate() < birthDate.getDate())) {\n\t\t\tage--;\n\t\t}\n\t\t  \n\t\treturn age;\n    }\n\n    _formatBirthdate() {\n        let ddMMYYYY = this.user.dataNascita.split('-');\n        return new Date(ddMMYYYY[2], Number(ddMMYYYY[1]) - 1, ddMMYYYY[0], 12, 0).toISOString();\n    }\n\n    _getScontrinoValidity(scontrino) {\n        return Math.floor(\n            Math.abs(\n                new Date(scontrino.date).setUTCHours(0, 0, 0, 0) +\n                (Number(this.receiptValidityDays) + 1) * (1000 * 60 * 60 * 24) -\n                new Date()\n            ) /\n            (1000 * 60 * 60 * 24)\n        );\n    }\n}\n\n","import { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { generateTrackNegozioInfo, removeMainComponent } from '../../../../../libs/utils';\n\nexport default function rt074() {\n    return {\n        slidesCount: null,\n        async init() {\n            this.slidesCount = this.$refs.carousel?.querySelectorAll('.rt074-in-this-store__card')?.length || 0;\n            if (this.slidesCount === 0) {\n                removeMainComponent(this.$root);\n                return;\n            }\n            this.trackingManager = getTrackingManager();\n            this.infoNegozio = generateTrackNegozioInfo();\n            await this.initCarousel();\n            // currentServices (ServiziAggiuntivi) is owned by rt057-store-header (\"Trovi anche\" banner)\n            console.debug('inThisStore init', this);\n        },\n        async initCarousel() {\n            const carousel = this.$refs.carousel;\n            const Swiper = await getExtApiHelper().getSwiper();\n\n            this.swiper = new Swiper(carousel, {\n                direction: 'horizontal',\n                wrapperClass: 'rt074-in-this-store__track',\n                slidesPerView: 1,\n                slideClass: 'rt074-in-this-store__cardWrapper',\n                spaceBetween: 16,\n                breakpoints: {\n                    1024: {\n                        slidesPerView: this.slidesCount >= 2 ? 2 : 1,\n                    },\n                },\n            });\n        },\n    };\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class HeroCarta extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.arrow = this._dEl('icon');\n\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener('click', () => {\n            const offset = window.innerWidth < this.BREAKPOINT_L ? 300 : 400;\n            window.scrollBy(0, offset);\n        },\n        this.icon\n        );\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport { shuffleCards } from '../../../../../libs/utils';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { register } from '../../../../../libs/register';\n\nexport default class Hero extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.randomizeCards = root.dataset.randomizeCards;\n        this.sliderAutoplayDelay = Number(root.dataset.sliderAutoplayDelay);\n        this.carousel = this._dEl('carousel');\n        this.controls = this._dEl('controls');\n        this.pagination = this._dEl('pagination');\n        this.playPauseBtn = this._dEl('playPause');\n        this.swiper = null;\n        this.slide = this._dEl('slideContainer');\n        this.track = this._dEl('track');\n        this.level = this._dEl('levelLabel');\n        this.viewWithPositionCta = this._dEl('viewWithPositionCta');\n        if (this.level != null) {\n            this.icons = this._dEl('sumIconChef', true);\n            this.chef2 = this.icons[1];\n            this.chef3 = this.icons[2];\n        }\n        this.flowManager = getFlowManager();\n        this.userService = getUserService();\n\n        this._init();\n    }\n\n    async _init() {\n        if (this.randomizeCards == 'true') {\n            this._randomizeCards();\n        }\n\n        const user = await this.userService.getUser();\n\n        await this._initSwiper();\n        this._initPlayPause();\n        this._initIcons();\n        this._addEventListeners(user);\n        this._updatePaginationPosition();\n\n        // hide viewWithPosition CTA if user is present\n        try {\n            if (user) {\n                this.viewWithPositionCta = null;\n            }\n        } catch (e) {\n            console.error('Error checking user for viewWithPosition CTA:', e);\n        }\n    }\n\n    _initIcons() {\n        if (this.level) {\n            switch (true) {\n                case this.level.innerText == 'Facile': {\n                    this.chef2.classList.add(this._elMod('sumIconChef', 'desel'));\n                    this.chef3.classList.add(this._elMod('sumIconChef', 'desel'));\n                    break;\n                }\n                case this.level.innerText == 'Media' || this.level.innerText == 'Medio': {\n                    this.chef3.classList.add(this._elMod('sumIconChef', 'desel'));\n                    break;\n                }\n                default: {\n                    break;\n                }\n            }\n        }\n    }\n\n    _randomizeCards() {\n        shuffleCards(this.track);\n        this.track.classList.remove(this._elMod('track', 'invisible'));\n    }\n\n    async _initSwiper() {\n        const slideCounts = this._dEl('slideContainer', true).length;\n        if (slideCounts <= 1) {\n            if (this.pagination) {\n                this.pagination.classList.add(this._elMod('pagination', 'hidden'));\n            }\n            if (this.controls && !this.playPauseBtn) {\n                this.controls.classList.add(this._elMod('controls', 'hidden'));\n            }\n        }\n\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n        };\n\n        if (this.sliderAutoplayDelay >= 1) {\n            options.autoplay = { delay: this.sliderAutoplayDelay * 1000, disableOnInteraction: false };\n        }\n\n        if (this.pagination) {\n            options['pagination'] = {\n                el: this._dEl('pagination', true),\n                bulletClass: this._el('bullet'),\n                bulletActiveClass: this._elMod('bullet', 'active'),\n                clickable: true,\n            };\n        }\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.carousel, options);\n        this.swiper.on('slideChangeTransitionEnd', () => {\n            this._updatePaginationPosition();\n        });\n    }\n\n    _addEventListeners(user) {\n        this._addListener(\n            'resize',\n            () => {\n                this._updatePaginationPosition();\n            },\n            window\n        );\n\n        // Only attach viewWithPosition CTA click listener if viewWithPositionCta exists and a user is not present\n        if (this.viewWithPositionCta && !user) {\n           const viewWithPositionCtaClass = register.getClass(this.viewWithPositionCta);  \n           viewWithPositionCtaClass.setStatus('enabled'); \n           this.viewWithPositionCta.classList.remove(this._elMod('viewWithPositionCta', 'hidden'));\n        }\n    }\n\n    _initPlayPause() {\n        if (!this.playPauseBtn) return;\n\n        if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n            this.swiper.autoplay.stop();\n            this.playPauseBtn.classList.add(this._elMod('playPause', 'paused'));\n            this.playPauseBtn.setAttribute('aria-label', 'Avvia la riproduzione automatica');\n        }\n\n        this.playPauseBtn.addEventListener('click', () => {\n            if (this.swiper.autoplay.running) {\n                this.swiper.autoplay.stop();\n                this.playPauseBtn.classList.add(this._elMod('playPause', 'paused'));\n                this.playPauseBtn.setAttribute('aria-label', 'Avvia la riproduzione automatica');\n            } else {\n                this.swiper.autoplay.start();\n                this.playPauseBtn.classList.remove(this._elMod('playPause', 'paused'));\n                this.playPauseBtn.setAttribute('aria-label', 'Metti in pausa la riproduzione automatica');\n            }\n        });\n    }\n\n    _updatePaginationPosition() {\n        if (!this.controls) return;\n\n        if (window.innerWidth < BREAKPOINTS.l) {\n            this.controls.style.visibility = 'visible';\n            return;\n        }\n\n        const swiperActive = this.root.querySelector('.swiper-slide-active [data-variant]');\n        if (!swiperActive) return;\n\n        const variant = swiperActive.dataset.variant;\n\n        switch (variant) {\n            case 'a': {\n                const slideCounts = this._dEl('slideContainer', true).length;\n                if (slideCounts <= 1) return;\n                this.controls.style.visibility = 'visible';\n                this.controls.classList.remove(this._elMod('controls', 'hidden'));\n                break;\n            }\n            default: {\n                this.controls.classList.add(this._elMod('controls', 'hidden'));\n            }\n        }\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { emptyElement, shuffleArray, generateTrackNegozioInfo, generateTrackVolantinoInfo } from '../../../../../libs/utils';\nimport richtextHtml from '../rt001-richtext/rt001-richtext.html';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class ThumbSlider extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.variant = this.root.dataset.variant;\n        this.itemsLength = this.root.dataset.itemsLength;\n        this.loaderEndpoint = this.root.dataset.loaderEndpoint;\n\n        this.apiProvider = getApiProvider();\n        this.trackingManager = getTrackingManager();\n\n        this.track = this._dEl('track', false);\n        this.prev = this._dElMod('btn', 'prev');\n        this.next = this._dElMod('btn', 'next');\n        this.carousel = this._dEl('right');\n        this.slides = this._dEl('slideContainer', true);\n        this.logo = this._dEl('logo');\n        this.userSuggestedProducts = false;\n        this.store;\n\n        this.swiper = null;\n        this._init();\n    }\n\n    async _init() {\n        if (this.variant == 'flyers') {\n            await this._getFlyerProducts();\n        } else if (!this.slides || this.slides.length <= 0) {\n            this._removeMainComponent();\n            return;\n        } else {\n            this._initSwiper();\n        }\n\n        this._addEventListeners();\n    }\n\n    _showComponents() {\n        this._dEl('title')?.classList.remove(this._elMod('title', 'hide'));\n        this._dEl('text')?.classList.remove(this._elMod('text', 'hide'));\n        this._dEl('cta')?.classList.remove(this._elMod('cta', 'hide'));\n        this._dEl('ctaMob')?.classList.remove(this._elMod('ctaMob', 'hide'));\n    }\n\n    async _initSwiper() {\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n            slidesOffsetBefore: 16,\n            slidesOffsetAfter: 16,\n\n            breakpoints: {\n                1024: {\n                    slidesOffsetBefore: 0,\n                    slidesOffsetAfter: 0,\n                },\n            },\n        };\n\n        options['scrollbar'] = {\n            el: this._dEl('scrollbar'),\n            dragClass: this._el('scrollbarDrag'),\n            dragSize: 165,\n            hide: false,\n            draggable: true,\n        };\n\n        if (this.prev && this.next) {\n            options['navigation'] = {\n                nextEl: this.next,\n                prevEl: this.prev,\n                disabledClass: this._elMod('btn', 'disabled'),\n                hiddenClass: this._elMod('btn', 'hidden'),\n            };\n        }\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.carousel, options);\n    }\n\n    _addEventListeners() {\n        const TRACKING_SLIDE_LATERALE = {\n            event: 'SlideLaterale',\n            CustomLink: 'Click Slide laterale',\n            funnel: {\n                nomeFunnel: 'Scheda Negozio',\n                stepFunnel: 'Slide laterale prodotti disaggregato'\n            }\n        };\n        if (this.store) {\n            TRACKING_SLIDE_LATERALE.negozioInfo = {\n                ...generateTrackNegozioInfo(this.store)\n            }\n        }\n        /* click on prev of the side slider*/\n        this._addListener(\n            'click',\n            () => {\n                this.trackingManager.track(this.root, TRACKING_SLIDE_LATERALE);\n            },\n            this.prev\n        );\n\n        /* click on next of the side slider*/\n        this._addListener(\n            'click',\n            () => {\n                this.trackingManager.track(this.root, TRACKING_SLIDE_LATERALE);\n            },\n            this.next\n        );\n    }\n\n    async _getFlyerProducts() {\n        try {\n            const url = this.loaderEndpoint;\n            const pattern = /\\.(html)/g;\n            let user = await getUserService().getUser();\n            let currentPageStoreAnacan = '';\n            this.store = await getUserService().getStore();\n            let pageStore = false;\n            let urlTemp = url;\n            let differentSuggestedStore = false;\n            let response = '';\n            let bassiFissi = false;\n            let headerComponentPageStore = document.querySelector('.rt057-store-header');\n\n            if (headerComponentPageStore) {\n                currentPageStoreAnacan = headerComponentPageStore.dataset.storeId;\n                pageStore = true;\n            }\n\n            if ((!user && pageStore) || (user && pageStore && this.store.anacanId != currentPageStoreAnacan)) {\n                this.store = await this.apiProvider.getPointOfServiceByAnacanId({ anacanId: currentPageStoreAnacan });\n                differentSuggestedStore = true;\n            }\n\n            if (this.store && this.store.anacanId) {\n                let flyersFromStore = this.store.volantini;\n\n                if (flyersFromStore) {\n                    // Shopfully: product carousel exists when flyer format is next\n                    let hasCarouselFlyer = flyersFromStore.some(function (flyer) {\n                        return flyer.flyerFormat === 'next';\n                    });\n\n                    if (hasCarouselFlyer) {\n                        if (user && !differentSuggestedStore) {\n                            this.userSuggestedProducts = true;\n                            urlTemp = url.replace(\n                                pattern,\n                                `.anacan-${this.store.anacanId}.html?userPersonalizedProduct=` + user.utenzaId\n                            );\n                            response = await this.apiProvider.loaderGet(urlTemp, {});\n                            bassiFissi = false;\n                        }\n\n                        if (response == '') {\n                            this.userSuggestedProducts = false;\n                            urlTemp = url.replace(pattern, `.anacan-${this.store.anacanId}.html`);\n                            response = await this.apiProvider.loaderGet(urlTemp, {});\n                            bassiFissi = false;\n                        }\n                    }\n                }\n            }\n\n            if (response == '') {\n                if (pageStore) {\n                    this._removeMainComponent();\n                    return;\n                } else {\n                    let randomNumber = Math.floor(Math.random() * 3) + 1; //reduce to 3 random\n                    urlTemp = url.replace(pattern, `.${randomNumber}.html`);\n                    response = await this.apiProvider.loaderGet(urlTemp, {});\n                    bassiFissi = true;\n                }\n            }\n\n            if (!bassiFissi) {\n                this._appendResults(response, bassiFissi, this.store.anacanId);\n            } else {\n                this._appendResults(response, bassiFissi, null);\n            }\n        } catch (error) {\n            console.error(error);\n        } finally {\n            this.root.classList.remove(this._mod('hidden'));\n            this._initSwiper();\n        }\n    }\n\n    _appendResults(html, bassiFissi, anacanId) {\n        if (html == '' || html.startsWith('<!-- *********** THREAD REPORT')) {\n            return;\n        }\n\n        const parser = new DOMParser();\n        const doc = parser.parseFromString(html, 'text/html');\n        const tr = doc.querySelector(this._el('track', true));\n        const cards = Array.from(doc.querySelectorAll(this._el('slideContainer', true)));\n        const container = this._dEl('right');\n        const trackContainer = this._dEl('track');\n        const flyerCode = tr.dataset.flyerId;\n        const flyerFormat = tr.dataset.flyerType;\n\n        if (!bassiFissi && flyerFormat === 'next') {\n            this._emit('PropsCurrentFlyer', { anacanId, sfFlyerCode: flyerCode });\n        }\n\n        if (trackContainer) {\n            emptyElement(trackContainer);\n            if (this.userSuggestedProducts) {\n                trackContainer.append(...cards);\n            } else {\n                trackContainer.append(...shuffleArray(cards));\n            }\n        } else {\n            const scrollBarContainer = this._dEl('scrollbar');\n            container.insertBefore(tr, scrollBarContainer);\n        }\n\n        const ctaEl = this._dEl('cta');\n        if (tr.dataset && tr.dataset.ctaLink && JSON.parse(tr.dataset.ctaLink)) {\n            const link = JSON.parse(tr.dataset.ctaLink);\n            ctaEl.href = link.href;\n            this._dEl('ctaMob').href = link.href;\n            if (flyerFormat === 'next') {\n                const volantinoInfo = {\n                    flyerCode,\n                    cooperative: tr.dataset.flyerCoop,\n                    title: tr.dataset.flyerName,\n                    flyerFormat\n                };\n                const SCOPRI_DI_PIU_TRACKING = {\n                    event: 'ScopriTutteLeOfferte',\n                    CustomLink: 'Click Vai al volantino',\n                    funnel: {\n                        nomeFunnel: 'Scheda Negozio',\n                        stepFunnel: 'Interazioni con Scheda negozio',\n                    },\n                    negozioInfo: {\n                        ...generateTrackNegozioInfo(this.store)\n                    },\n                    volantinoInfo: {\n                        ...generateTrackVolantinoInfo(volantinoInfo)\n                    }\n                }\n                link['data-link-tracking'] = SCOPRI_DI_PIU_TRACKING;\n                ctaEl.setAttribute('data-link-tracking', JSON.stringify(link['data-link-tracking']));\n                this._dEl('ctaMob').setAttribute('data-link-tracking', JSON.stringify(link['data-link-tracking']));\n            } \n            let ctaLabel = tr.dataset.flyerCtaLabel;\n            if (this.userSuggestedProducts) {\n                ctaLabel = tr.dataset.flyerSuggestedCtaLabel;\n            }\n\n            if (ctaLabel) {\n                ctaEl.querySelector('span.rt002-cta__label').innerHTML = ctaLabel;\n                ctaEl.setAttribute('data-item-path', link.href);\n                this._dEl('ctaMob').querySelector('span.rt002-cta__label').innerHTML = ctaLabel;\n                this._dEl('ctaMob').setAttribute('data-item-path', link.href);\n            }\n\n            this._dEl('text').remove();\n            let text = tr.dataset.flyerText;\n            if (this.userSuggestedProducts) {\n                text = tr.dataset.flyerSuggestedText;\n            }\n            if (text) {\n                const subtitle = this._buildRichTextText(text);\n                this._dEl('left').insertBefore(subtitle, ctaEl);\n            }\n\n            this._dEl('title').remove();\n            let title = tr.dataset.flyerTitle;\n            if (this.userSuggestedProducts) {\n                title = tr.dataset.flyerSuggestedTitle;\n            }\n            if (title) {\n                const flyerTitle = this._buildRichTextTitle(title);\n                this._dEl('left').insertBefore(flyerTitle, this._dEl('separator'));\n            }\n            this._showComponents();\n        }\n    }\n\n    _buildRichTextTitle(text = '') {\n        const args = {\n            extraClasses: `${this._el('title')} ${this.logo ? '' : this._elMod('title', 'noLogo')}`,\n            text: text,\n            textIsRich: true,\n        };\n        return runTemplate(richtextHtml, args);\n    }\n\n    _buildRichTextText(text = '') {\n        const args = {\n            extraClasses: this._el('text'),\n            text: text,\n            textIsRich: true,\n        };\n        return runTemplate(richtextHtml, args);\n    }\n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper.destroy(true, true);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { storeData } from '../../../../../libs/pdv-utils';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\n\nexport default class CarrotBannerFmf extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.dictionary = getDictionary();\n        this.flowManager = getFlowManager();\n        this.apiProvider = getApiProvider();\n        this.trackingManager = getTrackingManager();\n\n        this.flyerVariant = this.root.dataset.flyerVariant;\n        if (!this.flyerVariant) {\n            console.error('Missing flyerVariant');\n            return;\n        }\n\n        if (this.flyerVariant == '1/3') {\n            this.flyerVariant = this._getAnacanIdParam() ? '1' : '3';\n            this.root.setAttribute('data-flyer-variant', this.flyerVariant); // set on html\n        }\n\n        this.flyer = this.root.hasAttribute('data-flyer') ? JSON.parse(this.root.dataset.flyer) : null;\n        this.fmfTitleV1 = this.root.dataset.fmfTitleV1 || '';\n        this.fmfTitleV2 = this.root.dataset.fmfTitleV2 || '';\n        this.fmfTextV2 = this.root.dataset.fmfTextV2 || '';\n        this.fmfTitleV3 = this.root.dataset.fmfTitleV3 || '';\n        this.viewAllLabel = this.root.dataset.viewAllLabel || 'View all';\n\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        if (this._getAnacanIdParam()) {\n            try {\n                this.store = await getApiProvider().getPointOfServiceByAnacanId({ anacanId: this._getAnacanIdParam() });\n            } catch (e) {\n                console.warn('Cannot get store ' + this._getAnacanIdParam());\n            }\n        }\n\n        await this._renderContent();\n        this._getElements();\n        this._addEventListeners();\n    }\n\n    async _renderContent() {\n        if (!this.flyerVariant) return;\n\n        const flyerVariant1Call = (await import('./partials/flyer-variant-1.html')).default;\n        const flyerVariant2Call = (await import('./partials/flyer-variant-2.html')).default;\n        const flyerVariant3Call = (await import('./partials/flyer-variant-3.html')).default;\n\n        switch (this.flyerVariant) {\n            case '1': {\n                if (!this.store || !this.store.anacanId) break;\n                const data = {\n                    fmfTitle: this.fmfTitleV1,\n                    ...(await storeData(this.store)),\n                };\n                const contentEl = runTemplate(flyerVariant1Call, data);\n                Array.from(contentEl.children).forEach((child) => this.root.append(child));\n                break;\n            }\n            case '2': {\n                const data = {\n                    fmfTitle: this.fmfTitleV2,\n                    fmfText: this.fmfTextV2,\n                };\n                const contentEl = runTemplate(flyerVariant2Call, data);\n                Array.from(contentEl.children).forEach((child) => this.root.append(child));\n                break;\n            }\n            case '3': {\n                const data = {\n                    fmfTitle: this.fmfTitleV3,\n                    viewAllLabel: this.dictionary.get(this.viewAllLabel),\n                };\n                const contentEl = runTemplate(flyerVariant3Call, data);\n                Array.from(contentEl.children).forEach((child) => this.root.append(child));\n                break;\n            }\n            default:\n                break;\n        }\n    }\n\n    _getElements() {\n        if (!this.flyerVariant) return;\n        switch (this.flyerVariant) {\n            case '1': {\n                this.storeLink = this._dEl('link');\n                this.storeLinkMob = this._dEl('mobLink');\n                break;\n            }\n            case '2': {\n                break;\n            }\n            case '3': {\n                this.viewAll = this._dEl('viewAll');\n                break;\n            }\n            default:\n                break;\n        }\n    }\n\n    _addEventListeners() {\n        if (!this.flyerVariant) return;\n        switch (this.flyerVariant) {\n            case '1': {\n                this._addListener(\n                    'click',\n                    () => {\n                        this._trackGoToStore();\n                    },\n                    this.storeLink\n                );\n                this._addListener(\n                    'click',\n                    () => {\n                        this._trackGoToStore();\n                    },\n                    this.storeLinkMob\n                );\n                break;\n            }\n            case '2': {\n                break;\n            }\n            case '3': {\n                this._addListener(\n                    'click',\n                    () => {\n                        this._emit('posList', { stores: this.flyer.stores });\n                        this.flowManager.startFlow({\n                            flowName: 'pos-list',\n                            flowSteps: [{ name: 'pos-list' }],\n                        });\n                    },\n                    this.viewAll\n                );\n                break;\n            }\n            default:\n                break;\n        }\n    }\n\n    _trackGoToStore() {\n        this.trackingManager.track(this.root, {\n            funnel: {\n                stepFunnel: 'Interazioni con pagina volantino',\n            },\n            event: 'VaiAllaSchedaNegozio',\n            CustomLink: 'Click Vai alla Scheda Negozio',\n        });\n    }\n\n    _getAnacanIdParam() {\n        const urlParams = new URLSearchParams(window.location.search);\n        return urlParams.get('anacanId');\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { flyerData, flyersData, generateShareLinks, generateTrackVolantinoInfo } from '../../../../../libs/utils';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class CarrotBannerFsf extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.FLYERS_OPEN = this._elMod('bottom', 'flyersOpen');\n        this.TEXT_OPEN = this._elMod('bottom', 'textOpen');\n        this.BREAKPOINT_L = BREAKPOINTS.l;\n        this.FLYER_HIDDEN = this._elMod('flyer', 'hidden');\n        this.LOAD_MORE_HIDDEN = this._elMod('loadMore', 'hidden');\n        this.NO_SWIPE = this._mod('noSwipe');\n        this.trackingManager = getTrackingManager();\n\n        this.flyerVariant = this.root.dataset.flyerVariant;\n        if (!this.flyerVariant) {\n            console.error('Missing flyerVariant');\n            return;\n        }\n\n        if (this.flyerVariant == '1/3') {\n            this.flyerVariant = this._getAnacanIdParam() ? '1' : '3';\n            this.root.setAttribute('data-flyer-variant', this.flyerVariant); // set on html\n        }\n\n        this.store = this.root.hasAttribute('data-store') ? JSON.parse(this.root.dataset.store) : null;\n        this.flyer = this.root.hasAttribute('data-flyer') ? JSON.parse(this.root.dataset.flyer) : null;\n        this._setTrackingConsts();\n\n        this.flyersHeading = this.root.dataset.flyersHeading || '';\n        this.downloadLabel = this.root.dataset.downloadLabel || null;\n        this.shareLabel = this.root.dataset.shareLabel || null;\n        this.readMoreLabel = this.root.dataset.readMoreLabel || null;\n        this.readMoreText = this.root.dataset.readMoreText || null;\n\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        if (this._getAnacanIdParam()) {\n            try {\n                this.store = await getApiProvider().getPointOfServiceByAnacanId({ anacanId: this._getAnacanIdParam() });\n            } catch (e) {\n                console.warn('Cannot get store ' + this._getAnacanIdParam());\n            }\n        }\n\n        await this._renderContent();\n        this._getElements();\n        this.flyers = this._dEl('flyer', true);\n        if (this.flyers && this.flyers.length > 3) this._showLoadMore();\n        if (this.flyers && this.flyers.length > 2) {\n            await this._initSwiper();\n            this._addSwiperListeners();\n            this._manageSwiperMobile();\n        } else {\n            this.root.classList.add(this.NO_SWIPE);\n        }\n        this._addEventListeners();\n    }\n\n    async _renderContent() {\n        if (!this.flyerVariant) return;\n        if (!this.flyer) return;\n\n        const flyerVariant1Html = (await import('./partials/flyer-variant-1.html')).default;\n        const flyerVariant2Html = (await import('./partials/flyer-variant-2.html')).default;\n        const flyerVariant3Html = (await import('./partials/flyer-variant-3.html')).default;\n\n        switch (this.flyerVariant) {\n            case '1': {\n                const focusedFlyer = flyerData(this.flyer);\n                const link = {\n                    href: focusedFlyer.downloadLink.href,\n                    target: focusedFlyer.downloadLink.target,\n                    download: focusedFlyer.downloadLink.download,\n                    'data-link-tracking': JSON.stringify(this.DATA_LINK_TRACKING_DOWNLOAD),\n                };\n                const data = {\n                    imageUrl: focusedFlyer.image,\n                    imageAlt: focusedFlyer.imageAlt,\n                    validity: focusedFlyer.validity,\n                    title: focusedFlyer.feTitle,\n                    flyerLink: link,\n                    downloadLabel: this.downloadLabel,\n                    shareLabel: this.shareLabel,\n                    flyersHeading: this.flyersHeading,\n                    otherFlyers:\n                        this.store.volantini.length >= 2\n                            ? flyersData(this.store).filter((other) => other.id !== focusedFlyer.id)\n                            : null,\n                    disabledDownload: focusedFlyer.disabledDownload,\n                };\n                if (this.store.volantini.length >= 2) {\n                    data.otherFlyers.forEach((item) => {\n                        const link = {\n                            href: item.link.href,\n                            target: item.link.target,\n                            'data-link-tracking': JSON.stringify(this.DATA_LINK_TRACKING_OTH_FLYER),\n                        };\n                        item.link = link;\n                        item.title = item.feTitle;\n                    });\n                }\n                const contentEl = runTemplate(flyerVariant1Html, data);\n                Array.from(contentEl.children).forEach((child) => this.root.append(child));\n                this.shareId = await generateShareLinks(focusedFlyer.link.href, focusedFlyer.title);\n                break;\n            }\n            case '2': {\n                const flyer = flyerData(this.flyer);\n                const link = {\n                    href: flyer.downloadLink.href,\n                    target: flyer.downloadLink.target,\n                    download: flyer.downloadLink.download,\n                    'data-link-tracking': JSON.stringify(this.DATA_LINK_TRACKING_DOWNLOAD),\n                };\n                const data = {\n                    imageUrl: flyer.image,\n                    imageAlt: flyer.imageAlt,\n                    validity: flyer.validity,\n                    title: flyer.feTitle,\n                    flyerLink: link,\n                    downloadLabel: this.downloadLabel,\n                    shareLabel: this.shareLabel,\n                    readMoreLabel: this.readMoreLabel,\n                    readMoreText: this.readMoreText,\n                    disabledDownload: flyer.disabledDownload,\n                };\n                const contentEl = runTemplate(flyerVariant2Html, data);\n                this.root.append(contentEl);\n                this.shareId = await generateShareLinks(flyer.link.href, flyer.title);\n                break;\n            }\n            case '3': {\n                const flyer = flyerData(this.flyer);\n                const link = {\n                    href: flyer.downloadLink.href,\n                    target: flyer.downloadLink.target,\n                    download: flyer.downloadLink.download,\n                    'data-link-tracking': JSON.stringify(this.DATA_LINK_TRACKING_DOWNLOAD),\n                };\n                const data = {\n                    imageUrl: flyer.image,\n                    imageAlt: flyer.imageAlt,\n                    validity: flyer.validity,\n                    title: flyer.feTitle,\n                    flyerLink: link,\n                    downloadLabel: this.downloadLabel,\n                    shareLabel: this.shareLabel,\n                    disabledDownload: flyer.disabledDownload,\n                };\n                const contentEl = runTemplate(flyerVariant3Html, data);\n                this.root.append(contentEl);\n                this.shareId = await generateShareLinks(flyer.link.href, flyer.title);\n                break;\n            }\n            default:\n                break;\n        }\n    }\n\n    _getElements() {\n        if (!this.flyerVariant) return;\n\n        /* common elements */\n        this.share = this._dEl('share').querySelector(this._el('link', true));\n\n        /* specific elements */\n        switch (this.flyerVariant) {\n            case '1': {\n                this.bottom = this._dEl('bottom');\n                this.heading = this._dEl('heading');\n                this.flyersWrapper = this._dEl('flyers');\n                this.carousel = this._dEl('carousel');\n                this.track = this._dEl('track');\n                this.prev = this._dEl('prev');\n                this.next = this._dEl('next');\n                this.loadMore = this._dEl('loadMore');\n                break;\n            }\n            case '2': {\n                this.bottom = this._dEl('bottom');\n                this.heading = this._dEl('heading');\n                this.textWrapper = this._dEl('readMoreText');\n                break;\n            }\n            case '3': {\n                break;\n            }\n            default:\n                break;\n        }\n    }\n\n    _addEventListeners() {\n        if (!this.flyerVariant) return;\n\n        /* common listeners */\n        this._addListener(\n            'click',\n            (e) => {\n                e.preventDefault();\n                if (!this.shareId) return;\n                const event = new CustomEvent('showShareLinks', { bubbles: true });\n                event.data = {\n                    root: this._dEl('share').querySelector('span:first-child'),\n                };\n                document.getElementById(this.shareId).dispatchEvent(event);\n                e.stopPropagation();\n                if (this.flyerVariant == '1')\n                    this.trackingManager.track(this.root, {\n                        funnel: {\n                            stepFunnel: 'Interazioni con pagina volantino',\n                        },\n                        event: 'Condividi',\n                        CustomLink: 'Click Condividi',\n                    });\n\n                if (this.flyerVariant == '2')\n                    this.trackingManager.track(this.root, {\n                        funnel: {\n                            nomeFunnel: 'Volantino Bassi e Fissi',\n                            stepFunnel: 'Interazioni con pagina volantino',\n                        },\n                        event: 'Condividi',\n                        CustomLink: 'Click Condividi',\n                        volantinoInfo: {\n                            ...generateTrackVolantinoInfo(this.flyer),\n                        },\n                    });\n\n                if (this.flyerVariant == '3')\n                    this.trackingManager.track(this.root, {\n                        funnel: {\n                            nomeFunnel: 'Volantino',\n                            stepFunnel: 'Interazioni con pagina volantino',\n                        },\n                        event: 'Condividi',\n                        CustomLink: 'Click Condividi',\n                        volantinoInfo: {\n                            ...generateTrackVolantinoInfo(this.flyer),\n                        },\n                    });\n            },\n            this.share\n        );\n\n        /* specific listeners */\n        switch (this.flyerVariant) {\n            case '1': {\n                this._addListener(\n                    'click',\n                    () => {\n                        if (window.innerWidth >= this.BREAKPOINT_L) return;\n                        this.bottom.classList.toggle(this.FLYERS_OPEN);\n                    },\n                    this.heading\n                );\n                this._addListener(\n                    'click',\n                    () => {\n                        let step = 3;\n                        let hidden = this.flyers.filter((flyer) => flyer.classList.contains(this.FLYER_HIDDEN));\n                        if (hidden.length < step) {\n                            hidden.forEach((flyer) => flyer.classList.remove(this.FLYER_HIDDEN));\n                            this._hideLoadMore();\n                        } else {\n                            if (hidden.length == step) this._hideLoadMore();\n                            while (step > 0) {\n                                hidden[3 - step--].classList.remove(this.FLYER_HIDDEN);\n                            }\n                        }\n                    },\n                    this.loadMore\n                );\n                break;\n            }\n            case '2': {\n                this._addListener(\n                    'click',\n                    () => {\n                        this.bottom.classList.toggle(this.TEXT_OPEN);\n                        this._updateTextWrapperHeight();\n                    },\n                    this.heading\n                );\n                this._addListener(\n                    'resize',\n                    () => {\n                        this._updateTextWrapperHeight();\n                    },\n                    window\n                );\n                break;\n            }\n            case '3': {\n                break;\n            }\n            default:\n                break;\n        }\n    }\n\n    async _initSwiper() {\n        const swiperConfig = {\n            direction: 'horizontal',\n            slidesPerView: 'auto',\n            wrapperClass: this._el('track'),\n            slideClass: this._el('flyer'),\n            spaceBetween: 16,\n            slidesOffsetBefore: 3,\n            slidesOffsetAfter: 3,\n            mousewheel: {\n                eventsTarget: this.carousel,\n                releaseOnEdges: true,\n            },\n        };\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.carousel, swiperConfig);\n    }\n\n    _addSwiperListeners() {\n        this._addListener(\n            'click',\n            () => {\n                this.swiper.slidePrev(200);\n                this.trackingManager.track(this.root, this.TRACKING_SLIDE_LATERALE);\n            },\n            this.prev\n        );\n        this._addListener(\n            'click',\n            () => {\n                this.swiper.slideNext(200);\n                this.trackingManager.track(this.root, this.TRACKING_SLIDE_LATERALE);\n            },\n            this.next\n        );\n        this.swiper.on('reachBeginning', () => {\n            this._disableEl(this.prev, 'prev');\n            this._enableEl(this.next, 'next');\n        });\n        this.swiper.on('reachEnd', () => {\n            this._disableEl(this.next, 'next');\n            this._enableEl(this.prev, 'prev');\n        });\n        this.swiper.on('progress', (swiper, progress) => {\n            if (progress == 0) {\n                this._disableEl(this.prev, 'prev');\n                return;\n            }\n            if (progress == 1) {\n                this._disableEl(this.next, 'next');\n                return;\n            }\n            this._enableEl(this.next, 'next');\n            this._enableEl(this.prev, 'prev');\n        });\n        this._addListener(\n            'resize',\n            () => {\n                this._manageSwiperMobile();\n            },\n            window\n        );\n    }\n\n    _manageSwiperMobile() {\n        if (window.innerWidth < this.BREAKPOINT_L) {\n            this.swiper.slideTo(0);\n            this.swiper.disable();\n        } else {\n            this.swiper.enable();\n        }\n    }\n\n    _updateTextWrapperHeight() {\n        if (window.innerWidth >= this.BREAKPOINT_L) {\n            this.textWrapper.removeAttribute('style');\n            return;\n        }\n        this.textWrapper.style.maxHeight = this.bottom.classList.contains(this.TEXT_OPEN)\n            ? `${this.textWrapper.scrollHeight + 16}px`\n            : '0px';\n    }\n\n    _hideLoadMore() {\n        if (this.loadMore.classList.contains(this.LOAD_MORE_HIDDEN)) return;\n        this.loadMore.classList.add(this.LOAD_MORE_HIDDEN);\n    }\n    _showLoadMore() {\n        this.loadMore.classList.remove(this.LOAD_MORE_HIDDEN);\n    }\n\n    _disableEl(el, elName) {\n        if (!el || !elName) return;\n        if (!el.classList.contains(this._elMod(elName, 'disabled'))) el.classList.add(this._elMod(elName, 'disabled'));\n    }\n    _enableEl(el, elName) {\n        if (!el || !elName) return;\n        el.classList.remove(this._elMod(elName, 'disabled'));\n    }\n\n    _getAnacanIdParam() {\n        const urlParams = new URLSearchParams(window.location.search);\n        return urlParams.get('anacanId');\n    }\n\n    _setTrackingConsts() {\n        this.DATA_LINK_TRACKING_DOWNLOAD = {\n            event: 'DownloadVolantino',\n            CustomLink: 'Click Download Volantino',\n            volantinoInfo: {\n                TipologiaVolantino: 'Volantino scaricato',\n            },\n            funnel: {\n                stepFunnel: 'Consultazione volantino',\n            },\n        };\n\n        this.DATA_LINK_TRACKING_OTH_FLYER = {\n            event: 'CardVolantino',\n            CustomLink: 'Click Vai al Volantino',\n            volantinoInfo: {\n                ...generateTrackVolantinoInfo(),\n            },\n            funnel: { stepFunnel: 'Interazioni con pagina volantino' },\n        };\n\n        this.TRACKING_SLIDE_LATERALE = {\n            funnel: {\n                stepFunnel: 'Slide Laterale Card Volantino',\n            },\n            event: 'SlideLaterale',\n            CustomLink: 'Click Slide laterale',\n        };\n    }\n}\n\n\n","\nimport './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\n\nexport default class CarrotBannerHmd extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.dictionary = getDictionary();\n        this.findStoreText = this._dEl('findStoreText');\n        this._initFindStoreText();\n    }\n\n    _initFindStoreText() {\n        if (!this.findStoreText) return;\n        const text = this.findStoreText.dataset.text;\n        if (!text) return;\n        const loginLink = this.findStoreText.dataset.loginLink ? JSON.parse(this.findStoreText.dataset.loginLink) : null;\n        const registerLink = this.findStoreText.dataset.registerLink ? JSON.parse(this.findStoreText.dataset.registerLink) : null;\n        let renderedText = text;\n        if (text.includes('{{login}}') && loginLink && loginLink.href) {\n            const url = new URL(loginLink.href);\n            url.searchParams.set('cb', window.location.href);\n            renderedText = renderedText.replace(\n                '{{login}}',\n                `<a href=\"${url.href}\">${loginLink.label || (this.dictionary.get('Login'))}</a>`\n            );\n        }\n        if (text.includes('{{register}}') && registerLink && registerLink.href) {\n            const url = new URL(registerLink.href);\n            url.searchParams.set('cb', window.location.href);\n            renderedText = renderedText.replace(\n                '{{register}}',\n                `<a href=\"${url.href}\">${registerLink.label || (this.dictionary.get('register'))}</a>`\n            );\n        }\n        this.findStoreText.innerHTML = renderedText;\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { storeData } from '../../../../../libs/pdv-utils';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { getStoreManager } from '../../../../../libs/store-manager';\nimport { getUserService } from '../../../../../libs/user-service';\n\nexport default class CarrotBannerHmf extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.trackingManager = getTrackingManager();\n        this.store = this.root.hasAttribute('data-store') ? JSON.parse(this.root.dataset.store) : null;\n        this.storeLocatorLink = this.root.hasAttribute('data-store-locator-link')\n            ? JSON.parse(this.root.dataset.storeLocatorLink)\n            : null;\n        this.changeFavoriteStoreLink = this.root.hasAttribute('data-change-favorite-store-link')\n            ? JSON.parse(this.root.dataset.changeFavoriteStoreLink)\n            : null;\n        this.storeManager = getStoreManager();\n        this.userService = getUserService();\n\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        await this._renderContent();\n        this._getElements();\n        this._addEventListeners();\n\n        if ((await this.userService.getUser()) == null)\n            this.changeFavoriteStore?.classList.add(this._elMod('changeFavoriteStore', 'hidden'));\n    }\n\n    async _renderContent() {\n        const contentCall = (await import('./partials/content.html')).default;\n        const data = {\n            ...storeData(this.store),\n            changeFavoriteStoreLink: this.changeFavoriteStoreLink,\n        };\n\n        const contentEl = runTemplate(contentCall, data);\n        Array.from(contentEl.children).forEach((child) => this.root.appendChild(child));\n    }\n\n    _getElements() {\n        this.changeFavoriteStore = this._dEl('changeFavoriteStore');\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            (event) => {\n                event.preventDefault();\n                this.trackingManager.track(this.root, {\n                    event: 'CambiaPdv',\n                    CustomLink: 'Click Cambia Pdv',\n                });\n                if (!this.storeLocatorLink || !this.storeLocatorLink.href) {\n                    console.warn('Missing change favorite store link');\n                    return;\n                }\n                if (!this.changeFavoriteStoreLink || !this.changeFavoriteStoreLink.plainHref) {\n                    console.warn('Missing change favorite store link');\n                    return;\n                }\n            },\n            this.changeFavoriteStore\n        );\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class CarrotBannerHsd extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.storeLocatorLink = this.root.hasAttribute('data-store-locator-link')\n            ? JSON.parse(this.root.dataset.storeLocatorLink)\n            : null;\n        this.address = this._dEl('address');\n\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        if (this.address)\n            this._addListener(\n                'rcInputChanged',\n                (event) => {\n                    if (!event.data.value || !event.data.value.geometry || !event.data.value.types) {\n                        this.selectedAddress = null;\n                        return;\n                    }\n                    this.selectedAddress = event.data.value;\n                    if (!this.storeLocatorLink || !this.storeLocatorLink.href) return;\n                    /* redirect to store locator */\n                    const stUrl = this.storeLocatorLink.href.match(/^https?:.*/)\n                        ? this.storeLocatorLink.href\n                        : window.location.origin + this.storeLocatorLink.href;\n                    try {\n                        const url = new URL(stUrl);\n                        url.searchParams.set('s', this.selectedAddress.formatted_address);\n                        window.location = url.href;\n                    } catch (error) {\n                        console.warn(error);\n                    }\n                },\n                this.address\n            );\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { flyersData, generateTrackNegozioInfo, generateTrackVolantinoInfo } from '../../../../../libs/utils';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class CarrotBannerHsf extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.BREAKPOINT_L = BREAKPOINTS.l;\n        this.FLYER = this._el('flyer');\n        this.FLYER_HIDDEN = this._elMod('flyer', 'hidden');\n        this.LOAD_MORE_HIDDEN = this._elMod('loadMore', 'hidden');\n        this.NO_SWIPE = this._mod('noSwipe');\n\n        this.trackingManager = getTrackingManager();\n        this._setTrackingConsts();\n\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        this._getElements();\n        await this._renderFlyers();\n        this.flyers = this._dEl('flyer', true);\n        if (this.flyers && this.flyers.length > 3) this._showLoadMore();\n        if (this.flyers && this.flyers.length > 1) {\n            await this._initSwiper();\n            this._addSwiperListeners();\n            this._manageSwiperMobile();\n        } else {\n            this.root.classList.add(this.NO_SWIPE);\n        }\n        this._addEventListeners();\n    }\n\n    _getElements() {\n        this.store = this.root.hasAttribute('data-store') ? JSON.parse(this.root.dataset.store) : null;\n        this.loadMore = this._dEl('loadMore');\n        this.flyersWrapper = this._dEl('flyers');\n        this.carousel = this._dEl('carousel');\n        this.track = this._dEl('track');\n        this.prev = this._dEl('prev');\n        this.next = this._dEl('next');\n    }\n\n    async _renderFlyers() {\n        if (!this.store || !this.store.anacanId) return;\n\n        const flyerCall = (await import('../rt215-card-flyer/rt215-card-flyer.html')).default;\n        const flyers = flyersData(this.store);\n        for (let i = 0; i < flyers.length; i++) {\n            const flyer = flyers[i];\n            let flyerData = {\n                ...flyer,\n\n                variant: '2',\n                uniqueId: flyer.id,\n                extraClasses: `${this.FLYER} ${i > 2 ? this.FLYER_HIDDEN : ''}`,\n                imageUrl: flyer.image,\n                imageAlt: flyer.imageAlt,\n                validity: flyer.validity,\n                title: flyer.feTitle,\n                link: {\n                    target: '_blank',\n                    ...flyer.link,\n                    'data-link-tracking': JSON.stringify(this.DATA_LINK_TRACKING),\n                },\n                linkLabel: flyer.linkLabel,\n            };\n            const flyerEl = runTemplate(flyerCall, flyerData);\n            this.track.appendChild(flyerEl);\n        }\n    }\n\n    async _initSwiper() {\n        const swiperConfig = {\n            direction: 'horizontal',\n            slidesPerView: 'auto',\n            wrapperClass: this._el('track'),\n            slideClass: this._el('flyer'),\n            spaceBetween: 16,\n            slidesOffsetBefore: 3,\n            slidesOffsetAfter: 3,\n            scrollbar: {\n                el: this._dEl('scrollbar'),\n                hide: false,\n                draggable: true,\n                dragClass: this._el('scrollbarDrag'),\n            },\n            mousewheel: {\n                eventsTarget: this.carousel,\n                releaseOnEdges: true,\n            },\n        };\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.carousel, swiperConfig);\n    }\n\n    _addSwiperListeners() {\n        this._addListener(\n            'click',\n            () => {\n                this.swiper.slidePrev(200);\n                this.trackingManager.track(this.root, this.TRACKING_SLIDE_LATERALE);\n            },\n            this.prev\n        );\n        this._addListener(\n            'click',\n            () => {\n                this.swiper.slideNext(200);\n                this.trackingManager.track(this.root, this.TRACKING_SLIDE_LATERALE);\n            },\n            this.next\n        );\n        this.swiper.on('reachBeginning', () => {\n            this._disableEl(this.prev, 'prev');\n            this._enableEl(this.next, 'next');\n        });\n        this.swiper.on('reachEnd', () => {\n            this._disableEl(this.next, 'next');\n            this._enableEl(this.prev, 'prev');\n        });\n        this.swiper.on('progress', (swiper, progress) => {\n            if (progress == 0) {\n                this._disableEl(this.prev, 'prev');\n                return;\n            }\n            if (progress == 1) {\n                this._disableEl(this.next, 'next');\n                return;\n            }\n            this._enableEl(this.next, 'next');\n            this._enableEl(this.prev, 'prev');\n        });\n        this._addListener(\n            'resize',\n            () => {\n                this._manageSwiperMobile();\n            },\n            window\n        );\n    }\n\n    _manageSwiperMobile() {\n        if (window.innerWidth < this.BREAKPOINT_L) {\n            this.swiper.slideTo(0);\n            this.swiper.disable();\n        } else {\n            this.swiper.enable();\n        }\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            () => {\n                let step = 3;\n                let hidden = this.flyers.filter((flyer) => flyer.classList.contains(this.FLYER_HIDDEN));\n                if (hidden.length < step) {\n                    hidden.forEach((flyer) => flyer.classList.remove(this.FLYER_HIDDEN));\n                    this._hideLoadMore();\n                } else {\n                    if (hidden.length == step) this._hideLoadMore();\n                    while (step > 0) {\n                        hidden[3 - step--].classList.remove(this.FLYER_HIDDEN);\n                    }\n                }\n            },\n            this.loadMore\n        );\n    }\n\n    _hideLoadMore() {\n        if (this.loadMore.classList.contains(this.LOAD_MORE_HIDDEN)) return;\n        this.loadMore.classList.add(this.LOAD_MORE_HIDDEN);\n    }\n    _showLoadMore() {\n        this.loadMore.classList.remove(this.LOAD_MORE_HIDDEN);\n    }\n\n    _disableEl(el, elName) {\n        if (!el || !elName) return;\n        if (!el.classList.contains(this._elMod(elName, 'disabled'))) el.classList.add(this._elMod(elName, 'disabled'));\n    }\n    _enableEl(el, elName) {\n        if (!el || !elName) return;\n        el.classList.remove(this._elMod(elName, 'disabled'));\n    }\n\n    _setTrackingConsts() {\n        this.DATA_LINK_TRACKING = {\n            event: 'CardVolantino',\n            CustomLink: 'Click Vai al volantino',\n            negozioInfo: { ...generateTrackNegozioInfo() },\n            volantinoInfo: {\n                ...generateTrackVolantinoInfo(),\n            },\n        };\n        this.TRACKING_SLIDE_LATERALE = {\n            funnel: {\n                nomeFunnel: 'Homepage',\n                stepFunnel: 'Slide Laterale Card Volantino',\n            },\n            event: 'SlideLaterale',\n            CustomLink: 'Click Slide laterale',\n            negozioInfo: {\n                ...generateTrackNegozioInfo(),\n            },\n        };\n    }\n}\n\n\n","import './style.scss';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport Component from '../../../../../libs/components/component';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { emptyElement } from '../../../../../libs/utils';\n\nexport default class CarrotBanner extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.dictionary = getDictionary();\n        this.userService = getUserService();\n        this.apiProvider = getApiProvider();\n        this.trackingManager = getTrackingManager();\n\n        this.variant = this.root.dataset.variant;\n        this.SIDE_HIDDEN_MOB = this._elMod('side', 'hiddenMob');\n\n        this.storeLocatorLink = this.root.hasAttribute('data-store-locator-link')\n            ? JSON.parse(this.root.dataset.storeLocatorLink)\n            : null;\n        this.changeFavoriteStoreLink = this.root.hasAttribute('data-change-favorite-store-link')\n            ? JSON.parse(this.root.dataset.changeFavoriteStoreLink)\n            : null;\n        this.hsfTitle = this.root.dataset.hsfTitle || '';\n        this.fsfFlyersHeading = this.root.dataset.fsfFlyersHeading || '';\n\n        this.container = this._dEl('container');\n        this.main = this._dEl('main');\n        this.side = this._dEl('side');\n        this.mainDiv = this.main.querySelector('div:first-child');\n        this.sideDiv = this.side.querySelector('div:first-child');\n\n        this._init();\n    }\n\n    async _init() {\n        await this._checkUser();\n        await this._checkLastVisitedStore();\n        this.container.classList.add(this._elMod('container', 'initialized'));\n    }\n\n    async _checkUser() {\n        if (this.variant != 'home') return;\n        const user = await this.userService.getUser();\n        if (!user) return;\n\n        const store = await this.userService.getStore();\n        if (!store || !store.anacanId) return;\n\n        await this._fillHomeMain(store);\n        await this._fillHomeSide(store);\n    }\n\n    async _checkLastVisitedStore() {\n        if (this.variant != 'home') return;\n        const user = await this.userService.getUser();\n        if (user) return;\n        const store = await this.userService.getStore();\n        if (!store || !store.anacanId) return;\n        await this._fillHomeMain(store);\n        await this._fillHomeSide(store);\n    }\n\n    async _fillHomeMain(data) {\n        const hmfCall = (await import('../rt102-carrot-banner-hmf/rt102-carrot-banner-hmf.html')).default;\n        const hmfData = {};\n        emptyElement(this.mainDiv);\n\n        const tmpData = data;\n        hmfData.storeLocatorLinkJson = this.storeLocatorLink ? JSON.stringify(this.storeLocatorLink) : null;\n        tmpData.pdvLink = {\n            href: data.pdvLink.href,\n        };\n        hmfData.storeJson = JSON.stringify(tmpData);\n        hmfData.anacanId = data.anacanId;\n        hmfData.insignia = data.descrizioneInsegna;\n        hmfData.coopId = data.codiceCooperativa;\n        hmfData.changeFavoriteStoreLinkJson = this.changeFavoriteStoreLink\n            ? JSON.stringify(this.changeFavoriteStoreLink)\n            : null;\n\n        const hmfElem = runTemplate(hmfCall, hmfData);\n        this.main.append(hmfElem);\n    }\n\n    async _fillHomeSide(data) {\n        const hsfCall = (await import('../rt102-carrot-banner-hsf/rt102-carrot-banner-hsf.html')).default;\n\n        const hsfData = {\n            title: this.hsfTitle,\n            storeJson: JSON.stringify(data),\n        };\n\n        hsfData.anacanId = data.anacanId;\n        hsfData.insignia = data.descrizioneInsegna;\n        hsfData.coopId = data.codiceCooperativa;\n\n        emptyElement(this.sideDiv);\n        if (!data.volantini || data.volantini.length <= 0) {\n            this._hideEmptySideMob();\n            return;\n        }\n        const hsfElem = runTemplate(hsfCall, hsfData);\n        this.side.append(hsfElem);\n    }\n\n    // TODO: check on HMF from HTL\n    _hideEmptySideMob() {\n        if (!this.side.classList.contains(this.SIDE_HIDDEN_MOB)) this.side.classList.add(this.SIDE_HIDDEN_MOB);\n    }\n    _resetSideMob() {\n        this.side.classList.remove(this.SIDE_HIDDEN_MOB);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class Lancio extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.carousel = this._dEl('carousel');\n        this.pagination = this._dEl('pagination');\n        this.track = this._dEl('track');\n        this.swiper = null;\n        this.slide = this._dEl('slideContainer');\n        this.variant = this.slide ? this.slide.dataset.variant : 'variant1';\n        this.updateHeight();\n        this._init();\n    }\n\n    async _init() {\n        await this._initSwiper();\n        this._addEventListeners();\n    }\n\n    async _initSwiper() {\n        const slideCounts = this._dEl('slideContainer', true).length;\n        if (this.pagination && slideCounts <= 1) {\n            this.pagination.classList.add(this._elMod('pagination', 'hidden'));\n        } else {\n            if (this.variant == 'variant3' || this.variant == 'variant5' || this.variant == 'variant4') {\n                this.leftAll = this._dEl('left', true);\n                this.leftAll.forEach((element) => {\n                    element.classList.add(this._elMod('left', 'pagination'));\n                });\n            }\n        }\n\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            autoHeight: true,\n            observer: true,\n            observeParents: true,\n            mousewheel: {\n                sensitivy: 3,\n                releaseOnEdges: true,\n                forceToAxis: true,\n                thresholdDelta: 2,\n            },\n            on: {\n                slideChange: function (swiper) {\n                    swiper.updateAutoHeight(100);\n                },\n                paginationRender: function (swiper, paginationEl) {\n                    if (!paginationEl) return;\n\n                    [...paginationEl.querySelectorAll('button')].forEach((button, index) => {\n                        button.setAttribute('type', 'button');\n                        button.setAttribute('aria-label', `Slide ${index + 1}`);\n                    });\n                },\n            },\n        };\n\n        if (this.variant == 'variant3' || this.variant == 'variant4' || this.variant == 'variant5') {\n            options['breakpoints'] = {\n                1024: {\n                    direction: 'vertical',\n                },\n            };\n        }\n\n        if (this.pagination) {\n            options['pagination'] = {\n                el: this._dEl('pagination', true),\n                bulletElement: 'button',\n                bulletClass:\n                    this.variant == 'variant3' || this.variant == 'variant4' || this.variant == 'variant5'\n                        ? this._el('bulletVertical')\n                        : this._el('bullet'),\n                bulletActiveClass:\n                    this.variant == 'variant3' || this.variant == 'variant4' || this.variant == 'variant5'\n                        ? this._elMod('bulletVertical', 'active')\n                        : this._elMod('bullet', 'active'),\n                clickable: true,\n            };\n\n            if (this.variant == 'variant2') {\n                this.pagination.classList.add(this._elMod('pagination', 'variant2'));\n            }\n\n            if (this.variant == 'variant3' || this.variant == 'variant4' || this.variant == 'variant5') {\n                this.pagination.classList.add(this._elMod('pagination', 'vertical'));\n            }\n\n            if (this.variant == 'variant3' || this.variant == 'variant5') {\n                this.track.classList.add(this._elMod('track', 'vertical3'));\n            }\n\n            if (this.variant == 'variant4') {\n                this.track.classList.add(this._elMod('track', 'vertical4'));\n            }\n        }\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.carousel, options);\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'resize',\n            () => {\n                this.updateHeight();\n                this.swiper.update();\n            },\n            window\n        );\n    }\n\n    updateHeight() {\n        if (window.innerWidth < BREAKPOINTS.l) {\n            this.left = this._dEl('left', true).map((e) => {\n                return e.scrollHeight;\n            });\n            this.right = this._dEl('right', true).map((e) => {\n                return e.scrollHeight;\n            });\n\n            if (this.variant == 'variant4' || this.variant == 'variant2' || this.variant == 'variant1') {\n                this.leftHeight = Math.max(...this.left);\n                const height = this.leftHeight;\n                this.track.style.height = `${height}px`;\n            } else if (this.variant == 'variant3' || this.variant == 'variant5') {\n                this.sum = new Array();\n                for (let i = 0; i < this.left.length; i++) {\n                    this.sum[i] = this.left[i] + this.right[i];\n                }\n                this.heightTot = Math.max(...this.sum);\n                const height = this.heightTot;\n                this.track.style.height = `${height}px`;\n            }\n        }\n    }\n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper.destroy(true, true);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class SlideMdd extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.carousel = this._dEl('carousel');\n        this.swiper = null;\n        this.pagination = this._dEl('pagination');\n        this.prev = this._dElMod('btn', 'prev');\n        this.next = this._dElMod('btn', 'next');\n        this.slide = this._dEl('slideContainer');\n        this.track = this._dEl('track', false);\n\n        this._init();\n    }\n\n    async _init() {\n        await this._initSwiper();\n    }\n\n    async _initSwiper() {\n        const slideCounts = this._dEl('slideContainer', true).length;\n        if (this.pagination && slideCounts <= 1) {\n            this.pagination.classList.add(this._elMod('pagination', 'hidden'));\n        }\n\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n        };\n\n        options['scrollbar'] = {\n            el: this._dEl('scrollbar'),\n            dragClass: this._el('scrollbarDrag'),\n            dragSize: 160,\n            hide: false,\n            draggable: true,\n        };\n\n        options['navigation'] = {\n            nextEl: this.next,\n            prevEl: this.prev,\n            disabledClass: this._elMod('btn', 'disabled'),\n            hiddenClass: this._elMod('btn', 'hidden'),\n        };\n\n        options['pagination'] = {\n            el: this._dEl('pagination', true),\n            type: 'fraction',\n            renderFraction: function (currentClass, totalClass) {\n                return (\n                    '<span class=\"' + currentClass + '\"></span>' + ' di ' + '<span class=\"' + totalClass + '\"></span>'\n                );\n            },\n        };\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.carousel, options);\n    }\n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper.destroy(true, true);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { storeData } from '../../../../../libs/pdv-utils';\nimport { emptyElement } from '../../../../../libs/utils';\n\nexport default class SelectStore extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.flowManager = getFlowManager();\n        this.wrapper = this._dEl('wrapper');\n        this.storeWrapper = this._dEl('storeWrapper');\n        this._addEventListeners();\n        this._addStoreListeners();\n    }\n\n    _addEventListeners() {\n        [this.wrapper, this.storeWrapper].forEach((el) => {\n            this._addListener(\n                'click',\n                (event) => {\n                    if (event.target.closest('a[data-component]')) return;\n                    this.flowManager.startFlow({\n                        flowName: 'select-pos',\n                        flowSteps: [{ name: 'select-pos-step-2' }],\n                    });\n                },\n                el\n            );\n        });\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('selectedStore', async (path, data) => {\n            if (!data.anacanId) return;\n\n            const storeCardHtml = (await import('../rt021-store-card/rt021-store-card.html')).default;\n\n            const storeCardData = {\n                extraClasses: this._el('store'),\n                ...storeData(data),\n                selected: true,\n                simplified: true,\n            };\n            const storeCard = runTemplate(storeCardHtml, storeCardData);\n            \n            emptyElement(this.storeWrapper);\n            this.storeWrapper.appendChild(storeCard);\n            this.root.classList.add(this._mod('store'));\n            this.root.classList.remove(this._mod('errored'));\n        });\n    }\n\n    checkMissingField() {\n        if (this.root.classList.contains(this._mod('store'))) {\n            this.root.classList.remove(this._mod('errored'));\n        } else {\n            this.root.classList.add(this._mod('errored'));\n        }\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { delay } from '../../../../../libs/utils';\n\nexport default class TextIconContainer extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.grid = this._dEl('track');\n        this.items = this._dEl('slide', true);\n        this._initMuuri();\n\n        this._addEventListeners();\n    }\n\n    async _initMuuri() {\n        const Muuri = (await import('muuri')).default;\n        if (this.muuri) this.muuri.destroy(true);\n        this.muuri = new Muuri(this.grid, {\n            items: this.items,\n            layoutDuration: 0,\n            layout: {\n                fillGaps: true,\n            },\n        });\n        this.muuri.refreshItems();\n        this.muuri.layout(true);\n        await delay(600);\n        this.muuri.getElement().classList.remove(this._elMod('track', 'preShow'));\n    }\n\n    _addEventListeners() {}\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { getApiProvider } from '../../../../../libs/api-provider';\n\nexport default class ItalyMap extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.map = this._dEl('map');\n        this.regions = this._dEl('regionList');\n        this.BREAKPOINT_L = BREAKPOINTS.l;\n        this.arrow = this._dEl('arrow');\n        this.bottom = this._dEl('bottom');\n        this.apiProvider = getApiProvider();\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        await this._loadMap();\n        this._removeUnusedRegions();\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener('click', (e) => {\n            this.regionMap = e.target.closest('.regionMap');\n            this.region = e.target.closest(this._el('region', true));\n            this.accordion = e.target.closest(this._el('heading', true));\n\n            //if not regionMap, no region or no accordion\n            if (!this.regionMap && !this.region && !this.accordion) {\n                return;\n            }\n\n            e.preventDefault();\n\n            if (this.accordion != null) {\n                this.arrow.classList.toggle(this._elMod('arrow', 'close'));\n                this.bottom.classList.toggle(this._elMod('bottom', 'close'));\n                this.regions.classList.toggle(this._elMod('regionList', 'close'));\n                return;\n            }\n\n            if (this.regionMap) {\n                this.dataId = this.regionMap.dataset.map;\n                this.compId = this.regionMap.dataset.comp;\n                this.region = document.getElementById(this.dataId);\n            } else if (this.region) {\n                this.dataId = this.region.dataset.map;\n                this.compId = this.region.dataset.comp;\n                this.regionMap = document.getElementById(this.dataId);\n            }\n\n            if (this.prevReg != null && this.prevReg != this.region) {\n                this.prevReg.classList.remove(this._elMod('region', 'selected'));\n                this.prevMap.classList.remove('regionMap--selected');\n                this.prevComp.classList.remove(this._elMod('lancio', 'selected'));\n            }\n\n            this.comp = document.getElementById(this.compId);\n            if (!this.comp) return;\n            this.regionMap.classList.toggle('regionMap--selected');\n            this.region.classList.toggle(this._elMod('region', 'selected'));\n            this.comp.classList.toggle(this._elMod('lancio', 'selected'));\n            const offset = window.innerWidth < this.BREAKPOINT_L ? 164 : 400;\n            window.scrollBy(0, this.bottom.getBoundingClientRect().top - offset);\n\n            this.prevMap = this.regionMap;\n            this.prevReg = this.region;\n            this.prevComp = this.comp;\n        });\n    }\n\n    _removeUnusedRegions() {\n        const regionListItems = this._dEl('region', true);\n        const cardIds = new Set(this._dEl('lancio', true).map((card) => card.id));\n        for (const item of regionListItems) {\n            if (cardIds.has(item.dataset.comp)) continue;\n            item.remove();\n        }\n    }\n\n    async _loadMap() {\n        const url = this.map.dataset.mapPath;\n        try {\n            const html = await this.apiProvider.textGet(url);\n            this._appendMap(html);\n        } catch (error) {\n            console.error(error);\n        }\n    }\n\n    _appendMap(data) {\n        /* parse map */\n        const parser = new DOMParser();\n        const map = parser.parseFromString(data, 'image/svg+xml');\n        this.map.append(map.firstChild);\n    }\n}\n\n\n","import { getApiProvider } from '../../../../../libs/api-provider';\nimport './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { closeLoader, emptyElement, htmlToElement, openLoader } from '../../../../../libs/utils';\n// import { getUserService } from '../../../../../libs/user-service';\n\nexport default class ListingComp extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.loaderEndpoint = this.root.dataset.loaderEndpoint;\n        this.cardType = this.root.dataset.cardType;\n        this.staticFilters = this.root.hasAttribute('data-static-filters');\n        this.filtersWrapper = this._dEl('filtersWrapper');\n        this.fixedCard = this._dEl('fixedCard');\n        this.content = this._dEl('content');\n        this.cards = this._dEl('cards');\n        this.apiProvider = getApiProvider();\n\n        // this._initCards();\n        this._addEventListeners();\n        this._initFiltersModal();\n    }\n\n    // async _initCards() {\n    //     if (!this.cardType || this.cardType != 'News') {\n    //         return;\n    //     }\n    //     /* cardType == 'News' */\n    //     const user = await getUserService().getUser();\n    //     this._loadCards({\n    //         page: 1,\n    //         cooperative: !user ? 'cnd' : ['cnd', user.newMappedCooperative?.trim().toLowerCase()],\n    //     });\n    // }\n\n    _initFiltersModal() {\n        if (this.filtersWrapper && this.root.dataset.initialFilters) {\n            const filtersData = JSON.parse(this.root.dataset.initialFilters);\n            this._emit('reloadFilters', filtersData);\n        }\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'rtPageChanged',\n            async (event) => {\n                const page = event.data.page;\n                this._scrollToTop();\n                await this._loadCards({ page: page, ...this.filters });\n            },\n            this.root\n        );\n        this._addStoreListener('rt111Filters', async (path, data) => {\n            this.filters = data.filters;\n            await this._loadCards({ page: 1, ...this.filters });\n            if (this.filtersWrapper) this.filtersWrapper.focus();\n        });\n    }\n\n    async _loadCards(data) {\n        openLoader('main');\n        const url = this.loaderEndpoint;\n        try {\n            const html = await this.apiProvider.loaderGet(url, data);\n            this._appendRecipes(html);\n        } catch (error) {\n            console.error(error);\n        } finally {\n            closeLoader('main');\n        }\n    }\n\n    _appendRecipes(html) {\n        emptyElement(this.content);\n        if (this.filtersWrapper && !this.staticFilters) {\n            emptyElement(this.filtersWrapper);\n        }\n        if (this.fixedCard) {\n            this.fixedCard.remove();\n            this.fixedCard = null;\n        }\n\n        const element = htmlToElement(html);\n        const cards = element.querySelector(this._el('cards', true));\n        const pagination = element.querySelector(this._el('paginator', true));\n        const filters = element.querySelector(this._el('filters', true));\n\n        this.content.appendChild(cards);\n        this.content.appendChild(pagination);\n\n        if (this.filtersWrapper && !this.staticFilters) {\n            const filtersData = JSON.parse(element.dataset.filters);\n            this.filtersWrapper.appendChild(filters);\n            this._emit('reloadFilters', filtersData);\n        }\n\n        this._emit('forceUpdateLazy', true); // ha ancora senso?\n    }\n\n    _scrollToTop() {\n        /* offset = header overall height */\n        const offset = window.innerWidth < BREAKPOINTS.l ? 112 : 178 + 24;\n        const top = this.filtersWrapper?.offsetTop || this.content.offsetTop;\n        const scrollY = Math.max(top, offset) - offset;\n        window.scrollTo(0, scrollY);\n    }\n}\n\n\n","\nimport './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getUserService } from '../../../../../libs/user-service';\n\nexport default class AssociateCardBanner extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this._checkUserConadCard();\n    }\n\n    async _checkUserConadCard() {\n        const user = await getUserService().getUser();\n        if (!user || user.cartaFedelta || user.conadCard) return;\n        /* hide self */\n        const event = new CustomEvent('hideLayoutItem', { bubbles: true });\n        event.data = {\n            hide: true,\n        };\n        this.root.dispatchEvent(event);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\n\nexport default class ItalyNav extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        this.L = await getExtApiHelper().getLeaflet();\n        this._getElements();\n        this._makeLeafletIcons();\n        this._initMap();\n        await this._setPins();\n    }\n\n    _getElements() {\n        this.mapPath = this.root.dataset.mapPath;\n        if (!this.mapPath) {\n            console.warn('Missing map path, cannot render map');\n            return;\n        }\n        this.mapEl = this._dEl('map');\n        this.mapBgColor = this.root.dataset.mapBgColor;\n        if (this.mapBgColor) {\n            this.mapEl.style.backgroundColor = `${this.mapBgColor}`;\n        }\n        try {\n            this.pinConf = JSON.parse(this.root.dataset?.pinConf);\n        } catch (error) {\n            console.warn(error);\n        }\n        this.pinNotSelectedImg = this.root.dataset.pinNotSelected;\n        this.pinSelectedImg = this.root.dataset.pinSelected;\n    }\n\n    _makeLeafletIcons() {\n        this.pinNotSelected = this.L.icon({\n            iconUrl: this.pinNotSelectedImg,\n            iconSize: [36, 55],\n            iconAnchor: [18, 55],\n        });\n        this.pinSelected = this.L.icon({\n            iconUrl: this.pinSelectedImg,\n            iconSize: [43, 67],\n            iconAnchor: [21, 67],\n        });\n    }\n\n    _initMap() {\n        const maxBounds = [\n            [0, 0],\n            [2500, 4266],\n        ];\n        this.map = this.L.map(this.mapEl, {\n            crs: this.L.CRS.Simple,\n            maxBounds: maxBounds,\n            minZoom: -2,\n        });\n        const bounds = [\n            [0, 0],\n            [2500, 4266],\n        ];\n        this.L.imageOverlay(this.mapPath, bounds).addTo(this.map);\n        this.map.fitBounds(bounds);\n    }\n\n    async _setPins() {\n        const popupHtml = (await import('./partials/leaflet-popup.html')).default;\n\n        for (const pin of this.pinConf) {\n            const popupData = {\n                pinId: pin.name,\n                title: pin.title,\n                text: pin.text,\n            };\n            const popupEl = runTemplate(popupHtml, popupData);\n            const markerOptions = {\n                icon: this.pinNotSelected,\n                title: pin.title,\n            };\n            pin.marker = this.L.marker([pin.x, pin.y], markerOptions);\n            const popupOptions = {\n                keepInView: true,\n                closeButton: false,\n                className: this._el('popup'),\n            };\n            pin.marker.bindPopup(popupEl, popupOptions);\n            pin.marker.addTo(this.map);\n            pin.marker.on('click', (e) => {\n                this._pinClick(e.latlng);\n            });\n            pin.marker.on('popupopen', () => {\n                const popup = pin.marker.getPopup();\n                popup.options.offset = this.L.point({ x: 0, y: 7 + popupEl.scrollHeight + 32 });\n                popup.update();\n            });\n        }\n    }\n\n    _pinClick(pos) {\n        if (this.selectedPin) {\n            this.selectedPin.marker.setIcon(this.pinNotSelected);\n            this.selectedPin = null;\n        }\n        for (const pin of this.pinConf) {\n            if (pin.x == pos.lat && pin.y == pos.lng) {\n                this.selectedPin = pin;\n                break;\n            }\n        }\n        if (!this.selectedPin) return;\n        this.selectedPin.marker.setIcon(this.pinSelected);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class EdCategories extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.pagination = this._dEl('pagination');\n        this.swiper = null;\n        this.slide = this._dEl('slideContainer');\n        this.track = this._dEl('track', false);\n        this._initSwiper();\n    }\n\n    async _initSwiper() {\n        const slideCounts = this._dEl('slideContainer', true).length;\n        if (slideCounts == 0) return;\n        if (this.pagination && slideCounts <= 6) {\n            this.pagination.classList.add(this._elMod('pagination', 'hidden'));\n        }\n\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n            centerInsufficientSlides: true,\n            watchOverflow: true,\n            observer: true,\n            observeParents: true,\n        };\n\n        options['breakpoints'] = {\n            768: {\n                slidesPerView: 6,\n            },\n        };\n\n        if (this.pagination) {\n            options['pagination'] = {\n                el: this._dEl('pagination', true),\n                bulletClass: this._el('bullet'),\n                bulletActiveClass: this._elMod('bullet', 'active'),\n                clickable: true,\n            };\n        }\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.root, options);\n    }\n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper.destroy(true, true);\n    }\n}\n\n\n","import Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport './style.scss';\n\nexport default class Breadcrumb extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.track = this._dEl('container');\n        this._init();\n    }\n\n    async _init() {\n        await this._initScrollbarBreadcrumb();\n        this._addEventListeners();\n    }\n\n    async _initScrollbarBreadcrumb() {\n        if (!this.track) return;\n        this.psBreadcrumb?.destroy();\n        this.psBreadcrumb = null;\n        const PerfectScrollbar = await getExtApiHelper().getPerfectScrollbar();\n        this.psBreadcrumb = new PerfectScrollbar(this.track, {\n            swipeEasing: true,\n            suppressScrollY: true,\n            wheelPropagation: false,\n            useBothWheelAxes: true,\n            minScrollbarLength: 32,\n        });\n    }\n\n    _addEventListeners() {\n        if (!this.root.classList.contains(this._mod('noFade'))) {\n            this._addListener(\n                'ps-x-reach-end',\n                () => {\n                    this.root.classList.add(this._mod('noFade'));\n                },\n                this.track\n            );\n            this._addListener(\n                'ps-scroll-left',\n                () => {\n                    this.root.classList.remove(this._mod('noFade'));\n                },\n                this.track\n            );\n        }\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class CardElevEdComponent extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.pagination = this._dEl('pagination');\n        this.swiper = null;\n        this.slide = this._dEl('slideContainer');\n        this.track = this._dEl('track', false);\n        this.variant = this.slide.dataset.variant;\n        this._initSwiper();\n    }\n\n    async _initSwiper() {\n        const slideCounts = this._dEl('slideContainer', true).length;\n        if (this.pagination && slideCounts <= 1) {\n            this.pagination.classList.add(this._elMod('pagination', 'hidden'));\n        }\n\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n            watchOverflow: true,\n            observer: true,\n            observeParents: true,\n        };\n\n        if (this.pagination) {\n            options['pagination'] = {\n                el: this._dEl('pagination', true),\n            };\n        }\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.root, options);\n    }\n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper?.destroy(true, true);\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { emptyElement, htmlToElement } from '../../../../../libs/utils';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class CardElevNewsComponent extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.loaderEndpoint = this.root.dataset.loaderEndpoint;\n        if (!this.loaderEndpoint || this.loaderEndpoint == '') {\n            console.warn('Missing loader endpoint for news slider.');\n            // keep going with normal flow (user not logged)\n        }\n        this.track = this._dEl('track');\n        // no need to reassign (even if slides get replaced, variant stays the same)\n        this.slide = this._dEl('slideContainer');\n        this.variant = this.slide.dataset.variant;\n        this.swiper = null;\n        this.apiProvider = getApiProvider();\n\n        this._init();\n    }\n\n    async _init() {\n        await this._initSwiper();\n        this._initSlides();\n\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'resize',\n            () => {\n                this._manageSwiperMobile();\n            },\n            window\n        );\n    }\n\n    async _initSlides() {\n        const user = await getUserService().getUser();\n        if (!user) return;\n        // user logged -> reload news filtered by consorzio and coop\n        this.swiper?.destroy();\n        this.swiper = null;\n        await this._loadSlides({\n            page: 1,\n            cooperative: ['cnd', user.newMappedCooperative?.trim().toLowerCase()],\n        });\n        this._initSwiper();\n    }\n\n    async _initSwiper() {\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n            watchOverflow: true,\n            observer: true,\n            observeParents: true,\n        };\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this._dEl('carousel'), options);\n    }\n\n    _manageSwiperMobile() {\n        if (window.innerWidth < BREAKPOINTS.m) {\n            this.swiper.slideTo(0);\n            this.swiper.disable();\n        } else {\n            this.swiper.enable();\n        }\n    }\n\n    async _loadSlides({ page, cooperative }) {\n        const url = this.loaderEndpoint;\n        try {\n            const html = await this.apiProvider.loaderGet(url, { page, cooperative });\n            this._appendSlides(html);\n        } catch (error) {\n            console.error(error);\n        }\n    }\n\n    _appendSlides(html) {\n        emptyElement(this.track);\n        const element = htmlToElement(html);\n        const slides = [...element.querySelectorAll(this._el('slideContainer', true))];\n        for (const slide of slides) {\n            this.track.appendChild(slide);\n        }\n    }\n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper?.destroy(true, true);\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class CardElevRecipesComponent extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.swiper = null;\n        this.slide = this._dEl('slideContainer');\n        this.track = this._dEl('track', false);\n        if (!this.slide) {\n            this._removeMainComponent();\n            return;\n        }\n        this.variant = this.slide.dataset.variant;\n        this._initSwiper();\n    }\n\n    async _initSwiper() {\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n            watchOverflow: true,\n            observer: true,\n            observeParents: true,\n        };\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.root, options);\n    }\n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper?.destroy(true, true);\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { shuffleCards } from '../../../../../libs/utils'; \n\nexport default class CardElevContentsComponent extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.pagination = this._dEl('pagination');\n        this.swiper = null;\n        this.slides = this._dEl('slideContainer', true);\n        if (!this.slides || this.slides.length <= 0) {\n            this._removeMainComponent();\n            return;\n        }\n        this.track = this._dEl('track', false);\n        this.sliderAutoplayDelay = Number(this.root.dataset.sliderAutoplayDelay);  \n        this._initSwiper();\n    }\n\n    async _initSwiper() {\n        const slideCounts = this._dEl('slideContainer', true).length;\n        if (this.pagination && slideCounts <= 3) {\n            this.pagination.classList.add(this._elMod('pagination', 'hidden'));\n        }\n\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n            watchOverflow: true,\n            observer: true,\n            observeParents: true,\n        };\n\n        if (this.pagination) {\n            options['pagination'] = {\n                el: this._dEl('pagination', true),\n                bulletClass: this._el('bullet'),\n                bulletActiveClass: this._elMod('bullet', 'active'),\n                clickable: true,\n            };\n            options['breakpoints'] = {\n                1024: {\n                    slidesPerView: 3,\n                    autoplay: (this.sliderAutoplayDelay >= 1 && slideCounts > 3) ? { delay: this.sliderAutoplayDelay * 1000, disableOnInteraction: false } : false,  \n                },\n            };\n        }\n\n        if (this.sliderAutoplayDelay >= 1) {\n            options.autoplay = { delay: this.sliderAutoplayDelay * 1000, disableOnInteraction: false };\n        }  \n\n        if (this.root.hasAttribute('data-randomize-cards')) {\n            this._randomizeCards();\n        }\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.root, options);\n    }\n\n    _randomizeCards() {\n        shuffleCards(this.track); \n        this.track.classList.remove(this._elMod('track', 'invisible')); \n    } \n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper?.destroy(true, true);\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class CardTextComponent extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.carousel = this._dEl('carousel');\n        this.pagination = this._dEl('pagination');\n        this.swiper = null;\n        this.slide = this._dEl('slideContainer');\n        this.read = this._dEl('read');\n        if (this.root.dataset.activeBulletColor) {\n            this.pagination?.style.setProperty('--color-primary2', this.root.dataset.activeBulletColor); \n        }\n        if (this.root.dataset.bulletColor) {\n            this.pagination?.style.setProperty('--color-black', this.root.dataset.bulletColor); \n        }\n        if (this.read) {\n            this.rules = document.getElementById(this.read.dataset.rulesId);\n        }\n\n        this._init();\n    }\n\n    async _init() {\n        await this._initSwiper();\n        this._addEventListeners();\n    }\n\n    async _initSwiper() {\n        const slideCounts = this._dEl('slideContainer', true).length;\n        if (this.pagination && slideCounts <= 3) {\n            this.pagination.classList.add(this._elMod('pagination', 'hidden'));\n        }\n\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n            watchOverflow: true,\n            observer: true,\n            observeParents: true,\n        };\n\n        if (this.pagination) {\n            options['pagination'] = {\n                el: this._dEl('pagination', true),\n                bulletClass: this._el('bullet'),\n                bulletActiveClass: this._elMod('bullet', 'active'),\n                clickable: true,\n            };\n            options['breakpoints'] = {\n                1024: {\n                    slidesPerView: 3,\n                },\n            };\n        }\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.root, options);\n    }\n\n    _scroll() {\n        const offset = window.innerWidth < this.BREAKPOINT_L ? 100 : 200;\n        window.scrollBy(0, this.rules.getBoundingClientRect().top - offset);\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            () => {\n                if (this.rules) {\n                    this._scroll();\n                }\n            },\n            this.read\n        );\n        this._addListener(); \n    }\n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper?.destroy(true, true);\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class CardElevBrandsComponent extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.pagination = this._dEl('pagination');\n        this.swiper = null;\n        this.slide = this._dEl('slideContainer');\n        this.track = this._dEl('track', false);\n        this._initSwiper();\n    }\n\n    async _initSwiper() {\n        const slideCounts = this._dEl('slideContainer', true).length;\n        if (this.pagination && slideCounts <= 3) {\n            this.pagination.classList.add(this._elMod('pagination', 'hidden'));\n        }\n\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n            watchOverflow: true,\n            observer: true,\n            observeParents: true,\n        };\n\n        if (this.pagination) {\n            options['pagination'] = {\n                el: this._dEl('pagination', true),\n                bulletClass: this._el('bullet'),\n                bulletActiveClass: this._elMod('bullet', 'active'),\n                clickable: true,\n            };\n            options['breakpoints'] = {\n                1024: {\n                    slidesPerView: 3,\n                },\n            };\n        }\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.root, options);\n    }\n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper?.destroy(true, true);\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { shuffleCards } from '../../../../../libs/utils';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { generateTrackNegozioInfo } from '../../../../../libs/utils';\n\nexport default class BannerCarousel extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.carousel = this._dEl('carousel');\n        this.track = this._dEl('track');\n\n        if (!this.track || this.track.children.length === 0) {\n            this._removeMainComponent();\n            return;\n        }\n\n        // Initialize bulletsBgColor if present\n        if (root.dataset.bulletsBgColor) {\n            this.bulletsBgColor = JSON.parse(root.dataset.bulletsBgColor);\n        }\n\n        if (root.dataset.randomizeCards == 'true') {\n            this._randomizeCards();\n        }\n        this.slides = this._dEl('slideContainer', true);\n        this.sliderAutoplayDelay = Number(root.dataset.sliderAutoplayDelay);\n        this.pagination = this._dEl('pagination');\n        this.trackingManager = getTrackingManager();\n        \n        this.swiper = null;\n        this._initSwiper();\n        this.infoNegozio = generateTrackNegozioInfo();\n    }\n\n    _randomizeCards() {\n        // If we have bulletsBgColor, we need to shuffle it in the same order as the cards\n        if (this.bulletsBgColor) {\n            // Shuffle the cards\n            shuffleCards(this.track);\n            \n            // Rebuild the colors array based on the new slide order using data-index\n            const newSlidesOrder = Array.from(this.track.querySelectorAll(`${this._el('slideContainer', true)}`));\n            const shuffledColors = newSlidesOrder.map(slide => {\n                const originalIndex = parseInt(slide.dataset.index) - 1; // data-index is 1-based\n                return this.bulletsBgColor[originalIndex];\n            });\n            \n            // Update the instance variable with colors in the new order\n            this.bulletsBgColor = shuffledColors;\n        } else {\n            shuffleCards(this.track);\n        }\n\n        // restore index data attributes to match new order\n        Array.from(this.track.children).forEach((child, index) => {\n            child.dataset.index = index + 1; // set new data-index (1-based)\n        });\n        \n        this.track.classList.remove(this._elMod('track', 'invisible'));\n    }\n\n    async _initSwiper() {\n        if (this.pagination && this.slides.length > 1) {\n            this.pagination.classList.remove(this._elMod('pagination', 'hidden'));\n        }\n\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n            watchOverflow: true,\n            observer: true,\n            observeParents: true,\n        };\n        if (this.pagination) {\n            options.pagination = {\n                el: this._dEl('pagination'),\n                bulletClass: this._el('bullet'),\n                bulletActiveClass: this._elMod('bullet', 'active'),\n                clickable: true,\n            };\n            options.mousewheel = {\n                eventsTarget: this.carousel,\n                releaseOnEdges: true,\n            };\n        }\n        if (this.sliderAutoplayDelay >= 1) {\n            options.autoplay = { delay: this.sliderAutoplayDelay * 1000, disableOnInteraction: false };\n        }\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.carousel, options);\n        this.swiper.on('activeIndexChange', (swiper) => {\n            this._setInactiveBulletsBgColor(swiper.activeIndex);\n        });\n\n        if (!this.bulletsBgColor) return;\n        this.bullets = this._dEl('bullet', true);\n        this._setInactiveBulletsBgColor(0);\n    }\n\n    _setInactiveBulletsBgColor(activeIndex) {\n        for (let i = 0; i < this.bullets.length; i++) {\n            if (i == activeIndex) continue;\n            this.bullets[i].style.backgroundColor = this.bulletsBgColor[activeIndex];\n        }\n    }\n\n    /* override */\n    dispose() {\n        super.dispose();\n        this.swiper?.destroy(true, true);\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class SpecializedStores extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.swiper = null;\n        this.slide = this._dEl('slideContainer');\n        this.track = this._dEl('track', false);\n        this._initSwiper();\n    }\n\n    async _initSwiper() {\n        const slideCounts = this._dEl('slideContainer', true).length;\n\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n            watchOverflow: true,\n            observer: true,\n            observeParents: true,\n        };\n\n        if (slideCounts == 4) {\n            options['breakpoints'] = {\n                768: {\n                    slidesPerView: 4,\n                },\n            };\n        }\n\n        if (slideCounts == 3) {\n            options['breakpoints'] = {\n                768: {\n                    slidesPerView: 3,\n                },\n            };\n        }\n\n        if (slideCounts == 2) {\n            options['breakpoints'] = {\n                768: {\n                    slidesPerView: 2,\n                },\n            };\n        }\n\n        if (slideCounts == 1) {\n            options['breakpoints'] = {\n                0: {\n                    slidesPerView: 1,\n                },\n            };\n        }\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.root, options);\n    }\n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper?.destroy(true, true);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class SliderLanci extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.carousel = this._dEl('carousel');\n        this.pagination = this._dEl('pagination');\n        if (this.root.dataset.activeBulletColor) { \n            this.pagination?.style.setProperty('--color-primary2', this.root.dataset.activeBulletColor); \n        }\n        if (this.root.dataset.bulletColor) {\n            this.pagination?.style.setProperty('--color-black', this.root.dataset.bulletColor); \n        } \n        this.swiper = null;\n        this.slides = this._dEl('slideContainer', true);\n        if (!this.slides || this.slides.length <= 0) {\n            this._removeMainComponent();\n            return;\n        }\n        this.variant = this.slides[0].dataset.variant;\n        this._initSwiper();\n    }\n\n    async _initSwiper() {\n        const slideCounts = this._dEl('slideContainer', true).length;\n        if (this.pagination && slideCounts <= 3) {\n            this.pagination.classList.add(this._elMod('pagination', 'hidden'));\n        }\n\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 1,\n            spaceBetween: 16,\n            watchOverflow: true,\n            observer: true,\n            observeParents: true,\n        };\n\n        if (this.pagination) {\n            options['pagination'] = {\n                el: this._dEl('pagination', true),\n                bulletClass: this._el('bullet'),\n                bulletActiveClass: this._elMod('bullet', 'active'),\n                clickable: true,\n            };\n        }\n\n        options['breakpoints'] = {\n            1024: {\n                slidesPerView: 3,\n            },\n        };\n\n        if (this.variant == 'large') {\n            options['breakpoints'] = {\n                1024: {\n                    slidesPerView: 2,\n                },\n            };\n        }\n\n        if (this.variant == 'small') {\n            options['breakpoints'] = {\n                1024: {\n                    slidesPerView: 4,\n                },\n            };\n        }\n\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.carousel, options);\n    }\n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper?.destroy(true, true);\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class StrilloBooking extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.title = this._dEl('title');\n        if (!this.title) {\n            this._removeMainComponent();\n            return;\n        }\n\n        this.iconColor = this.root.dataset.iconColor;\n        this.textColor = this.root.dataset.textColor;\n        this.icon = this._dEl('icon');\n        this._initIcon();\n        this._initText();\n        this.downloadLink = this._dEl('downloadLink');\n        this._initDownloadLink();\n\n        this.root.classList.add(this._mod('show'));\n    }\n\n    _initIcon() {\n        if (this.iconColor) {\n            this.icon.style.color = this.iconColor;\n        }\n    }\n\n    _initText() {\n        if (this.textColor) {\n            this.root.style.setProperty('--color-strillo-text', this.textColor);\n        }\n    }\n\n    _initDownloadLink() {\n        if (!this.downloadLink) return;\n        this.downloadLink.setAttribute('download', '');\n    }\n}\n\n\n","import './style.scss';\nimport { getUserService } from '../../../../../libs/user-service';\n\nexport default function rt130() {\n    return {\n        isLogged: false,\n        isLoaded: false, \n        async init() {\n            await this._doLogic();\n            console.debug('rt130 initialized.');\n        },\n        async _doLogic() {\n            if (!this.$refs.guestUserLink || !this.$refs.loggedUserLink) return;\n            const user = await getUserService().getUser();\n            this.isLogged = !!user;\n\n            if (this.isLogged) {\n                this.$refs.loggedUserLink.href = this.$refs.loggedUserLink.href.replaceAll('{{anacanId}}', user.negozioPreferito);\n            }\n            this.isLoaded = true;\n        }\n\n    }\n}","\nimport './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class StrilloSpecializedStore extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.link = this._dEl('link');\n        this.appliedTheme = this.root.dataset.appliedTheme;\n        if (this.appliedTheme) this._initStoreLocatorLink();\n    }\n\n    _initStoreLocatorLink() {\n        if (!this.link.hasAttribute('href')) return;\n        const url = new URL(this.link.getAttribute('href'), window.location.origin);\n        url.searchParams.set('ff', this.appliedTheme);\n        this.link.setAttribute('href', url.href);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getUserService } from '../../../../../libs/user-service';\n\nexport default class LoginBanner extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.userService = getUserService();\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        this._initLinks();\n        await this._checkUserLogged();\n    }\n\n    _initLinks() {\n        const links = this._dEl('link', true);\n        if (!links) return;\n        links.forEach((link) => {\n            if (!link.hasAttribute('href')) return;\n            const url = new URL(link.href);\n            url.searchParams.set('cb', window.location);\n            link.setAttribute('href', url.href);\n        });\n    }\n\n    async _checkUserLogged() {\n        const user = await this.userService.getUser();\n        if (!user) return;\n        /* hide self */\n        const event = new CustomEvent('hideLayoutItem', { bubbles: true });\n        event.data = {\n            hide: true,\n        };\n        this.root.dispatchEvent(event);\n    }\n}\n\n\n","import { getApiProvider } from '../../../../../libs/api-provider';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\n\n/** Shopfully native events that must be remapped to adobeDataLayer. */\nconst ADOBE_MAPPED_EVENTS = [\n    'catalogue_opened',\n    'product_details_opened',\n    'product_cta_clicked',\n    'clickout_link_clicked',\n    'banner_clicked',\n    'catalogue_format_switched',\n    'pdf_downloaded',\n    'section_clicked',\n    'catalogue_shared',\n];\n\n/** Used only to compute scroll_depth — never pushed to Adobe as-is. */\nconst SCROLL_SOURCE_EVENTS = ['page_viewed', 'product_impression'];\n\nconst TARGET_MILESTONES = [20, 50, 100];\n\nconst FUNNEL_VOLANTINO = {\n    nomeFunnel: 'Volantino',\n    consultazione: 'Consultazione volantino',\n    interazioni: 'Interazioni con pagina volantino',\n    condividi: 'Interazione Condividi – Volantino',\n    download: 'Interazione Download – Volantino',\n};\n\n/** Bassi e Fissi keeps its AS IS funnel naming (CPO-664), the one rt102 tracks on that page. */\nconst FUNNEL_BASSI_E_FISSI = {\n    nomeFunnel: 'Volantino Bassi e Fissi',\n    consultazione: 'Consultazione volantino',\n    interazioni: 'Interazioni con pagina volantino',\n    condividi: 'Interazioni con pagina volantino',\n    download: 'Consultazione volantino',\n};\n\n/** trackingManager drops keys with this value, including those merged from the page context. */\nconst DELETE = '__delete__';\n\nconst negozioInfo = {};\nconst viewedProducts = new Set();\nconst viewedPages = new Set();\nlet reachedMilestones = {};\nlet datalayerHookInstalled = false;\nlet pageContextPromise = null;\nlet trackingRoot = null;\n\nfunction isBassiEFissiPage() {\n    return /bassi-e-fissi/i.test(window.location.pathname);\n}\n\nfunction getFunnelLabels() {\n    return isBassiEFissiPage() ? FUNNEL_BASSI_E_FISSI : FUNNEL_VOLANTINO;\n}\n\nfunction normalizeFormat(format) {\n    if (!format) return undefined;\n    const value = String(format).toLowerCase();\n    if (value === 'pdf') return 'Pdf';\n    if (value === 'next') return 'Next';\n    return format;\n}\n\n/** section_clicked carries the chip label in categoryName, the other events in section. */\nfunction getSection(source) {\n    return source.section || source.categoryName || source.section_name;\n}\n\nfunction resetScrollTracking() {\n    viewedProducts.clear();\n    viewedPages.clear();\n    reachedMilestones = {};\n}\n\nfunction buildNegozioInfo() {\n    if (!negozioInfo.idNegozio && !negozioInfo.CooperativaNegozio && !negozioInfo.Insegna) {\n        return undefined;\n    }\n    return { ...negozioInfo };\n}\n\nfunction buildVolantinoInfo(source, extra = {}) {\n    const info = {\n        // Shopfully catalogue id is not the Conad flyer code; that arrives as custom_label\n        // (echo of sf_custom_label passed at embed time).\n        id: source.custom_label,\n        format: normalizeFormat(source.format),\n        title: source.title || source.catalogue_title || source.name,\n        ...extra,\n    };\n\n    Object.keys(info).forEach((key) => {\n        if (info[key] === undefined || info[key] === null || info[key] === '') {\n            delete info[key];\n        }\n    });\n\n    return Object.keys(info).length ? info : undefined;\n}\n\nfunction buildProdottoInfo(source) {\n    // A product without discount comes with discounted_price alone (or equal to\n    // full_price): the tracking strategy wants it as full_price only.\n    const isDiscounted =\n        !!source.full_price &&\n        !!source.discounted_price &&\n        parseFloat(source.full_price) !== parseFloat(source.discounted_price);\n\n    const info = {\n        product_name: source.product_name,\n        product_code: source.product_code,\n        full_price: isDiscounted ? source.full_price : source.full_price || source.discounted_price,\n        discounted_price: isDiscounted ? source.discounted_price : undefined,\n    };\n\n    Object.keys(info).forEach((key) => {\n        if (info[key] === undefined || info[key] === null || info[key] === '') {\n            delete info[key];\n        }\n    });\n\n    return Object.keys(info).length ? info : undefined;\n}\n\nfunction pushToAdobe(payload) {\n    const root = trackingRoot || document.body;\n    getTrackingManager().track(root, payload);\n}\n\nfunction mapSmartViewerEvent(source) {\n    const funnel = getFunnelLabels();\n    const store = buildNegozioInfo();\n    const event = source.event;\n\n    switch (event) {\n        case 'catalogue_opened':\n            return {\n                event,\n                funnel: {\n                    nomeFunnel: funnel.nomeFunnel,\n                    stepFunnel: funnel.consultazione,\n                },\n                negozioInfo: store,\n                volantinoInfo: buildVolantinoInfo(source),\n            };\n\n        case 'section_clicked':\n            return {\n                event,\n                funnel: {\n                    nomeFunnel: funnel.nomeFunnel,\n                    stepFunnel: funnel.interazioni,\n                },\n                CustomLink: 'Click sezioni volantino',\n                negozioInfo: store,\n                volantinoInfo: buildVolantinoInfo(source, {\n                    section: getSection(source),\n                }),\n            };\n\n        case 'product_details_opened':\n            return {\n                event,\n                funnel: {\n                    nomeFunnel: funnel.nomeFunnel,\n                    stepFunnel: funnel.interazioni,\n                },\n                CustomLink: 'Click dettaglio prodotto',\n                negozioInfo: store,\n                volantinoInfo: buildVolantinoInfo(source, {\n                    page_number: source.page_number,\n                    section: getSection(source),\n                }),\n                prodottoInfo: buildProdottoInfo(source),\n            };\n\n        case 'product_cta_clicked':\n            return {\n                event,\n                funnel: {\n                    nomeFunnel: funnel.nomeFunnel,\n                    stepFunnel: funnel.interazioni,\n                },\n                CustomLink: 'Click cta dettaglio prodotto',\n                negozioInfo: store,\n                volantinoInfo: buildVolantinoInfo(source, {\n                    page_number: source.page_number,\n                    section: getSection(source),\n                    type: source.type || source.cta_type,\n                    cta_label: source.cta_label,\n                    url: source.url || source.cta_url,\n                }),\n                prodottoInfo: buildProdottoInfo(source),\n            };\n\n        case 'catalogue_shared':\n            return {\n                event,\n                funnel: {\n                    nomeFunnel: funnel.nomeFunnel,\n                    stepFunnel: funnel.condividi,\n                },\n                CustomLink: 'Click Condividi',\n                negozioInfo: store,\n                volantinoInfo: buildVolantinoInfo(source),\n                prodottoInfo: buildProdottoInfo(source),\n            };\n\n        case 'pdf_downloaded':\n            return {\n                event,\n                funnel: {\n                    nomeFunnel: funnel.nomeFunnel,\n                    stepFunnel: funnel.download,\n                },\n                CustomLink: 'Click Download Volantino',\n                negozioInfo: store,\n                volantinoInfo: buildVolantinoInfo(source),\n            };\n\n        case 'catalogue_format_switched':\n            return {\n                event,\n                funnel: {\n                    nomeFunnel: funnel.nomeFunnel,\n                    stepFunnel: funnel.interazioni,\n                },\n                CustomLink: 'Click Lista prodotti',\n                negozioInfo: store,\n                volantinoInfo: buildVolantinoInfo(\n                    {\n                        custom_label: source.custom_label,\n                        title: source.title || source.catalogue_title || source.name,\n                    },\n                    // format is not in the tracking strategy for this event: drop the one\n                    // trackingManager would merge in from the page context.\n                    { format: DELETE, format_to: normalizeFormat(source.format_to || source.format) }\n                ),\n            };\n\n        case 'banner_clicked':\n        case 'clickout_link_clicked':\n            return {\n                event: 'banner_clicked',\n                funnel: {\n                    nomeFunnel: funnel.nomeFunnel,\n                    stepFunnel: funnel.interazioni,\n                },\n                CustomLink: 'Click Banner',\n                banner: {\n                    nomeBanner: source.url || source.banner_url || source.link_url,\n                },\n                negozioInfo: store,\n                volantinoInfo: buildVolantinoInfo(source),\n            };\n\n        default:\n            return null;\n    }\n}\n\nfunction emitScrollDepth(data) {\n    TARGET_MILESTONES.forEach((milestone) => {\n        if (data.percentage < milestone || reachedMilestones[milestone]) return;\n\n        reachedMilestones[milestone] = true;\n\n        pushToAdobe({\n            event: 'scroll_depth',\n            negozioInfo: buildNegozioInfo(),\n            volantinoInfo: buildVolantinoInfo(\n                { custom_label: data.customLabel, format: data.format, title: data.title },\n                {\n                    milestone_percentage: `${milestone}%`,\n                    unique_items_viewed: data.uniqueItemsViewed,\n                    total_items: data.totalItems,\n                }\n            ),\n        });\n    });\n}\n\nfunction handleScrollSources(source) {\n    if (source.event === 'page_viewed' && source.page_number && source.total_pages) {\n        const totalPages = parseInt(source.total_pages, 10);\n        if (totalPages <= 0) return;\n\n        viewedPages.add(source.page_number);\n        emitScrollDepth({\n            percentage: (viewedPages.size / totalPages) * 100,\n            format: 'pdf',\n            uniqueItemsViewed: viewedPages.size,\n            totalItems: totalPages,\n            customLabel: source.custom_label,\n            title: source.title || source.catalogue_title || source.name,\n        });\n        return;\n    }\n\n    if (\n        source.event === 'product_impression' &&\n        source.products_count &&\n        normalizeFormat(source.format) !== 'Pdf'\n    ) {\n        const totalProducts = parseInt(source.products_count, 10);\n        if (totalProducts <= 0) return;\n\n        viewedProducts.add(source.product_position);\n        emitScrollDepth({\n            percentage: (viewedProducts.size / totalProducts) * 100,\n            format: source.format || 'next',\n            uniqueItemsViewed: viewedProducts.size,\n            totalItems: totalProducts,\n            customLabel: source.custom_label,\n            title: source.title || source.catalogue_title || source.name,\n        });\n    }\n}\n\nfunction handleSmartViewerPush(source) {\n    if (\n        source.event === 'catalogue_opened' ||\n        source.event === 'catalogue_format_switched'\n    ) {\n        resetScrollTracking();\n    }\n\n    if (SCROLL_SOURCE_EVENTS.indexOf(source.event) > -1) {\n        handleScrollSources(source);\n        return;\n    }\n\n    if (ADOBE_MAPPED_EVENTS.indexOf(source.event) === -1) return;\n\n    const adobePayload = mapSmartViewerEvent(source);\n    if (!adobePayload) return;\n\n    // Drop empty nested nodes so trackingManager does not push noise\n    ['negozioInfo', 'volantinoInfo', 'prodottoInfo', 'banner', 'funnel'].forEach((key) => {\n        if (\n            adobePayload[key] &&\n            typeof adobePayload[key] === 'object' &&\n            Object.keys(adobePayload[key]).length === 0\n        ) {\n            delete adobePayload[key];\n        }\n    });\n\n    pushToAdobe(adobePayload);\n}\n\n/**\n * Intercept Shopfully → window.dataLayer pushes and remap them to adobeDataLayer\n * via trackingManager (Conad DTMdataLayer shape). Install once per page.\n * @param {HTMLElement} [root] component root used as tracking context\n */\nexport function installSmartViewerDatalayerHook(root) {\n    if (root) trackingRoot = root;\n    if (datalayerHookInstalled) return;\n    datalayerHookInstalled = true;\n\n    window.dataLayer = window.dataLayer || [];\n    const originalPush = window.dataLayer.push;\n\n    window.dataLayer.push = function () {\n        const args = Array.prototype.slice.call(arguments);\n        const pushedItem = args[0];\n\n        if (pushedItem && typeof pushedItem === 'object' && pushedItem.event) {\n            try {\n                handleSmartViewerPush(pushedItem);\n            } catch (e) {\n                console.warn('SmartViewer adobe mapping failed', e);\n            }\n        }\n\n        return originalPush.apply(window.dataLayer, args);\n    };\n}\n\n/**\n * Resolve negozioInfo from ?anacanId= (AS IS keys used by Conad tracking).\n * @returns {Promise<void>}\n */\nexport function resolvePageContext() {\n    if (!pageContextPromise) {\n        pageContextPromise = (async () => {\n            const anacanId = new URLSearchParams(window.location.search).get('anacanId');\n            if (!anacanId) return;\n\n            negozioInfo.idNegozio = anacanId;\n\n            try {\n                const pdv = await getApiProvider().getPointOfServiceByAnacanId({ anacanId });\n                if (!pdv) return;\n                negozioInfo.idNegozio = pdv.anacanId || anacanId;\n                negozioInfo.Insegna = pdv.descrizioneInsegna;\n                negozioInfo.CooperativaNegozio = pdv.codiceCooperativa;\n            } catch (e) {\n                console.warn('Cannot get store for SmartViewer tracking', anacanId);\n            }\n        })();\n    }\n    return pageContextPromise;\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { getToastManager } from '../../../../../libs/toast-manager';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport { installSmartViewerDatalayerHook, resolvePageContext } from './datalayer-hook';\nimport { openLoader, closeLoader } from '../../../../../libs/utils';\n\nconst PROPERTY_ID = '5b3b8d85-e7f4-442b-9e52-2046ac1f5264';\nconst PROPERTY_ID_FOR_EDITORIAL = '6a6b37a3-36f0-4088-91e7-4c1f0ad3017a';\nconst COUNTRY = 'it_it';\n// OneTrust group of the profiling cookies, the one Launch reads as \"Cookie di profilazione\"\nconst PROFILING_CONSENT_GROUP = 'C0004';\n// Kill switch: false sends 'false' to the viewer regardless of OneTrust\nconst PROFILING_CONSENT_ENABLED = true;\n\nexport default class EmbeddedFlyer extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.sfFlyerCode = this.root.dataset.sfFlyerCode;\n        this.isEditorialFlyer = this.root.dataset.isEditorialFlyer === 'true';\n        this.hideDownload = this.root.dataset.hideDownload === 'true';\n        this.embedContainer = this._dEl('embedContainer');\n        this.userService = getUserService();\n        this.toastManager = getToastManager();\n        this.flowManager = getFlowManager();\n        // Store to save the product on, from the flyer page url as in rt152\n        this.anacanId = new URLSearchParams(window.location.search).get('anacanId');\n\n        if (!this.sfFlyerCode || !this.embedContainer) {\n            console.error('Skipping embedded flyer: missing sf flyer code or embed container');\n            this._removeMainComponent();\n            return;\n        }\n\n        installSmartViewerDatalayerHook(this.root);\n        this._initViewer();\n    }\n\n    async _initViewer() {\n        if (this.initialized) return;\n        this.initialized = true;\n\n        try {\n            openLoader('main');\n            const [SFviewer] = await Promise.all([\n                getExtApiHelper().getShopfullyViewerApi(),\n                resolvePageContext(),\n            ]);\n            if (typeof SFviewer !== 'function') {\n                console.error('Shopfully SmartViewer API not available');\n                return;\n            }\n            this.profilingConsent = this._readProfilingConsent();\n            const sfViewerOptions = {\n                country: COUNTRY,\n                id: this.isEditorialFlyer ? PROPERTY_ID_FOR_EDITORIAL : PROPERTY_ID,\n                container_id: this.embedContainer.id,\n                sf_custom_label: this.sfFlyerCode,\n                sf_section: 'flyer',\n                sf_hide_download: this.hideDownload ? 'true' : 'false',\n                sf_hide_thumbnail_on_flyer_loading: this.showThumbnailOnFlyerLoading ? 'false' : 'true',\n                profiling_consent: this.profilingConsent,\n                sf_enable_datalayer_events: 'true',\n                sf_onsectionchange: () => {},\n            };\n            /* TODO: Shopfully dice che questo campo sta funzionando \n             * ma la doc ufficiale dello Smartviewer dice anche che se questo campo è popolato, \n             * allora anche sf_retailer_id deve essere popolato altrimenti sf_store_id viene ignorato.\n             * Attualmente sf_retailer_id non è popolato dato che non sappiamo cosa sia.\n            **/\n            if (this.anacanId) {\n                sfViewerOptions.sf_store_id = this.anacanId;\n            }\n\n            // Passing a function is also what enables the add-to-cart CTA, so it is\n            // registered only when the product can actually be saved: flyer + store +\n            // logged-in user. Without them the button would do nothing (or show for\n            // anonymous users who cannot save to favorites).\n            const user = await this.userService.getUser();\n            if (this.sfFlyerCode && this.anacanId && user) {\n                sfViewerOptions.sf_on_add_to_cart = (event) => this._addFavoriteProduct(event);\n            }\n            // Before SFviewer: the iframe may post its first message before the promise resolves\n            if (PROFILING_CONSENT_ENABLED) this._watchProfilingConsent();\n            closeLoader('main');\n            await SFviewer(sfViewerOptions);\n        } catch (error) {\n            console.error('Error initializing Shopfully SmartViewer', error);\n            closeLoader('main');\n            throw error;\n        }\n    }\n\n    /**\n     * OneTrust is injected by Launch and may not be loaded yet: no active groups\n     * means no consent. Lowercase only, the viewer breaks on 'TRUE'/'FALSE'.\n     */\n    _readProfilingConsent() {\n        if (!PROFILING_CONSENT_ENABLED) return 'false';\n        const activeGroups = (window.OnetrustActiveGroups || '').split(',');\n        return activeGroups.includes(PROFILING_CONSENT_GROUP) ? 'true' : 'false';\n    }\n\n    /**\n     * SFupdateConsent posts to the viewer iframe, and the post is lost until the\n     * viewer app is listening: the SFviewer promise resolves too early for that.\n     * The first message from the iframe is the earliest safe point, then every\n     * OneTrust choice is forwarded. This also covers OneTrust loading after the viewer.\n     * Listeners are registered before the viewer exists, so the iframe is looked up\n     * on each message instead of once.\n     */\n    _watchProfilingConsent() {\n        let viewerReady = false;\n        const updateConsent = () => {\n            const consent = this._readProfilingConsent();\n            if (!viewerReady || consent === this.profilingConsent) return;\n            if (typeof window.SFupdateConsent !== 'function') return;\n            this.profilingConsent = consent;\n            window.SFupdateConsent({ profiling_consent: consent });\n        };\n        const onViewerMessage = (event) => {\n            const iframe = this.embedContainer.querySelector('iframe');\n            if (!iframe || event.source !== iframe.contentWindow) return;\n            window.removeEventListener('message', onViewerMessage);\n            viewerReady = true;\n            updateConsent();\n        };\n\n        window.addEventListener('message', onViewerMessage);\n        window.addEventListener('OneTrustGroupsUpdated', updateConsent);\n    }\n\n    /**\n     * The viewer fires the event without knowing which products are already\n     * saved, so this is always an insert. A second tap on the same product makes\n     * the servlet answer 400: userService logs it and we leave the viewer alone.\n     */\n    async _addFavoriteProduct(event) {\n        const productCode = event?.product_code;\n\n        if (!productCode || !this.sfFlyerCode || !this.anacanId) {\n            console.warn('Skipping favorite product: missing product code, flyer id or store');\n            return;\n        }\n\n        if ((await this.userService.getUser()) == null) {\n            console.warn('Skipping favorite product: user is not logged in');\n            return;\n        }\n\n        // The servlet saves products only for the user's saved stores: the flyer\n        // store is added silently, the popup only explains a full store list\n        const savedStores = await this.userService.getSavedStores();\n        if (savedStores.some((store) => store.anacanId == this.anacanId)) {\n            await this._saveFavoriteProduct(productCode, false);\n        } else if (savedStores.length >= window.maxStoreOfInterest) {\n            this.flowManager.startFlow({\n                flowName: 'add-store-popup',\n                flowSteps: [{ name: 'add-store-popup' }],\n                initialData: { anacanId: this.anacanId },\n            });\n        } else {\n            await this._saveFavoriteProduct(productCode, true);\n        }\n    }\n\n    async _saveFavoriteProduct(productCode, addStore) {\n        openLoader('main');\n        let ok = false;\n        try {\n            if (!addStore || (await this.userService.addSavedStore(this.anacanId))) {\n                ok = await this.userService.addDisFavoriteProduct(this.anacanId, this.sfFlyerCode, productCode);\n            }\n        } finally {\n            closeLoader('main');\n        }\n        if (ok) {\n            this.toastManager.success('Prodotto aggiunto ai preferiti');\n        } else {\n            this.toastManager.error('Errore aggiungendo il prodotto ai preferiti');\n        }\n    }\n}","\nimport './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class InsiemeCardsBannerCta extends Component {\n    constructor(name, root) {\n        super(name, root);\n    }\n}\n\n\n","\nimport './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class HeroCollection extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.textColor = this.root.dataset.textColor;\n        this.ctaTextColor = this.root.dataset.ctaTextColor;\n        if (this.textColor) this._setTextColor();\n        if (this.ctaTextColor) this._setCtaTextColor(); \n    }\n\n    _setTextColor() {\n        const color = `${this.textColor}`;\n        const textElements = [\n            this._dEl('breadcrumb'),\n            this._dEl('title'),\n            this._dEl('description'),\n            this._dEl('bottomText'),\n        ];\n        for (const el of textElements.filter((el) => !!el)) {\n            el.style.color = color;\n        }\n    }\n\n    _setCtaTextColor() {\n        const color = `${this.ctaTextColor}`;\n        const ctaText = this._dEl('cta')?.querySelector('.rt002-cta__label');\n        if (ctaText) {\n            ctaText.style.color = color; \n        }\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { getMyConadApiProvider } from '../../../../../libs/myconad-api-provider';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\n\nexport default class HeroPremio extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.root = root;\n        this.textColor = this.root.dataset.textColor;\n\n        if (this.textColor) this._setTextColor();\n\n        this.userService = getUserService();\n        this.flowManager = getFlowManager();\n\n        this.bolliniValue = this.root.dataset.bolliniValue;\n        this.suitableNameplate = this._dEl('suitable');\n        this.cta = this._dEl('cta');\n        this._showSuitableNameplate();\n    }\n\n    async _showSuitableNameplate() {\n        const user = await this.userService.getUser();\n        if (!user || !user.cartaFedelta) {\n            return;\n        }\n\n        try {\n            const myConadApiProvider = getMyConadApiProvider();\n            const bolliniBalance = await myConadApiProvider.getUserBalance({ fidelityCard: user.cartaFedelta, collectionCode: this.root.dataset.initiativeCode });\n\n            const coopsToExclude = this.root.dataset.coopsToExclude ? this.root.dataset.coopsToExclude.split(',') : [];\n            if (!coopsToExclude.includes(user.newMappedCooperative.toLowerCase())) {\n                this.cta.classList.remove(this._elMod('cta', 'hidden'));\n                this._addListener('click', () => {\n                    this.flowManager.startFlow({\n                        name: 'open-redeem-prize-popup',\n                        flowSteps: [{ name: 'redeem-prize-details-popup' }],\n                        initialData: {\n                            ean1: this.root.dataset.ean1,\n                            ean2: this.root.dataset.ean2,\n                            descrizioneMetodoRedenzione1: this.root.dataset.bolliniText,\n                            descrizioneMetodoRedenzione2: this.root.dataset.pointsText\n                        }\n                    });\n                }, this.cta);\n            }\n\n            const totalBalance = bolliniBalance.saldoCumulato - bolliniBalance.saldoSpeso;\n            if (totalBalance >= 1) {\n                if (this.bolliniValue && this.bolliniValue <= totalBalance) {\n                    this.suitableNameplate.classList.remove(this._elMod('suitable', 'invisible'));\n                }\n            }\n        } catch (e) {\n            console.warn(e);\n        }\n    }\n\n    _setTextColor() {\n        const color = `${this.textColor}`;\n        const textElements = [\n            this._dEl('breadcrumb'),\n            this._dEl('title'),\n            this._dEl('abstract'),\n            this._dEl('bolliniText'),\n            this._dEl('pointsLabel'),\n            this._dEl('pointsText'),\n        ];\n        for (const el of textElements.filter((el) => !!el)) {\n            el.style.color = color;\n        }\n        const divider = this._dEl('divider');\n        if (!divider) return;\n        divider.style.backgroundColor = color;\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { getMyConadApiProvider } from '../../../../../libs/myconad-api-provider';\n\nexport default class CardPremiSlider extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.pagination = this._dEl('pagination');\n        this.swiper = null;\n\n        this.slide = this._dEl('slideContainer');\n        this.track = this._dEl('track', false);\n\n\n        this.userService = getUserService();\n        this.cards = this._dEl('slide', true);\n        this._initSwiper();\n        this._doLogic();\n    }\n\n\n    async _doLogic() {\n        const user = await this.userService.getUser();\n        if (!user || !user.cartaFedelta) {\n            return;\n        }\n\n        try {\n            const myConadApiProvider = getMyConadApiProvider();\n            const bolliniBalance = await myConadApiProvider.getUserBalance({ fidelityCard: user.cartaFedelta, collectionCode: this.root.dataset.initiativeCode });\n            const totalBalance = bolliniBalance.saldoCumulato - bolliniBalance.saldoSpeso;\n            if (totalBalance >= 1) {\n                this.cards.forEach((card) => {\n                    if (\n                        card.dataset.bolliniValue &&\n                        card.dataset.bolliniValue <= totalBalance\n                    ) {\n                        card.querySelector('.rt218-card-premi__suitable').classList.remove('rt218-card-premi__suitable--invisible');\n                    }\n                });\n            }\n        } catch (e) {\n            console.warn(e);\n        }\n    }\n\n    async _initSwiper() {\n        const slideCounts = this._dEl('slideContainer', true).length;\n        if (this.pagination && slideCounts <= 4) {\n            this.pagination.classList.add(this._elMod('pagination', 'hidden'));\n        }\n\n        const options = {\n            wrapperClass: this._el('track'),\n            slideClass: this._el('slideContainer'),\n            slidesPerView: 'auto',\n            spaceBetween: 16,\n            watchOverflow: true,\n            observer: true,\n            observeParents: true,\n        };\n\n        if (this.pagination) {\n            options['pagination'] = {\n                el: this._dEl('pagination', true),\n                bulletClass: this._el('bullet'),\n                bulletActiveClass: this._elMod('bullet', 'active'),\n                clickable: true,\n            };\n        }\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(this.root, options);\n    }\n\n    //delete all\n    dispose() {\n        super.dispose();\n        this.swiper?.destroy(true, true);\n    }\n}\n\n\n","import Component from '../../../../../libs/components/component';\nimport { getMyConadApiProvider } from '../../../../../libs/myconad-api-provider';\nimport { getRegister } from '../../../../../libs/register';\nimport { getUserService } from '../../../../../libs/user-service';\nimport './style.scss';\n\nexport default class ContainerCardPremi extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.root = root;\n        this.userService = getUserService();\n        this.cards = this._dEl('card', true);\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        const user = await this.userService.getUser();\n        if (!user || !user.cartaFedelta) {\n            return;\n        }\n        // legacy logic to show \"Suitable\" badge on legacy cards\n        try {\n            const myConadApiProvider = getMyConadApiProvider();\n            const bolliniBalance = await myConadApiProvider.getUserBalance({ fidelityCard: user.cartaFedelta, collectionCode: this.root.dataset.initiativeCode });\n            const totalBalance = bolliniBalance.saldoCumulato - bolliniBalance.saldoSpeso;\n            if (totalBalance >= 1) {\n                this.cards.forEach((card) => {\n                    if (\n                        card.dataset.bolliniValue &&\n                        card.dataset.bolliniValue <= totalBalance\n                    ) {\n                        card.querySelector('.rt218-card-premi__suitable')?.classList.remove('rt218-card-premi__suitable--invisible');\n                    }\n                });\n            }\n        } catch (e) {\n            console.warn(e);\n        }\n    }\n}\n\nif (import.meta.webpackHot) {\n    import.meta.webpackHot.accept();\n    if (import.meta.webpackHot.status() == 'apply') getRegister().reload('.rt142-container-card-premi');\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getGMapsHelper } from '../../../../../libs/gmaps-helper';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getPdvDistance, getPoiType } from '../../../../../libs/pdv-utils';\n\nexport default class CardNearbyContainer extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.resList = this._dEl('track');\n        this.SLIDE = this._el('slide');\n\n        this.lon = this.root.dataset.storeLon;\n        this.lat = this.root.dataset.storeLat;\n        this.stores = JSON.parse(this.root.dataset.storeNeighbors);\n        this._addResults();\n    }\n\n    async _addResults() {\n        const results = this.stores;\n        if (!results || results.length <= 0) {\n            this._removeMainComponent();\n            return;\n        }\n\n        const nearbyCardCall = (await import('../rt220-card-nearby/rt220-card-nearby.html')).default;\n\n        /* the first one is always itself */\n        const destinations = [];\n        let count = 0;\n        for (let store of results) {\n            if (store.anacanId == this.anacanId) continue;\n            if (count >= 3) break;\n            destinations.push(`${store.latitudine},${store.longitudine}`);\n            count++;\n        }\n\n        const times = await this.calcDistance(this.lat, this.lon, destinations);\n\n        count = 0;\n        for (let store of results) {\n            if (store.anacanId == this.anacanId) continue;\n            if (count >= 3) break;\n\n            const nearbyCardData = {\n                extraClasses: this.SLIDE,\n                title: store.pdvTitle,\n                text: store.pdvAddress,\n                km: getPdvDistance(store),\n                minutes: times[count]?.duration?.text || '',\n                link: store.pdvLink,\n                icon: getPoiType(store),\n            };\n            const nearbyCard = runTemplate(nearbyCardCall, nearbyCardData);\n\n            this.resList.appendChild(nearbyCard);\n            count++;\n        }\n    }\n\n    async calcDistance(latitudine, longitudine, destinations) {\n        const maps = await getGMapsHelper().getGMaps();\n        const service = new maps.DistanceMatrixService(); // instantiate Distance Matrix service\n        const matrixOptions = {\n            origins: [`${latitudine},${longitudine}`], // technician locations\n            destinations, // customer address\n            travelMode: 'DRIVING',\n            unitSystem: maps.UnitSystem.METRIC,\n        };\n\n        return new Promise((resolve) => {\n            service.getDistanceMatrix(matrixOptions, function (response) {\n                if (response?.rows?.length > 0 && response?.rows[0].elements) resolve(response?.rows[0].elements);\n                resolve([]);\n            });\n        });\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { closeLoader, delay, emptyElement, openLoader } from '../../../../../libs/utils';\nimport { formToJSON } from '../../../../../libs/form-to-json';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\n\nexport default class MapSearchStoresForm extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this._doLogic();\n    }\n\n    _doLogic() {\n        this.register = getRegister();\n        this.isBooksReservation = this.root.hasAttribute('data-books-reservation');\n        this.textLink = this.root.dataset.storeTextLink;\n        this.config = JSON.parse(this.root.dataset.config);\n        this.modality = this.root.dataset.modality;\n        this.showServices = this.root.dataset.showServices === 'true'; \n        this.showServicesIcons = this.root.dataset.showServicesIcons === 'true';\n\n        try {\n            this.citiesMap = JSON.parse(this.root.dataset.citiesMap);\n        } catch (error) {\n            console.warn('Could not parse cities map');\n            this.citiesMap = {};\n        }\n        try {\n            this.stores = JSON.parse(this.root.dataset.stores);\n        } catch (error) {\n            console.warn('Could not parse store results');\n            this.stores = [];\n        }\n        this.pagination = [];\n        this.PAGE_SIZE = 6;\n        this.LOAD_MORE_HIDDEN = this._elMod('loadMore', 'hidden');\n\n        this._getElements();\n        this._addEventListeners();\n    }\n\n    /* must stay aligned with StaticUtils.convertToUrlFriendly, city select values are built there */\n    _convertToUrlFriendly(str) {\n        let tmp = str\n            .trim()\n            .normalize('NFD')\n            .replace(/\\p{Diacritic}/gu, '')\n            .replace(/\\s|[/\\\\_:]/g, '-')\n            .replace(/[^A-Za-z0-9-]/g, '')\n            .replace(/-{2,}/g, '-')\n            .toLowerCase();\n\n        tmp = tmp.length > 150 ? tmp.substring(0, 150) : tmp;\n        return tmp.replace(/-+$/, '');\n    }\n\n    _getElements() {\n        this.form = this._dEl('form');\n        this.district = this._dEl('district');\n        this.city = this._dEl('city'); /* city select is optional */\n        this.search = this._dEl('search');\n        this.numResults = this._dEl('numResults');\n        this.numResultsCount = this.numResults.querySelector('span');\n        this.statusAnnouncer = this._dEl('statusAnnouncer');\n        this.NUM_RESULTS_SHOW = this._elMod('numResults', 'show');\n        this.results = this._dEl('results');\n        this.loadMore = this._dEl('loadMore');\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'rcInputChanged',\n            (e) => {\n                if (!this.city) return;\n                const districtCode = e.data.value;\n                this._loadCities(this.citiesMap[`${districtCode}`]);\n            },\n            this.district\n        );\n        this._addListener(\n            'submit',\n            (e) => {\n                e.preventDefault();\n            },\n            this.form\n        );\n        this._addListener(\n            'click',\n            () => {\n                this._doSearchLogic(formToJSON(this.form));\n            },\n            this.search\n        );\n        this._addListener(\n            'click',\n            () => {\n                this.currentPage++;\n                this.renderResults(this.currentPage);\n                this._checkLoadMore();\n            },\n            this.loadMore\n        );\n    }\n\n    _doSearchLogic({ codiceProvincia, codiceComune }) {\n        const districtCode = codiceProvincia;\n        /* city select values are already url friendly city names */\n        const cityCode = codiceComune;\n\n        if (!districtCode) {\n            // district required\n            this._requireSelection(this.district);\n            return;\n        }\n\n        if (!this.city) {\n            // search only by district\n            this._loadStores({ districtCode });\n            return;\n        }\n\n        if (!cityCode) {\n            // city required\n            this._requireSelection(this.city);\n            return;\n        }\n\n        // search by district and city\n        this._loadStores({ districtCode, cityCode });\n    }\n\n    _requireSelection(selectEl) {\n        const obj = this.register.getClass(selectEl);\n        obj?.setState('error');\n        obj?._requireField();\n    }\n\n    _loadCities(cities) {\n        const obj = this.register.getClass(this.city);\n        obj.enable();\n        obj.reset();\n        obj.setItems(cities);\n    }\n\n    async _loadStores({ districtCode, cityCode }) {\n        openLoader('main');\n        const filtered = this.stores?.filter((store) => {\n            if (!cityCode) return store.codiceProvincia == districtCode;\n            return store.nomeComune ? this._convertToUrlFriendly(store.nomeComune) == cityCode : false;\n        });\n        await this.paginateStoreCards(filtered);\n        this.setNumResults(filtered.length);\n        emptyElement(this.results);\n        this.renderResults();\n        this._checkLoadMore();\n        await delay(250);\n        closeLoader('main');\n    }\n\n    _getText(store) {\n        // if not default, than return empty text\n        if (this.modality && this.modality != 'default') return '';\n\n        const config = this.config.find(\n            (item) => store.serviziId.filter((service) => service == item.serviceId).length > 0\n        );\n        return config?.text;\n    }\n\n    _getServices(store) {\n        // if timing, return\n        if (this.modality === 'ext-openings') return [];\n\n        return store.storeCardServicesMap;\n    }\n\n    _getTimes(store) {\n        // if not timing, return\n        if (this.modality != 'ext-openings') return [];\n\n        const fromDate = this.config.extFrom;\n        const toDate = this.config.extTo;\n\n        const resultTimes = [];\n        const times = store.giornateStraordinarie;\n        for (const time of times) {\n            const date = time.giornoDate;\n            if (date >= fromDate && date <= toDate) resultTimes.push(time);\n        }\n\n        // sort dates\n        resultTimes.sort((a, b) => {\n            return a.giornoDate - b.giornoDate;\n        });\n        return resultTimes;\n    }\n\n    _getStoreCard(store, storeCardHtml) {\n        const storeCardData = {\n            title: store.pdvTitle || store.descrizioneInsegna,\n            address: store.pdvAddress || `${store.indirizzo} ${store.nomeComune} (${store.codiceProvincia})`,\n            email: this.isBooksReservation ? store.booksProviderEmail : null,\n            link: this.isBooksReservation ? store.booksProviderLink : store.pdvLink,\n            text: this._getText(store),\n            times: this._getTimes(store),\n            services: this._getServices(store),\n            servicesSize: this._getServices(store) ? Object.keys(this._getServices(store)).length : 0, \n            showServices: this.showServices, \n            showServicesIcons: this.showServicesIcons, \n            linkLabel: getDictionary().get(this.textLink || 'Go to store card'),\n        };\n        return runTemplate(storeCardHtml, storeCardData);\n    }\n\n    async paginateStoreCards(stores) {\n        const storeCardHtml = (await import('./partials/store-card.html')).default;\n        this.pagination.splice(0, this.pagination.length);\n        for (const store of stores) {\n            const storeCard = this._getStoreCard(store, storeCardHtml);\n            this.pagination.push(storeCard);\n        }\n        this.numPages = Math.ceil(this.pagination.length / this.PAGE_SIZE);\n        this.currentPage = 1;\n    }\n\n    renderResults(pageIndex = 1) {\n        if (!this.numPages || this.numPages <= 0) {\n            console.warn('Missing or invalid numPages');\n            return;\n        }\n        const start = (Math.min(pageIndex, this.numPages) - 1) * this.PAGE_SIZE;\n        const end = start + this.PAGE_SIZE;\n        const page = this.pagination.slice(start, end);\n        for (const card of page) {\n            this.results.append(card);\n        }\n    }\n\n    _checkLoadMore() {\n        if (this.currentPage >= this.numPages) {\n            this.loadMore.classList.add(this.LOAD_MORE_HIDDEN);\n        } else {\n            this.loadMore.classList.remove(this.LOAD_MORE_HIDDEN);\n        }\n    }\n\n    setNumResults(num = 0) {\n        if (!num || num <= 0) {\n            this.numResultsCount.innerText = '0';\n            this.numResults.classList.remove(this.NUM_RESULTS_SHOW);\n            this.statusAnnouncer.innerText = '';\n            return;\n        }\n        this.numResultsCount.innerText = `${num}`;\n        this.numResults.classList.add(this.NUM_RESULTS_SHOW);\n        this.statusAnnouncer.innerText = `${num} ${getDictionary().get('results found')}`;\n    }\n}\n\n\n","import { getApiProvider } from '../../../../../libs/api-provider';\nimport './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { closeLoader, emptyElement, htmlToElement, openLoader } from '../../../../../libs/utils';\n\nexport default class MapSearchStores extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.apiProvider = getApiProvider();\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        this.loaderEndpoint = this.root.dataset.loaderEndpoint;\n        this.btnRegions = this._dEl('btnRegions');\n        this.list = this._dEl('list');\n        this.regions = this._dEl('region', true);\n        this.map = this._dEl('map');\n        this.announcer = this._dEl('announcer');\n        this.searchContainer = this._dEl('searchContainer');\n        await this._loadMap();\n        if (this.map) this.regionMaps = [...this.map.querySelectorAll('path.regionMap')];\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        const selectRegion = (self) => {\n            return (r) => {\n                if (r != self) r.classList.remove('selected');\n                else r.classList.add('selected');\n            };\n        };\n\n        /* regions map */\n        this.regionMaps?.forEach((region) => {\n            this._addListener(\n                'mouseenter',\n                () => {\n                    const regionCode = region.dataset.regionCode;\n                    this.list\n                        .querySelector(`${this._el('region', true)}[data-region-code='${regionCode}']`)\n                        ?.classList.add(this._elMod('region', 'mapHovered'));\n                },\n                region\n            );\n            this._addListener(\n                'mouseleave',\n                () => {\n                    const regionCode = region.dataset.regionCode;\n                    this.list\n                        .querySelector(`${this._el('region', true)}[data-region-code='${regionCode}']`)\n                        ?.classList.remove(this._elMod('region', 'mapHovered'));\n                },\n                region\n            );\n            this._addListener(\n                'click',\n                () => {\n                    const regionCode = region.dataset.regionCode;\n                    const regionListItem = this.list.querySelector(\n                        `${this._el('region', true)}[data-region-code='${regionCode}']`\n                    );\n                    const regionName = regionListItem?.innerText.trim();\n                    this.regions.forEach(selectRegion(regionListItem));\n                    this.regionMaps.forEach(selectRegion(region));\n                    this._loadSearchSection({\n                        codiceRegione: regionCode,\n                        nomeRegione: regionName,\n                    });\n                },\n                region\n            );\n        });\n\n        /* regions list */\n        this._addListener(\n            'click',\n            () => {\n                const isOpen = this.btnRegions.classList.toggle('open');\n                this.btnRegions.setAttribute('aria-expanded', String(isOpen));\n            },\n            this.btnRegions\n        );\n        this.regions?.forEach((region) => {\n            this._addListener(\n                'mouseenter',\n                () => {\n                    const regionCode = region.dataset.regionCode;\n                    this.map.querySelector(`path[data-region-code='${regionCode}']`)?.classList.add('hovered');\n                },\n                region\n            );\n            this._addListener(\n                'mouseleave',\n                () => {\n                    const regionCode = region.dataset.regionCode;\n                    this.map.querySelector(`path[data-region-code='${regionCode}']`)?.classList.remove('hovered');\n                },\n                region\n            );\n            this._addListener(\n                'click',\n                () => {\n                    const regionCode = region.dataset.regionCode;\n                    const regionName = region.innerText.trim();\n                    const regionPath = this.map.querySelector(`path[data-region-code='${regionCode}']`);\n                    this.regions.forEach(selectRegion(region));\n                    this.regionMaps.forEach(selectRegion(regionPath));\n                    this._loadSearchSection({\n                        codiceRegione: regionCode,\n                        nomeRegione: regionName,\n                    });\n                },\n                region\n            );\n        });\n    }\n\n    async _loadMap() {\n        const url = this.root.dataset.mapPath;\n        try {\n            const html = await this.apiProvider.textGet(url);\n            this._appendMap(html);\n        } catch (error) {\n            console.error(error);\n        }\n    }\n\n    _appendMap(data) {\n        /* parse map */\n        const parser = new DOMParser();\n        const map = parser.parseFromString(data, 'image/svg+xml');\n        this.map.append(map.firstChild);\n    }\n\n    async _loadSearchSection({ codiceRegione, nomeRegione }) {\n        const url = this.loaderEndpoint;\n        try {\n            openLoader('main');\n            const html = await this.apiProvider.loaderGet(url, { codiceRegione, nomeRegione });\n            this._updateSearchSection(html);\n        } catch (error) {\n            console.error(error);\n        } finally {\n            closeLoader('main');\n        }\n    }\n\n    _updateSearchSection(html) {\n        emptyElement(this.searchContainer);\n        const element = htmlToElement(html);\n        this.searchContainer.append(element);\n        this.searchSection = this._dEl('searchSection');\n        requestAnimationFrame(() => {\n            const district = this.searchSection?.querySelector('.rt145-map-search-stores-form__district');\n            // Move focus to district select\n            if (district) {\n                district.querySelector('button, select, input')?.focus();\n            } else {\n                const title = this.searchSection?.querySelector('.rt145-map-search-stores__noResultsTitle');\n                if (title) this.announcer.innerText = title.textContent.trim();\n            }\n        });\n    }\n\n    /* override */\n    dispose() {\n        super.dispose();\n        emptyElement(this.map);\n        emptyElement(this.searchContainer);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class CardServicesTwoColumnsComponent extends Component {\n    constructor(name, root) {\n        super(name, root);\n    }\n\n}\n\n\n","import { getRegister } from '../../../../../libs/register';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { getMyConadApiProvider } from '../../../../../libs/myconad-api-provider';\nimport './style.scss';\n\nexport default function strilloInitiative() {\n    return {\n        showComponent: !window.wcmmodeDisabled,\n        async init() {\n            this._showHideMainComponent(false); // don't show when loading\n            if (!this.$root.dataset.campaignCode) {\n                this._showHideMainComponent(true);\n\n                this.showComponent = true;\n                return;\n            }\n\n            const user = await getUserService().getUser();\n            if (!user || !user.cartaFedelta) {\n                this._removeMainComponent();\n                return;\n            }\n\n\n            this._checkUserCredits(user);\n        },\n\n        async _checkUserCredits(user) {\n            // get user credits balance\n            try {\n                const data = {\n                    fidelityCard: user.cartaFedelta,\n                    collectionCode: this.$root.dataset.initiativeCode,\n                };\n                const result = await getMyConadApiProvider().getUserBalance(data);\n                if (result.saldoCumulato > 0) {\n                    // update cta labels\n                    const ctaABCmobileObj = this.$refs.ctaABCmobile ? getRegister().getClass(this.$refs.ctaABCmobile) : null;\n                    if (ctaABCmobileObj) {\n                        ctaABCmobileObj.setLabel(this.$root.dataset.playLabel);\n                    }\n                    const ctaCdesktopObj = this.$refs.ctaCdesktop ? getRegister().getClass(this.$refs.ctaCdesktop) : null;\n                    if (ctaCdesktopObj) {\n                        ctaCdesktopObj.setLabel(this.$root.dataset.playLabel);\n                    }\n                    this._showHideMainComponent(true);\n                    this.showComponent = true;\n                }\n            } catch (error) {\n                console.warn(error);\n            }\n\n            // remove if not to show\n            if (!this.showComponent) {\n                this._removeMainComponent();\n            }\n        },\n\n        _removeMainComponent() {\n            if (!window.wcmmodeDisabled) return;\n            const event = new CustomEvent('removeLayoutItem', { bubbles: true });\n            event.data = { remove: true };\n            this.$root.dispatchEvent(event);\n        },\n        _showHideMainComponent(show) {\n            if (!window.wcmmodeDisabled) return;\n            const event = new CustomEvent('hideLayoutItem', { bubbles: true });\n            event.data = { hide: !show };\n            this.$root.dispatchEvent(event);\n        }\n    };\n}\n","import { getApiProvider } from '../../../../../libs/api-provider';\nimport './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { closeLoader, htmlToElement, openLoader } from '../../../../../libs/utils';\n\nexport default class MapSearchStoresForm extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.apiProvider = getApiProvider();\n        this._doLogic();\n    }\n\n    _doLogic() {\n        this.register = getRegister();\n        this.storeCards = null;\n        this.loaderEndpoint = this.root.dataset.loaderEndpoint;\n        this.selectedAddress = null;\n        this.PAGE_SIZE = this.root.dataset.pageSize;\n        this.LOAD_MORE_HIDDEN = this._elMod('loadMore', 'hidden');\n        this.STORE_CARD_HIDDEN = this._elMod('store', 'hidden');\n        this.NO_RESULTS_HIDDEN = this._elMod('noResults', 'hidden');\n\n        this._getElements();\n        this._addEventListeners();\n    }\n\n    _getElements() {\n        this.form = this._dEl('form');\n        this.address = this._dEl('address');\n        this.search = this._dEl('search');\n        this.numResults = this._dEl('numResults');\n        this.numResultsCount = this.numResults.querySelector('span');\n        this.NUM_RESULTS_SHOW = this._elMod('numResults', 'show');\n        this.results = this._dEl('results');\n        this.loadMore = this._dEl('loadMore');\n        this.noResults = this._dEl('noResults');\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'rcInputChanged',\n            (event) => {\n                if (!event.data.value || !event.data.value.geometry || !event.data.value.types) {\n                    this.selectedAddress = null;\n                    return;\n                }\n                this.selectedAddress = event.data.value;\n            },\n            this.address\n        );\n        this._addListener(\n            'click',\n            async (event) => {\n                event.preventDefault();\n                openLoader('main');\n                const addr = this.selectedAddress;\n                if (addr == null) {\n                    this._requireSelection(this.address);\n                } else {\n                    await this._loadResults(addr);\n                }\n                closeLoader('main');\n            },\n            this.search\n        );\n        this._addListener(\n            'click',\n            () => {\n                this.currentPage++;\n                this.renderResults(this.currentPage);\n                this._checkLoadMore();\n            },\n            this.loadMore\n        );\n    }\n\n    _requireSelection(address) {\n        const obj = this.register.getClass(address);\n        obj?.setState('error');\n        obj?._requireField();\n    }\n\n    renderResults(pageIndex = 1) {\n        if (!this.numPages || this.numPages <= 0) {\n            console.warn('Missing or invalid numPages');\n            return;\n        }\n        if (pageIndex == 1) {\n            const hiddenStores = this.storeCards.slice(this.PAGE_SIZE);\n            for (const card of hiddenStores) {\n                card.classList.add(this.STORE_CARD_HIDDEN);\n            }\n        } else {\n            const start = (Math.min(pageIndex, this.numPages) - 1) * this.PAGE_SIZE;\n            const end = start + this.PAGE_SIZE;\n            const page = this.storeCards.slice(start, end);\n            for (const card of page) {\n                card.classList.remove(this.STORE_CARD_HIDDEN);\n            }\n        }\n    }\n\n    _checkLoadMore() {\n        if (this.currentPage >= this.numPages) {\n            this.loadMore.classList.add(this.LOAD_MORE_HIDDEN);\n        } else {\n            this.loadMore.classList.remove(this.LOAD_MORE_HIDDEN);\n        }\n    }\n\n    async _loadResultsSection(data) {\n        const url = this.loaderEndpoint;\n        const params = {\n            ...data,\n            __eck: 'nocache',\n        };\n        try {\n            const html = await this.apiProvider.loaderGet(url, params);\n            this.results?.remove();\n            const element = htmlToElement(html);\n            if (element == null) {\n                this.noResults.classList.remove(this.NO_RESULTS_HIDDEN);\n                this.numResults.classList.remove(this.NUM_RESULTS_SHOW);\n                return;\n            }\n            this.numResults.after(element);\n\n            this.results = this._dEl('results');\n            this.storeCards = this._dEl('store', true);\n            this.noResults.classList.add(this.NO_RESULTS_HIDDEN);\n            this.numResults.classList.add(this.NUM_RESULTS_SHOW);\n            this.setNumResults(this.storeCards.length);\n            this.numPages = Math.ceil(this.storeCards.length / this.PAGE_SIZE);\n            this.currentPage = 1;\n            this.renderResults(this.currentPage);\n            this._checkLoadMore();\n        } catch (error) {\n            console.error(error);\n        }\n    }\n\n    async _loadResults(address) {\n        if (!address || !address.geometry || !address.types) return;\n\n        const data = {\n            latitudine: `${address.geometry.location.lat()}`,\n            longitudine: `${address.geometry.location.lng()}`,\n            raggioRicerca: this._getSearchRadius(address),\n        };\n\n        await this._loadResultsSection(data);\n    }\n\n    _getSearchRadius(address) {\n        for (const type of address.types) {\n            if (type == 'postal_code' || type == 'street_address' || type == 'route') return '5';\n        }\n        return '15';\n    }\n\n    setNumResults(num = 0) {\n        if (!num || num <= 0) {\n            this.numResultsCount.innerText = '0';\n            this.numResults.classList.remove(this.NUM_RESULTS_SHOW);\n            return;\n        }\n        this.numResultsCount.innerText = `${num}`;\n        this.numResults.classList.add(this.NUM_RESULTS_SHOW);\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\n\nexport default class BannerImageRefresh extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.userService = getUserService();\n        this.trackingManager = getTrackingManager();\n        this.alreadyPartecipated = false;\n        this.discoverMoreCta = this._dEl('discoverMoreLink');\n        this.labelIVnonValorizzatoStep = 'Landing page aggiornamento dati - 4 Consenso non valorizzato';\n        this.labelIVvalorizzatoStep = 'Landing page aggiornamento dati - 4 Consenso valorizzato';\n\n        this._init();\n        this._addEventListener();\n    }\n\n    async _init() {\n        this.userData = await this.userService.getUser();\n        if (this.userData) {\n            this.alreadyPartecipated = this.userData.refreshAlready;\n        }\n    }\n\n    _addEventListener() {\n        this.discoverMoreCta.addEventListener('click', () => {\n            if (this.userData.refresh) {\n                //track pageView Landing cta discoverMore 153 click refresh\n                this.trackingManager.track(this.root, {\n                    event: 'interazioniRefresh',\n                    funnel: {\n                        nomeFunnel: 'Conad Refresh',\n                        stepFunnel:\n                            ('privacyTZ' in this.userData\n                                ? this.labelIVvalorizzatoStep\n                                : this.labelIVnonValorizzatoStep) + ' - Link Scopri di più',\n                    },\n                });\n            } else if (this.alreadyPartecipated) {\n                //track pageView Landing cta discoverMore 153 click refresh already participated\n                this.trackingManager.track(this.root, {\n                    event: 'interazioniRefresh',\n                    funnel: {\n                        nomeFunnel: 'Conad Refresh',\n                        stepFunnel: 'Landing page partecipante - Link Scopri di piu',\n                    },\n                });\n            } else {\n                //track pageView Landing cta discoverMore 153 click no refresh\n                this.trackingManager.track(this.root, {\n                    event: 'interazioniRefresh',\n                    funnel: {\n                        nomeFunnel: 'Conad Refresh',\n                        stepFunnel: 'Landing page come partecipare - Link Scopri di piu',\n                    },\n                });\n            }\n        });\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { getMyConadApiProvider } from '../../../../../libs/myconad-api-provider';\nimport { getRegister } from '../../../../../libs/register';\nimport { getStoreManager } from '../../../../../libs/store-manager';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport { formToJSON, jsonToForm } from '../../../../../libs/form-to-json';\nimport { isPositive } from '../../../../../libs/utils';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\nimport { openLoader, closeLoader } from '../../../../../libs/utils';\n\nexport default class UpdateDataRefresh extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.apiProvider = getApiProvider();\n        this.myConadApiProvider = getMyConadApiProvider();\n        this.userService = getUserService();\n        this.dictionary = getDictionary();\n        this.register = getRegister();\n        this.storeManager = getStoreManager();\n        this.trackingManager = getTrackingManager();\n        this.flowManager = getFlowManager();\n        this.links = this.root.querySelectorAll('a');\n        this.consents = [];\n        this.loaderEndpoint = this.root.dataset.loaderEndpoint;\n        this.title = this._dEl('title');\n        this.form = this._dEl('form');\n        this.submit = this._dEl('submit');\n        this.thankYouPageUrl = this.root.dataset.thankYouPageUrl;\n        if (!this.thankYouPageUrl) {\n            console.warn('Could not get thankYouPageUrl.');\n        }\n        this.labelIVnonValorizzatoStep = 'Landing page aggiornamento dati - 4 Consenso non valorizzato';\n        this.labelIVvalorizzatoStep = 'Landing page aggiornamento dati - 4 Consenso valorizzato';\n        this.wrapperAlreadyDoneAll = this._dEl('wrapperAlreadyDoneAll');\n        this.paragraphBannerAlreadyDone = this._dEl('paragraphBannerAlreadyDone');\n        this.wrapperAlreadyParticipated = this._dEl('wrapperAlreadyParticipated');\n        this.bottomTextInformative = this._dEl('bottomTextInformative');\n        this.paragraphBannerAlreadyParticipated = this._dEl('paragraphBannerAlreadyPartecipated');\n        this.alreadyDoneAllLink = this._dEl('alreadyDoneDiscoverMoreLink');\n        this.alreadyParticipatedLink = this._dEl('alreadyPartecipatedDiscoverMoreLink');\n        this.userInteract = false;\n        this.currentPrivacy = null;\n\n        this.choice;\n\n        this._init();\n    }\n\n    async _init() {\n        this.userData = await this.userService.getUser();\n        const url = this.loaderEndpoint;\n        openLoader('main');\n\n        if (this.userData && url) {\n            if (this.userData.refresh) {\n                let privacyTzTrackingView = this.userData?.privacyTZ\n                    ? this.labelIVvalorizzatoStep\n                    : this.labelIVnonValorizzatoStep;\n                //track pageView Landing\n                this.trackingManager.track(this.root, {\n                    event: 'pageview',\n                    funnel: {\n                        nomeFunnel: 'Conad Refresh',\n                        stepFunnel: privacyTzTrackingView,\n                    },\n                });\n                const template = document.querySelector(this._el('templateForm', true));\n                const clone = template.content.cloneNode(true);\n\n                // add mails or remove it if necessary\n                let mailAddresses = [];\n                if (this.userData.mailOcdb != this.userData.email) {\n                    mailAddresses.push({\n                        label: this.userData.email,\n                        value: this.userData.email,\n                        selected: !this.userData.mailOcdb,\n                    });\n\n                    if (this.userData.mailOcdb) {\n                        mailAddresses.push({\n                            label: this.userData.mailOcdb,\n                            value: this.userData.mailOcdb,\n                            selected: false,\n                        });\n                    }\n\n                    let selectTemplateElement = this.register.getClass(\n                        clone.querySelector(this._el('mailAddress', true))\n                    );\n                    selectTemplateElement.setItems(mailAddresses);\n                } else {\n                    clone.querySelector(this._el('mailAddress', true)).remove();\n                }\n\n                // check telefono or remove it if necessary, TODO: fix regex\n                if (\n                    this.userData.telefonoCellulare &&\n                    this.userData.telefonoCellulare.match(/^([+]{0,1})?([0-9]{0,2})?([0-9]{9,10})$/)\n                ) {\n                    clone.querySelector(this._el('phoneNumber', true)).remove();\n                }\n\n                // check privacy or remove it if necessary\n                let showCommonPrivacy = false;\n                let show4Privacy = false;\n\n                if (this.userData.privacy1 != 'S' || this.userData.privacy2 != 'S') {\n                    showCommonPrivacy = true;\n                    show4Privacy = true;\n                }\n\n                if (!this.userData.privacyTZ) {\n                    show4Privacy = true;\n                }\n\n                if (!showCommonPrivacy) {\n                    clone.querySelector(this._el('marketingRadio', true)).closest(this._el('box', true)).remove();\n                    clone.querySelector(this._el('profilationRadio', true)).closest(this._el('box', true)).remove();\n                    clone\n                        .querySelector(this._el('coopComunicationRadio', true))\n                        .closest(this._el('box', true))\n                        .remove();\n                }\n\n                if (!show4Privacy) {\n                    clone\n                        .querySelector(this._el('marketingComunicationPartnerRadio', true))\n                        .closest(this._el('box', true))\n                        .remove();\n                }\n\n                // remove privacy\n                if (!show4Privacy && !showCommonPrivacy) {\n                    clone.querySelector(this._el('consentsSection', true)).remove();\n                }\n\n                // append form\n                this.form.appendChild(clone);\n                jsonToForm(this.form, {\n                    ...this.userData,\n                });\n\n                this._initPrivacyAndRegulationText(this.form);\n                this._setPrivacyAndRegulation(this.form);\n\n                this._dEl('box', true).forEach((el) => {\n                    if (!el.classList.contains(this._el('boxCheckbox'))) {\n                        this._initNotEnabledRadioText(el);\n                    }\n                });\n\n                this._addEventListeners();\n\n                this.title.classList.remove(this._elMod('title', 'hidden'));\n                this.form.classList.remove(this._elMod('form', 'hidden'));\n                this.submit.classList.remove(this._elMod('submit', 'hidden'));\n\n            } else if (this.userData.refreshAlready) {\n                let tempLink = this.alreadyParticipatedLink.cloneNode(true);\n                tempLink.classList.remove(this._elMod('discoverMoreLink', 'hidden'));\n                this.wrapperAlreadyParticipated.innerHTML = this.wrapperAlreadyParticipated.innerHTML.replace(\n                    '$discoverMore',\n                    tempLink.outerHTML\n                );\n                this.wrapperAlreadyParticipated.classList.remove(this._elMod('wrapperAlreadyParticipated', 'hidden'));\n                this.bottomTextInformative.classList.add(this._elMod('bottomTextInformative', 'hidden'));\n\n                this.trackingManager.track(this.root, {\n                    event: 'pageview',\n                    funnel: {\n                        nomeFunnel: 'Conad Refresh',\n                        stepFunnel: 'Landing page partecipante',\n                    },\n                });\n            } else {\n                let tempLink = this.alreadyDoneAllLink.cloneNode(true);\n                tempLink.classList.remove(this._elMod('discoverMoreLink', 'hidden'));\n                this.wrapperAlreadyDoneAll.innerHTML = this.wrapperAlreadyDoneAll.innerHTML.replace(\n                    '$discoverMore',\n                    tempLink.outerHTML\n                );\n                this.wrapperAlreadyDoneAll.classList.remove(this._elMod('wrapperAlreadyDoneAll', 'hidden'));\n                this.bottomTextInformative.classList.add(this._elMod('bottomTextInformative', 'hidden'));\n\n                this._trackNotPartecipatedVariant();\n            }\n        } else {\n            let tempLink = this.alreadyDoneAllLink.cloneNode(true);\n            tempLink.classList.remove(this._elMod('discoverMoreLink', 'hidden'));\n            this.wrapperAlreadyDoneAll.innerHTML = this.wrapperAlreadyDoneAll.innerHTML.replace(\n                '$discoverMore',\n                tempLink.outerHTML\n            );\n            this.wrapperAlreadyDoneAll.classList.remove(this._elMod('wrapperAlreadyDoneAll', 'hidden'));\n            this.bottomTextInformative.classList.add(this._elMod('bottomTextInformative', 'hidden'));\n\n            this._trackNotPartecipatedVariant();\n        }\n        this.root.querySelectorAll(this._elMod('discoverMoreLink', 'hidden', true)).forEach((hiddenButton) => {\n            hiddenButton.remove();\n        });\n\n        closeLoader('main');\n    }\n\n    _addEventListeners() {\n        this._dEl('box', true).forEach((box) => {\n            this._addListener(\n                'rcInputChanged',\n                (event) => {\n                    if (!event.target.classList.contains('rt003-checkbox')) {\n                        this._checkRadio(event.target.closest(this._el('box', true)), isPositive(event.data.value));\n                    }\n                    this._dEl('privacy').querySelector('input').required = true;\n                    this._dEl('regulationCartaInsieme').querySelector('input').required = true;\n                    this.userInteract = true;\n                    this._enableSubmitBtn();\n                },\n                box\n            );\n        });\n\n        this._addListener(\n            'rcInputChanged',\n            () => {\n                let mailAddressInput = this.register.getClass(this._dEl('mailAddress'));\n                if (mailAddressInput.getValue() == this.userData.mailOcdb) {\n                    this._dEl('alertMessageInputs').classList.remove(this._elMod('alertMessageInputs', 'hidden'));\n                    this._dEl('mailAlertMessage').classList.remove(this._elMod('mailAlertMessage', 'hidden'));\n                } else {\n                    if (!this._dEl('mailAlertMessage').classList.contains(this._elMod('mailAlertMessage', 'hidden'))) {\n                        this._dEl('mailAlertMessage').classList.add(this._elMod('mailAlertMessage', 'hidden'));\n                        this._dEl('alertMessageInputs').classList.add(this._elMod('alertMessageInputs', 'hidden'));\n                    }\n                }\n                this.userInteract = true;\n                this._enableSubmitBtn();\n            },\n            this._dEl('mailAddress')\n        );\n\n        this._addListener(\n            'rcInputChanged',\n            () => {\n                this.userInteract = true;\n                this._enableSubmitBtn();\n            },\n            this._dEl('phoneNumber')\n        );\n\n        this.form.addEventListener('submit', (event) => {\n            event.preventDefault();\n        });\n\n        this.submit.addEventListener('click', (event) => {\n            event.preventDefault();\n\n            if (!this.form.checkValidity()) return;\n\n            this._submit();\n        });\n\n        this.links?.forEach((link) => {\n            this._addListener(\n                'click',\n                (event) => {\n                    if (this.userInteract) {\n                        event.preventDefault();\n                        this._openConfirmLeavePopUp(event.target.href);\n                    }\n                },\n                link\n            );\n        });\n    }\n\n    async _submit() {\n        let updatedData = formToJSON(this.form);\n        if (updatedData.mailAddress && updatedData.mailAddress != this.userData.mailOcdb) {\n            updatedData = { ...updatedData, emailOCDB: updatedData.mailAddress };\n        }\n\n        try {\n\n            //track pageView Landing cta save click\n            this.trackingManager.track(this.root, {\n                event: 'salvaDatiRefresh',\n                funnel: {\n                    nomeFunnel: 'Conad Refresh',\n                    stepFunnel:\n                        ('privacyTZ' in this.userData ? this.labelIVvalorizzatoStep : this.labelIVnonValorizzatoStep) +\n                        ' - CTA Salva',\n                    quartoConsenso: updatedData.privacyTZ,\n                },\n            });\n\n            delete updatedData.privacyCheckbox;\n            delete updatedData.regulationCartaInsiemeCheckbox;\n            delete updatedData.mailAddressLabel;\n\n            let changedPrivacy = false;\n            if (updatedData.privacy1 && updatedData.privacy1 != this.userData.privacy1) {\n                changedPrivacy = true;\n            }\n\n            if (updatedData.privacy2 && updatedData.privacy2 != this.userData.privacy2) {\n                changedPrivacy = true;\n            }\n\n            if (updatedData.privacy3 && updatedData.privacy3 != this.userData.privacy3) {\n                changedPrivacy = true;\n            }\n\n            if (updatedData.privacyTZ && updatedData.privacyTZ != this.userData.privacyTZ) {\n                changedPrivacy = true;\n            }\n\n            /*let choice;\n            const extra = await this.flowManager.startAsyncFlow({\n                flowName: 'save-profile',\n                flowSteps: [{ name: 'refresh-prize-choice' }],\n                initialData: {},\n            });\n            if (extra) {\n                choice = extra.choice;\n            }\n\n            if(!choice) {\n                return;\n            }*/\n\n            openLoader('main');\n\n            /////////// update data\n            if (updatedData.emailOCDB || updatedData.telefonoCellulare || changedPrivacy) {\n                await this._callEditUserData(updatedData);\n            }\n\n            /*/////////// choice\n            let changedCouponChoice = false;\n            let result = await this.myConadApiProvider.setCouponChoice(choice);\n            if (result) {\n                changedCouponChoice = true;\n            }*/ \n\n            /////////// update mail\n            let changedMailLogin = false;\n            if (updatedData.mailAddress && updatedData.mailAddress != this.userData.email) {\n                const dataMailCall = {\n                    email: updatedData.mailAddress,\n                    updateGccMail: false,\n                };\n                let result = await this.myConadApiProvider.changeEmailRequestV2(dataMailCall);\n                if (result) {\n                    changedMailLogin = true;\n                }\n            }\n\n\n            // reset session storage cache\n            this.userService.resetUser();\n\n            // send to complete\n            const url = new URL(this.thankYouPageUrl, window.origin);\n            if (changedMailLogin) {\n                url.searchParams.append('newLoginMail', updatedData.mailAddress);\n            }\n           /* if (changedCouponChoice) {\n                url.searchParams.append('choice', choice);\n            }*/\n\n            window.location = url.href;\n        } catch (e) {\n            console.warn(e);\n        } finally {\n            setTimeout(() => {\n                closeLoader('main');\n            }, 1000);\n        }\n    }\n\n    async _callEditUserData(data) {\n        const firmaDigitale = await this.myConadApiProvider.getFirmaDigitale();\n        data.firmaDigitale = firmaDigitale;\n        await this.myConadApiProvider.editUserData(data);\n    }\n\n    _checkRadio(box, valid) {\n        const boxNotSelected = box.querySelector(this._el('boxNotSelected', true));\n        if (!valid) {\n            boxNotSelected.classList.add(this._elMod('boxNotSelected', 'show'));\n        } else {\n            boxNotSelected.classList.remove(this._elMod('boxNotSelected', 'show'));\n        }\n    }\n\n    _enableSubmitBtn() {\n        const submitButton = this.register.getClass(this.submit);\n        submitButton.setStatus('enabled');\n    }\n\n    async _disableSubmitBtn() {\n        const submitButton = await this.register.getClass(this.submit);\n        submitButton.setStatus('disabled');\n    }\n\n    _initNotEnabledRadioText(el) {\n        let radio = this.register.getClass(el.querySelector('.rt004-radio'));\n        if (radio.getValue() === 'N') {\n            let boxNotSelected = el.querySelector(this._el('boxNotSelected', true));\n            boxNotSelected.classList.add(this._elMod('boxNotSelected', 'show'));\n        }\n    }\n\n    _initPrivacyAndRegulationText(form) {\n        const privacyCheckbox = form.querySelector(this._el('privacy', true));\n        if (!privacyCheckbox) return;\n\n        const privacyText = privacyCheckbox.querySelector('.rt003-checkbox__labelText');\n        if (!privacyText) return;\n\n        const privacyHtml = privacyText.innerHTML;\n        if (!privacyHtml) return;\n\n        const privacyLinkLabel =\n            form.querySelector(this._el('boxCheckbox', true)).dataset.privacy || this.dictionary.get('privacy label');\n        if (!privacyHtml.includes('$privacy')) {\n            privacyText.innerHTML = privacyHtml;\n            return;\n        }\n        const splitPrivacy = privacyHtml.split('$privacy');\n        const linkPrivacy = document.createElement('a');\n        linkPrivacy.href = '#';\n        linkPrivacy.classList.add(this._el('privacyLink'));\n        linkPrivacy.innerText = privacyLinkLabel;\n        privacyText.innerHTML = splitPrivacy[0] + linkPrivacy.outerHTML + splitPrivacy[1];\n\n        const regulationCheckbox = form.querySelector(this._el('regulationCartaInsieme', true));\n        if (!regulationCheckbox) return;\n\n        const regulationText = regulationCheckbox.querySelector('.rt003-checkbox__labelText');\n        if (!regulationText) return;\n\n        const regulationHtml = regulationText.innerHTML;\n        if (!regulationHtml) return;\n\n        const regulationLinkLabel =\n            form.querySelector(this._el('boxCheckbox', true)).dataset.regulation ||\n            this.dictionary.get('regulation label');\n        if (!regulationHtml.includes('$regulation')) {\n            regulationText.innerHTML = regulationHtml;\n            return;\n        }\n        const splitRegulation = regulationHtml.split('$regulation');\n        const linkRegulation = document.createElement('a');\n        linkRegulation.href = '#';\n        linkRegulation.classList.add(this._el('regulationLink'));\n        linkRegulation.innerText = regulationLinkLabel;\n        regulationText.innerHTML = splitRegulation[0] + linkRegulation.outerHTML + splitRegulation[1];\n    }\n\n    async _setPrivacyAndRegulation(form) {\n        let coop = 'cnd';\n        if (this.userData && this.userData.newMappedCooperative) coop = this.userData.newMappedCooperative;\n\n        this.currentPrivacy = await this.apiProvider.getInformativa({\n            cooperativa: coop,\n            ecommerce: '0',\n            card: this.userData && (this.userData.cartaFedelta || this.userData.conadCard),\n        });\n        //set privacy\n        const privacyLink = form.querySelector(this._el('privacyLink', true));\n        if (!privacyLink) {\n            console.warn('Missing privacy link.');\n            return;\n        }\n        privacyLink.href = this.currentPrivacy.linkPdfInformativa;\n        privacyLink.title = `informativa ${this.currentPrivacy.version}`;\n        privacyLink.target = '_blank';\n\n        // set regulation\n        const regolamentoLink = form.querySelector(this._el('regulationLink', true));\n        if (!regolamentoLink) {\n            console.warn('Missing regolamento link.');\n            return;\n        }\n        //set regolamento link\n        regolamentoLink.href = await this.myConadApiProvider.getRegolamentoLink(coop);\n        regolamentoLink.title = `regolamento carta insieme`;\n        regolamentoLink.target = '_blank';\n    }\n\n    _openConfirmLeavePopUp(url) {\n        this.flowManager.startFlow({\n            flowName: 'refresh-confirm-popup',\n            flowSteps: [{ name: 'refresh-confirm-popup' }],\n            initialData: { pageToGo: url },\n        });\n    }\n\n    _trackNotPartecipatedVariant() {\n        //track pageView Landing how to enter\n        this.trackingManager.track(this.root, {\n            event: 'pageview',\n            funnel: {\n                nomeFunnel: 'Conad Refresh',\n                stepFunnel: 'Landing page come partecipare',\n            },\n        });\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\n\nexport default class ThankYouSimpleImageText extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.additionalText = this._dEl('additionalText');\n        this.textWrapper = this._dEl('textWrapper');\n        this.text = this._dEl('text');\n        this.trackingManager = getTrackingManager();\n        this._init();\n    }\n\n    _init() {\n        const urlParams = new URLSearchParams(window.location.search);\n        if (urlParams.get('newLoginMail')) {\n            this.additionalText.innerHTML = this.additionalText.innerHTML.replace('$email', urlParams.get('newLoginMail'));\n            this.additionalText.classList.remove(this._elMod('additionalText', 'hidden'));\n        }\n\n        const choice = urlParams.get('choice');\n        if (choice) {\n            let choiceText;\n            if (choice === 'shoppingCoupon') {\n                choiceText = this.textWrapper.dataset.shoppingCouponText;\n            }\n            if (choice === 'travelCoupon') {\n                choiceText = this.textWrapper.dataset.travelCouponText;\n            }\n            if (choiceText) {\n                this.text.innerHTML = this.text.innerHTML.replace('$choice', choiceText);\n            }\n        }\n\n        //track pageView thank you age\n        this.trackingManager.track(this.root, {\n            event: 'pageview',\n            funnel: {\n                nomeFunnel: 'Conad Refresh',\n                stepFunnel: 'TYP aggiornamento dati',\n            },\n        });\n    }\n}\n\n\n","import Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { closeLoader, delay, emptyElement, openLoader } from '../../../../../libs/utils';\nimport { formToJSON } from '../../../../../libs/form-to-json';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport * as storeCardHtml from './partials/store-card.html';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport './style.scss';\n\nexport default class ExcelToMapSearchStoresForm extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.flowManager = getFlowManager();\n        this._doLogic();\n    }\n\n    _doLogic() {\n        this.register = getRegister();\n        this.labelCtaCards = this.root.dataset.labelCtaCards;\n        this.pagination = [];\n        this.PAGE_SIZE = 8;\n        this.LOAD_MORE_HIDDEN = this._elMod('loadMore', 'hidden');\n\n        this._getElements();\n        this._extractColumns();\n        this._addEventListeners();\n    }\n\n    _getElements() {\n        this.form = this._dEl('form');\n        this.search = this._dEl('search');\n        this.numResults = this._dEl('numResults');\n        this.numResultsCount = this.numResults.querySelector('span');\n        this.NUM_RESULTS_SHOW = this._elMod('numResults', 'show');\n        this.results = this._dEl('results');\n        this.loadMore = this._dEl('loadMore');\n        this.filters = this.form.querySelectorAll(this._el('filter', true));\n        this.configExcelMap = JSON.parse(this.root.dataset.config);\n    }\n\n    _extractColumns() {\n        this.titleKey = '';\n        this.typeLabelKey = '';\n        this.descriptionKey = '';\n        this.iconCardKey = '';\n        this.filtersColumns = [];\n        this.filterDependant = [];\n        const tipologies = Object.entries(this.configExcelMap.tipologies);\n        for (let [key, value] of tipologies) {\n            if (value.type == 'title') {\n                this.titleKey = key;\n            }\n            if (value.type == 'typeLabel') {\n                this.typeLabelKey = key;\n            }\n            if (value.type == 'description') {\n                this.descriptionKey = key;\n            }\n            if (value.type == 'iconCard') {\n                this.iconCardKey = key;\n            }\n            if (value.type == 'filters') {\n                this.filtersColumns.push(key);\n                this.filterDependant.push(value.filterDependant);\n            }\n        }\n    }\n\n    _addEventListeners() {\n        this.filters?.forEach((filter, index) => {\n            filter?.addEventListener('rcInputChanged', (event) => {\n                event.target.classList.add(this._elMod('filter', 'activated'));\n                let newRows = this._filterRows();\n                if (this.filterDependant[index + 1] == true) {\n                    this._changeFilterAfter(newRows, event.target, index);\n                }\n            });\n        });\n\n        this._addListener(\n            'submit',\n            (e) => {\n                e.preventDefault();\n            },\n            this.form\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                if (this.form.checkValidity()) {\n                    this._doSearchLogic();\n                }\n            },\n            this.search\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                this.currentPage++;\n                this.renderResults(this.currentPage);\n                this._checkLoadMore();\n            },\n            this.loadMore\n        );\n\n        // add listener to results due to dynamically created store card\n        this._addListener(\n            'click',\n            (e) => {\n                if (!e.target.matches(this._el('link', true))) return;\n\n                const link = e.target;\n                let jsonModal = JSON.parse(link.closest(this._el('store', true)).dataset.modalJson);\n                this.flowManager.startFlow({\n                    flowName: 'excel-to-map-card-details',\n                    flowSteps: [{ name: 'excel-to-map-card-details' }],\n                    initialData: {\n                        currentStore: jsonModal ? jsonModal : {},\n                        config: JSON.parse(this.root.dataset.config),\n                    },\n                });\n            },\n            this.results\n        );\n    }\n\n    _filterRows() {\n        let stores = this.root.dataset.rows ? JSON.parse(this.root.dataset.rows) : [];\n        let formJson = Object.entries(formToJSON(this.form));\n        for (let [key, value] of formJson) {\n            let filteredStores = stores.filter(\n                (store) => store[key] && store[key] != '' && store[key].toLowerCase() == value.toLowerCase()\n            );\n\n            if (filteredStores.length > 0) {\n                stores = filteredStores;\n            } else if (filteredStores.length == 0 && stores.length == 0) {\n                stores = [];\n            }\n        }\n        this.root.dataset.results = JSON.stringify(stores);\n        return stores;\n    }\n\n    _doSearchLogic() {\n        // search by filters\n        this._loadStores();\n    }\n\n    _requireSelection(selectEl) {\n        const obj = this.register.getClass(selectEl);\n        obj?.setState('error');\n        obj?._requireField();\n    }\n\n    _changeFilterAfter(rows, currentFilter, indexCurrentFilter) {\n        if (indexCurrentFilter + 1 < this.filters.length) {\n            let filterValues = Array.from(\n                new Set(rows.map((item) => item[this.filters[indexCurrentFilter + 1].dataset.name]))\n            );\n            filterValues.sort(); // sort\n            const element = this.register.getClass(this.filters[indexCurrentFilter + 1]);\n            element.enable();\n            element.reset();\n            element.setItems(filterValues.map((filterSingle) => ({ label: filterSingle, value: filterSingle })));\n\n            this.filters.forEach((filter, index) => {\n                if (index > indexCurrentFilter + 1) {\n                    const elementAfter = this.register.getClass(filter);\n                    elementAfter.disable();\n                    elementAfter.reset();\n                }\n            });\n        }\n    }\n\n    async _loadStores() {\n        openLoader('main');\n        const filtered = this.root.dataset.results\n            ? JSON.parse(this.root.dataset.results)\n            : JSON.parse(this.root.dataset.rows);\n        this.paginateStoreCards(filtered);\n        this.setNumResults(filtered.length);\n        emptyElement(this.results);\n        this.renderResults();\n        this._checkLoadMore();\n        await delay(250);\n        closeLoader('main');\n    }\n\n    _getStoreCard(store) {\n        const storeCardData = {\n            title: store[this.titleKey],\n            subtitle: store[this.typeLabelKey],\n            description: store[this.descriptionKey],\n            icon: store[this.iconCardKey],\n            linkLabel: getDictionary().get(this.labelCtaCards),\n            jsonModal: JSON.stringify(store),\n        };\n        return runTemplate(storeCardHtml, storeCardData);\n    }\n\n    paginateStoreCards(stores) {\n        this.pagination.splice(0, this.pagination.length);\n        for (const store of stores) {\n            const storeCard = this._getStoreCard(store);\n            this.pagination.push(storeCard);\n        }\n        this.numPages = Math.ceil(this.pagination.length / this.PAGE_SIZE);\n        this.currentPage = 1;\n    }\n\n    renderResults(pageIndex = 1) {\n        if (!this.numPages || this.numPages <= 0) {\n            console.warn('Missing or invalid numPages');\n            return;\n        }\n        const start = (Math.min(pageIndex, this.numPages) - 1) * this.PAGE_SIZE;\n        const end = start + this.PAGE_SIZE;\n        const page = this.pagination.slice(start, end);\n        for (const card of page) {\n            this.results.append(card);\n        }\n    }\n\n    _checkLoadMore() {\n        if (this.currentPage >= this.numPages) {\n            this.loadMore.classList.add(this.LOAD_MORE_HIDDEN);\n        } else {\n            this.loadMore.classList.remove(this.LOAD_MORE_HIDDEN);\n        }\n    }\n\n    setNumResults(num = 0) {\n        if (!num || num <= 0) {\n            this.numResultsCount.innerText = '0';\n            this.numResults.classList.remove(this.NUM_RESULTS_SHOW);\n            return;\n        }\n        this.numResultsCount.innerText = `${num}`;\n        this.numResults.classList.add(this.NUM_RESULTS_SHOW);\n    }\n}\n\n\n","import { getApiProvider } from '../../../../../libs/api-provider';\nimport Component from '../../../../../libs/components/component';\nimport { closeLoader, emptyElement, htmlToElement, openLoader } from '../../../../../libs/utils';\nimport './style.scss';\n\nexport default class ExcelToMapSearchStores extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.apiProvider = getApiProvider();\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        this.loaderEndpoint = this.root.dataset.loaderEndpoint;\n        this.btnRegions = this._dEl('btnRegions');\n        this.list = this._dEl('list');\n        this.regions = this._dEl('region', true);\n        this.map = this._dEl('map');\n        await this._loadMap();\n        if (this.map) this.regionMaps = [...this.map.querySelectorAll('path.regionMap')];\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        const selectRegion = (self) => {\n            return (r) => {\n                if (r != self) r.classList.remove('selected');\n                else r.classList.add('selected');\n            };\n        };\n\n        /* regions map */\n        this.regionMaps?.forEach((region) => {\n            this._addListener(\n                'mouseenter',\n                () => {\n                    const regionCode = region.dataset.regionCode;\n                    this.list\n                        .querySelector(`${this._el('region', true)}[data-region-code=\"${regionCode}\"]`)\n                        ?.classList.add(this._elMod('region', 'mapHovered'));\n                },\n                region\n            );\n            this._addListener(\n                'mouseleave',\n                () => {\n                    const regionCode = region.dataset.regionCode;\n                    this.list\n                        .querySelector(`${this._el('region', true)}[data-region-code=\"${regionCode}\"]`)\n                        ?.classList.remove(this._elMod('region', 'mapHovered'));\n                },\n                region\n            );\n            this._addListener(\n                'click',\n                () => {\n                    const regionCode = region.dataset.regionCode;\n                    const regionListItem = this.list.querySelector(\n                        `${this._el('region', true)}[data-region-code=\"${regionCode}\"]`\n                    );\n                    const regionName = regionListItem?.innerText.trim();\n                    this.regions.forEach(selectRegion(regionListItem));\n                    this.regionMaps.forEach(selectRegion(region));\n                    this._loadSearchSection({\n                        nomeRegione: regionName,\n                    });\n                },\n                region\n            );\n        });\n\n        /* regions list */\n        this._addListener(\n            'click',\n            () => {\n                this.btnRegions.classList.toggle('open');\n            },\n            this.btnRegions\n        );\n        this.regions?.forEach((region) => {\n            this._addListener(\n                'mouseenter',\n                () => {\n                    const regionCode = region.dataset.regionCode;\n                    this.map.querySelector(`path[data-region-code=\"${regionCode}\"]`)?.classList.add('hovered');\n                },\n                region\n            );\n            this._addListener(\n                'mouseleave',\n                () => {\n                    const regionCode = region.dataset.regionCode;\n                    this.map.querySelector(`path[data-region-code=\"${regionCode}\"]`)?.classList.remove('hovered');\n                },\n                region\n            );\n            this._addListener(\n                'click',\n                () => {\n                    const regionCode = region.dataset.regionCode;\n                    const regionName = region.innerText.trim();\n                    const regionPath = this.map.querySelector(`path[data-region-code=\"${regionCode}\"]`);\n                    this.regions.forEach(selectRegion(region));\n                    this.regionMaps.forEach(selectRegion(regionPath));\n                    this._loadSearchSection({\n                        nomeRegione: regionName,\n                    });\n                },\n                region\n            );\n        });\n    }\n\n    async _loadMap() {\n        const url = this.root.dataset.mapPath;\n        try {\n            const html = await this.apiProvider.textGet(url);\n            this._appendMap(html);\n        } catch (error) {\n            console.error(error);\n        }\n    }\n\n    _appendMap(data) {\n        /* parse map */\n        const parser = new DOMParser();\n        const map = parser.parseFromString(data, 'image/svg+xml');\n        this.map.append(map.firstChild);\n    }\n\n    async _loadSearchSection({ nomeRegione }) {\n        const url = this.loaderEndpoint;\n        try {\n            openLoader('main');\n            const html = await this.apiProvider.loaderGet(url, { nomeRegione });\n            this._updateSearchSection(html);\n        } catch (error) {\n            console.error(error);\n        } finally {\n            closeLoader('main');\n        }\n    }\n\n    _updateSearchSection(html) {\n        this.searchSection?.remove();\n        const element = htmlToElement(html);\n        this.root.append(element);\n        this.searchSection = this._dEl('searchSection');\n    }\n\n    /* override */\n    dispose() {\n        super.dispose();\n        emptyElement(this.map);\n        this.searchSection?.remove();\n    }\n}\n\n\n","import Component from '../../../../../libs/components/component';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport './style.scss';\n\nexport default class AfterPolicyActivation extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.imageSuccess = this._dEl('imageSuccess');\n        this.imageError = this._dEl('imageError');\n        this.trackingManager = getTrackingManager();\n        this.titleSuccess = this._dEl('titleSuccess');\n        this.titleGenericError = this._dEl('titleGenericError');\n\n        this.titlePolicyAlreadyActiveError = this._dEl('titlePolicyAlreadyActiveError');\n        this.textSuccess = this._dEl('textSuccess');\n        this.textSuccessBox = this._dEl('textSuccessBox');\n\n        this.textGenericError = this._dEl('textGenericError');\n        this.textPolicyAlreadyActiveError = this._dEl('textPolicyAlreadyActiveError');\n        this.ctaSuccess = this._dEl('ctaSuccess');\n        this.ctaGenericError = this._dEl('ctaGenericError');\n        this.ctaPolicyAlreadyActiveError = this._dEl('ctaPolicyAlreadyActiveError');\n        this._init();\n\n\n    }\n\n    _init() {\n        const urlParams = new URLSearchParams(window.location.search);\n        const status = urlParams.get('status');\n        switch (status) {\n            case 'success': {\n                this.imageSuccess?.classList.remove('hidden');\n                this.imageSuccess?.classList.add('block');\n                this.titleSuccess?.classList.remove('hidden');\n                this.textSuccess?.classList.remove('hidden');\n                this.textSuccessBox?.classList.remove('hidden');\n                this.ctaSuccess?.classList.add(this._elMod('ctaSuccess', 'show'));\n\n                this.trackingManager.track(this.root, {\n                    event: 'pageview',\n                    funnel: {\n                        nomeFunnel: 'Carrello protetto',\n                        stepFunnel: 'Thank you page attivazione'\n                    },\n                }); \n                break; \n            }\n            case 'policyAlreadyActiveError': {\n                this.imageError?.classList.remove('hidden');\n                this.imageError?.classList.add('block'); \n                this.titlePolicyAlreadyActiveError?.classList.remove('hidden');\n                this.textPolicyAlreadyActiveError?.classList.remove('hidden');\n                this.ctaPolicyAlreadyActiveError?.classList.add(this._elMod('ctaPolicyAlreadyActiveError', 'show'));\n                \n                this.trackingManager.track(this.root, {\n                    event: 'pageview',\n                    funnel: {\n                        nomeFunnel: 'Carrello protetto',\n                        stepFunnel: 'TYP errore polizza gia attiva' \n                    },\n                });   \n\n                break;\n            }\n            case 'genericError':\n            default: {\n                this.imageError?.classList.remove('hidden'); \n                this.imageError?.classList.add('block');  \n                this.titleGenericError?.classList.remove('hidden');\n                this.textGenericError?.classList.remove('hidden');\n                this.ctaGenericError?.classList.add(this._elMod('ctaGenericError', 'show'));\n            }\n        }\n    }\n}\n\n\n","import Component from '../../../../../libs/components/component';\nimport { getInsurancesManager } from '../../../../../libs/insurances-manager';\nimport './style.scss';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\n\n\nexport default class StrilloIconTextLinkStructure extends Component {\n    constructor(name, root) {\n\n        super(name, root);\n\n        this.insurancesManager = getInsurancesManager();\n\n        this.wrapper = this._dEl('wrapper');\n\n\n        this.icons = { guest: this._dEl('iconGuest'),\n                       light: this._dEl('iconLight'),\n                       logged: this._dEl('iconLogged'),\n                       policyAlreadyActive: this._dEl('iconPolicyAlreadyActive') };\n\n\n\n        this.ctaLabels = { guest: this.root.dataset.ctaLabelGuest,\n                           light: this.root.dataset.ctaLabelLight,\n                           logged: this.root.dataset.ctaLabelLogged,\n                           policyAlreadyActive: this.root.dataset.ctaLabelPolicyAlreadyActive };\n\n\n        this.titleAndTexts = { guest: this._dEl('titleAndTextGuest'),\n                               light: this._dEl('titleAndTextLight'),\n                               logged: this._dEl('titleAndTextLogged'),\n                               policyAlreadyActive: this._dEl('titleAndTextPolicyAlreadyActive') };\n\n        this.cta = this._dEl('link');\n\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        let link = await this.insurancesManager.getLink();\n        // in this case, those two status are equivalent\n        if (link.status === 'noReceipts') {\n            link.status = 'logged';\n        }\n\n        this.icons[link.status]?.classList.remove('!hidden');\n        this.titleAndTexts[link.status]?.classList.remove('hidden');\n\n        const label = getDictionary().get(this.ctaLabels[link.status] || link.label);\n        const ctaLabelContent = this.cta?.querySelector('.rt002-cta__label');\n        if (ctaLabelContent) {\n            ctaLabelContent.innerHTML = label;\n        }\n    }\n\n}\n\n\n","import Component from '../../../../../libs/components/component';\nimport { getMyConadApiProvider } from '../../../../../libs/myconad-api-provider';\nimport { getRegister } from '../../../../../libs/register';\nimport { getUserService } from '../../../../../libs/user-service';\nimport './style.scss';\n\nexport default class StrilloCollection extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.root = root;\n\n        this.userService = getUserService();\n        this.ctasViewBollini = this._dEl('ctaViewBollini', true);\n        this.ctasLogin = this._dEl('ctaLogin', true);\n        this.balanceLabels = this._dEl('balanceLabel', true);\n\n        this.balanceContents = this._dEl('balanceContent', true);\n        this.balance = this._dEl('balance', true);\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        // if not logged, show login button\n        const user = await this.userService.getUser();\n        if (!user || !user.cartaFedelta) {\n            this.ctasLogin.forEach((ctaLogin) => ctaLogin.classList.remove('!hidden'));\n            return;\n        }\n\n        let balanceI = 0;\n        let inTarget = false;\n        try {\n            const myConadApiProvider = getMyConadApiProvider();\n            const bolliniBalance = await myConadApiProvider.getUserBalance({\n                fidelityCard: user.cartaFedelta,\n                collectionCode: this.root.dataset.initiativeCode,\n            });\n            if (bolliniBalance) {\n                balanceI = bolliniBalance.saldoCumulato - bolliniBalance.saldoSpeso;\n                inTarget = true;\n            }\n        } catch (e) {\n            console.warn(e);\n        }\n\n        // don't show cta bollini if not in target\n        if (inTarget) {\n            this.ctasViewBollini.forEach((ctaViewBollini) => ctaViewBollini.classList.remove('!hidden'));\n        }\n\n        // set balance\n        this.balance.forEach((balance) => {\n            balance.innerHTML = balanceI;\n        });\n        this.balanceLabels.forEach((balanceLabel) => {\n            balanceLabel.classList.remove('hidden');\n            balanceLabel.classList.add('flex');\n        });\n        this.balanceContents.forEach((balanceContent) => {\n            balanceContent.classList.remove('hidden');\n            balanceContent.classList.add('flex');\n        });\n    }\n}\n\nif (import.meta.webpackHot) {\n    import.meta.webpackHot.accept();\n    if (import.meta.webpackHot.status() == 'apply') getRegister().reload('.rt160-strillo-collection');\n}\n","import { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport './style.scss';\n\nexport default function cardSliderPremiConcorso() {\n    return {\n        initialized: false,\n        slideIndex: -1, \n        async init() {\n            this.cardsSize = Number(this.$root.dataset.cardsSize || '-1');\n            if (this.cardsSize >= 1) {\n                await this._initSwipers();\n                this.swiper.on('slideChange', () => {\n                    this.slideIndex = this.swiper.activeIndex; \n                });\n            }\n            this.initialized = true; \n            console.log('cardSliderPremiConcorso initialized.');\n        },\n        async _initSwipers() {\n            const Swiper = await getExtApiHelper().getSwiper();\n            // Inizializza il carousel delle anteprime\n            this.thumbsSwiper = new Swiper(this.$refs.thumbnailsSlider, {\n                wrapperClass: 'rt162-card-slider-premi-concorso__thumbnailCardsContainer',\n                slideClass: 'rt162-card-slider-premi-concorso__thumbnailCard ',\n                slidesPerView: this.cardsSize > 5 ? 6 : 4,\n                spaceBetween: 8,\n                freeMode: true,\n                watchSlidesProgress: true,\n                watchSlidesVisibility: true,\n                loop: false\n            });\n            const options = {\n                slidesPerView: 1,\n                spaceBetween: 16,\n                slideClass: 'rt162-card-slider-premi-concorso__card',\n                wrapperClass: 'rt162-card-slider-premi-concorso__cardsContainer',\n                scrollbar: {\n                    el: this.$refs.scrollbar,\n                    dragClass: 'rt162-card-slider-premi-concorso__scrollbarDrag',\n                    dragSize: 90,\n                    hide: false,\n                    draggable: true,\n                },\n                pagination: {\n                    el: this.$refs.pagination,\n                    type: 'fraction',\n                    renderFraction: function (currentClass, totalClass) {\n                        return (\n                            '<span class=\"' + currentClass + '\"></span>' + ' di ' + '<span class=\"' + totalClass + '\"></span>'\n                        );\n                    }\n                },\n                thumbs: {\n                    swiper: this.thumbsSwiper, // Connetti le anteprime al carousel principale\n                },\n            };\n\n            this.swiper = new Swiper(this.$refs.cardsContainer, options);\n        }\n    }\n}","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { storeData } from '../../../../../libs/pdv-utils';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { flyerData, flyersData } from '../../../../../libs/utils';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\n\nexport default class StoreFlyers extends Component {\n    constructor(name, root) {\n        super(name, root);\n        if (!this._getAnacanIdParam() || this.root.dataset.appSelHide === 'true') {\n            console.log('[rt163] No anacanId parameter found or request is from app, removing main component');\n            this._removeMainComponent();\n            return;\n        } else {\n            this.root.classList.remove(this._mod('hidden'));\n        }\n        this.apiProvider = getApiProvider();\n        this.trackingManager = getTrackingManager();\n        this._setTrackingConsts();\n        this._doLogic();\n    }\n\n    async _doLogic() {\n        this.flyer = this.root.hasAttribute('data-flyer') ? JSON.parse(this.root.dataset.flyer) : null;\n        if (this._getAnacanIdParam()) {\n            try {\n                this.store = await this.apiProvider.getPointOfServiceByAnacanId({ anacanId: this._getAnacanIdParam() });\n            } catch (e) {\n                console.warn('[rt163] Cannot get store ' + this._getAnacanIdParam());\n            }\n        }\n        await this._renderStoreInfo();\n        await this._renderFlyersCarousel();\n        this._getElements();\n        await this._initFlyersCarousel();\n        this._addEventListeners();\n    }\n\n    async _renderStoreInfo() {\n        if (!this.store || !this.store.anacanId) {\n            console.warn('[rt163] Could not render store info');\n            return;\n        }\n        const storeWrapper = this._dEl('store');\n        const storeTemplate = (await import('./partials/store.html')).default;\n        const storeTemplateData = {\n            ...(storeData(this.store)),\n        };\n        const storeHtml = runTemplate(storeTemplate, storeTemplateData, 'div');\n        if (storeHtml) {\n            Array.from(storeHtml.children).forEach((child) => storeWrapper.append(child));\n        }\n    }\n\n    async _renderFlyersCarousel() {\n        if (!this.store || !this.store.volantini) {\n            console.warn('[rt163] Could not render flyers carousel');\n            return;\n        }\n        const focusedFlyer = flyerData(this.flyer);\n        const carouselWrapper = this._dEl('carousel');\n        const carouselTrackTemplate = (await import('./partials/flyers.html')).default;\n        const carouselTrackTemplateData = {\n            flyers:\n                this.store.volantini.length >= 1\n                    ? flyersData(this.store)\n                        .filter((f) => f.id !== focusedFlyer.id)\n                        .map((f) => ({\n                            ...f,\n                            link: {\n                                ...f.link,\n                                title: f.feTitle,\n                                'data-link-tracking': JSON.stringify(this.DATA_LINK_TRACKING_OTH_FLYER),\n                            },\n                        }))\n                    : null,\n        };\n        const carouselTrackHtml = runTemplate(carouselTrackTemplate, carouselTrackTemplateData);\n        /* TODO: remove comment (use only to simulate more than 2 slides)\n        const carouselTrackHtml = runTemplate(carouselTrackTemplate, {\n            ...carouselTrackTemplateData,\n            flyers: [...carouselTrackTemplateData.flyers, ...carouselTrackTemplateData.flyers, ...carouselTrackTemplateData.flyers],\n        });\n        */\n        if (carouselTrackHtml) {\n            carouselWrapper.prepend(carouselTrackHtml);\n        }\n    }\n\n    _getElements() {\n        this.storeLink = this._dEl('storeLink');\n        this.prev = this._dEl('prev');\n        this.next = this._dEl('next');\n        this.flyers = this._dEl('flyer', true);\n    }\n\n    async _initFlyersCarousel() {\n        if (!this.flyers || this.flyers.length < 2) {\n            console.log('[rt163] Flyers carousel not initialized due to less than 2 slides');\n            // hide prev/next controls\n            this.root.classList.add(this._mod('controls-hidden'));\n            // hide pagination bullets\n            this._dEl('pagination')?.classList.add(this._elMod('pagination', 'hidden'));\n            return;\n        }\n        await this._initSwiper();\n        if (this.swiper) {\n            this._addSwiperListeners();\n        }\n    }\n\n    async _initSwiper() {\n        const carousel = this._dEl('carousel');\n        const Swiper = await getExtApiHelper().getSwiper();\n        this.swiper = new Swiper(carousel, {\n            direction: 'horizontal',\n            slidesPerView: 'auto',\n            wrapperClass: this._el('track'),\n            slideClass: this._el('flyer'),\n            spaceBetween: 16,\n            slidesOffsetBefore: 3,\n            slidesOffsetAfter: 3,\n            mousewheel: {\n                eventsTarget: carousel,\n                releaseOnEdges: true,\n            },\n            pagination: {\n                el: this._dEl('pagination', true),\n                bulletClass: this._el('bullet'),\n                bulletActiveClass: this._elMod('bullet', 'active'),\n                clickable: true,\n            },\n        });\n    }\n\n    _addSwiperListeners() {\n        this._addListener(\n            'click',\n            () => {\n                this.swiper.slidePrev(200);\n                this.trackingManager.track(this.root, this.TRACKING_SLIDE_LATERALE);\n            },\n            this.prev\n        );\n        this._addListener(\n            'click',\n            () => {\n                this.swiper.slideNext(200);\n                this.trackingManager.track(this.root, this.TRACKING_SLIDE_LATERALE);\n            },\n            this.next\n        );\n        this._addListener('click', (e) => {\n            if (e.target.classList.contains(this._el('bullet'))) {\n                this.trackingManager.track(this.root, this.TRACKING_SLIDE_LATERALE);\n            }\n        }, this.root);\n        this.swiper.on('reachBeginning', () => {\n            this.prev.disabled = true;\n            this.next.disabled = false;\n        });\n        this.swiper.on('reachEnd', () => {\n            this.prev.disabled = false;\n            this.next.disabled = true;\n        });\n        this.swiper.on('progress', (_swiper, progress) => {\n            if (progress == 0) {\n                this.prev.disabled = true;\n                return;\n            }\n            if (progress == 1) {\n                this.next.disabled = true;\n                return;\n            }\n            this.prev.disabled = true;\n            this.next.disabled = true;\n        });\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            () => {\n                this._trackGoToStore();\n            },\n            this.storeLink\n        );\n    }\n\n    _setTrackingConsts() {\n        this.DATA_LINK_TRACKING_OTH_FLYER = {\n            event: 'CardVolantino',\n            CustomLink: 'Click Vai al Volantino',\n            funnel: { stepFunnel: 'Interazioni con pagina volantino' },\n        };\n        this.TRACKING_SLIDE_LATERALE = {\n            funnel: {\n                stepFunnel: 'Slide Laterale Card Volantino',\n            },\n            event: 'SlideLaterale',\n            CustomLink: 'Click Slide laterale',\n        };\n        this.TRACKING_GO_TO_STORE = {\n            funnel: {\n                stepFunnel: 'Interazioni con pagina volantino',\n            },\n            event: 'VaiAllaSchedaNegozio',\n            CustomLink: 'Click Vai alla Scheda Negozio',\n        };\n    }\n\n    _trackGoToStore() {\n        this.trackingManager.track(this.root, this.TRACKING_GO_TO_STORE);\n    }\n\n    _getAnacanIdParam() {\n        const urlParams = new URLSearchParams(window.location.search);\n        return urlParams.get('anacanId');\n    }\n}\n","import './style.scss';\nimport { getApiProvider } from '../../../../../libs/api-provider'; \n\nexport default function rt164() {\n    return {\n        cardsContainer: null,\n        page: 1,\n        isLoading: false,\n        hideButton: false,\n\n        init() {\n            console.debug('rt164 - Card Gallery init');\n            this.cardsContainer = this.$refs.cardsContainer; \n        },\n\n        async onLoadMoreClick() {\n            if (this.isLoading) return;\n            this.isLoading = true;\n\n            try {\n                const response = await getApiProvider().loaderGet(this.$root.dataset.loaderEndpoint, {\n                    page: this.page,\n                });\n\n                this.page += 1;\n                const responseContent = typeof response === 'string' ? response : response?.data?.html;\n\n                if (responseContent) {\n                    const tempDiv = document.createElement('div');\n                    tempDiv.innerHTML = responseContent;\n\n                    const newCards = Array.from(tempDiv.children).filter(\n                        (child) => !child.classList.contains('hasMoreFlag')\n                    );\n\n                    newCards.forEach((card) => {\n                        this.cardsContainer?.appendChild(card);\n                    });\n\n                    const hasMoreFlag = tempDiv.querySelector('.hasMoreFlag');\n                    const hasMore = hasMoreFlag?.dataset.hasmore === 'true';\n\n                    if (!hasMore) {\n                        this.hideButton = true;\n                        console.log('No more cards to load.');\n                    }\n                }\n            } catch (error) {\n                console.error('Failed to load more cards:', error);\n            } finally {\n                this.isLoading = false;\n            }\n        },\n    };\n}\n","import './style.scss';\nimport { getScreenType, shuffleCards, removeMainComponent, moveComponent } from '../../../../../libs/utils';\n\nexport default function containerCardBenefits() {\n    return {\n        desktopRows: 1,\n        tabletRows: 2,\n        mobileRows: 4,\n        visibleCount: 0,\n        currentStoreInsignia: this.$root.dataset.currentStoreInsignia || null,\n        moveUpStores: this.$root.dataset.moveUpStores ? this.$root.dataset.moveUpStores.split(',') : [],\n        init() {\n            if (!this.$refs.cardsContainer || this.$refs.cardsContainer.children.length < 1) {\n                removeMainComponent(this.$root);\n                return;\n            }\n\n            if (this.moveUpStores.length > 0 && this.currentStoreInsignia) {\n                const shouldMoveUp = this.moveUpStores.includes(this.currentStoreInsignia);\n                if (shouldMoveUp) {\n                    moveComponent(this.$root, 'up', 1);\n                }\n            }\n\n            this.desktopRows = parseInt(this.$root.dataset.desktopInitialRows, 10) || 1;\n            this.tabletRows = parseInt(this.$root.dataset.tabletInitialRows, 10) || 2;\n            this.mobileRows = parseInt(this.$root.dataset.mobileInitialRows, 10) || 4;\n\n            if (this.$root.dataset.randomizeCards === 'true') {\n                shuffleCards(this.$refs.cardsContainer, { preserveHighlighted: true });\n                this._fixCardsIndex();\n            }\n\n            this.$refs.showMoreButton.addEventListener('click', () => {\n                this.showMore();\n            });\n            this.showMore();\n\n            console.debug('Initialized containerCardBenefits');\n        },\n        _fixCardsIndex() {\n            Array.from(this.$refs.cardsContainer.children).forEach((card, index) => {\n                card.setAttribute('x-show', `${index} < visibleCount`);\n            });\n        },\n        _calculateVisibleCount() {\n            const screenType = getScreenType();\n            this.visibleCount += this._getColsForScreenType(screenType) *\n                (screenType === 'desktop' ?\n                    this.desktopRows : (screenType === 'tablet' ? this.tabletRows : this.mobileRows));\n        },\n        showMore() {\n            this._calculateVisibleCount();\n            if (this.visibleCount >= this.$refs.cardsContainer.children.length) {\n                this.$refs.showMoreButton.setAttribute('disabled', '');\n                this.$refs.showMoreButton.style.opacity = '0';\n            }\n        },\n        _getColsForScreenType(screenType) {\n            if (screenType === 'desktop') return 4;\n            if (screenType === 'tablet') return 2;\n            return 1;\n        },\n    }\n}\n","import { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { nextTick } from '../../../../../libs/utils';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { generateTrackNegozioInfo } from '../../../../../libs/utils';\nimport './style.scss';\n\nexport default function switchTabPromotions() {\n    return {\n        current: 0,\n        swiper: null,\n        delaySec: 0,\n        swipeSpeed: 400,\n        buttons: [],\n        indicator: null,\n\n        async init() {\n            const root = this.$el;\n            this.trackingManager = getTrackingManager();\n            this.infoNegozio = generateTrackNegozioInfo();\n            this.buttons = Array.from(root.querySelectorAll('.rt166-switch-tab-promotions__segmented-btn'));\n            this.indicator = this.$refs?.indicator || root.querySelector('[x-ref=\"indicator\"]');\n\n            this.delaySec = parseInt(root.dataset.sliderAutoplayDelay, 10) || 0;\n            this.swipeSpeed = parseInt(root.dataset.swipeSpeed, 10) || 400;\n\n            if (!this.buttons.length) {\n                console.warn('switchTabPromotions: no buttons found');\n                return;\n            }\n\n            await this.initSwiper();\n            this.setupButtons();\n            this.updateIndicator();\n\n            // initialize any inner tab sliders (multiplePromo sliders)\n            await this.initInnerTabSliders();\n\n            window.addEventListener('resize', () => this.updateIndicator());\n        },\n\n        async initSwiper() {\n            const Swiper = await getExtApiHelper().getSwiper();\n\n            const options = {\n                wrapperClass: 'rt166-switch-tab-promotions__track',\n                slideClass: 'rt166-switch-tab-promotions__slide',\n                slidesPerView: 1,\n                spaceBetween: 16,\n                watchOverflow: true,\n                observer: true,\n                observeParents: true,\n                speed: this.swipeSpeed,\n                autoHeight: true,\n            };\n\n            if (this.delaySec > 0) {\n                options.autoplay = {\n                    delay: this.delaySec * 1000,\n                    disableOnInteraction: true,\n                };\n            }\n\n            await nextTick();\n            const container = this.$el.querySelector('.swiper');\n            this.swiper = new Swiper(container, options);\n            await nextTick();\n            this.swiper.update();\n            this.swiper.updateAutoHeight?.(this.swipeSpeed);\n\n            this.current = this.swiper.realIndex ?? this.swiper.activeIndex ?? 0;\n\n            this.swiper.on('slideChange', () => {\n                this.current = this.swiper.realIndex ?? this.swiper.activeIndex ?? 0;\n                this.updateUI();\n                // refresh any inner tab sliders (they may need to recalc sizes)\n                this.refreshInnerTabSliders();\n                // update auto height\n                this.swiper.updateAutoHeight?.(this.swipeSpeed);\n            });\n        },\n\n        refreshInnerTabSliders() {\n            const root = this.$el;\n            const sliders = Array.from(root.querySelectorAll('.rt166-switch-tab-promotions__tab-slider'));\n            sliders.forEach((el) => {\n                if (el._rt166Swiper && typeof el._rt166Swiper.update === 'function') {\n                    try {\n                        el._rt166Swiper.update();\n                    } catch (e) {\n                        // ignore per-slider update errors\n                    }\n                }\n            });\n        },\n\n        async initInnerTabSliders() {\n            // initialize each tab-slider inside this component\n            const root = this.$el;\n            const sliders = Array.from(root.querySelectorAll('.rt166-switch-tab-promotions__tab-slider'));\n            if (!sliders.length) return;\n\n            const Swiper = await getExtApiHelper().getSwiper();\n\n            sliders.forEach((el) => {\n                const carousel = el.querySelector('.rt166-switch-tab-promotions__tab-slider__track');\n                if (!carousel) return;\n\n                const prev = el.querySelector('.rt166-switch-tab-promotions__tab-slider__btn--prev');\n                const next = el.querySelector('.rt166-switch-tab-promotions__tab-slider__btn--next');\n                const scrollbarEl = el.querySelector('.rt166-switch-tab-promotions__tab-slider__scrollbar');\n\n                const options = {\n                    wrapperClass: 'swiper-wrapper',\n                    slideClass: 'swiper-slide',\n                    slidesPerView: 'auto',\n                    spaceBetween: 16,\n                    observer: true,\n                    observeParents: true,\n                };\n\n                if (prev && next) {\n                    options.navigation = {\n                        prevEl: prev,\n                        nextEl: next,\n                    };\n                }\n\n                if (scrollbarEl) {\n                    options.scrollbar = {\n                        el: scrollbarEl,\n                        dragClass: 'rt166-switch-tab-promotions__tab-slider__scrollbarDrag',\n                        draggable: true,\n                    };\n                }\n\n                // create instance if not already created\n                if (!el._rt166Swiper) {\n                    el._rt166Swiper = new Swiper(carousel, options);\n\n                    // when the inner slider is touched/pressed, stop the main slider autoplay\n                    try {\n                        const innerSwiper = el._rt166Swiper;\n\n                        // handle disabling arrows\n                        const updateNavState = () => {\n                            if (prev) {\n                                if (innerSwiper.isBeginning)\n                                    prev.classList.add('rt166-switch-tab-promotions__tab-slider__btn--disabled');\n                                else prev.classList.remove('rt166-switch-tab-promotions__tab-slider__btn--disabled');\n                            }\n\n                            if (next) {\n                                if (innerSwiper.isEnd)\n                                    next.classList.add('rt166-switch-tab-promotions__tab-slider__btn--disabled');\n                                else next.classList.remove('rt166-switch-tab-promotions__tab-slider__btn--disabled');\n                            }\n                        };\n\n                        innerSwiper.on('init', updateNavState);\n                        innerSwiper.on('slideChange', updateNavState);\n                        innerSwiper.on('reachBeginning', updateNavState);\n                        innerSwiper.on('reachEnd', updateNavState);\n\n                        nextTick().then(updateNavState);\n\n                        if (innerSwiper && typeof innerSwiper.on === 'function') {\n                            innerSwiper.on('touchStart', () => {\n                                try {\n                                    if (\n                                        this.swiper &&\n                                        this.swiper.autoplay &&\n                                        typeof this.swiper.autoplay.stop === 'function'\n                                    ) {\n                                        this.swiper.autoplay.stop();\n                                    }\n                                } catch (e) {\n                                    // ignore\n                                }\n                            });\n\n                            innerSwiper.on('pointerDown', () => {\n                                try {\n                                    if (\n                                        this.swiper &&\n                                        this.swiper.autoplay &&\n                                        typeof this.swiper.autoplay.stop === 'function'\n                                    ) {\n                                        this.swiper.autoplay.stop();\n                                    }\n                                } catch (e) {\n                                    // ignore\n                                }\n                            });\n                        }\n                    } catch (e) {\n                        // ignore\n                    }\n                } else {\n                    el._rt166Swiper.update();\n                }\n            });\n        },\n\n        setupButtons() {\n            this.buttons.forEach((btn, i) => {\n                btn.addEventListener('click', (e) => {\n                    // Slide the swiper to the clicked tab\n                    this.swiper.slideTo(i);\n                    this.current = i; // Update the current tab\n                    this.updateUI();\n                    nextTick().then(() => {\n                        this.swiper.update();\n                        this.swiper.updateAutoHeight?.(this.swipeSpeed);\n                        this.refreshInnerTabSliders();\n                    });\n                    try {\n                        const btnEl = e.target.closest('.rt166-switch-tab-promotions__segmented-btn');\n                        if (!btnEl) return;\n                        let tracking = JSON.parse(btnEl.dataset.tracking);\n                        if (Object.keys(tracking).length === 0) {\n                            tracking = {\n                                event: 'ClickSwitchTab',\n                                funnel: {\n                                    nomeFunnel: 'Scheda Negozio',\n                                    stepFunnel: 'Interazioni con Scheda Negozio',\n                                },\n                                CustomLink: 'Click Tab',\n                                negozioInfo: {\n                                    TabLabel: `Tab ${i + 1}`,\n                                    ...this.infoNegozio,\n                                },\n                            };\n                        }\n                        this.trackingManager.track(btnEl, tracking); \n                    } catch (error) {\n                        console.error(error);\n                    }\n                });\n            });\n        },\n\n        updateUI() {\n            this.updateIndicator();\n            this.buttons.forEach((btn, i) => {\n                btn.setAttribute('aria-selected', i === this.current ? 'true' : 'false');\n            });\n        },\n\n        updateIndicator() {\n            if (!this.indicator || !this.buttons.length) return;\n\n            const activeBtn = this.buttons[this.current] || this.buttons[0];\n            const btnWidth = activeBtn.offsetWidth;\n            const btnLeft = activeBtn.offsetLeft;\n\n            this.indicator.style.width = `${btnWidth}px`;\n            this.indicator.style.transform = `translateX(${btnLeft}px)`;\n            this.indicator.style.transition = `transform ${this.swipeSpeed}ms ease, width ${this.swipeSpeed}ms ease`;\n        },\n    };\n}\n","/* eslint-disable no-debugger */\nimport { closeLoader, openLoader, emptyElement } from '../../../../../libs/utils';\nimport { getPoiType, storeData } from '../../../../../libs/pdv-utils';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport { getUserService } from '../../../../../libs/user-service';\nimport './style.scss';\n\nexport default function pdvSelect() {\n    return {\n        async init() {\n            this.trackingManager = getTrackingManager();\n            this._addEventListeners();\n            this.api = getApiProvider();\n            this.numRes = this.$root.querySelector('.rt052-store-locator__resHeadingFound span:first-child');\n            this.resList = this.$root.querySelector('.rt052-store-locator__resList');\n            this.resHeading = this.$root.querySelector('.rt052-store-locator__resHeading');\n            this.dictionary = getDictionary();\n            this.markers = [];\n            this.psResults = null;\n            this.selectedCard = null;\n            this.selectedPoi = null;\n            this.footerCta = this.$refs.footerCta;\n            this.userService = getUserService();\n\n            // If user is logged in, redirect to link contained in data-cta-href attribute\n            const user = await this.userService.getUser();\n            if (user) {\n                const ctaHref = this.$root.getAttribute('data-cta-href');\n\n                if (ctaHref) {\n                    window.location.href = ctaHref.replace(/{{anacanId}}/g, '');\n                }\n            }\n        },\n\n        async _loadPoi(address) {\n            if (!address || !address.geometry || !address.types) return;\n\n            this.trackingManager.appendVariable({\n                currentSearchAddress: address.formatted_address,\n            });\n\n            openLoader('main');\n\n            const data = {\n                latitudine: `${address.geometry.location.lat()}`,\n                longitudine: `${address.geometry.location.lng()}`,\n                raggioRicerca: '15',\n            };\n\n            try {\n                this.stores = await this.api.retrievePointOfService(data);\n                await this._addResults(this.stores);\n            } catch (error) {\n                console.error(error);\n                this._showNoResults();\n            }\n\n            closeLoader('main');\n        },\n\n        _addEventListeners() {\n            document.addEventListener(\n                'rcInputChanged',\n                async (event) => {\n                    event.stopPropagation();\n                    if (!event.data.value || !event.data.value.geometry || !event.data.value.types) {\n                        this.selectedAddress = null;\n                        this._emptyResults();\n                        return;\n                    }\n                    this.selectedAddress = event.data.value;\n                    if (this.selectedAddress != null) {\n                        this.input = this.$root.querySelector('.rt052-store-locator__address input');\n                    }\n\n                    await this._loadPoi(this.selectedAddress);\n                },\n                false\n            );\n\n            /*document.addEventListener(\n                'focusin',\n                (event) => {\n                    event.stopImmediatePropagation();\n                },\n                this.input\n            );*/\n\n            this.$root.addEventListener(\n                'rt10CanceledField',\n                () => {\n                    this._emptyResults();\n                },\n                false\n            );\n        },\n\n        _emptyResults() {\n            this.resHeading.style.display = 'none';\n            emptyElement(this.resList);\n        },\n\n        _showNoResults() {\n            this.$root.classList.remove(this.SEARCH_EMPTY);\n            this.$root.classList.add(this.NO_RESULTS);\n        },\n\n        _showResults() {\n            this.$root.classList.remove(this.SEARCH_EMPTY);\n            this.$root.classList.remove(this.NO_RESULTS);\n        },\n\n        _addResultToList(poi, index, storeCardCall) {\n            poi.pdvPlainUrl = null;\n            poi.pdvLink = {};\n            const storeCardData = storeData(poi, `${poi.anacanId}-store-card`);\n            storeCardData.extraClasses = this.RES_ITEM;\n            storeCardData.extraClasses += index == 0 ? ' rt021-store-card--firstOne' : '';\n            storeCardData.storeType = getPoiType(poi);\n            storeCardData.numFlyers = poi.volantiniCount;\n            storeCardData.servicesUrlMap = this.servicesUrlMap;\n            storeCardData.alignDistanceRight = true;\n\n            // your store link\n            storeCardData.yourStoreLink = {};\n            if (\n                !!storeCardData.yourStoreLink ||\n                storeCardData.yourStoreLink == null ||\n                !!storeCardData.yourStoreLink.label ||\n                storeCardData.yourStoreLink.label == null ||\n                storeCardData.yourStoreLink.label == ''\n            ) {\n                storeCardData.yourStoreLink.label = this.dictionary.get('Your shops');\n            }\n\n            // specialized\n            if (poi.specializedServices && poi.specializedServices.length > 0) {\n                storeCardData.serviceCodes = poi.specializedServices;\n            }\n            storeCardData.specialized = poi.specialized || false;\n\n            const storeCard = runTemplate(storeCardCall, storeCardData);\n            this.resList.appendChild(storeCard);\n\n            const headingCta = storeCard.querySelector('.rt021-store-card__heading .rt002-cta');\n            headingCta.classList.add('rt021-store-card__heading-cta--linkDisabled');\n            if (headingCta) {\n                headingCta.addEventListener('click', (ev) => {\n                    ev.preventDefault();\n                    ev.stopPropagation();\n                });\n            }\n        },\n\n        _updateNumRes(numRes) {\n            if (this.numRes) {\n                this.numRes.innerText = numRes;\n            } else {\n                console.warn('numRes element not found');\n            }\n        },\n\n        async _addResults(results) {\n            if (!results || results.length <= 0) {\n                this._emptyResults();\n                this._showNoResults();\n                return;\n            }\n            const storeCardCall = (await import('../rt021-store-card/rt021-store-card.html')).default;\n\n            this._emptyResults();\n\n            this._showResults();\n            this._updateNumRes(results.length);\n\n            this.trackingManager.appendVariable({\n                currentNumRes: results.length,\n            });\n\n            //track search number of results\n            this.trackingManager.track(this.$root, {\n                event: 'ItemRicerca',\n                funnel: {\n                    nomeFunnel: 'MiPremio',\n                    stepFunnel: 'Risultati Localizzazione',\n                },\n                negozioInfo: {\n                    numeroRisultati: 'vars.currentNumRes',\n                    indirizzoRicerca: 'vars.currentSearchAddress',\n                },\n            });\n\n            this.resHeading.style.display = 'flex';\n\n            let index = 0;\n            for (const poi of results) {\n                this._addResultToList(poi, index, storeCardCall);\n                index++;\n            }\n            await this._initScrollbarResults();\n\n            try {\n                this._attachStoreCardSelection();\n            } catch (e) {\n                console.warn('Failed to attach store card selection behaviour', e);\n            }\n        },\n\n        _attachStoreCardSelection() {\n            if (!this.resList) return;\n\n            const cards = Array.from(this.resList.querySelectorAll('.rt021-store-card'));\n\n            const clearSelection = () => {\n                if (this.selectedCard) {\n                    this.selectedCard.classList.remove('rt168-pdv-select__selected-card');\n                    this.selectedCard = null;\n                }\n                // reapply disabled classes to footer CTA when no selection\n                if (this.footerCta) {\n                    this.footerCta.classList.add('rt002-cta-primary--disabled');\n                }\n            };\n\n            clearSelection();\n\n            for (const card of cards) {\n                const anchor = card.querySelector('a.rt002-cta-link, a.rt002-cta, a');\n                if (anchor) {\n                    anchor.addEventListener('click', (ev) => {\n                        ev.preventDefault();\n                        ev.stopPropagation();\n                        card.dispatchEvent(new CustomEvent('rt168-select-card', { bubbles: true }));\n                    });\n                }\n\n                card.addEventListener('rt168-select-card', () => {\n                    if (this.selectedCard === card) {\n                        return;\n                    }\n\n                    const poiId = card.getAttribute('data-store-id');\n                    const poi = this.stores?.find((s) => s.anacanId === poiId);\n                    if (poi) {\n                        this.selectedPoi = poi;\n                        // Build new CTA href using the original template stored on the wrapper\n                        const templateHref =\n                            this.$root.getAttribute('data-cta-href') ||\n                            (this.footerCta && this.footerCta.getAttribute('href')) ||\n                            '';\n                        let newHref = '';\n                        if (templateHref) {\n                            if (templateHref.includes('{{anacanId}}')) {\n                                // Replace placeholder in template with current POI id\n                                newHref = templateHref.replace(/{{anacanId}}/g, poi.anacanId);\n                            } else {\n                                // No placeholder in template: try to replace previously selected id in current href\n                                const currentHref = this.footerCta ? this.footerCta.getAttribute('href') : '';\n                                const last = this.$root.getAttribute('data-last-selected-anacanId');\n                                if (last && currentHref && currentHref.includes(last)) {\n                                    newHref = currentHref.replace(last, poi.anacanId);\n                                } else {\n                                    // Fallback: use the template as-is\n                                    newHref = templateHref;\n                                }\n                            }\n                        }\n\n                        if (newHref && this.footerCta) {\n                            this.footerCta.setAttribute('href', newHref);\n                        }\n\n                        // Add tracking for selected store\n                        this.trackingManager.appendVariable({\n                            selectedStoreId: poi.anacanId,\n                            selectedStoreInsignia: poi.descrizioneInsegna,\n                            selectedStoreCoop: poi.newMappedCooperative,\n                        });\n\n                        // Store the anacanId value for subsequent replacements\n                        this.$root.setAttribute('data-last-selected-anacanId', poi.anacanId);\n                    }\n                    this.selectedCard = card;\n                    this.selectedCard.classList.add('rt168-pdv-select__selected-card');\n\n                    // Enable the CTA button after selection\n                    if (this.footerCta) {\n                        this.footerCta.classList.remove('rt002-cta-primary--disabled');\n                    }\n                });\n\n                card.addEventListener('click', (ev) => {\n                    const interactive = ev.target.closest('button, a, input, label');\n                    if (interactive) return;\n                    ev.preventDefault();\n                    ev.stopPropagation();\n                    card.dispatchEvent(new CustomEvent('rt168-select-card', { bubbles: true }));\n                });\n            }\n        },\n\n        async _initScrollbarResults() {\n            try {\n                // destroy previous instance if present\n                if (this.psResults && typeof this.psResults.destroy === 'function') {\n                    try {\n                        this.psResults.destroy();\n                    } catch (e) {\n                        // ignore destroy errors\n                    }\n                }\n                this.psResults = null;\n\n                const PerfectScrollbar = await getExtApiHelper().getPerfectScrollbar();\n                if (!PerfectScrollbar || !this.resList) return;\n\n                this.psResults = new PerfectScrollbar(this.resList, {\n                    swipeEasing: true,\n                    suppressScrollX: true,\n                    wheelPropagation: false,\n                    minScrollbarLength: 32,\n                });\n            } catch (e) {\n                console.warn('Failed to init PerfectScrollbar for rt168', e);\n            }\n        },\n    };\n}\n","export default function strilloSuperbolliniBalance () {\n    return {\n        superbollini: 0,\n        punti: 0,\n        loading: false,\n\n        init() {\n            console.log('initialized rt169-strillo-superbollini-balance');\n\n            // this.loadData();\n        },\n\n\n        loadData() {\n            this.loading = true;\n\n            try {\n                // TODO: API reale\n                const data = {\n                    superbollini: 16,\n                    punti: 900\n                };\n\n                this.superbollini = this.formatNumber(data.superbollini);\n                this.punti = this.formatNumber(data.punti);\n\n            } catch (error) {\n                console.error('Errore caricamento balance:', error);\n            } finally {\n                this.loading = false;\n            }\n        },\n\n        formatNumber(value) {\n            return new Intl.NumberFormat('it-IT').format(value || 0);\n        }\n    };\n}","import { getMyConadApiProvider } from '../../../../../../libs/myconad-api-provider';\nimport { getUserService } from '../../../../../../libs/user-service';\n\nexport default function balanceBanner() {\n    return {\n        balance: null,\n        inTarget: false,\n        userService: null,\n        mode: this.$root.dataset.mode,\n        async init() {\n            this.userService = getUserService();\n            await this._doLogic();\n            console.debug('initialized rt170-strillo-collection-wrapper balanceBanner');\n        },\n        async _doLogic() {\n            const user = await this.userService.getUser();\n            if (!user || !user.cartaFedelta) {\n                return;\n            }\n\n            try {\n                // get puntiMiPremio from user instead of CF\n                const puntiMiPremioMode = 'puntimipremio';\n                if (this.mode === puntiMiPremioMode) {\n                    this.balance = user.saldoPunti === null ? 0 : user.saldoPunti;\n                    this.inTarget = true;\n                    return;\n                }\n                const myConadApiProvider = getMyConadApiProvider();\n                const bolliniBalance = await myConadApiProvider.getUserBalance({\n                    fidelityCard: user.cartaFedelta,\n                    collectionCode: this.$root.dataset.initiativeCode,\n                });\n                if (bolliniBalance) {\n                    this.balance = bolliniBalance.saldoCumulato - bolliniBalance.saldoSpeso;\n                    this.inTarget = true;\n                }\n            } catch (e) {\n                console.warn(e);\n                this.balance = 0;\n                this.inTarget = true;\n            }\n\n        }\n    };\n}","import { getUserService } from '../../../../../libs/user-service';\n\nexport default function strilloCollectionWrapper() {\n    return {\n        user: null,\n        userIsLoading: true,\n        isUserCAD: false,\n        async init() {\n            const userService = getUserService();\n            // if not logged, show login button\n            this.user = await userService.getUser();\n            this.isUserCAD = this.user?.negozioPreferitoCooperativa === 'CAD';\n            this.userIsLoading = false;\n            console.debug('initialized rt170-strillo-collection-wrapper');\n        },\n    };\n}","import { getUserService } from '../../../../../libs/user-service';\nimport { getMyConadApiProvider } from '../../../../../libs/myconad-api-provider';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\n\nexport default function rolloutDettaglioPremio() {\n    return {\n        user: null,\n        superbollini: 0,\n        puntiMiPremio: 0,\n        priceBollini: 0,\n        pricePlusEuro: '',\n        priceMiPremio: 0,\n        isProgressLoading: true,\n        coopsToExclude: [],\n        async init() {\n            const el = this.$root;\n            this.priceBollini = parseInt(el.dataset.priceBollini) || 0;\n            this.pricePlusEuro = el.dataset.pricePlusEuro || '';\n            this.priceMiPremio = parseInt(el.dataset.priceMiPremio) || 0;\n            this.coopsToExclude = el.dataset.coopsToExclude ? el.dataset.coopsToExclude.split(',') : [];\n            this.user = await getUserService().getUser();\n            if (this.user?.cartaFedelta) {\n                await this._loadBalance();\n            }\n\n            this.isProgressLoading = false;\n\n            const ctaEl = el.querySelector('.rt171-rollout-dettaglio-premio__ctaShowEanCode');\n            if (ctaEl) {\n                this._buildCtaLogic(ctaEl);\n            }\n\n            console.debug('initialized rt171-rollout-dettaglio-premio', this.user);\n        },\n\n        async _loadBalance() {\n            try {\n                const balance = await getMyConadApiProvider().getUserBalance({\n                    fidelityCard: this.user.cartaFedelta,\n                    collectionCode: this.$root.dataset.initiativeCode,\n                });\n                if (balance) {\n                    this.superbollini = (balance.saldoCumulato || 0) - (balance.saldoSpeso || 0);\n                }\n            } catch (e) {\n                console.warn('rt171: error loading bollini balance', e);\n                this.superbollini = 0;\n            }\n\n            this.puntiMiPremio = this.user?.saldoPunti || 0;\n        },\n\n        _buildCtaLogic(ctaEl) {\n            if (!this.user?.cartaFedelta) return;\n            try {\n                if (this.isUserEnabled) {\n                    ctaEl.classList.remove('!hidden');\n                    ctaEl.addEventListener('click', () => {\n                        getFlowManager().startFlow({\n                            name: 'open-redeem-prize-popup',\n                            flowSteps: [{ name: 'redeem-prize-details-popup' }],\n                            initialData: {\n                                ean1: this.$root.dataset.ean1,\n                                ean2: this.$root.dataset.ean2,\n                                descrizioneMetodoRedenzione1: this.$root.dataset.bolliniText,\n                                descrizioneMetodoRedenzione2: this.$root.dataset.pointsText,\n                            },\n                        });\n                    });\n                }\n            } catch (e) {\n                console.warn('rt171: error building CTA logic', e);\n            }\n        },\n\n        get isLogged() {\n            return this.user !== null;\n        },\n\n        get isBimodal() {\n            return !!(this.user?.cartaFedelta);\n        },\n\n        get isCad() {\n            return this.user?.negozioPreferitoCooperativa === 'CAD';\n        },\n\n        get isUserEnabled() {\n            return !this.user || !this.coopsToExclude.includes(this.user.newMappedCooperative?.toLowerCase());\n        }\n    };\n}\n","export default function progressBanner() {\n    return {\n        userTotal: 0,\n        redeemTotal: parseInt(this.$root.dataset.price) || 0,\n        percentProgress: 0,\n        mode: this.$root.dataset.mode,\n        progressLabel: this.$root.dataset.progressLabel,\n        redeemLabelBase: this.$root.dataset.labelRedeemText || '',\n\n        init() {\n            this._doLogic();\n            console.debug('initialized rc171-rollout-dettaglio-premio progress-banner');\n        },\n\n        _doLogic() {\n            this.percentProgress = this.redeemTotal\n                ? Math.min((this.userTotal * 100) / this.redeemTotal, 100)\n                : 0;\n        },\n\n        getUserTotal(superbollini, puntiMiPremio) {\n            let total = 0;\n            switch (this.mode) {\n                case 'superbollini':  total = superbollini;  break;\n                case 'puntiMiPremio': total = puntiMiPremio; break;\n                default: return 0;\n            }\n            this.percentProgress = this.redeemTotal\n                ? Math.min((total * 100) / this.redeemTotal, 100)\n                : 0;\n            return total;\n        },\n\n        getProgressLabel(superbollini, puntiMiPremio) {\n            if (!this.progressLabel) return '';\n            const current = this.getUserTotal(superbollini, puntiMiPremio);\n            if (this.progressLabel.includes('[X/Y]')) {\n                return this.progressLabel.replace('[X/Y]', `${current}/${this.redeemTotal}`);\n            }\n            return this.progressLabel.replace('{0}', current).replace('{1}', this.redeemTotal);\n        },\n\n        getRedeemLabel() {\n            const suffix = this.mode === 'superbollini' ? 'con Superbollini!' : 'con punti miPremio!';\n            return `${this.redeemLabelBase} ${suffix}`.trim();\n        },\n    };\n}\n","import { getUserService } from '../../../../../libs/user-service';\nimport { getMyConadApiProvider } from '../../../../../libs/myconad-api-provider';\n\nexport default function buoniCommunityBalance() {\n    return {\n        user: null,\n        buoniBalance: 0,\n        buoniDonated: 0,\n        isLoading: true,\n        collectionCode: null,\n        buoniCode: null,\n        async init() {\n            this.user = await getUserService().getUser();\n            this.collectionCode =\n                this.$root.dataset.initiativeCode ||\n                this.$root.closest('[data-initiative-code]')?.dataset.initiativeCode;\n            this.buoniCode = this.$root.dataset.buoniCode || \n                this.$root.closest('[data-buoni-code]')?.dataset.buoniCode;\n            if (this.user?.cartaFedelta) {\n                await Promise.all([this._loadBalance(), this._loadMovements()]);\n            }\n\n            this.isLoading = false;\n\n            console.debug('initialized rt172-buoni-community-balance with user', this.user);\n        },\n\n        async _loadBalance() {\n            try {\n                const data = await getMyConadApiProvider().getUserBalance({\n                    collectionCode: this.collectionCode,\n                    fidelityCard: this.user.cartaFedelta,\n                });\n\n                if (data) {\n                    this.buoniBalance = data.saldoCumulato - data.saldoSpeso ?? 0;\n                }\n            } catch (e) {\n                console.warn('rt172: error loading buoni community balance', e);\n            }\n        },\n        async _loadMovements() {\n            try {\n                const data = await getMyConadApiProvider().getBuoniMovements({\n                    initiativeCodes: [this.buoniCode],\n                });\n                if (!data?.structuresCredits || !Array.isArray(data.structuresCredits)) return;\n                const totalUserCredits = data.totalUserCredits.filter(\n                    (item) => item.sustainabilityInitiativeCode == this.buoniCode\n                );\n                if (totalUserCredits && totalUserCredits.length > 0) this.buoniDonated = totalUserCredits[0].credits;\n            } catch (e) {\n                console.warn('rt172: error loading buoni movements', e);\n            }\n        },\n\n        get isLogged() {\n            return this.user !== null;\n        },\n\n        get isBimodal() {\n            return !!(this.user?.cartaFedelta);\n        },\n    };\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getUserService } from '../../../../../libs/user-service';\n\nconst DEFAULT_FALLBACK = '/ricerca-negozi';\n\nfunction appendQueryParams(destUrl) {\n    const currentQuery = window.location.search;\n    if (!currentQuery) return destUrl;\n\n    const [base, destQuery] = destUrl.split('?');\n    if (destQuery) {\n        const destParams = new URLSearchParams(destQuery);\n        const currentParams = new URLSearchParams(currentQuery);\n        for (const [k, v] of currentParams.entries()) {\n            destParams.set(k, v);\n        }\n        return `${base}?${destParams.toString()}`;\n    }\n    return destUrl + currentQuery;\n}\n\nexport default class StoreFlyerRedirect extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        // Skip redirect while authoring (same guard as rs1-page appRedirect)\n        if (!window.wcmmodeDisabled) {\n            this.root.classList.add(`${this.name}--editor`);\n            return;\n        }\n\n        this.userService = getUserService();\n        this.fallbackHref = this.root.dataset.fallbackHref || DEFAULT_FALLBACK;\n        this._redirect();\n    }\n\n    async _redirect() {\n        try {\n            const store = await this.userService.getStore();\n            const storeHref = store?.pdvLink?.href;\n            if (storeHref) {\n                window.location.replace(appendQueryParams(storeHref));\n                return;\n            }\n        } catch (err) {\n            console.warn('rt175-store-flyer-redirect: could not resolve store page', err);\n        }\n        window.location.replace(appendQueryParams(this.fallbackHref));\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class CardElevRecipes extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        // this.title = this._dEl('title');\n        // this.abstract = this._dEl('abstract');\n        // if (this.title?.innerText && this.title.innerText.length > 66) {\n        //     this.title.innerHTML = this.title.innerText.substring(0, 65) + '...';\n        // }\n        // if (this.abstract?.innerText && this.abstract.innerText.length > 270) {\n        //     this.abstract.innerHTML = this.abstract.innerText.substring(0, 269) + '...';\n        // }\n\n        this.level = this._dEl('levelLabel');\n        this.icons = this._dEl('iconChef', true);\n        this.chef2 = this.icons[1];\n        this.chef3 = this.icons[2];\n        this._initIcons();\n    }\n\n    _initIcons() {\n        if (this.level) {\n            switch (true) {\n                case this.level.innerText == 'Facile': {\n                    this.chef2.classList.add(this._elMod('icon', 'desel'));\n                    this.chef3.classList.add(this._elMod('icon', 'desel'));\n                    break;\n                }\n                case this.level.innerText == 'Media' || this.level.innerText == 'Medio': {\n                    this.chef3.classList.add(this._elMod('icon', 'desel'));\n                    break;\n                }\n                default: {\n                    break;\n                }\n            }\n        }\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { closeLoader, openLoader } from '../../../../../libs/utils';\nimport { getApiProvider } from '../../../../../libs/api-provider';\n\nexport default class CardProductFlyer extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.ctaFavorite = this._dEl('favorite');\n        this.productId = this.root.dataset.code;\n        this.idProdottoNegozioUtente = null;\n\n        this.flowManager = getFlowManager();\n        this.trackingManager = getTrackingManager();\n        this.apiProvider = getApiProvider();\n        this.userService = getUserService();\n\n        this._addListeners();\n        this._addStoreListeners();\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('PropsCurrentFlyer', (path, data) => {\n            const { anacanId, sfFlyerCode } = data;\n            this.sfFlyerCode = sfFlyerCode;\n            this.anacanId = anacanId;\n\n            // after get flyer props, check favorite\n            this._checkFavorite();\n        });\n    }\n\n    _addListeners() {\n        if (this.ctaFavorite) this._addListener('click', () => this._setFavorite(), this.ctaFavorite);\n    }\n\n    async _setFavorite() {\n        const favoriteStore = await this.userService.getStore();\n        const savedStores = await this.userService.getSavedStores();\n        const savedAnacanIds = savedStores.map((item) => item.anacanId);\n        if (savedAnacanIds.includes(this.anacanId)) {\n            await this._addRemoveDisFavoriteProduct();\n        } else if (favoriteStore.anacanId == this.anacanId) {\n            await this._addStoreAndDisFavoriteProduct();\n        } else {\n            this.flowManager.startFlow({\n                flowName: 'add-store-popup',\n                flowSteps: [{ name: 'add-store-popup' }],\n                onComplete: async () => {\n                    await this._addStoreAndDisFavoriteProduct();\n                },\n                initialData: { anacanId: this.anacanId },\n            });\n        }\n    }\n\n    async _sendTracking(add = true) {\n        const isNotLogged = (await this.userService.getUser()) == null;\n\n        this.trackingManager.track(this.root, {\n            funnel: {\n                stepFunnel: 'Interazioni con prodotti next flyer',\n            },\n            CustomLink: isNotLogged ? 'Callout registrazione utente non loggato' : add ? 'Aggiunta' : 'Rimozione',\n            prodottoInfo: {\n                componente: 'Card prodotto',\n                evidenza: this.root.dataset.evidenza ? 'SI' : 'NO',\n                nome: 'data.nome',\n                ean: 'data.ean',\n                marchio: 'data.brand',\n                sottomarchio: '',\n                categoria: 'data.category',\n                sottocategoria: 'data.subCategory',\n                meccanicaPromozionale: 'data.meccanica',\n                tipologiaPromozione: 'data.meccanica',\n                tagPromozione: 'data.tagPromo',\n                cardistaPromozione: 'data.cardistaPromo',\n            },\n        });\n    }\n\n    async _addRemoveDisFavoriteProduct() {\n        openLoader('main');\n        try {\n            if (this.idProdottoNegozioUtente) {\n                // delete\n                const res = await getUserService().removeDisFavoriteProduct(\n                    this.anacanId,\n                    this.idProdottoNegozioUtente\n                );\n                if (res) {\n                    this._sendTracking(false);\n                    this._checkFavorite();\n                }\n            } else {\n                // add\n                const res = await getUserService().addDisFavoriteProduct(\n                    this.anacanId,\n                    this.sfFlyerCode,\n                    this.productId\n                );\n                if (res) {\n                    this._sendTracking(true);\n                    this._checkFavorite();\n                }\n            }\n        } catch (err) {\n            console.warn(err);\n        } finally {\n            closeLoader('main');\n        }\n    }\n\n    /**\n     * Add the current store to saved stores and product to favorites\n     */\n    async _addStoreAndDisFavoriteProduct() {\n        try {\n            openLoader('main');\n            const addStore = await this.userService.addSavedStore(this.anacanId);\n            if (addStore) {\n                await getUserService().addDisFavoriteProduct(this.anacanId, this.sfFlyerCode, this.productId);\n                this._checkFavorite();\n            }\n        } catch (err) {\n            console.warn(err);\n        } finally {\n            closeLoader('main');\n        }\n    }\n\n    async _checkFavorite() {\n        if (!this.anacanId || this.anacanId == '' || (await this.userService.getUser()) == null) {\n            return;\n        }\n\n        // If user logged show heart\n        this.ctaFavorite.classList.add(this._elMod('favorite', 'show'));\n\n        this.cta =  getRegister().getClass(this.ctaFavorite);\n        this.idProdottoNegozioUtente = await getUserService().checkDisFavoriteProduct(\n            this.anacanId,\n            this.sfFlyerCode,\n            this.productId\n        );\n        if (this.idProdottoNegozioUtente) {\n            this.cta.setIcon('ec-icon-like-on');\n        } else {\n            this.cta.setIcon('ec-icon-like-off');\n        }\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\n\nexport default class CardFlyer extends Component {}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\n\nexport default class CardBanner extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.dictionary = getDictionary();\n\n        this.fullDateFormatter = new Intl.DateTimeFormat('it-IT', { day: 'numeric', month: 'long', year: 'numeric' });\n        this.shortDateFormatter = new Intl.DateTimeFormat('it-IT', { day: 'numeric', month: 'long' });\n        this.dayFormatter = new Intl.DateTimeFormat('it-IT', { day: 'numeric' });\n\n        this.validFrom = this.root.dataset.validFrom;\n        this.validTo = this.root.dataset.validTo;\n        this.validity = this._dEl('validity');\n        if (this.validity) this._setBannerValidity();\n\n        this.bgGradientFrom = this.root.dataset.bgGradientFrom;\n        this.bgGradientTo = this.root.dataset.bgGradientTo;\n        this.bgColor = this.root.dataset.bgColor;\n        if ((this.bgGradientFrom && this.bgGradientTo) || this.bgColor) this._updateBackground();\n\n        this.textColor = this.root.dataset.textColor;\n        this.title = this._dEl('title');\n        this.description = this._dEl('description');\n        this.link = this._dEl('link');\n        if (this.textColor) this._setTextColor();\n\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'resize',\n            () => {\n                this._updateBackground();\n            },\n            window\n        );\n    }\n\n    _setTextColor() {\n        const color = `${this.textColor}`;\n        if (this.title) {\n            this.title.style.color = color;\n        }\n        if (this.description) {\n            this.description.style.color = color;\n        }\n        if (this.validity) {\n            this.validity.style.color = color;\n        }\n        if (this.link) {\n            this.link.style.color = color;\n            this.link.style.borderColor = color;\n        }\n    }\n\n    _updateBackground() {\n        if (this.bgGradientFrom && this.bgGradientTo) {\n            this.root.style.background = `linear-gradient(to ${\n                window.innerWidth < BREAKPOINTS.l ? 'bottom' : 'right'\n            }, ${this.bgGradientFrom}, ${this.bgGradientTo})`;\n            return;\n        }\n        if (this.bgColor) {\n            this.root.style.backgroundColor = `${this.bgColor}`;\n        }\n    }\n\n    async _setBannerValidity() {\n        if (!this.validity) return;\n        this.validity.innerText = await this._getValidity(this.validFrom, this.validTo);\n    }\n\n    _getValidity(validFrom, validTo) {\n        const from = this.dictionary.get('From the');\n        const to = this.dictionary.get('to the');\n        const until = this.dictionary.get('Until');\n\n        if (!validFrom && !validTo) {\n            return this.dictionary.get('Always valid');\n        }\n        if (!validFrom && validTo) {\n            let eDate = new Date(parseInt(validTo));\n            return `${until} ${this.fullDateFormatter.format(eDate)}`;\n        }\n        if (!validTo && validFrom) {\n            let sDate = new Date(parseInt(validFrom));\n            return `${from} ${this.fullDateFormatter.format(sDate)}`;\n        }\n        let sDate = new Date(parseInt(validFrom));\n        let eDate = new Date(parseInt(validTo));\n        if (sDate.getFullYear() !== eDate.getFullYear()) {\n            return `${from} ${this.fullDateFormatter.format(sDate)} ${to} ${this.fullDateFormatter.format(eDate)}`;\n        }\n        if (sDate.getMonth() !== eDate.getMonth()) {\n            return `${from} ${this.shortDateFormatter.format(sDate)} ${to} ${this.fullDateFormatter.format(eDate)}`;\n        }\n\n        return `${from} ${this.dayFormatter.format(sDate)} ${to} ${this.fullDateFormatter.format(eDate)}`;\n    }\n}\n\n\n","import './style.scss';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { getMyConadApiProvider } from '../../../../../libs/myconad-api-provider';\n\nexport default function cardPremi() {\n    return {\n        user: null,\n        bolliniProgress: null,\n        miPREMIOProgress: null,\n        isProgressLoading: true,\n        coopsToExclude: [],\n        async init() {\n            const el = this.$root;\n            const version = el.dataset.version;\n            if (!version || version === 'a') {\n                return;\n            }\n\n            const dataCoopsToExclude = el.closest('[data-coops-to-exclude]')?.dataset.coopsToExclude;\n            this.coopsToExclude = dataCoopsToExclude ? dataCoopsToExclude.split(',') : [];\n            this.user = await this._resolveUser();\n\n            if (this.user?.cartaFedelta) {\n                const maxBollini = parseInt(el.dataset.maxBollini) || 0;\n                const maxPoints = parseInt(el.dataset.maxPoints) || 0;\n                this.bolliniProgress = await this._getBolliniProgress(maxBollini);\n                this.miPREMIOProgress = await this._getMiPREMIOProgress(maxPoints);\n            }\n            this.isProgressLoading = false;\n\n            console.debug('initialized rt218-card-premi with user', this.user);\n        },\n\n        _resolveUser() {\n            return getUserService().getUser();\n        },\n\n        async _getBolliniProgress(total) {\n            try {\n                const initiativeCode = this.$root.closest('[data-initiative-code]')?.dataset.initiativeCode;\n                const balance = await getMyConadApiProvider().getUserBalance({\n                    fidelityCard: this.user.cartaFedelta,\n                    collectionCode: initiativeCode,\n                });\n                const current = balance ? balance.saldoCumulato - balance.saldoSpeso : 0;\n                return { current, total };\n            } catch (e) {\n                console.warn(e);\n                return { current: 0, total };\n            }\n        },\n\n        _getMiPREMIOProgress(total) {\n            return Promise.resolve({ current: this.user?.saldoPunti || 0, total });\n        },\n\n        replacePointsPlaceholders(template) {\n            if (!template) return '';\n            if (this.miPREMIOProgress) {\n                const current = this.miPREMIOProgress.current || 0;\n                const total = this.miPREMIOProgress.total;\n                if (template.includes('[X/Y]')) {\n                    return template.replace('[X/Y]', `${current}/${total}`);\n                }\n                return template.replace('{0}', current).replace('{1}', total);\n            }\n            return template;\n        },\n\n        replaceBolliniPlaceholders(template) {\n            if (!template) return '';\n            if (this.bolliniProgress) {\n                const current = this.bolliniProgress.current || 0;\n                const total = this.bolliniProgress.total;\n                if (template.includes('[X/Y]')) {\n                    return template.replace('[X/Y]', `${current}/${total}`);\n                }\n                return template.replace('{0}', current).replace('{1}', total);\n            }\n            return template;\n        },\n\n        get isCAD() {\n            return this.user?.negozioPreferitoCooperativa === 'CAD';\n        },\n\n        get isUserEnabled() {\n            return this.user && !this.coopsToExclude.includes(this.user.newMappedCooperative?.toLowerCase());\n        },\n\n        get canRedeemWithBollini() {\n            return !!(this.bolliniProgress && this.bolliniProgress.current >= this.bolliniProgress.total \n                && this.bolliniProgress.total > 0);\n        },\n\n        get canRedeemWithMiPREMIO() {\n            return !!(this.miPREMIOProgress && this.miPREMIOProgress.current >= this.miPREMIOProgress.total \n                && this.miPREMIOProgress.total > 0);\n        },\n\n        get bolliniPercentage() {\n            if (!this.bolliniProgress?.total) return 0;\n            return Math.min(100, (this.bolliniProgress.current / this.bolliniProgress.total) * 100);\n        },\n\n        get miPREMIOPercentage() {\n            if (!this.miPREMIOProgress?.total) return 0;\n            return Math.min(100, (this.miPREMIOProgress.current / this.miPREMIOProgress.total) * 100);\n        },\n    };\n}\n","import { getDictionary } from \"../../../../../libs/dictionary-provider\";\n\nexport default function cardPromotion() {\n    return {\n        validity: null,\n        init() {\n            this.dictionary = getDictionary();\n            this.fullDateFormatter = new Intl.DateTimeFormat('it-IT', {\n                day: 'numeric',\n                month: 'long',\n                year: 'numeric',\n            });\n            this.shortDateFormatter = new Intl.DateTimeFormat('it-IT', { day: 'numeric', month: 'long' });\n            this.dayFormatter = new Intl.DateTimeFormat('it-IT', { day: 'numeric' });\n\n            this.validity = this._getValidity(this.$root.dataset.startValidityDate, this.$root.dataset.endValidityDate);\n            console.debug(\"cardPromotion initialized.\");\n        },\n        _getValidity(validFrom, validTo) {\n            const from = this.dictionary.get('From the');\n            const to = this.dictionary.get('to the');\n            const until = this.dictionary.get('Until');\n\n            if (!validFrom && !validTo) {\n                return this.dictionary.get('Always valid');\n            }\n            if (!validFrom && validTo) {\n                let eDate = new Date(parseInt(validTo));\n                return `${until} ${this.fullDateFormatter.format(eDate)}`;\n            }\n            if (!validTo && validFrom) {\n                let sDate = new Date(parseInt(validFrom));\n                return `${from} ${this.fullDateFormatter.format(sDate)}`;\n            }\n            let sDate = new Date(parseInt(validFrom));\n            let eDate = new Date(parseInt(validTo));\n            if (sDate.getFullYear() !== eDate.getFullYear()) {\n                return `${from} ${this.fullDateFormatter.format(sDate)} ${to} ${this.fullDateFormatter.format(eDate)}`;\n            }\n            if (sDate.getMonth() !== eDate.getMonth()) {\n                return `${from} ${this.shortDateFormatter.format(sDate)} ${to} ${this.fullDateFormatter.format(eDate)}`;\n            }\n\n            return `${from} ${this.dayFormatter.format(sDate)} ${to} ${this.fullDateFormatter.format(eDate)}`;\n        }\n\n    }\n}","export default function cardSpecStoresV2() {\n    return {\n        showAccordion: false,\n        init() {\n            console.debug('card spec stores v2 initialized.');  \n        },\n        toggleAccordion() {\n            this.showAccordion = !this.showAccordion;\n            this.$refs.accordionContent.style.height = this.showAccordion ? this.$refs.accordionContent.scrollHeight + 'px' : '0px';\n        },\n    }\n}; ","\nexport default function cardPremioConcorso() {\n    return {\n        init() {\n            console.log('card premio concorso initialized.');  \n        }\n    }\n}; ","import { getCurrentModal } from '../../repository/apps/conad-corporate/templates/ru002-modal/scripts/get-modal';\nimport { getExtApiHelper } from '../ext-api-helper';\nimport { getFlowManager } from '../flow-manager';\nimport { htmlToElement } from '../utils';\nimport Component from './component';\n\nexport default class ModalComponent extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.flowManager = getFlowManager();\n\n        this.wrapper = this._dEl('wrapper');\n        this.topBar = this._dEl('topBar');\n        this.bottomBar = this._dEl('bottomBar');\n        this.stepsIcons = this._dEl('stepsIcons');\n        this.title = this._dEl('title');\n        if (!this.wrapper) throw 'A modal component need to have a wrapper div';\n\n        this._initModal();\n    }\n\n    _initModal() {\n        this.modal = getCurrentModal(this.root);\n        this._initModalEvents();\n        this._initSteps();\n        this._initScrollbar();\n    }\n\n    _initModalEvents() {\n        /* scrollbar handlers */\n        this._addListener(\n            'ps-y-reach-start',\n            () => {\n                if (this.topBar) this.topBar.classList.remove(this._elMod('topBar', 'shadow'));\n                if (this.stepsIcons && !this.topBar) this.stepsIcons.classList.add(this._elMod('stepsIcons', 'show'));\n            },\n            this.wrapper\n        );\n        this._addListener(\n            'ps-scroll-down',\n            () => {\n                if (this.topBar) this.topBar.classList.add(this._elMod('topBar', 'shadow'));\n                if (this.stepsIcons && !this.topBar)\n                    this.stepsIcons.classList.remove(this._elMod('stepsIcons', 'show'));\n            },\n            this.wrapper\n        );\n        this._addListener(\n            'ps-y-reach-end',\n            () => {\n                if (this.bottomBar) this.bottomBar.classList.remove(this._elMod('bottomBar', 'shadow'));\n            },\n            this.wrapper\n        );\n        this._addListener(\n            'ps-scroll-up',\n            () => {\n                if (this.bottomBar) this.bottomBar.classList.add(this._elMod('bottomBar', 'shadow'));\n            },\n            this.wrapper\n        );\n\n        /* modal events */\n\n        this._addListener(\n            'rcModalOpen',\n            () => {\n                this.wrapper.scrollTop = 0;\n                this._onOpen();\n            },\n            this.modal.getRoot()\n        );\n        this._addListener(\n            'rcModalClose',\n            () => {\n                this._onClose();\n            },\n            this.modal.getRoot()\n        );\n        this._addListener(\n            'rcModalCancel',\n            () => {\n                this._onCancel();\n            },\n            this.modal.getRoot()\n        );\n\n        /* flow buttons events */\n        if (this.title)\n            this._addListener(\n                'click',\n                (event) => {\n                    if (!event.target.matches(this._elMod('title', 'back', true))) return;\n                    this.flowManager.back();\n                },\n                this.title\n            );\n        if (this.stepsIcons)\n            this._addListener(\n                'click',\n                (event) => {\n                    if (!event.target.matches('[data-flow-step]')) return;\n                    this.flowManager.back(event.target.dataset.flowStep);\n                },\n                this.stepsIcons\n            );\n    }\n\n    async _initScrollbar() {\n        const scrollbarOptions = {\n            swipeEasing: true,\n            suppressScrollX: true,\n        };\n        const PerfectScrollbar = await getExtApiHelper().getPerfectScrollbar();\n        this.ps = new PerfectScrollbar(this.wrapper, scrollbarOptions);\n    }\n\n    _initSteps() {\n        this._addStoreListener(/flow\\/[^/]+\\/backStack/g, (path, backStack) => {\n            if (!this.title) return;\n            const flowName = this.flowManager.getFlowNameByStorePath(path);\n            const activeStep = this.storeManager.get(`flow/${flowName}/activeStep`);\n            if (activeStep.el != this.modal.getRoot()) {\n                return;\n            }\n\n            if (activeStep.disableBack || !backStack || backStack.length <= 0) {\n                this.title.classList.remove(this._elMod('title', 'back'));\n            } else {\n                this.title.classList.add(this._elMod('title', 'back'));\n            }\n        });\n        this._addStoreListener(/flow\\/[^/]+\\/state/g, (path, steps) => {\n            if (!this.stepsIcons) return;\n            const flowName = this.flowManager.getFlowNameByStorePath(path);\n            const activeStep = this.storeManager.get(`flow/${flowName}/activeStep`);\n            if (activeStep.el != this.modal.getRoot()) {\n                return;\n            }\n\n            if (!activeStep.index || this.storeManager.get('flow')?.options?.hideStepIcons) {\n                return;\n            }\n\n            while (this.stepsIcons.firstChild) {\n                this.stepsIcons.removeChild(this.stepsIcons.firstChild);\n            }\n\n            if (!steps || steps.length <= 0) {\n                this.stepsIcons.classList.remove(this._elMod('stepsIcons', 'show'));\n                return;\n            }\n\n            for (const index in steps) {\n                if (steps[index]) {\n                    const icStep = steps[index]\n                        .filter((item) => item.status != 'disabled')\n                        .reduce((total, item) => (total != null && total.status == 'active' ? total : item), null);\n                    this.stepsIcons.appendChild(\n                        htmlToElement(`<button class=\"step ${icStep.status}\" data-flow-step=\"${icStep.name}\"></button>`)\n                    );\n                }\n            }\n            this.stepsIcons.classList.add(this._elMod('stepsIcons', 'show'));\n        });\n    }\n\n    _onOpen() {}\n\n    _onClose() {}\n\n    _onCancel() {}\n}\n","import { getRegister } from \"../../../../../../libs/register\";\n\nexport const getModalObjByName = (name) => {\n    const modal = document.querySelector(`.ru002-modal[data-name=${name}]`);\n    if (!modal) return null;\n    const modalObj =  getRegister().getClass(modal);\n    if (!modalObj) return null;\n    return modalObj;\n}\n\nexport const getCurrentModal = (element) => {\n    const modalEl = element.closest('.ru002-modal');\n    if (!modalEl) return;\n    const modalObj =  getRegister().getClass(modalEl);\n    if (!modalObj) return;\n    return modalObj;\n}","import './style.scss';\nimport ModalComponent from '../../../../../libs/components/modal-component';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\n\nexport default class SelectPosStep1 extends ModalComponent {\n    constructor(name, root) {\n        super(name, root);\n        this.flowManager = getFlowManager();\n\n        this.selectStore = this._dEl('selectStore');\n        this.links = this._dEl('link', true);\n\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            () => {\n                this.flowManager.next('select-pos-step-2');\n            },\n            this.selectStore\n        );\n        this.links.forEach((link) => {\n            this._addListener(\n                'click',\n                (event) => {\n                    event.preventDefault();\n                    if (!link.href) return;\n                    const redirectUrl = new URL(link.href);\n                    redirectUrl.searchParams.set('cb', window.location);\n                    window.location = redirectUrl.href;\n                },\n                link\n            );\n        });\n    }\n\n    _onCancel() {\n        this.flowManager.complete();\n    }\n}\n\n\n","export const styledMapFeatures = [\n    {\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#f5f5f5',\n            },\n        ],\n    },\n    {\n        elementType: 'labels.icon',\n        stylers: [\n            {\n                visibility: 'off',\n            },\n        ],\n    },\n    {\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#616161',\n            },\n        ],\n    },\n    {\n        elementType: 'labels.text.stroke',\n        stylers: [\n            {\n                color: '#f5f5f5',\n            },\n        ],\n    },\n    {\n        featureType: 'administrative.land_parcel',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#bdbdbd',\n            },\n        ],\n    },\n    {\n        featureType: 'poi',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#eeeeee',\n            },\n        ],\n    },\n    {\n        featureType: 'poi',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#757575',\n            },\n        ],\n    },\n    {\n        featureType: 'poi.park',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#e5e5e5',\n            },\n        ],\n    },\n    {\n        featureType: 'poi.park',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#9e9e9e',\n            },\n        ],\n    },\n    {\n        featureType: 'road',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#ffffff',\n            },\n        ],\n    },\n    {\n        featureType: 'road.arterial',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#757575',\n            },\n        ],\n    },\n    {\n        featureType: 'road.highway',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#dadada',\n            },\n        ],\n    },\n    {\n        featureType: 'road.highway',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#616161',\n            },\n        ],\n    },\n    {\n        featureType: 'road.local',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#9e9e9e',\n            },\n        ],\n    },\n    {\n        featureType: 'transit.line',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#e5e5e5',\n            },\n        ],\n    },\n    {\n        featureType: 'transit.station',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#eeeeee',\n            },\n        ],\n    },\n    {\n        featureType: 'water',\n        elementType: 'geometry',\n        stylers: [\n            {\n                color: '#c9c9c9',\n            },\n        ],\n    },\n    {\n        featureType: 'water',\n        elementType: 'labels.text.fill',\n        stylers: [\n            {\n                color: '#9e9e9e',\n            },\n        ],\n    },\n];","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { getGMapsHelper } from '../../../../../libs/gmaps-helper';\nimport { delay } from '../../../../../libs/utils';\nimport { styledMapFeatures } from './scripts/styled-map';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { ClusterPinRenderer } from '../rt016-map-pin/scripts/cluster-pin-renderer';\nimport { htmlMapPin } from '../rt016-map-pin/scripts/html-map-pin';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { getPoiType } from '../../../../../libs/pdv-utils';\n\nexport default class SelectPosStep2Map extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.gMapsHelper = getGMapsHelper();\n        this.register = getRegister();\n        this.flowManager = getFlowManager();\n\n        this.BREAKPOINT_L = BREAKPOINTS.l;\n        this.PRE_SHOW = this._mod('preShow');\n        this.SHOW = this._mod('show');\n        this.mapEl = this._dEl('map');\n        this.map = null;\n        this.markerClusterer = null;\n        this.markers = [];\n        this.markersMap = {};\n        this.selectedMarker = null;\n        this.closer = this._dEl('closer');\n\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            () => {\n                this.flowManager.backOrComplete();\n            },\n            this.closer\n        );\n        this._addListener(\n            'clickedStore',\n            (event) => {\n                const data = event.data;\n                if (!data.pinId) return;\n                this.selectPoi(data.pinId, false);\n                this.listObj.setSelectedStoreId(data.pinId);\n                if (window.innerWidth >= this.BREAKPOINT_L) {\n                    /* desktop: list is visible, select store directly */\n                    this.listObj.selectPos(data.pinId);\n                }\n            },\n            this.mapEl\n        );\n        this._addListener(\n            'clickedAggregator',\n            (event) => {\n                const data = event.data;\n                if (!data.position) return;\n                this._resetPin();\n                this.map.panTo(data.position);\n                this.map.setZoom(this.map.getZoom() < 15 ? this.map.getZoom() + 2 : this.map.getZoom() + 1);\n            },\n            this.mapEl\n        );\n    }\n\n    async init(listObj) {\n        this.listObj = listObj;\n        this.root.classList.add(this.PRE_SHOW);\n        if (!this.map) {\n            const maps = await this.gMapsHelper.getGMaps();\n            this.map = new maps.Map(this.mapEl, {\n                center: { lat: 43, lng: 12 },\n                zoom: 10,\n                streetViewControl: false,\n                mapTypeControl: false,\n                fullscreenControl: false,\n            });\n\n            const styledMapType = new maps.StyledMapType(styledMapFeatures);\n            this.map.mapTypes.set('styled_map', styledMapType);\n            this.map.setMapTypeId('styled_map');\n        }\n\n        await delay(500);\n        this.root.classList.add(this.SHOW);\n    }\n\n    async addResults(stores) {\n        if (!stores || stores.length <= 0) return;\n        const maps = await this.gMapsHelper.getGMaps();\n        const mapPinCall = (await import('../rt016-map-pin/rt016-map-pin.html')).default;\n\n        if (this.markers.length > 0) {\n            this._emptyMarkers();\n        }\n\n        this.currentBounds = new maps.LatLngBounds();\n        for (const poi of stores) {\n            /* get latlng */\n            const position = new maps.LatLng(poi.latitudine, poi.longitudine);\n            /* get marker element dynamically */\n            const pinData = {\n                uniqueId: `pin-${poi.anacanId}`,\n                pinId: poi.anacanId,\n                type: getPoiType(poi),\n            };\n            const mapPin = runTemplate(mapPinCall, pinData);\n            /* create map marker */\n            const marker = htmlMapPin({\n                position: position,\n                elem: mapPin,\n                map: this.map,\n            });\n            /* set map params on pin object */\n            const markerObj = this.register.getClass(mapPin);\n            markerObj.setMapParams(this.map, position, marker, poi, true);\n            /* add marker to the map */\n            this.markersMap[poi.anacanId] = markerObj;\n            this.markers.push(marker);\n            this.currentBounds.extend(position);\n        }\n\n        this.map.fitBounds(this.currentBounds);\n        this.markerClusterer?.reset();\n        const MarkerClusterer = await getGMapsHelper().getMarkerClusterer();\n        this.markerClusterer = new MarkerClusterer({\n            map: this.map,\n            markers: this.markers,\n            renderer: new ClusterPinRenderer(this.map, this.register, mapPinCall),\n        });\n    }\n\n    selectPoi(anacanId, panTo = true) {\n        const pinObj = this.markersMap[anacanId];\n        if (!pinObj || !pinObj.position || !this.map) {\n            console.warn(`Cannot find marker for store ${anacanId}`);\n            return;\n        }\n\n        if (pinObj.isSelected()) {\n            this._resetPin();\n            return;\n        }\n\n        this._resetPin(pinObj);\n        if (panTo) {\n            this.map.panTo(pinObj.getPosition());\n            this.map.setZoom(17);\n        }\n        this.selectedMarker = pinObj;\n    }\n\n    _resetPin(selectedPinObj = null) {\n        for (const prop in this.markersMap) {\n            if (Object.hasOwn(this.markersMap, prop)) {\n                if (selectedPinObj == this.markersMap[prop]) this.markersMap[prop].setSelected(true);\n                else this.markersMap[prop].setSelected(false);\n            }\n        }\n    }\n\n    /* called by rt251-select-pos-step2 */\n    panSelected() {\n        if (this.selectedMarker) {\n            const pos = this.selectedMarker.getPosition();\n            this.map.panTo(pos);\n            this.map.setZoom(17);\n        } else if (this.currentBounds) {\n            this.map.fitBounds(this.currentBounds);\n        } else {\n            this.map.panTo({ lat: 43, lng: 12 });\n            this.map.setZoom(6);\n        }\n    }\n\n    _emptyMarkers() {\n        this._resetPin();\n        for (const marker of this.markers) {\n            marker.setMap(null);\n        }\n        this.markers = [];\n        this.markersMap = {};\n        this.selectedMarker = null;\n        this.markerClusterer?.clearMarkers();\n    }\n\n    destroy() {\n        this.root.classList.remove(this.PRE_SHOW);\n        this.root.classList.remove(this.SHOW);\n    }\n}\n\n\n","import './style.scss';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport ModalComponent from '../../../../../libs/components/modal-component';\nimport { getRegister } from '../../../../../libs/register';\nimport { getUserService } from '../../../../../libs/user-service';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getPoiType, storeData } from '../../../../../libs/pdv-utils';\nimport { closeLoader, emptyElement, openLoader } from '../../../../../libs/utils';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { getStoreManager } from '../../../../../libs/store-manager';\n\nexport default class SelectPosStep2 extends ModalComponent {\n    constructor(name, root) {\n        super(name, root);\n        this.flowManager = getFlowManager();\n        this.userService = getUserService();\n        this.register = getRegister();\n        this.api = getApiProvider();\n        this.storeManager = getStoreManager();\n\n        this.RES_ITEM = this._el('resItem');\n        this.BREAKPOINT_L = BREAKPOINTS.l;\n        this.MAP_SELECTOR = '.rt251-select-pos-step2-map';\n        this.SHOW_MAP_MOB = this._mod('showMapMob');\n        this.NO_RESULTS = this._mod('noRes');\n        this.SEARCH_EMPTY = this._mod('searchEmpty');\n        this.PAD_BOX_SHADOW = 7;\n        this.CARD_TITLE_SELECTOR = '.rt021-store-card__name';\n        this.address = this._dEl('address');\n        this.wrapper = this._dEl('wrapper');\n        this.numRes = this._dEl('resHeadingFound')?.querySelector('span');\n        this.resList = this._dEl('resList');\n        this.mapMob = this._dEl('mapMob');\n        this.id = this.root.getAttribute('id');\n        this.selectBtn = this._dEl('select');\n        this.showMapBtn = this._dEl('showMap');\n        this.showListBtn = this._dEl('showList');\n        this.stores = [];\n        this.selectedStore = null;\n        this.extendedVersion = this.root.hasAttribute('data-extended-version');\n\n        /* init */\n        this._showSearchEmpty();\n\n        this._addEventListeners();\n    }\n\n    /* override */\n    _onOpen() {\n        super._onOpen();\n        this._initMapMob();\n        if (this.map) {\n            this.map.init(this);\n            /* add resize event handler only after initializing the map */\n            if (this.extendedVersion) {\n                this._addListener(\n                    'resize',\n                    () => {\n                        const modalObj = this.modal;\n                        if (!modalObj || !modalObj.rightContent) return;\n                        if (window.innerWidth >= this.BREAKPOINT_L) {\n                            modalObj.rightContent.append(this.mapEl);\n                            this.mapEl = modalObj.getRoot().querySelector(this.MAP_SELECTOR);\n                            modalObj.showRight();\n                        } else {\n                            this.mapMob?.append(this.mapEl);\n                            this.mapEl = this.mapMob?.querySelector(this.MAP_SELECTOR);\n                            modalObj.hideRight();\n                            /* condition to avoid showing the map wrongfully when you started with the list in mobile, \n                            then rotated the screen and showed the map in desktop, and then rotated back into mobile */\n                            if (this.root.classList.contains(this.SHOW_MAP_MOB)) this._showMobileMap();\n                        }\n                        if (this.selectedStoreId) this.selectPos(this.selectedStoreId);\n                    },\n                    window\n                );\n            }\n        }\n        if (this.selectedStoreId) this.selectPos(this.selectedStoreId);\n    }\n\n    /* override */\n    _onClose() {\n        super._onClose();\n        if (this.map) this.map.destroy();\n    }\n\n    /* override */\n    _onCancel() {\n        super._onCancel();\n        this.flowManager.complete();\n    }\n\n\n    _initMapMob() {\n        if (!this.extendedVersion) return;\n        this.mapEl = this.modal.getRoot().querySelector(this.MAP_SELECTOR);\n        if (this.mapEl) {\n            this.map = this.register.getClass(this.mapEl);\n            if (window.innerWidth < this.BREAKPOINT_L) {\n                this.mapMob.appendChild(this.mapEl);\n                this.mapEl = this.mapMob?.querySelector(this.MAP_SELECTOR);\n            }\n        }\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'rcInputChanged',\n            (event) => {\n                this._loadPoi(event.data.value);\n            },\n            this.address\n        );\n        this._addListener(\n            'click',\n            async () => {\n                await this.userService.setLastVisitedStore(this.selectedStore.anacanId);\n                this._emit('selectedStore', this.selectedStore);\n                this.flowManager.appendDataToFlow({\n                    selectedStore: this.selectedStore,\n                });\n                this.flowManager.complete();\n            },\n            this.selectBtn\n        );\n        if (this.showMapBtn)\n            this._addListener(\n                'click',\n                () => {\n                    if (this.map) {\n                        window.innerWidth >= this.BREAKPOINT_L ? this.modal.showRight() : this._showMobileMap();\n                        this.map.panSelected();\n                    }\n                },\n                this.showMapBtn\n            );\n        if (this.showListBtn)\n            this._addListener(\n                'click',\n                () => {\n                    this._showMobileMap(false);\n                    this.selectPos(this.selectedStoreId);\n                },\n                this.showListBtn\n            );\n        this._addListener(\n            'resize',\n            () => {\n                const selectBtnObj = this.register.getClass(this.selectBtn);\n                window.innerWidth < this.BREAKPOINT_L ? selectBtnObj.setSize('small') : selectBtnObj.setSize('medium');\n            },\n            window\n        );\n        this._addListener(\n            'clickedStoreCard',\n            (event) => {\n                const data = event.data;\n                if (!data.storeId) return;\n                this.setSelectedStoreId(data.storeId);\n                this.selectPos(this.selectedStoreId, false);\n                /* select on map */\n                this.map?.selectPoi(data.storeId);\n            },\n            this.resList\n        );\n    }\n\n    _showMobileMap(show = true) {\n        if (show) {\n            if (!this.root.classList.contains(this.SHOW_MAP_MOB)) this.root.classList.add(this.SHOW_MAP_MOB);\n        } else {\n            this.root.classList.remove(this.SHOW_MAP_MOB);\n        }\n    }\n\n    setSelectedStoreId(anacanId) {\n        this.selectedStoreId = anacanId;\n    }\n\n    selectPos(anacanId, scrollTo = true) {\n        const storeEl = this.resList.querySelector(`[data-store-id=\"${anacanId}\"]`);\n        if (!storeEl) {\n            console.warn(`cannot select store ${anacanId}`);\n            return;\n        }\n\n        this.selectedResItem = this.resList.querySelector(`.${this.RES_ITEM}[data-store-id='${anacanId}']`);\n        this.selectedStore = this.stores.filter((store) => store.anacanId == storeEl.dataset.storeId)[0];\n        this._updateSelectedRes(scrollTo);\n\n        this._enableSelectBtn();\n    }\n\n    _updateSelectedRes(scrollTo = true) {\n        if (!this.selectedResItem || !this.selectedResItem.offsetTop) return;\n        if (scrollTo) this.wrapper.scrollTop = this.selectedResItem.offsetTop - this.PAD_BOX_SHADOW;\n        const resObj = this.register.getClass(this.selectedResItem);\n        resObj.unselectCards();\n        resObj.setSelected();\n    }\n\n    async _loadPoi(address) {\n        if (!address || !address.geometry || !address.types) return;\n\n        const data = {\n            latitudine: `${address.geometry.location.lat()}`,\n            longitudine: `${address.geometry.location.lng()}`,\n            raggioRicerca: '15',\n        };\n\n        try {\n            openLoader('main');\n            this.stores = await this.api.retrievePointOfService(data);\n            await this._addResults(this.stores);\n        } catch (error) {\n            console.error(error);\n            this._showNoResults();\n        } finally {\n            closeLoader('main');\n        }\n    }\n\n    async _addResults(results) {\n        if (!results || results.length <= 0) {\n            this._emptyResults();\n            this._showNoResults();\n            return;\n        }\n        this._emptyResults();\n\n        for (const poi of results) {\n            await this._addResultToList(poi);\n        }\n        this._disableStoreTitlesClick();\n\n        this._updateNumRes(results.length);\n        this._showResults();\n\n        await this._addResultsToMap();\n    }\n\n    async _addResultsToMap() {\n        if (!this.map) return;\n        await this.map.addResults(this.stores);\n    }\n\n    _disableStoreTitlesClick() {\n        [...this.resList.querySelectorAll(this.CARD_TITLE_SELECTOR)]?.forEach((storeTitle) => {\n            this._addListener(\n                'click',\n                (e) => {\n                    e.preventDefault();\n                },\n                storeTitle\n            );\n        });\n    }\n\n    _updateNumRes(numRes) {\n        this.numRes.innerText = numRes;\n    }\n\n    async _addResultToList(poi) {\n        const storeCardHtml = (await import('../rt021-store-card/rt021-store-card.html')).default;\n        const storeCardData = storeData(poi, `${poi.anacanId}-store-card`);\n        storeCardData.extraClasses = this.RES_ITEM;\n        storeCardData.storeType = getPoiType(poi);\n        storeCardData.simplified = true;\n        storeCardData.hideFavorite = true;\n        const storeCard = runTemplate(storeCardHtml, storeCardData);\n        this.resList.appendChild(storeCard);\n    }\n\n    _showNoResults() {\n        this.root.classList.remove(this.SEARCH_EMPTY);\n        this.root.classList.add(this.NO_RESULTS);\n    }\n\n    _showSearchEmpty() {\n        this.root.classList.remove(this.NO_RESULTS);\n        this.root.classList.add(this.SEARCH_EMPTY);\n    }\n\n    _showResults() {\n        this.root.classList.remove(this.SEARCH_EMPTY);\n        this.root.classList.remove(this.NO_RESULTS);\n    }\n\n    _emptyResults() {\n        emptyElement(this.resList);\n    }\n\n    _enableSelectBtn() {\n        const selectBtnObj = this.register.getClass(this.selectBtn);\n        selectBtnObj.setStatus('enabled');\n    }\n}\n\n\n","import './style.scss';\nimport ModalComponent from '../../../../../libs/components/modal-component';\nimport { emptyElement } from '../../../../../libs/utils';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\n\nexport default class PosList extends ModalComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        this.storeDetailPrefix = this.root.dataset.storeDetailPrefix;\n        if (!this.storeDetailPrefix) {\n            console.warn('Missing store detail prefix.');\n            return;\n        }\n        this.list = this._dEl('list');\n\n        this._addStoreListeners();\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('posList', async (path, { stores }) => {\n            if (!stores || stores.length <= 0) {\n                console.warn('Missing stores.');\n                return;\n            }\n            const posItemCall = (await import('../rt252-pos-list/partials/pos-item.html')).default;\n            this._loadStores(stores, posItemCall);\n        });\n    }\n\n    _loadStores(stores, posItemCall) {\n        emptyElement(this.list);\n        for (const store of stores) {\n            const posItemData = {\n                name: store.insignia,\n                address: store.description,\n                link: {\n                    href: `${this.storeDetailPrefix}/slug--${store.anacanId}`,\n                },\n                linkLabel: getDictionary().get('Go to store card'),\n            };\n            const posItemEl = runTemplate(posItemCall, posItemData);\n            this.list.append(posItemEl);\n        }\n    }\n\n    _onCancel() {\n        this.flowManager.complete();\n    }\n}\n\n\n","import ModalComponent from '../../../../../libs/components/modal-component';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { formToJSON, jsonToForm } from '../../../../../libs/form-to-json';\nimport { getRegister } from '../../../../../libs/register';\nimport { getStoreManager } from '../../../../../libs/store-manager';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { nextTick } from '../../../../../libs/utils';\nimport { isStandaloneInsigniaId } from '../../../../../libs/pdv-utils';\nimport './style.scss';\n\nexport default class StoreLocatorFilters extends ModalComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        // services\n        this.register = getRegister();\n        this.trackingManager = getTrackingManager();\n        this.storeManager = getStoreManager();\n\n        this.form = this._dEl('form');\n        this.fAccInsignia = this._dEl('filtersAccordionInsignia');\n        this.fAccDepartment = this._dEl('filtersAccordionDepartment');\n        this.fAccService = this._dEl('filtersAccordionService');\n        this.fInsSpecTitle = this._dEl('insigniaSpecializedTitle');\n        this.reset = this._dEl('reset');\n        this.apply = this._dEl('apply');\n        this.storeLocator = document.querySelector('.rt052-store-locator');\n        if (!this.storeLocator) return;\n\n        this._doLogic();\n    }\n\n    _doLogic() {\n        this._refreshStoreLocator();\n        this._refreshModal();\n\n        this._disableReset();\n        this._disableApply();\n\n        this._addEventListeners();\n        this._addStoreListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'rcInputChanged',\n            async () => {\n                await this._refreshStoreLocator();\n                if (!this.storeManager.get('prefiltersChanged')) {\n                    this._emit('prefiltersChanged', true);\n                    this.storeLocatorObj.searchAlert.dispatchEvent(\n                        new CustomEvent('closeSearchAlert', { bubbles: false })\n                    );\n                }\n                // refilter at every input change and mask filters accordingly to the results\n                await this._refreshSearchWithFilters();\n\n                // update ctas\n                const numChecked = Array.from(this.form.querySelectorAll('input')).filter((i) => i.checked).length;\n                if (numChecked <= 0) {\n                    this._disableApply();\n                    this._disableReset();\n                } else {\n                    this._enableApply();\n                    this._enableReset();\n                }\n                this.register.getClass(this.storeLocatorObj.reset).setStatus(numChecked <= 0 ? 'disabled' : 'enabled');\n                this.register.getClass(this.storeLocatorObj.apply).setStatus('enabled');\n            },\n            this.form\n        );\n\n        this._addListener(\n            'click',\n            async () => {\n                await this._resetFilters();\n                await this._refreshSearchWithFilters();\n                if (this.modalObj.isOpen()) this.modalObj.close();\n            },\n            this.reset\n        );\n\n        this._addListener(\n            'click',\n            () => {\n                if (this.modalObj.isOpen()) this.modalObj.close();\n                this._trackApplyFilter();\n            },\n            this.apply\n        );\n\n        this._addListener(\n            'rt17HeightChanged',\n            async (event) => {\n                this.trackingManager.track(this.root, {\n                    event: 'EsplodiFiltro',\n                    CustomLink: 'Esplodi Filtro',\n                    funnel: {\n                        stepFunnel: 'Filtro',\n                    },\n                    filtro: {\n                        nomeFiltro: 'Insegne',\n                    },\n                    negozioInfo: {\n                        indirizzoRicerca: 'vars.currentSearchAddress',\n                    },\n                });\n                await this._refreshStoreLocator();\n                this.storeLocatorObj.manageAccordion('filtersAccordionInsignia', event.data.isOpen);\n            },\n            this.fAccInsignia\n        );\n\n        this._addListener(\n            'rt17HeightChanged',\n            async (event) => {\n                this.trackingManager.track(this.root, {\n                    event: 'EsplodiFiltro',\n                    CustomLink: 'Esplodi Filtro',\n                    funnel: {\n                        stepFunnel: 'Filtro',\n                    },\n                    filtro: {\n                        nomeFiltro: 'Reparti',\n                    },\n                    negozioInfo: {\n                        indirizzoRicerca: 'vars.currentSearchAddress',\n                    },\n                });\n                await this._refreshStoreLocator();\n                this.storeLocatorObj.manageAccordion('filtersAccordionDepartment', event.data.isOpen);\n            },\n            this.fAccDepartment\n        );\n\n        this._addListener(\n            'rt17HeightChanged',\n            async (event) => {\n                this.trackingManager.track(this.root, {\n                    event: 'EsplodiFiltro',\n                    CustomLink: 'Esplodi Filtro',\n                    funnel: {\n                        stepFunnel: 'Filtro',\n                    },\n                    filtro: {\n                        nomeFiltro: 'Altri Servizi',\n                    },\n                    negozioInfo: {\n                        indirizzoRicerca: 'vars.currentSearchAddress',\n                    },\n                });\n                await this._refreshStoreLocator();\n                this.storeLocatorObj.manageAccordion('filtersAccordionService', event.data.isOpen);\n            },\n            this.fAccService\n        );\n\n        this._addListener(\n            'resize',\n            async () => {\n                if (window.innerWidth < BREAKPOINTS.l) {\n                    /* mobile */\n                    await this._refreshStoreLocator();\n                    await this._refreshModal();\n                    if (this.storeLocatorObj.hasFiltersOpen()) {\n                        this.storeLocatorObj._closeFiltersPane();\n                        this.modalObj.open();\n                    }\n                } else {\n                    /* desktop */\n                    if (this.modalObj.isOpen()) this.modalObj.close();\n                }\n            },\n            window\n        );\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('maskStoreLocatorFilters', (path, data) => {\n            this._maskFilters(data.stores);\n        });\n    }\n\n    async _refreshSearchWithFilters() {\n        await this._updateFilters();\n\n        // if a selected address is missing, manually search with what's in the input\n        if (!this.storeLocatorObj.selectedAddress) {\n            this.register.getClass(this.storeLocatorObj.address)._manualSearch();\n            return;\n        }\n        this.storeLocatorObj._loadPoi(this.storeLocatorObj.selectedAddress);\n    }\n\n    async _updateFilters() {\n        /* get raw filters data and group it */\n        let filters = this._getEmptyFiltersCopy();\n\n        const filtersData = formToJSON(this.form);\n        [filtersData].forEach((data) => {\n            Object.keys(data).forEach((key) => {\n                const prefix = key.split('-')[0];\n                if (!filters[prefix]) return;\n                filters[prefix].values.push(...data[key].split(','));\n                filters[prefix].count++;\n            });\n        });\n\n        this._updateFiltersCount(filters);\n        // update store locator filters tab\n        await this._refreshStoreLocator();\n        this.storeLocatorObj.setForm(formToJSON(this.form));\n        this.storeLocatorObj._updateFiltersCount(filters);\n\n        this._emit('storeLocatorFilters', filters);\n    }\n\n    _updateFiltersCount(filters) {\n        /* update single filters count on accordions */\n        this.register\n            .getClass(this.fAccInsignia)\n            .setBadgeText(`${filters.insignia.count + filters.insigniaSpecialized.count || ''}`);\n        this.register.getClass(this.fAccDepartment).setBadgeText(`${filters.department.count || ''}`);\n        this.register.getClass(this.fAccService).setBadgeText(`${filters.service.count || ''}`);\n    }\n\n    async _resetFilters() {\n        /* reset filters */\n        jsonToForm(this.form, {});\n        this._resetFiltersCount();\n        await this._refreshStoreLocator();\n        jsonToForm(this.storeLocatorObj.form, {});\n        jsonToForm(this.storeLocatorObj.filtersOpening, {});\n        this.storeLocatorObj._resetFiltersCount();\n\n        /* reset applied filters */\n        this._emit('storeLocatorFilters', {});\n        this._disableReset();\n        this.storeLocatorObj._disableReset();\n        this._disableApply();\n        this.storeLocatorObj._disableApply();\n    }\n\n    _resetFiltersCount() {\n        /* reset single filters count on accordions */\n        this.register.getClass(this.fAccInsignia).setBadgeText('');\n        this.register.getClass(this.fAccDepartment).setBadgeText('');\n        this.register.getClass(this.fAccService).setBadgeText('');\n    }\n\n    _getEmptyFiltersCopy() {\n        return {\n            insignia: {\n                values: [],\n                count: 0,\n            },\n            insigniaSpecialized: {\n                values: [],\n                count: 0,\n            },\n            department: {\n                values: [],\n                count: 0,\n            },\n            service: {\n                values: [],\n                count: 0,\n            },\n            opening: {\n                values: [],\n                count: 0,\n            },\n        };\n    }\n\n    _initFilters() {\n        this._emit('storeLocatorFilters', this._getEmptyFiltersCopy());\n    }\n\n    async _maskFilters(stores) {\n        const filters = this.storeManager.get('storeLocatorFilters');\n\n        // get insignia specialized ids\n        const insigniaSpecializedServiceIds = new Set(\n            this._dEl(`f-insigniaSpecialized`, true)\n                .map((item) => item.querySelector('input').value.split(','))\n                .reduce((_, i) => [..._, ...i])\n                .map((s) => parseInt(s))\n        );\n\n        // construct available filters from stores\n        const availableFilters = {\n            insignia: new Set(),\n            insigniaSpecialized: new Set(),\n            department: new Set(),\n            service: new Set(),\n            opening: new Set(),\n        };\n        stores.forEach((store) => {\n            const insigniaId = window.insigniaToId?.[store.descrizioneInsegna];\n            if (insigniaId) {\n                availableFilters.insignia.add(insigniaId);\n                if (isStandaloneInsigniaId(insigniaId)) availableFilters.insigniaSpecialized.add(insigniaId);\n            }\n            for (const dId of store.repartiId) {\n                availableFilters.department.add(dId);\n            }\n            for (const sId of store.serviziId) {\n                if (insigniaSpecializedServiceIds.has(sId)) {\n                    availableFilters.insigniaSpecialized.add(sId);\n                    continue;\n                }\n                availableFilters.service.add(sId);\n            }\n        });\n\n        // hide filters if not available\n        const hideIfNotAvailable = (item, availableSet) => {\n            const values = item.querySelector('input').value.split(',');\n            let hide = true;\n            for (const v of values) {\n                if (availableSet.has(parseInt(v))) {\n                    hide = false;\n                    break;\n                }\n            }\n            hide ? item.classList.add('f-hidden') : item.classList.remove('f-hidden');\n        };\n        Object.keys(filters)\n            .filter((key) => key !== 'opening')\n            .forEach((type) => {\n                this._dEl(`f-${type}`, true).forEach((item) => {\n                    hideIfNotAvailable(item, availableFilters[type]);\n                });\n                const allHiddenOfType = this._dEl(`f-${type}`, true)\n                    .map((item) => item.classList.contains('f-hidden'))\n                    .reduce((_, hidden) => _ && hidden);\n                // check if all insignia filters have been hidden\n                if (type === 'insignia') {\n                    allHiddenOfType\n                        ? this.fInsSpecTitle.classList.add(this._elMod('insigniaSpecializedTitle', 'noMarginTop'))\n                        : this.fInsSpecTitle.classList.remove(this._elMod('insigniaSpecializedTitle', 'noMarginTop'));\n                }\n                // check if all insigniaSpecialized filters have been hidden\n                if (type === 'insigniaSpecialized') {\n                    this.fInsSpecTitle.style.display = allHiddenOfType ? 'none' : 'block';\n                }\n                // hide accordion if all inner filters have been hidden\n                switch (type) {\n                    case 'insignia': {\n                        const allHiddenOfInsignia =\n                            this._dEl(`f-insignia`, true)\n                                .map((item) => item.classList.contains('f-hidden'))\n                                .reduce((_, hidden) => _ && hidden) &&\n                            this._dEl(`f-insigniaSpecialized`, true)\n                                .map((item) => item.classList.contains('f-hidden'))\n                                .reduce((_, hidden) => _ && hidden);\n                        allHiddenOfInsignia\n                            ? this.fAccInsignia.classList.add('acc-hidden')\n                            : this.fAccInsignia.classList.remove('acc-hidden');\n                        break;\n                    }\n                    case 'department': {\n                        allHiddenOfType\n                            ? this.fAccDepartment.classList.add('acc-hidden')\n                            : this.fAccDepartment.classList.remove('acc-hidden');\n                        break;\n                    }\n                    case 'service': {\n                        allHiddenOfType\n                            ? this.fAccService.classList.add('acc-hidden')\n                            : this.fAccService.classList.remove('acc-hidden');\n                        break;\n                    }\n                    case 'insigniaSpecialized':\n                    default:\n                        break;\n                }\n            });\n\n        // update accordions heights\n        (\n            await Promise.allSettled(\n                [this.fAccInsignia, this.fAccDepartment, this.fAccService].map((el) => this.register.getClass(el))\n            )\n        )\n            .map((promise) => promise.value)\n            .forEach((accObj) => accObj.updateContentHeight());\n    }\n\n    _trackApplyFilter() {\n        let filters = this.storeManager.get('storeLocatorFilters');\n        let nomeFiltro = new Array();\n        if (filters.insignia.count > 0 || filters.insigniaSpecialized.count > 0) nomeFiltro.push('Insegne');\n        if (filters.department.count > 0) nomeFiltro.push('Reparti');\n        if (filters.service.count > 0) nomeFiltro.push('Altri Servizi');\n\n        // skip tracking of applied filters if no filters applied\n        if (nomeFiltro.length <= 0) return;\n\n        this.trackingManager.track(this.root, {\n            event: 'ApplicaFiltro',\n            CustomLink: 'Applica Filtro',\n            funnel: {\n                stepFunnel: 'Filtro',\n            },\n            negozioInfo: {\n                indirizzoRicerca: 'vars.currentSearchAddress',\n            },\n            filtro: {\n                NomeFiltro: nomeFiltro.join('|'),\n                Insegne:\n                    filters.insignia.count > 0\n                        ? [\n                              ...new Set(\n                                  this.storeManager\n                                      .get('storeLocatorFilters')\n                                      .insignia.values.map(\n                                          (value) =>\n                                              this.root.querySelector(`.rt023-insignia-card__input[value=\"${value}\"]`)\n                                                  ?.parentElement.dataset.label\n                                      )\n                                      .concat(\n                                          this.storeManager\n                                              .get('storeLocatorFilters')\n                                              .insigniaSpecialized.values.map(\n                                                  (value) =>\n                                                      this.root.querySelector(\n                                                          `.rt023-insignia-card__input[value*=\"${value}\"][name^=\"insigniaSpecialized\"]`\n                                                      )?.parentElement.dataset.label\n                                              )\n                                      )\n                              ),\n                          ].join('|')\n                        : '',\n                Reparti:\n                    filters.department.count > 0\n                        ? [\n                              ...new Set(\n                                  filters.department.values.map(\n                                      (value) =>\n                                          this.root.querySelector(`.rt003-checkbox__input[value*=\"${value}\"]`)\n                                              ?.parentElement.dataset.label\n                                  )\n                              ),\n                          ].join('|')\n                        : '',\n                AltriServizi:\n                    filters.service.count > 0\n                        ? [\n                              ...new Set(\n                                  filters.service.values.map(\n                                      (value) =>\n                                          this.root.querySelector(\n                                              `.rt003-checkbox__input[value*=\"${value}\"][name^=\"service\"]`\n                                          )?.parentElement.dataset.label\n                                  )\n                              ),\n                          ].join('|')\n                        : '',\n            },\n        });\n    }\n\n    _enableReset() {\n        this.register.getClass(this.reset).setStatus('enabled');\n    }\n\n    _disableReset() {\n        this.register.getClass(this.reset).setStatus('disabled');\n        this.reset.blur();\n    }\n\n    _enableApply() {\n        this.register.getClass(this.apply).setStatus('enabled');\n    }\n\n    _disableApply() {\n        this.register.getClass(this.apply).setStatus('disabled');\n        this.apply.blur();\n    }\n\n    setForm(json) {\n        // translate prop names from _dsk to _mob suffix\n        for (const prop in json) {\n            if (!prop.endsWith('_dsk')) continue;\n            json[`${prop.substring(0, prop.indexOf('_dsk'))}_mob`] = json[prop];\n        }\n        jsonToForm(this.form, json);\n    }\n\n    manageAccordion(name, isOpen) {\n        const el = this._dEl(name);\n        if (!el) return;\n        const elObj = this.register.getClass(el);\n        isOpen ? elObj.openContent() : elObj.closeContent();\n    }\n\n    async _refreshStoreLocator() {\n        if (!this.storeLocatorObj) {\n            await nextTick();\n            this.storeLocatorObj = this.register.getClass(this.storeLocator);\n        }\n    }\n\n    _refreshModal() {\n        if (!this.modalObj) {\n            this.modalObj = this.modal;\n        }\n    }\n\n    /* override */\n    async _onClose() {\n        super._onClose();\n        await this._refreshStoreLocator();\n        if (window.innerWidth >= BREAKPOINTS.l) {\n            this.storeLocatorObj._openFiltersPane();\n        }\n    }\n    /* override */\n    async _onCancel() {\n        super._onCancel();\n        await this._refreshStoreLocator();\n        if (window.innerWidth >= BREAKPOINTS.l) {\n            this.storeLocatorObj._openFiltersPane();\n        }\n    }\n}\n\n\n","import ModalComponent from '../../../../../libs/components/modal-component';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\nimport { getDictionary } from '../../../../../libs/dictionary-provider';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { formToJSON } from '../../../../../libs/form-to-json';\nimport { runTemplate } from '../../../../../libs/htl-runtime/HTMLRuntime';\nimport { getRegister } from '../../../../../libs/register';\nimport { getStoreManager } from '../../../../../libs/store-manager';\nimport { isObjectEmpty } from '../../../../../libs/utils';\nimport './style.scss';\n\nexport default class FiltersModal extends ModalComponent {\n    constructor(name, root) {\n        super(name, root);\n        this.register = getRegister();\n        this.dictionary = getDictionary();\n        this.storeManager = getStoreManager();\n\n        this.wrapper = this._dEl('wrapper');\n        this.ACC_OPEN = this._mod('accOpen');\n        this.ACCORDION_OPEN = this._elMod('accordion', 'open');\n        this.ACCORDION_SHOW_COUNT = this._elMod('accordion', 'showCount');\n\n        this._getElements();\n        this._addStoreListeners();\n    }\n\n    async _doLogic() {\n        this._getElements();\n        this._checkApplyResetCtas();\n        await this._initScrollbars();\n        this._removeAllListeners();\n        this._addEventListeners();\n    }\n\n    _getElements() {\n        this.accordions = this._dEl('accordion', true);\n        this.headings = this._dEl('heading', true);\n        this.counts = this._dEl('count', true);\n        this.contents = this._dEl('content', true);\n        this.forms = this._dEl('form', true);\n        this.scrollbars = [];\n        this.resets = this._dEl('reset', true);\n        this.applies = this._dEl('apply', true);\n    }\n\n    async _initScrollbars() {\n        for (let i = 0; i < this.accordions.length; i++) {\n            const PerfectScrollbar = await getExtApiHelper().getPerfectScrollbar();\n            const scrollbar = new PerfectScrollbar(this.forms[i], {\n                swipeEasing: true,\n                suppressScrollX: true,\n            });\n            this.scrollbars.push(scrollbar);\n        }\n    }\n\n    _checkApplyResetCtas() {\n        for (let i = 0; i < this.accordions.length; i++) {\n            //check and disable buttons if necessary\n            const data = formToJSON(this.forms[i]);\n            if (isObjectEmpty(data)) {\n                this.register.getClass(this.applies[i]).setStatus('disabled');\n                this.register.getClass(this.resets[i]).setStatus('disabled');\n            }\n        }\n    }\n\n    _addEventListeners() {\n        for (let i = 0; i < this.accordions.length; i++) {\n            this._addListener(\n                'click',\n                () => {\n                    /* open accordion, update content max-height */\n                    this.accordions[i].classList.toggle(this.ACCORDION_OPEN);\n                    this.contents[i].style.maxHeight = `${\n                        !this._isAccordionOpen(this.accordions[i]) ? 0 : this.wrapper.clientHeight - 56 - 30\n                    }px`;\n                    /* hide/show topBar */\n                    this._isAccordionOpen(this.accordions[i])\n                        ? this.root.classList.add(this.ACC_OPEN)\n                        : this.root.classList.remove(this.ACC_OPEN);\n                },\n                this.headings[i]\n            );\n            this._addListener(\n                'click',\n                () => {\n                    /* close modal */\n                    this.modal.close();\n                    this.root.classList.remove(this.ACC_OPEN);\n                    /* reset filters */\n                    this._emit('appliedFilters', {});\n                    /* emit listing filters */\n                    this._emit('rt111Filters', { filters: {} });\n                },\n                this.resets[i]\n            );\n            this._addListener(\n                'click',\n                () => {\n                    /* close modal */\n                    this.modal.close();\n                    this.root.classList.remove(this.ACC_OPEN);\n                    /* add filters and emit */\n                    const filters = Object.keys({ ...formToJSON(this.forms[i]) });\n                    const appliedFilters = {\n                        ...this.storeManager.get('appliedFilters'),\n                    };\n                    const category = this.accordions[i].dataset.filterCategory;\n                    if (appliedFilters[category]) delete appliedFilters[category];\n                    appliedFilters[category] = filters;\n                    this._emit('appliedFilters', appliedFilters);\n\n                    /* emit listing filters */\n                    const json = {};\n                    Object.keys(appliedFilters).forEach((k) => {\n                        const value = appliedFilters[k];\n                        if (value) json[k] = value;\n                    });\n                    this._emit('rt111Filters', { filters: json });\n                },\n                this.applies[i]\n            );\n        }\n\n        this._addListener(\n            'resize',\n            () => {\n                const modal = this.modal;\n                if (window.innerWidth < BREAKPOINTS.l) {\n                    /* mobile */\n                    if (this.forceClosed) {\n                        this.forceClosed = false;\n                        modal.open();\n                    }\n                } else {\n                    /* desktop */\n                    if (modal.isOpen()) {\n                        this.forceClosed = true;\n                        modal.close();\n                    }\n                }\n            },\n            window\n        );\n\n        for (let i = 0; i < this.accordions.length; i++) {\n            this._addListener(\n                'rcInputChanged',\n                () => {\n                    this.register.getClass(this.applies[i]).setStatus('enabled');\n                    this.register.getClass(this.resets[i]).setStatus('enabled');\n                },\n                this.accordions[i]\n            );\n        }\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('reloadFilters', (path, data) => {\n            this._reloadFilters(data);\n        });\n    }\n\n    async _reloadFilters(data) {\n        if (!Array.isArray(data)) {\n            console.warn('Missing filters array to reload');\n            return;\n        }\n        for (const acc of this.accordions) {\n            acc.remove();\n        }\n\n        const filterAccordionHtml = (await import('./partials/filter-accordion.html')).default;\n\n        /* reload filter accordions */\n        for (const filter of data) {\n            if (!filter.value || filter.value.length <= 0) continue;\n            const accordionData = {\n                uniqueId: this.root.id,\n                filterId: `filter-${filter.category}`,\n                title: filter.title,\n                filterCategory: filter.category,\n                count: filter.count,\n                filters: filter.value,\n                labels: {\n                    reset: this.dictionary.get('Reset'),\n                    apply: this.dictionary.get('Apply'),\n                },\n            };\n            const accordionEl = runTemplate(filterAccordionHtml, accordionData);\n            this.wrapper.appendChild(accordionEl);\n        }\n        /* restart logic */\n        this._doLogic();\n    }\n\n    _isAccordionOpen(accordion) {\n        return accordion.classList.contains(this.ACCORDION_OPEN);\n    }\n\n    _onCancel() {\n        this.flowManager.complete();\n    }\n}\n\n\n","import ModalComponent from '../../../../../libs/components/modal-component';\nimport PerfectScrollbar from 'perfect-scrollbar';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport './style.scss';\n\nexport default class ErrorModal extends ModalComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        this.scrollbar;\n        this.flowManager = getFlowManager();\n\n        this.wrapper = this._dEl('wrapper');\n\n        this.genericErrorTitle = this._dEl('genericErrorTitle');\n        this.genericErrorText = this._dEl('genericErrorText');\n        this.genericErrorCta = this._dEl('genericErrorCta');\n        this.registryErrorTitle = this._dEl('registryErrorTitle');\n        this.registryErrorText = this._dEl('registryErrorText');\n        this.registryErrorCta = this._dEl('registryErrorCta');\n        this.noCardErrorTitle = this._dEl('noCardErrorTitle');\n        this.noCardErrorText = this._dEl('noCardErrorText');\n        this.noCardErrorCta = this._dEl('noCardErrorCta');\n        this.insurancePolicyAlreadyActiveErrorTitle = this._dEl('insurancePolicyAlreadyActiveErrorTitle');\n        this.insurancePolicyAlreadyActiveErrorText = this._dEl('insurancePolicyAlreadyActiveErrorText');\n        this.insurancePolicyAlreadyActiveErrorCta = this._dEl('insurancePolicyAlreadyActiveErrorCta');\n        this.noValidReceiptErrorTitle = this._dEl('noValidReceiptErrorTitle');\n        this.noValidReceiptErrorText = this._dEl('noValidReceiptErrorText');\n        this.noValidReceiptErrorCta = this._dEl('noValidReceiptErrorCta');\n\n        this.termsAndConditions = this._dEl('termsAndConditions');\n\n    }\n\n    _onOpen() {\n        this._initScrollbar();\n        let errorType = 'genericError';\n        try {\n            const data = this.flowManager.getDataFromFlow();\n            errorType = data?.errorType || 'genericError';\n        } catch(e) {\n            console.warn(e);\n        }\n\n        switch (errorType) {\n            case 'registryError': {\n                this.registryErrorTitle?.classList.remove('hidden');\n                this.registryErrorText?.classList.remove('hidden');\n                this.registryErrorCta?.classList.remove('!hidden');\n                this.termsAndConditions?.classList.remove('hidden');\n                break;\n            }\n\n            case 'noCardError': {\n                this.noCardErrorTitle?.classList.remove('hidden');\n                this.noCardErrorText?.classList.remove('hidden');\n                this.noCardErrorCta?.classList.remove('!hidden');\n                this.termsAndConditions?.classList.remove('hidden');\n                break;\n            }\n\n            case 'insurancePolicyAlreadyActiveError': {\n                this.insurancePolicyAlreadyActiveErrorTitle?.classList.remove('hidden');\n                this.insurancePolicyAlreadyActiveErrorText?.classList.remove('hidden');\n                this.insurancePolicyAlreadyActiveErrorCta?.classList.remove('!hidden');\n                this.termsAndConditions?.classList.remove('hidden');\n                break;\n            }\n\n            case 'noValidReceiptsError': {\n                this.noValidReceiptErrorTitle?.classList.remove('hidden');\n                this.noValidReceiptErrorText?.classList.remove('hidden');\n                this.noValidReceiptErrorCta?.classList.remove('!hidden');\n                this.termsAndConditions?.classList.remove('hidden');\n                break;\n            }\n\n            case 'genericError':\n            default: {\n                this.genericErrorTitle?.classList.remove('hidden');\n                this.genericErrorText?.classList.remove('hidden');\n                this.genericErrorCta?.classList.remove('!hidden');\n                if (errorType != 'genericError') {\n                    console.log('Unknown error');\n                }\n            }\n        }\n    }\n\n    _initScrollbar() {\n        this.scrollbar = new PerfectScrollbar(this.wrapper, {\n            swipeEasing: true,\n            suppressScrollX: true,\n        });\n    }\n}\n\n\n","export const CounterBoxTypeEnum = Object.freeze({\n    COUPONS: Object.freeze({ label: 'Coupons', value: 'coupons' }),\n    MIPREMIO_CURRENT_YEAR: Object.freeze({ label: 'miPREMIO Current Year', value: 'miPremioCurrentYear' }),\n    MIPREMIO_PREVIOUS_YEAR: Object.freeze({ label: 'miPREMIO Previous Year', value: 'miPremioPreviousYear' }),\n    SUPERBOLLINI: Object.freeze({ label: 'Superbollini', value: 'superbollini' }),\n    BUONI_SPORT: Object.freeze({ label: 'Buoni Sport', value: 'buoniSport' }),\n    fromValue(value) {\n        if (!value) return null;\n        return (\n            Object.values(CounterBoxTypeEnum).find(\n                (type) =>\n                    typeof type?.value === 'string' &&\n                    type.value.toLowerCase() === String(value).toLowerCase()\n            ) || null\n        );\n    },\n});\n","import { getUserService } from '../../../../../libs/user-service';\nimport { getMyConadApiProvider } from '../../../../../libs/myconad-api-provider';\nimport { getExtApiHelper } from '../../../../../libs/ext-api-helper';\nimport { CounterBoxTypeEnum } from '../../../../../libs/enums/counter-type-enum';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport './style.scss';\n\nexport default function userBenefitsModal() {\n    return {\n        userType: null,\n        user: null,\n        ps: null,\n        isProgressLoading: true,\n        balances: {\n            coupons: 0,\n            miPremioCurrentYear: 0,\n            miPremioPreviousYear: 0,\n            superbollini: 0,\n            buoniSport: 0,\n        },\n        cardBalances: {},\n        async init() {\n            this.user = await getUserService().getUser();\n            await this._initScrollbar();\n\n            if (!this.user) {\n                this.userType = 'guest';\n            } else if (!this.user.cartaFedelta) {\n                this.userType = 'light';\n            } else {\n                this.userType = 'bimodal';\n                await this._loadBimodalBalances();\n            }\n\n            this.isProgressLoading = false;\n            this._initTracking();\n        },\n\n        _initTracking() {\n            this.$el.querySelectorAll('.rt259-user-benefits__counter').forEach((counter) => {\n                counter.addEventListener('click', () => {\n                    getTrackingManager().track(counter, {\n                        event: 'CounterModale',\n                        funnel: {\n                            nomeFunnel: 'ModaleVantaggiPerTe',\n                            stepFunnel: 'ModaleAperta',\n                        },\n                        CustomLink: 'Click Contatori Modale',\n                        iconaModale: counter.querySelector('span:last-of-type')?.innerText?.trim(),\n                    });\n                });\n            });\n        },\n\n        async _loadBimodalBalances() {\n            try {\n                const apiProvider = getMyConadApiProvider();\n                const promises = [];\n\n                // miPREMIO points from user\n                this.balances.miPremioCurrentYear = this.user.saldoPunti || 0;\n                this.balances.miPremioPreviousYear = this.user.saldoPuntiCollectionPrecedente || 0;\n\n                // Get counter types from DOM and load balances accordingly\n                this.$el.querySelectorAll('[data-counter-type]').forEach((el) => {\n                    const type = CounterBoxTypeEnum.fromValue(el.dataset.counterType);\n                    const code = el.dataset.initiativeCode;\n\n                    if (type === CounterBoxTypeEnum.COUPONS) {\n                        promises.push(\n                            apiProvider\n                                .getDashboardCounts({ user: this.user.utenzaId, excludeNotificationCount: true })\n                                .then((data) => { this.balances.coupons = data?.couponsCount || 0; })\n                                .catch(() => {})\n                        );\n                    } else if (type === CounterBoxTypeEnum.SUPERBOLLINI && code) {\n                        promises.push(\n                            apiProvider\n                                .getUserBalance({ fidelityCard: this.user.cartaFedelta, collectionCode: code })\n                                .then((bal) => {\n                                    if (bal) this.balances.superbollini = (bal.saldoCumulato || 0) - (bal.saldoSpeso || 0);\n                                })\n                                .catch(() => {})\n                        );\n                    } else if (type === CounterBoxTypeEnum.BUONI_SPORT && code) {\n                        promises.push(\n                            apiProvider\n                                .getUserBalance({ fidelityCard: this.user.cartaFedelta, collectionCode: code })\n                                .then((bal) => {\n                                    if (bal) this.balances.buoniSport = (bal.saldoCumulato || 0) - (bal.saldoSpeso || 0);\n                                })\n                                .catch(() => {})\n                        );\n                    }\n                });\n\n                // Use collection-specific codes for collection card balances\n                this.$el.querySelectorAll('[data-card-superbollini-code]').forEach((el) => {\n                    const code = el.dataset.cardSuperbolliniCode;\n                    if (!code) return;\n                    promises.push(\n                        apiProvider\n                            .getUserBalance({ fidelityCard: this.user.cartaFedelta, collectionCode: code })\n                            .then((bal) => {\n                                if (bal) this.cardBalances[code] = (bal.saldoCumulato || 0) - (bal.saldoSpeso || 0);\n                            })\n                            .catch(() => {\n                                console.warn('rt259: error loading bollini balance', code);\n                            })\n                    );\n                });\n\n                await Promise.all(promises);\n            } catch (e) {\n                console.warn('rt259: error loading bimodal balances', e);\n            }\n        },\n\n        async _initScrollbar() {\n            try {\n                const wrapper = this.$el.querySelector('.rt259-user-benefits__wrapper');\n                const isInHeaderPanel = !!this.$el.closest('.rt051-header__benefitPanel');\n                const isTouchDevice = navigator.maxTouchPoints > 0;\n                if (wrapper && !isInHeaderPanel && !isTouchDevice) {\n                    const PerfectScrollbar = await getExtApiHelper().getPerfectScrollbar();\n                    this.ps = new PerfectScrollbar(wrapper, { swipeEasing: true, suppressScrollX: true });\n                }\n\n                const SwiperModule = await import('swiper');\n                const SwiperClass = SwiperModule.Swiper;\n                const Scrollbar = SwiperModule.Scrollbar;\n                SwiperClass.use([Scrollbar]);\n\n                this._initCountersSwiper(SwiperClass);\n                this._initPrizesSwiper(SwiperClass);\n            } catch (e) {\n                console.warn('rt259: scrollbar init failed', e);\n            }\n        },\n\n        isCounterVisible(type) {\n            const enumType = CounterBoxTypeEnum.fromValue(type);\n            if (!enumType) return true;\n            if (\n                this.isCAD\n                && (enumType === CounterBoxTypeEnum.MIPREMIO_CURRENT_YEAR\n                    || enumType === CounterBoxTypeEnum.MIPREMIO_PREVIOUS_YEAR)\n            ) {\n                return false;\n            }\n            return true;\n        },\n\n        getVisibleCountersCount() {\n            const countersEl = this.$el.querySelector('.rt259-user-benefits__counters');\n            if (!countersEl) return 0;\n            return [...countersEl.querySelectorAll('.rt259-user-benefits__counter')].filter(\n                (el) => this.isCounterVisible(el.dataset.counterType),\n            ).length;\n        },\n\n        _initCountersSwiper(SwiperClass) {\n            const countersEl = this.$el.querySelector('.rt259-user-benefits__counters');\n            if (!countersEl) return;\n            if (this.getVisibleCountersCount() <= 4) {\n                countersEl.classList.add('rt259-user-benefits__counters--fill');\n                return;\n            }\n\n            const scrollbarWrapperEl = countersEl.querySelector('.rt259-user-benefits__countersScrollbarWrapper');\n            if (scrollbarWrapperEl) scrollbarWrapperEl.style.display = 'block';\n\n            new SwiperClass(countersEl, {\n                wrapperClass: 'rt259-user-benefits__countersTrack',\n                slideClass: 'rt259-user-benefits__counter',\n                slidesPerView: 4,\n                spaceBetween: 8,\n                slidesOffsetBefore: 0,\n                slidesOffsetAfter: 0,\n                observer: true,\n                observeParents: true,\n                scrollbar: {\n                    el: countersEl.querySelector('.rt259-user-benefits__countersScrollbar'),\n                    dragClass: 'rt259-user-benefits__countersScrollbarDrag',\n                    dragSize: 80,\n                    hide: false,\n                    draggable: true,\n                },\n            });\n        },\n\n        _initPrizesSwiper(SwiperClass) {\n            this.$el.querySelectorAll('.rt259-user-benefits__prizesCarousel').forEach((el) => {\n                new SwiperClass(el, {\n                    wrapperClass: 'rt259-user-benefits__prizesTrack',\n                    slideClass: 'rt259-user-benefits__prize',\n                    slidesPerView: 'auto',\n                    spaceBetween: 8,\n                    observer: true,\n                    observeParents: true,\n                    scrollbar: {\n                        el: el.querySelector('.rt259-user-benefits__prizesScrollbar'),\n                        dragClass: 'rt259-user-benefits__prizesScrollbarDrag',\n                        hide: false,\n                        draggable: true,\n                    },\n                });\n            });\n        },\n\n        getCounterBalance(type) {\n            const enumType = CounterBoxTypeEnum.fromValue(type);\n            if (!enumType) return 0;\n            switch (enumType) {\n                case CounterBoxTypeEnum.COUPONS: return this.balances.coupons;\n                case CounterBoxTypeEnum.MIPREMIO_CURRENT_YEAR: return this.balances.miPremioCurrentYear;\n                case CounterBoxTypeEnum.MIPREMIO_PREVIOUS_YEAR: return this.balances.miPremioPreviousYear;\n                case CounterBoxTypeEnum.SUPERBOLLINI: return this.balances.superbollini;\n                case CounterBoxTypeEnum.BUONI_SPORT: return this.balances.buoniSport;\n                default: return 0;\n            }\n        },\n        resolveLabelPlaceholders(text) {\n           return text.replaceAll('{currentYear}', this.currentYear())\n           .replaceAll('{previuosYear}', this.previuosYear());\n        },\n\n        getCardBalance(code) {\n            return this.cardBalances[code] ?? 0;\n        },\n\n        onCounterClick(event) {\n            const el = event.currentTarget;\n            const { hrefGuest, hrefLight, hrefBimodal } = el.dataset;\n            console.log('onCounterClick', { hrefGuest, hrefLight, hrefBimodal, userType: this.userType });\n            const fallback = el.getAttribute('href');\n            let url;\n            if (this.isGuest) url = hrefGuest || fallback;\n            else if (this.isLight) url = hrefLight || fallback;\n            else url = hrefBimodal || fallback;\n            if (url) window.location.href = url;\n        },\n\n        get isGuest() { return this.userType === 'guest'; },\n        get isLight() { return this.userType === 'light'; },\n        get isBimodal() { return this.userType === 'bimodal'; },\n        get isCAD() { return this.user?.negozioPreferitoCooperativa === 'CAD'; },\n        get isBimodalNonCAD() { return this.isBimodal && !this.isCAD; },\n        currentYear() { return parseInt(new Date().getFullYear()); },\n        previuosYear() { return parseInt(new Date().getFullYear()) - 1; },\n    };\n}\n","import { getRegister } from '../../../../../../libs/register';\n\nexport const getPopupObjByName = (name) => {\n    const modal = document.querySelector(`.ru003-popup[data-name=${name}]`);\n    if (!modal) return null;\n    const modalObj = getRegister().getClass(modal);\n    if (!modalObj) return null;\n    return modalObj;\n};\n\nexport const getCurrentPopup = (element) => {\n    const modalEl = element.closest('.ru003-popup');\n    if (!modalEl) return;\n    const modalObj = getRegister().getClass(modalEl);\n    if (!modalObj) return;\n    return modalObj;\n};\n","import { getCurrentPopup } from '../../repository/apps/conad-corporate/templates/ru003-popup/scripts/get-popup';\nimport Component from './component';\n\nexport default class PopupComponent extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this._initPopup();\n    }\n\n    _initPopup() {\n        this.popup = getCurrentPopup(this.root);\n        this._initPopupEvents();\n        this._initSteps();\n    }\n\n    _initPopupEvents() {\n        this._addListener(\n            'ecPopupBefore',\n            () => {\n                this._onBeforeOpen();\n            },\n            this.popup.getRoot()\n        );\n        this._addListener(\n            'ecPopupOpen',\n            () => {\n                this._onOpen();\n            },\n            this.popup.getRoot()\n        );\n        this._addListener(\n            'ecPopupClose',\n            () => {\n                this._onClose();\n            },\n            this.popup.getRoot()\n        );\n        this._addListener(\n            'ecPopupCancel',\n            () => {\n                this._onCancel();\n            },\n            this.popup.getRoot()\n        );\n    }\n\n    _initSteps() {}\n\n    _onOpen() {}\n\n    _onClose() {}\n\n    _onCancel() {}\n\n   async _onBeforeOpen() {}\n\n    getPopup() {\n        return getCurrentPopup(this.root);\n    }\n}\n","import './style.scss';\nimport PopupComponent from '../../../../../libs/components/popup-component';\nimport { flowManager } from '../../../../../libs/flow-manager';\n\nexport default class LoginPopup extends PopupComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        this.loginEl = this._dEl('ctaAction');\n        this._setCallbackCb(this.loginEl);\n    }\n\n    _setCallbackCb(linkA) {\n        if (!linkA || !linkA.href) return;\n        const link = new URL(linkA.href);\n        link.searchParams.set('cb', window.location.href);\n        linkA.href = link.href;\n    }\n\n    _onCancel() {\n        flowManager.complete();\n    }\n}\n\n\n","import './style.scss';\nimport PopupComponent from '../../../../../libs/components/popup-component';\nimport { flowManager } from '../../../../../libs/flow-manager';\n\nexport default class BooksReservationPopup extends PopupComponent {\n    constructor(name, root) {\n        super(name, root);\n        this._addStoreListeners();\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('closeBooksPopup', () => {\n            setTimeout(() => {\n                flowManager.complete();\n            }, 500);\n        });\n    }\n}\n\n\n","import './style.scss';\nimport { getApiProvider } from '../../../../../libs/api-provider';\nimport PopupComponent from '../../../../../libs/components/popup-component';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport { getUserService } from '../../../../../libs/user-service';\n\nexport default class AddStorePopup extends PopupComponent {\n    constructor(name, root) {\n        super(name, root);\n\n        this.loginEl = this._dEl('ctaAction');\n        this.proceed = this._dEl('proceed');\n        this.MAX_STORES = this._mod('maxStores');\n\n        this.userService = getUserService();\n        this.flowManager = getFlowManager();\n\n        this._addListeners();\n    }\n\n    _addListeners() {\n        this._addListener('click', (_) => this.flowManager.complete(), this.proceed);\n    }\n\n    async _checkSavedStores() {\n        const user = await this.userService.getUser();\n        if (user) {\n            const savedStores = await this.userService.getSavedStores();\n            if (savedStores.length >= window.maxStoreOfInterest) {\n                this.root.classList.add(this.MAX_STORES);\n            } else {\n                const store = await getApiProvider().getPointOfServiceByAnacanId({ anacanId: this.anacanId });\n                this._dEl('storeName').innerHTML = store.pdvTitle;\n                this._dEl('storeAddress').innerHTML = store.pdvAddress;\n            }\n        }\n    }\n\n    _onOpen() {\n        const data = this.flowManager.getDataFromFlow();\n        this.anacanId = data.anacanId;\n        if (!this.anacanId) return;\n        this._checkSavedStores();\n    }\n\n    _onCancel() {\n        this.flowManager.complete();\n    }\n}\n\n\n","import PopupComponent from '../../../../../libs/components/popup-component';\nimport { flowManager } from '../../../../../libs/flow-manager';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport './style.scss';\n\nexport default class RefreshCPopup extends PopupComponent {\n    constructor(name, root) {\n        super(name, root);\n        this.trackingManager = getTrackingManager();\n    }\n\n    /* override */\n    _onOpen() {\n        super._onOpen();\n        //track pageView popup-c-refresh\n        this.trackingManager.track(this.root, {\n            event: 'pageview',\n            funnel: {\n                nomeFunnel: 'Conad Refresh',\n                stepFunnel: 'Pop up partecipazione concorso',\n            },\n        });\n    }\n\n    /* override */\n    _onClose() {\n        super._onClose();\n        this.trackingManager.track(this.root, {\n            event: 'uscitaPopupRefresh',\n            funnel: {\n                nomeFunnel: 'Conad Refresh',\n                stepFunnel: 'Pop up partecipazione concorso - Esci',\n            },\n        });\n    }\n\n    _onCancel() {\n        flowManager.complete();\n    }\n}\n\n\n","import './style.scss';\nimport PopupComponent from '../../../../../libs/components/popup-component';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\n\nexport default class RefreshConfirmPopup extends PopupComponent {\n    constructor(name, root) {\n        super(name, root);\n        this.flowManager = getFlowManager();\n        this.trackingManager = getTrackingManager();\n        this.proceedCta = this._dEl('proceed');\n        this.cancelCta = this._dEl('cancel');\n        this.closeCta = this._dEl('close');\n        this._addListeners();\n    }\n\n    _onOpen() {\n        super._onOpen();\n        //track pageView thank you age\n        this.trackingManager.track(this.root, {\n            event: 'pageview',\n            funnel: {\n                nomeFunnel: 'Conad Refresh',\n                stepFunnel: 'Pop up uscita aggiornamento dati',\n            },\n        });\n    }\n\n    _addListeners() {\n        this.proceedCta.addEventListener('click', () => {\n            this.trackingManager.track(this.root, {\n                event: 'uscitaAggiornamentoDatiRefresh',\n                funnel: {\n                    nomeFunnel: 'Conad Refresh',\n                    stepFunnel: 'Pop up uscita aggiornamento dati - Esci',\n                },\n            });\n            const data = this.flowManager.getDataFromFlow();\n            if (data.pageToGo) {\n                let redirectPage = data.pageToGo;\n                window.location.href = redirectPage;\n            }\n        });\n\n        this.cancelCta.addEventListener('click', () => {\n            this.flowManager.complete();\n        });\n\n        this.closeCta.addEventListener('click', () => {\n            this.flowManager.complete();\n        });\n    }\n\n    _onCancel() {\n        this.flowManager.complete();\n    }\n}\n\n\n","import PopupComponent from '../../../../../libs/components/popup-component';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport { getTrackingManager } from '../../../../../libs/tracking-manager';\nimport './style.scss';\nimport PerfectScrollbar from 'perfect-scrollbar';\n\nexport default class RefreshPrizeChoice extends PopupComponent {\n    constructor(name, root) {\n        super(name, root);\n        this.trackingManager = getTrackingManager();\n        this.flowManager = getFlowManager();\n        this.content = this._dEl('content');\n        this.choice = this._dEl('choice');\n        this.shoppingCoupon = this.choice.children[0];\n        this.travelCoupon = this.choice.children[1];\n        this.goNextButton = this._dEl('goNextButton');\n        this.backButton = this._dEl('backButton');\n\n        this._addListeners();\n    }\n\n    /* override */\n    async _onOpen() {\n        await super._onOpen();\n\n        // reset popup\n        this.travelCoupon.removeAttribute('data-selected');\n        this.shoppingCoupon.removeAttribute('data-selected');\n        this.goNextButton.classList.remove(this._elMod('goNextButton', 'active'));\n\n        // track\n        await this.trackingManager.track(this.root, {\n            event: 'pageview',\n            funnel: {\n                nomeFunnel: 'Conad Refresh',\n                stepFunnel: 'Pop up scelta premio',\n            },\n        });\n\n        // create ps scrollbar\n        const scrollbarOptions = {\n            swipeEasing: true,\n            suppressScrollX: true,\n        };\n        this.ps = new PerfectScrollbar(this.content, scrollbarOptions);\n    }\n\n    _addListeners() {\n        this.shoppingCoupon.addEventListener('click', () => {\n            this.shoppingCoupon.setAttribute('data-selected', 'true');\n            this.travelCoupon.removeAttribute('data-selected');\n            this.goNextButton.classList.add(this._elMod('goNextButton', 'active'));\n        });\n\n        this.travelCoupon.addEventListener('click', () => {\n            this.travelCoupon.setAttribute('data-selected', 'true');\n            this.shoppingCoupon.removeAttribute('data-selected');\n\n            this.goNextButton.classList.add(this._elMod('goNextButton', 'active'));\n        });\n\n        this.goNextButton.addEventListener('click', () => {\n            if (this.goNextButton.classList.contains(this._elMod('goNextButton', 'active'))) {\n                let choice;\n                if (\n                    this.shoppingCoupon.hasAttribute('data-selected') &&\n                    this.shoppingCoupon.getAttribute('data-selected') === 'true'\n                ) {\n                    choice = 'shoppingCoupon';\n                } else {\n                    if (\n                        this.travelCoupon.hasAttribute('data-selected') &&\n                        this.travelCoupon.getAttribute('data-selected') === 'true'\n                    ) {\n                        choice = 'travelCoupon';\n                    }\n                }\n\n                this.flowManager.appendDataToFlow({ choice: choice });\n                this.flowManager.complete();\n            }\n        });\n\n        this.backButton.addEventListener('click', () => {\n            this.flowManager.complete();\n        });\n    }\n}\n\n\n","import PopupComponent from '../../../../../libs/components/popup-component';\nimport { getFlowManager } from '../../../../../libs/flow-manager';\nimport './style.scss';\n\nexport default class ExcelToMapCardDetailsPopup extends PopupComponent {\n    constructor(name, root) {\n        super(name, root);\n        this.flowManager = getFlowManager();\n        this.textContent = this._dEl('textContent');\n        this.primaryCta = this._dEl('cta');\n    }\n\n    /* override */\n    _onBeforeOpen() {\n        super._onBeforeOpen();\n        this.textContent.innerHTML = \"\";\n        let data = this.flowManager.getDataFromFlow();\n        let indexTextForType = 0;\n        let bulletsSectionCreated = false;\n        for(let [key, value] of Object.entries(data.currentStore)) {\n            if(!data.config.tipologies[key])\n                continue;\n\n            const elementType = data.config.tipologies[key].type;\n\n            if(elementType != 'break' && !value)\n                continue;\n\n            if (elementType && elementType != '') {\n                switch (elementType) {\n                     case 'title': {\n                        let element = document.createElement('h3');\n                        element.innerText = value;\n                        element.classList.add(this._el('title', false));\n                        this.textContent.append(element);\n\n                        break;\n                     }\n                     case 'description':\n                     case 'text':\n                     case 'textFont': {\n                        let element = document.createElement('p');\n                        let typeOfText = data.config.tipologies[key].typeText;\n\n                        element.classList.add(this._el('infoSingle', false));\n\n                        if(elementType == 'textFont') {\n                            element.classList.add(this._el('infoSingleSizedDown', false));\n                        }\n\n                        if(data.config.tipologies[key].printColumnTitle) {\n                            element.innerText = key + \" \";\n                        }\n\n                        if(typeOfText && typeOfText != '') {\n                            let elementValue = document.createElement('a');\n                            if(data.config.tipologies[key].bold) {\n                                elementValue.classList.add(this._el('infoSingleBold', false));\n                            }\n                            if(typeOfText == 'email') {\n                                elementValue.href = 'mailTo:' + value;\n                                elementValue.innerText = value;\n                            } else if (typeOfText == 'telephone') {\n                                elementValue.href = 'tel:' + value;\n                                elementValue.innerText = value;\n                            } else if (typeOfText == 'address') {\n                                elementValue.href = 'https://www.google.com/maps/dir/?api=1&destination=' + value;\n                                elementValue.innerText = value;\n                            }\n                            element.append(elementValue);\n                        } else {\n                            let elementValue = document.createElement('span');\n                            if(data.config.tipologies[key].bold) {\n                                elementValue.classList.add(this._el('infoSingleBold', false));\n                            }\n                            elementValue.innerText = value;\n                            element.append(elementValue);\n                        }\n\n                        this.textContent.append(element);\n                        indexTextForType++;\n                        break;\n                     }\n                     case 'tagsBuilding': {\n                        let elementsContainer = document.createElement('div');\n                        elementsContainer.classList.add(this._el('tagsContainer', false));\n                        if(data.config.tipologies[key].printColumnTitle) {\n                            elementsContainer.innerText = key;\n                        }\n\n                        let element = document.createElement('div');\n                        element.classList.add(this._el('tagsChipsContainer', false));\n\n                        for(let singleTag of value.split(',')) {\n                            let tagElement = document.createElement('span');\n                            tagElement.classList.add(this._el('tagSingle', false));\n                            tagElement.innerText = singleTag.trim();\n                            element.append(tagElement);\n                        }\n\n                        elementsContainer.append(element);\n                        this.textContent.append(elementsContainer);\n                        break;\n                     }\n                     case 'tagsServices': {\n                        let elementsContainer = document.createElement('div');\n                        elementsContainer.classList.add(this._el('tagsContainer', false));\n                        if(data.config.tipologies[key].printColumnTitle) {\n                            elementsContainer.innerText = key;\n                        }\n\n                        let element = document.createElement('div');\n                        element.classList.add(this._el('tagsChipsContainer', false));\n\n                        for(let singleTag of value.split(';')) {\n                            let tagElement = document.createElement('span');\n                            tagElement.classList.add(this._el('serviceSingle', false));\n                            tagElement.innerText = singleTag.trim();\n                            element.append(tagElement);\n                        }\n\n                        elementsContainer.append(element);\n                        this.textContent.append(elementsContainer);\n                        break;\n                     }\n                     case 'urlPrimaryCta': {\n                        this.primaryCta.innerText = key;\n\n                        if(data.config.tipologies[key].addPrefix && data.config.tipologies[key].addPrefix != '') {\n                            this.primaryCta.href = data.config.tipologies[key].addPrefix + value;\n                        } else {\n                            this.primaryCta.href = value;\n                        }\n\n                        break;\n                     }\n                     case 'urlSecondaryCta': {\n                        let element = document.createElement('a');\n                        element.classList.add(this._el('link', false));\n                        element.href = value;\n                        element.innerText = key;\n                        this.textContent.append(element);\n                        break;\n                     }\n                     case 'break': {\n                        let element = document.createElement('br');\n                        this.textContent.append(element);\n                        break;\n                     }\n                     case 'bullets': {\n                        let elementsListContainer = document.createElement('div');\n                        let elementsContainer = document.createElement('div');\n\n                        if(bulletsSectionCreated) {\n                            let bulletsSectionsList = document.querySelectorAll(this._el('listContainer', true));\n                            elementsContainer = bulletsSectionsList[bulletsSectionsList.length - 1];\n                        } else {\n                            elementsContainer.classList.add(this._el('listContainer', false));\n                        }\n\n                        elementsListContainer.classList.add(this._el('listElements', false));\n\n                        if(data.config.tipologies[key].printColumnTitle) {\n                            elementsListContainer.innerText = key;\n                        }\n\n                        let list = document.createElement('ul');\n\n                        for(let singleOpt of value.split(/[\\n;]/)) {\n                            let singleElement = document.createElement('li');\n                            singleElement.innerText = singleOpt.trim();\n                            list.append(singleElement);\n                        }\n\n                        elementsListContainer.append(list);\n                        elementsContainer.append(elementsListContainer);\n\n                        if(!bulletsSectionCreated) {\n                             this.textContent.append(elementsContainer);\n                             bulletsSectionCreated = true;\n                        }\n\n                        break;\n                     }\n                     default: {\n                        break;\n                     }\n                }\n\n                if((elementType != 'text' || elementType != 'textSizedDown') && indexTextForType != 0) {\n                    indexTextForType = 0;\n                }\n\n                if(elementType != 'bullets' && bulletsSectionCreated == true) {\n                    bulletsSectionCreated = false;\n                }\n            }\n        }\n    }\n\n    /* override */\n    _onOpen() {\n        super._onOpen();\n    }\n\n    /* override */\n    _onClose() {\n        super._onClose();\n    }\n}\n\n\n","import { flowManager } from '../../../../../libs/flow-manager';\n\nexport default function rt307() {\n    return {\n        premio: {},\n        cards: [],\n        twoEan: false,\n        init() {},\n        before() {\n            // load premio\n            this.premio = flowManager.getDataFromFlow();\n\n            // set cards\n            this.twoEan = !!this.premio.ean1 && !!this.premio.ean2;\n            this.cards = [];\n            if (this.premio.ean1)\n                this.cards.push({ ean: this.premio.ean1, description: this.premio.descrizioneMetodoRedenzione1 });\n            if (this.premio.ean2)\n                this.cards.push({ ean: this.premio.ean2, description: this.premio.descrizioneMetodoRedenzione2 });\n        },\n        open() {},\n        close() {},\n        cancel() {\n            flowManager.complete();\n        },\n\n        async initBarcode(element, ean) {\n            const barcodeLibrary = (await import('jsbarcode')).default;\n            barcodeLibrary(element)\n                .EAN13(ean, {\n                    flat: true,\n                    fontSize: 16,\n                    fontOptions: 'bold',\n                    textMargin: 7,\n                    height: 71,\n                    width: 3,\n                    text: ean,\n                })\n                .render();\n        },\n    };\n}\n","import { flowManager } from '../../../../../libs/flow-manager';\nimport './style.scss';\n\nexport default function cardistaAnteCPlus() {\n    return {\n        before() {\n\n        },\n        open() {\n\n        },\n        close() {\n\n        },\n        cancel() {\n            flowManager.complete();\n\n        }\n    };\n}\n","import { flowManager } from '../../../../../libs/flow-manager';\nimport PerfectScrollbar from 'perfect-scrollbar';\n\nexport default function genericPopup() {\n    return {\n        placeholdersToSearch: null,\n        init() {\n            const scrollbarOptions = {\n                swipeEasing: true,\n                suppressScrollX: true,\n            };\n            this.ps = new PerfectScrollbar(this.$refs.content, scrollbarOptions);\n\n            const placeholdersToSearchJson = this.$root.dataset.placeholdersToSearchJson;\n            if (!placeholdersToSearchJson) { return; }\n\n\n            this.placeholdersToSearch = JSON.parse(placeholdersToSearchJson);\n\n        },\n\n        before() {\n\n            if (!this.placeholdersToSearch) { return; }\n\n            try {\n                const data = flowManager.getDataFromFlow();\n\n                if (!data) { return; }\n                this.placeholdersToSearch.titlePlaceholders.forEach((element, index) => {\n                    if (data[element]) {\n                        this.$refs.title.innerHTML = this.$refs.title.innerHTML.replace(`{${index}}`, data[element]);\n                    }\n                });\n\n                this.placeholdersToSearch.textPlaceholders.forEach((element, index) => {\n                    if (data[element]) {\n                        this.$refs.text.innerHTML = this.$refs.text.innerHTML.replace(`{${index}}`, data[element]);\n                    }\n                });\n            } catch (e) {\n                console.error('rp309 generic popup - flow not present');\n            }\n        },\n\n        open() { },\n        close() { },\n        cancel() {\n            flowManager.complete();\n        },\n        confirm() {\n            flowManager.appendDataToFlow({ ok: true });\n            flowManager.complete();\n        },\n        next() {\n            flowManager.next();\n        },\n        previous() {\n            flowManager.back();\n        }\n    };\n} ","// Generated ESM version of ua-parser-js\n// DO NOT EDIT THIS FILE!\n// Source: /src/main/ua-parser.js\n\n/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.3\n   Copyright © 2012-2025 Faisal Salman <f@faisalman.com>\n   AGPLv3 License *//*\n   Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n   Supports browser & node.js environment. \n   Demo   : https://uaparser.dev\n   Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 6 */ \n/* globals window */\n\n\n    \n    //////////////\n    // Constants\n    /////////////\n\n    var LIBVERSION  = '2.0.3',\n        UA_MAX_LENGTH = 500,\n        USER_AGENT  = 'user-agent',\n        EMPTY       = '',\n        UNKNOWN     = '?',\n\n        // typeof\n        FUNC_TYPE   = 'function',\n        UNDEF_TYPE  = 'undefined',\n        OBJ_TYPE    = 'object',\n        STR_TYPE    = 'string',\n\n        // properties\n        UA_BROWSER  = 'browser',\n        UA_CPU      = 'cpu',\n        UA_DEVICE   = 'device',\n        UA_ENGINE   = 'engine',\n        UA_OS       = 'os',\n        UA_RESULT   = 'result',\n        \n        NAME        = 'name',\n        TYPE        = 'type',\n        VENDOR      = 'vendor',\n        VERSION     = 'version',\n        ARCHITECTURE= 'architecture',\n        MAJOR       = 'major',\n        MODEL       = 'model',\n\n        // device types\n        CONSOLE     = 'console',\n        MOBILE      = 'mobile',\n        TABLET      = 'tablet',\n        SMARTTV     = 'smarttv',\n        WEARABLE    = 'wearable',\n        XR          = 'xr',\n        EMBEDDED    = 'embedded',\n\n        // browser types\n        INAPP       = 'inapp',\n\n        // client hints\n        BRANDS      = 'brands',\n        FORMFACTORS = 'formFactors',\n        FULLVERLIST = 'fullVersionList',\n        PLATFORM    = 'platform',\n        PLATFORMVER = 'platformVersion',\n        BITNESS     = 'bitness',\n        CH_HEADER   = 'sec-ch-ua',\n        CH_HEADER_FULL_VER_LIST = CH_HEADER + '-full-version-list',\n        CH_HEADER_ARCH      = CH_HEADER + '-arch',\n        CH_HEADER_BITNESS   = CH_HEADER + '-' + BITNESS,\n        CH_HEADER_FORM_FACTORS = CH_HEADER + '-form-factors',\n        CH_HEADER_MOBILE    = CH_HEADER + '-' + MOBILE,\n        CH_HEADER_MODEL     = CH_HEADER + '-' + MODEL,\n        CH_HEADER_PLATFORM  = CH_HEADER + '-' + PLATFORM,\n        CH_HEADER_PLATFORM_VER = CH_HEADER_PLATFORM + '-version',\n        CH_ALL_VALUES       = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n        // device vendors\n        AMAZON      = 'Amazon',\n        APPLE       = 'Apple',\n        ASUS        = 'ASUS',\n        BLACKBERRY  = 'BlackBerry',\n        GOOGLE      = 'Google',\n        HUAWEI      = 'Huawei',\n        LENOVO      = 'Lenovo',\n        HONOR       = 'Honor',\n        LG          = 'LG',\n        MICROSOFT   = 'Microsoft',\n        MOTOROLA    = 'Motorola',\n        NVIDIA      = 'Nvidia',\n        ONEPLUS     = 'OnePlus',\n        OPPO        = 'OPPO',\n        SAMSUNG     = 'Samsung',\n        SHARP       = 'Sharp',\n        SONY        = 'Sony',\n        XIAOMI      = 'Xiaomi',\n        ZEBRA       = 'Zebra',\n\n        // browsers\n        CHROME      = 'Chrome',\n        CHROMIUM    = 'Chromium',\n        CHROMECAST  = 'Chromecast',\n        EDGE        = 'Edge',\n        FIREFOX     = 'Firefox',\n        OPERA       = 'Opera',\n        FACEBOOK    = 'Facebook',\n        SOGOU       = 'Sogou',\n\n        PREFIX_MOBILE  = 'Mobile ',\n        SUFFIX_BROWSER = ' Browser',\n\n        // os\n        WINDOWS     = 'Windows';\n   \n    var isWindow            = typeof window !== UNDEF_TYPE,\n        NAVIGATOR           = (isWindow && window.navigator) ? \n                                window.navigator : \n                                undefined,\n        NAVIGATOR_UADATA    = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n                                NAVIGATOR.userAgentData : \n                                undefined;\n\n    ///////////\n    // Helper\n    //////////\n\n    var extend = function (defaultRgx, extensions) {\n            var mergedRgx = {};\n            var extraRgx = extensions;\n            if (!isExtensions(extensions)) {\n                extraRgx = {};\n                for (var i in extensions) {\n                    for (var j in extensions[i]) {\n                        extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n                    }\n                }\n            }\n            for (var k in defaultRgx) {\n                mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n            }\n            return mergedRgx;\n        },\n        enumerize = function (arr) {\n            var enums = {};\n            for (var i=0; i<arr.length; i++) {\n                enums[arr[i].toUpperCase()] = arr[i];\n            }\n            return enums;\n        },\n        has = function (str1, str2) {\n            if (typeof str1 === OBJ_TYPE && str1.length > 0) {\n                for (var i in str1) {\n                    if (lowerize(str1[i]) == lowerize(str2)) return true;\n                }\n                return false;\n            }\n            return isString(str1) ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n        },\n        isExtensions = function (obj, deep) {\n            for (var prop in obj) {\n                return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n            }\n        },\n        isString = function (val) {\n            return typeof val === STR_TYPE;\n        },\n        itemListToArray = function (header) {\n            if (!header) return undefined;\n            var arr = [];\n            var tokens = strip(/\\\\?\\\"/g, header).split(',');\n            for (var i = 0; i < tokens.length; i++) {\n                if (tokens[i].indexOf(';') > -1) {\n                    var token = trim(tokens[i]).split(';v=');\n                    arr[i] = { brand : token[0], version : token[1] };\n                } else {\n                    arr[i] = trim(tokens[i]);\n                }\n            }\n            return arr;\n        },\n        lowerize = function (str) {\n            return isString(str) ? str.toLowerCase() : str;\n        },\n        majorize = function (version) {\n            return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n        },\n        setProps = function (arr) {\n            for (var i in arr) {\n                var propName = arr[i];\n                if (typeof propName == OBJ_TYPE && propName.length == 2) {\n                    this[propName[0]] = propName[1];\n                } else {\n                    this[propName] = undefined;\n                }\n            }\n            return this;\n        },\n        strip = function (pattern, str) {\n            return isString(str) ? str.replace(pattern, EMPTY) : str;\n        },\n        stripQuotes = function (str) {\n            return strip(/\\\\?\\\"/g, str); \n        },\n        trim = function (str, len) {\n            if (isString(str)) {\n                str = strip(/^\\s\\s*/, str);\n                return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n            }\n    };\n\n    ///////////////\n    // Map helper\n    //////////////\n\n    var rgxMapper = function (ua, arrays) {\n\n            if(!ua || !arrays) return;\n\n            var i = 0, j, k, p, q, matches, match;\n\n            // loop through all regexes maps\n            while (i < arrays.length && !matches) {\n\n                var regex = arrays[i],       // even sequence (0,2,4,..)\n                    props = arrays[i + 1];   // odd sequence (1,3,5,..)\n                j = k = 0;\n\n                // try matching uastring with regexes\n                while (j < regex.length && !matches) {\n\n                    if (!regex[j]) { break; }\n                    matches = regex[j++].exec(ua);\n\n                    if (!!matches) {\n                        for (p = 0; p < props.length; p++) {\n                            match = matches[++k];\n                            q = props[p];\n                            // check if given property is actually array\n                            if (typeof q === OBJ_TYPE && q.length > 0) {\n                                if (q.length === 2) {\n                                    if (typeof q[1] == FUNC_TYPE) {\n                                        // assign modified match\n                                        this[q[0]] = q[1].call(this, match);\n                                    } else {\n                                        // assign given value, ignore regex match\n                                        this[q[0]] = q[1];\n                                    }\n                                } else if (q.length === 3) {\n                                    // check whether function or regex\n                                    if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n                                        // call function (usually string mapper)\n                                        this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n                                    } else {\n                                        // sanitize match using given regex\n                                        this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n                                    }\n                                } else if (q.length === 4) {\n                                        this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n                                }\n                            } else {\n                                this[q] = match ? match : undefined;\n                            }\n                        }\n                    }\n                }\n                i += 2;\n            }\n        },\n\n        strMapper = function (str, map) {\n\n            for (var i in map) {\n                // check if current value is array\n                if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n                    for (var j = 0; j < map[i].length; j++) {\n                        if (has(map[i][j], str)) {\n                            return (i === UNKNOWN) ? undefined : i;\n                        }\n                    }\n                } else if (has(map[i], str)) {\n                    return (i === UNKNOWN) ? undefined : i;\n                }\n            }\n            return map.hasOwnProperty('*') ? map['*'] : str;\n    };\n\n    ///////////////\n    // String map\n    //////////////\n\n    var windowsVersionMap = {\n            'ME'        : '4.90',\n            'NT 3.11'   : 'NT3.51',\n            'NT 4.0'    : 'NT4.0',\n            '2000'      : 'NT 5.0',\n            'XP'        : ['NT 5.1', 'NT 5.2'],\n            'Vista'     : 'NT 6.0',\n            '7'         : 'NT 6.1',\n            '8'         : 'NT 6.2',\n            '8.1'       : 'NT 6.3',\n            '10'        : ['NT 6.4', 'NT 10.0'],\n            'RT'        : 'ARM'\n        },\n        \n        formFactorsMap = {\n            'embedded'  : 'Automotive',\n            'mobile'    : 'Mobile',\n            'tablet'    : ['Tablet', 'EInk'],\n            'smarttv'   : 'TV',\n            'wearable'  : 'Watch',\n            'xr'        : ['VR', 'XR'],\n            '?'         : ['Desktop', 'Unknown'],\n            '*'         : undefined\n    };\n\n    //////////////\n    // Regex map\n    /////////////\n\n    var defaultRegexes = {\n\n        browser : [[\n\n            // Most common regardless engine\n            /\\b(?:crmo|crios)\\/([\\w\\.]+)/i                                      // Chrome for Android/iOS\n            ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n            /edg(?:e|ios|a)?\\/([\\w\\.]+)/i                                       // Microsoft Edge\n            ], [VERSION, [NAME, 'Edge']], [\n\n            // Presto based\n            /(opera mini)\\/([-\\w\\.]+)/i,                                        // Opera Mini\n            /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,                 // Opera Mobi/Tablet\n            /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i                           // Opera\n            ], [NAME, VERSION], [\n            /opios[\\/ ]+([\\w\\.]+)/i                                             // Opera mini on iphone >= 8.0\n            ], [VERSION, [NAME, OPERA+' Mini']], [\n            /\\bop(?:rg)?x\\/([\\w\\.]+)/i                                          // Opera GX\n            ], [VERSION, [NAME, OPERA+' GX']], [\n            /\\bopr\\/([\\w\\.]+)/i                                                 // Opera Webkit\n            ], [VERSION, [NAME, OPERA]], [\n\n            // Mixed\n            /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i            // Baidu\n            ], [VERSION, [NAME, 'Baidu']], [\n            /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i                       // Maxthon\n            ], [VERSION, [NAME, 'Maxthon']], [\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i,      \n                                                                                // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n            // Trident based\n            /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i,        // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n            /(?:ms|\\()(ie) ([\\w\\.]+)/i,                                         // Internet Explorer\n\n            // Blink/Webkit/KHTML based                                         // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble\n            /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\\/([-\\w\\.]+)/i,\n                                                                                // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n            /(heytap|ovi|115|surf)browser\\/([\\d\\.]+)/i,                         // HeyTap/Ovi/115/Surf\n            /(ecosia|weibo)(?:__| \\w+@)([\\d\\.]+)/i                              // Ecosia/Weibo\n            ], [NAME, VERSION], [\n            /quark(?:pc)?\\/([-\\w\\.]+)/i                                         // Quark\n            ], [VERSION, [NAME, 'Quark']], [\n            /\\bddg\\/([\\w\\.]+)/i                                                 // DuckDuckGo\n            ], [VERSION, [NAME, 'DuckDuckGo']], [\n            /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i                 // UCBrowser\n            ], [VERSION, [NAME, 'UCBrowser']], [\n            /microm.+\\bqbcore\\/([\\w\\.]+)/i,                                     // WeChat Desktop for Windows Built-in Browser\n            /\\bqbcore\\/([\\w\\.]+).+microm/i,\n            /micromessenger\\/([\\w\\.]+)/i                                        // WeChat\n            ], [VERSION, [NAME, 'WeChat']], [\n            /konqueror\\/([\\w\\.]+)/i                                             // Konqueror\n            ], [VERSION, [NAME, 'Konqueror']], [\n            /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i                       // IE11\n            ], [VERSION, [NAME, 'IE']], [\n            /ya(?:search)?browser\\/([\\w\\.]+)/i                                  // Yandex\n            ], [VERSION, [NAME, 'Yandex']], [\n            /slbrowser\\/([\\w\\.]+)/i                                             // Smart Lenovo Browser\n            ], [VERSION, [NAME, 'Smart ' + LENOVO + SUFFIX_BROWSER]], [\n            /(avast|avg)\\/([\\w\\.]+)/i                                           // Avast/AVG Secure Browser\n            ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_BROWSER], VERSION], [\n            /\\bfocus\\/([\\w\\.]+)/i                                               // Firefox Focus\n            ], [VERSION, [NAME, FIREFOX+' Focus']], [\n            /\\bopt\\/([\\w\\.]+)/i                                                 // Opera Touch\n            ], [VERSION, [NAME, OPERA+' Touch']], [\n            /coc_coc\\w+\\/([\\w\\.]+)/i                                            // Coc Coc Browser\n            ], [VERSION, [NAME, 'Coc Coc']], [\n            /dolfin\\/([\\w\\.]+)/i                                                // Dolphin\n            ], [VERSION, [NAME, 'Dolphin']], [\n            /coast\\/([\\w\\.]+)/i                                                 // Opera Coast\n            ], [VERSION, [NAME, OPERA+' Coast']], [\n            /miuibrowser\\/([\\w\\.]+)/i                                           // MIUI Browser\n            ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n            /fxios\\/([\\w\\.-]+)/i                                                // Firefox for iOS\n            ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n            /\\bqihoobrowser\\/?([\\w\\.]*)/i                                       // 360\n            ], [VERSION, [NAME, '360']], [\n            /\\b(qq)\\/([\\w\\.]+)/i                                                // QQ\n            ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n            /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n            ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [              // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n            /samsungbrowser\\/([\\w\\.]+)/i                                        // Samsung Internet\n            ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n            /metasr[\\/ ]?([\\d\\.]+)/i                                            // Sogou Explorer\n            ], [VERSION, [NAME, SOGOU + ' Explorer']], [\n            /(sogou)mo\\w+\\/([\\d\\.]+)/i                                          // Sogou Mobile\n            ], [[NAME, SOGOU + ' Mobile'], VERSION], [\n            /(electron)\\/([\\w\\.]+) safari/i,                                    // Electron-based App\n            /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,                   // Tesla\n            /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i   // QQ/2345\n            ], [NAME, VERSION], [\n            /(lbbrowser|rekonq)/i                                               // LieBao Browser/Rekonq\n            ], [NAME], [\n            /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i,                                  // Iron\n            /ome\\/([\\w\\.]+).+qihu (360)[es]e/i                                  // 360\n            ], [VERSION, NAME], [\n\n            // WebView\n            /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i       // Facebook App for iOS & Android\n            ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n            /(Klarna)\\/([\\w\\.]+)/i,                                             // Klarna Shopping Browser for iOS & Android\n            /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,                             // Kakao App\n            /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,                                  // Naver InApp\n            /(daum)apps[\\/ ]([\\w\\.]+)/i,                                        // Daum App\n            /safari (line)\\/([\\w\\.]+)/i,                                        // Line App for iOS\n            /\\b(line)\\/([\\w\\.]+)\\/iab/i,                                        // Line App for Android\n            /(alipay)client\\/([\\w\\.]+)/i,                                       // Alipay\n            /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i,                               // Twitter\n            /(instagram|snapchat)[\\/ ]([-\\w\\.]+)/i                              // Instagram/Snapchat\n            ], [NAME, VERSION, [TYPE, INAPP]], [\n            /\\bgsa\\/([\\w\\.]+) .*safari\\//i                                      // Google Search Appliance on iOS\n            ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n            /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i                        // TikTok\n            ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n            /\\[(linkedin)app\\]/i                                                // LinkedIn App for iOS & Android\n            ], [NAME, [TYPE, INAPP]], [\n\n            /(chromium)[\\/ ]([-\\w\\.]+)/i                                        // Chromium\n            ], [NAME, VERSION], [\n\n            /headlesschrome(?:\\/([\\w\\.]+)| )/i                                  // Chrome Headless\n            ], [VERSION, [NAME, CHROME+' Headless']], [\n\n            / wv\\).+(chrome)\\/([\\w\\.]+)/i                                       // Chrome WebView\n            ], [[NAME, CHROME+' WebView'], VERSION], [\n\n            /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i           // Android Browser\n            ], [VERSION, [NAME, 'Android' + SUFFIX_BROWSER]], [\n\n            /chrome\\/([\\w\\.]+) mobile/i                                         // Chrome Mobile\n            ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n\n            /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i       // Chrome/OmniWeb/Arora/Tizen/Nokia\n            ], [NAME, VERSION], [\n\n            /version\\/([\\w\\.\\,]+) .*mobile(?:\\/\\w+ | ?)safari/i                 // Safari Mobile\n            ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n            /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n            ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n            /version\\/([\\w\\.\\,]+) .*(safari)/i                                  // Safari\n            ], [VERSION, NAME], [\n            /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i                      // Safari < 3.0\n            ], [NAME, [VERSION, '1']], [\n\n            /(webkit|khtml)\\/([\\w\\.]+)/i\n            ], [NAME, VERSION], [\n\n            // Gecko based\n            /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i                        // Firefox Mobile\n            ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n            /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i                              // Netscape\n            ], [[NAME, 'Netscape'], VERSION], [\n            /(wolvic|librewolf)\\/([\\w\\.]+)/i                                    // Wolvic/LibreWolf\n            ], [NAME, VERSION], [\n            /mobile vr; rv:([\\w\\.]+)\\).+firefox/i                               // Firefox Reality\n            ], [VERSION, [NAME, FIREFOX+' Reality']], [\n            /ekiohf.+(flow)\\/([\\w\\.]+)/i,                                       // Flow\n            /(swiftfox)/i,                                                      // Swiftfox\n            /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n            /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n            /(firefox)\\/([\\w\\.]+)/i,                                            // Other Firefox-based\n            /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,                         // Mozilla\n\n            // Other\n            /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n            /\\b(links) \\(([\\w\\.]+)/i                                            // Links\n            ], [NAME, [VERSION, /_/g, '.']], [\n            \n            /(cobalt)\\/([\\w\\.]+)/i                                              // Cobalt\n            ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n        ],\n\n        cpu : [[\n\n            /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i                                 // AMD64 (x64)\n            ], [[ARCHITECTURE, 'amd64']], [\n\n            /(ia32(?=;))/i,                                                     // IA32 (quicktime)\n            /\\b((i[346]|x)86)(pc)?\\b/i                                          // IA32 (x86)\n            ], [[ARCHITECTURE, 'ia32']], [\n\n            /\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i                               // ARM64\n            ], [[ARCHITECTURE, 'arm64']], [\n\n            /\\b(arm(v[67])?ht?n?[fl]p?)\\b/i                                     // ARMHF\n            ], [[ARCHITECTURE, 'armhf']], [\n\n            // PocketPC mistakenly identified as PowerPC\n            /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n            ], [[ARCHITECTURE, 'arm']], [\n\n            /((ppc|powerpc)(64)?)( mac|;|\\))/i                                  // PowerPC\n            ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n            / sun4\\w[;\\)]/i                                                     // SPARC\n            ], [[ARCHITECTURE, 'sparc']], [\n\n            /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i\n                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n            ], [[ARCHITECTURE, lowerize]]\n        ],\n\n        device : [[\n\n            //////////////////////////\n            // MOBILES & TABLETS\n            /////////////////////////\n\n            // Samsung\n            /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n            /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n            /samsung[- ]((?!sm-[lr])[-\\w]+)/i,\n            /sec-(sgh\\w+)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n            // Apple\n            /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i                          // iPod/iPhone\n            ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n            /\\((ipad);[-\\w\\),; ]+apple/i,                                       // iPad\n            /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n            /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n            ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n            /(macintosh);/i\n            ], [MODEL, [VENDOR, APPLE]], [\n\n            // Sharp\n            /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n            ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n            // Honor\n            /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n            ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n            /honor([-\\w ]+)[;\\)]/i\n            ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n            // Huawei\n            /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n            /(?:huawei)([-\\w ]+)[;\\)]/i,\n            /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n            // Xiaomi\n            /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n            /\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i                                // Mi Pad tablets\n            ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n            /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i,                  // Xiaomi POCO\n            /\\b; (\\w+) build\\/hm\\1/i,                                           // Xiaomi Hongmi 'numeric' models\n            /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,                             // Xiaomi Hongmi\n            /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,                   // Xiaomi Redmi\n            /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i,        // Xiaomi Redmi 'numeric' models\n            /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i, // Xiaomi Mi\n            / ([\\w ]+) miui\\/v?\\d/i\n            ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n            // OPPO\n            /; (\\w+) bui.+ oppo/i,\n            /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n            ], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [\n            /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n            ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['304', '403', '203'], '*' : OPPO }], [TYPE, TABLET]], [\n\n            // BLU Vivo Series\n            /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\\w\\+ ]*)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [            \n            // Vivo\n            /; vivo (\\w+)(?: bui|\\))/i,\n            /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n            ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n            // Realme\n            /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n            ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n            // Motorola\n            /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n            /\\bmot(?:orola)?[- ](\\w*)/i,\n            /((?:moto(?! 360)[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n            /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n            // LG\n            /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n            ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n            /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n            /\\blg[-e;\\/ ]+(?!.*(?:browser|netcast|android tv|watch))(\\w+)/i,\n            /\\blg-?([\\d\\w]+) bui/i\n            ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n            // Lenovo\n            /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n            /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n            ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [\n\n            // Nokia\n            /(nokia) (t[12][01])/i\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n            /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n            /nokia[-_ ]?(([-\\w\\. ]*))/i\n            ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n            // Google\n            /(pixel (c|tablet))\\b/i                                             // Google Pixel C/Tablet\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n            /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i                         // Google Pixel\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n            // Sony\n            /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n            ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n            /sony tablet [ps]/i,\n            /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n            ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n            // OnePlus\n            / (kb2005|in20[12]5|be20[12][59])\\b/i,\n            /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n            ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\n\n            // Amazon\n            /(alexa)webm/i,\n            /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i,                           // Kindle Fire without Silk / Echo Show\n            /(kf[a-z]+)( bui|\\)).+silk\\//i                                      // Kindle Fire HD\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n            /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i                     // Fire Phone\n            ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n            // BlackBerry\n            /(playbook);[-\\w\\),; ]+(rim)/i                                      // BlackBerry PlayBook\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\n            /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n            /\\(bb10; (\\w+)/i                                                    // BlackBerry 10\n            ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n            // Asus\n            /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n            / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n            // HTC\n            /(nexus 9)/i                                                        // HTC Nexus 9\n            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n            /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,                         // HTC\n\n            // ZTE\n            /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n            /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i         // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n            // TCL\n            /tcl (xess p17aa)/i,\n            /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n            ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n            /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n            ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n            // itel\n            /(itel) ((\\w+))/i\n            ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n            // Acer\n            /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n            // Meizu\n            /droid.+; (m[1-5] note) bui/i,\n            /\\bmz-([-\\w]{2,})/i\n            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n                \n            // Ulefone\n            /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n            // Energizer\n            /; (energy ?\\w+)(?: bui|\\))/i,\n            /; energizer ([\\w ]+)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n            // Cat\n            /; cat (b35);/i,\n            /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n            // Smartfren\n            /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n            // Nothing\n            /droid.+; (a(?:015|06[35]|142p?))/i\n            ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n            // Archos\n            /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n            /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n            ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n            /archos ([\\w ]+)( b|\\))/i,\n            /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n            ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n            // MIXED\n            /(imo) (tab \\w+)/i,                                                 // IMO\n            /(infinix) (x1101b?)/i                                              // Infinix XPad\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n                                                                                // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan\n            /; (blu|hmd|imo|tcl)[_ ]([\\w\\+ ]+?)(?: bui|\\)|; r)/i,               // BLU/HMD/IMO/TCL\n            /(hp) ([\\w ]+\\w)/i,                                                 // HP iPAQ\n            /(microsoft); (lumia[\\w ]+)/i,                                      // Microsoft Lumia\n            /(lenovo)[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i,                          // Lenovo\n            /(oppo) ?([\\w ]+) bui/i                                             // OPPO\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /(kobo)\\s(ereader|touch)/i,                                         // Kobo\n            /(hp).+(touchpad(?!.+tablet)|tablet)/i,                             // HP TouchPad\n            /(kindle)\\/([\\w\\.]+)/i                                              // Kindle\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(surface duo)/i                                                    // Surface Duo\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n            /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i                                 // Fairphone\n            ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n            /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i              // Nvidia Tablets\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [\n            /(sprint) (\\w+)/i                                                   // Sprint Phones\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n            /(kin\\.[onetw]{3})/i                                                // Microsoft Kin\n            ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n            /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i               // Zebra\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n            /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n            ///////////////////\n            // SMARTTVS\n            ///////////////////\n\n            /smart-tv.+(samsung)/i                                              // Samsung\n            ], [VENDOR, [TYPE, SMARTTV]], [\n            /hbbtv.+maple;(\\d+)/i\n            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n            /tcast.+(lg)e?. ([-\\w]+)/i                                          // LG SmartTV\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n            ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n            /(apple) ?tv/i                                                      // Apple TV\n            ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n            /crkey.*devicetype\\/chromecast/i                                    // Google Chromecast Third Generation\n            ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /crkey.*devicetype\\/([^/]*)/i                                       // Google Chromecast with specific device type\n            ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /fuchsia.*crkey/i                                                   // Google Chromecast Nest Hub\n            ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /crkey/i                                                            // Google Chromecast, Linux-based or unknown\n            ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /(portaltv)/i                                                       // Facebook Portal TV\n            ], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [\n            /droid.+aft(\\w+)( bui|\\))/i                                         // Fire TV\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n            /(shield \\w+ tv)/i                                                  // Nvidia Shield TV\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n            /\\(dtv[\\);].+(aquos)/i,\n            /(aquos-tv[\\w ]+)\\)/i                                               // Sharp\n            ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n            /(bravia[\\w ]+)( bui|\\))/i                                          // Sony\n            ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n            /(mi(tv|box)-?\\w+) bui/i                                            // Xiaomi\n            ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n            /Hbbtv.*(technisat) (.*);/i                                         // TechniSAT\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,                          // Roku\n            /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i         // HbbTV devices\n            ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n                                                                                // SmartTV from Unidentified Vendors\n            /droid.+; ([\\w- ]+) (?:android tv|smart[- ]?tv)/i\n            ], [MODEL, [TYPE, SMARTTV]], [\n            /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i\n            ], [[TYPE, SMARTTV]], [\n\n            ///////////////////\n            // CONSOLES\n            ///////////////////\n\n            /(ouya)/i,                                                          // Ouya\n            /(nintendo) (\\w+)/i                                                 // Nintendo\n            ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n            /droid.+; (shield)( bui|\\))/i                                       // Nvidia Portable\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [\n            /(playstation \\w+)/i                                                // Playstation\n            ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n            /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i                                // Microsoft Xbox\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n            ///////////////////\n            // WEARABLES\n            ///////////////////\n\n            /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i                       // Samsung Galaxy Watch\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n            /((pebble))app/i,                                                   // Pebble\n            /(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i        // Asus ZenWatch / LG Watch / Pixel Watch\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n            /(ow(?:19|20)?we?[1-3]{1,3})/i                                      // Oppo Watch\n            ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n            /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i                              // Apple Watch\n            ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n            /(opwwe\\d{3})/i                                                     // OnePlus Watch\n            ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n            /(moto 360)/i                                                       // Motorola 360\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n            /(smartwatch 3)/i                                                   // Sony SmartWatch\n            ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n            /(g watch r)/i                                                      // LG G Watch R\n            ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n            /droid.+; (wt63?0{2,3})\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n            ///////////////////\n            // XR\n            ///////////////////\n\n            /droid.+; (glass) \\d/i                                              // Google Glass\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n            /(pico) (4|neo3(?: link|pro)?)/i                                    // Pico\n            ], [VENDOR, MODEL, [TYPE, XR]], [\n            /(quest( \\d| pro)?s?).+vr/i                                         // Meta Quest\n            ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n\n            ///////////////////\n            // EMBEDDED\n            ///////////////////\n\n            /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i                              // Tesla\n            ], [VENDOR, [TYPE, EMBEDDED]], [\n            /(aeobc)\\b/i                                                        // Echo Dot\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n            /(homepod).+mac os/i                                                // Apple HomePod\n            ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n            /windows iot/i\n            ], [[TYPE, EMBEDDED]], [\n\n            ////////////////////\n            // MIXED (GENERIC)\n            ///////////////////\n\n            /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+?(mobile|vr|\\d) safari/i\n            ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : TABLET }]], [\n            /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i                      // Unidentifiable Tablet\n            ], [[TYPE, TABLET]], [\n            /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i    // Unidentifiable Mobile\n            ], [[TYPE, MOBILE]], [\n            /droid .+?; ([\\w\\. -]+)( bui|\\))/i                                  // Generic Android Device\n            ], [MODEL, [VENDOR, 'Generic']]\n        ],\n\n        engine : [[\n\n            /windows.+ edge\\/([\\w\\.]+)/i                                       // EdgeHTML\n            ], [VERSION, [NAME, EDGE+'HTML']], [\n\n            /(arkweb)\\/([\\w\\.]+)/i                                              // ArkWeb\n            ], [NAME, VERSION], [\n\n            /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i                         // Blink\n            ], [VERSION, [NAME, 'Blink']], [\n\n            /(presto)\\/([\\w\\.]+)/i,                                             // Presto\n            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n            /ekioh(flow)\\/([\\w\\.]+)/i,                                          // Flow\n            /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,                           // KHTML/Tasman/Links\n            /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,                                      // iCab\n\n            /\\b(libweb)/i                                                       // LibWeb\n            ], [NAME, VERSION], [\n            /ladybird\\//i\n            ], [[NAME, 'LibWeb']], [\n\n            /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i                                     // Gecko\n            ], [VERSION, NAME]\n        ],\n\n        os : [[\n\n            // Windows\n            /microsoft (windows) (vista|xp)/i                                   // Windows (iTunes)\n            ], [NAME, VERSION], [\n            /(windows (?:phone(?: os)?|mobile|iot))[\\/ ]?([\\d\\.\\w ]*)/i         // Windows Phone\n            ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n            /windows nt 6\\.2; (arm)/i,                                          // Windows RT\n            /windows[\\/ ]([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n            /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n            ], [[VERSION, strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n\n            // iOS/macOS\n            /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i,             // iOS\n            /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n            /cfnetwork\\/.+darwin/i\n            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n            /(mac os x) ?([\\w\\. ]*)/i,\n            /(macintosh|mac_powerpc\\b)(?!.+haiku)/i                             // Mac OS\n            ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n            // Google Chromecast\n            /android ([\\d\\.]+).*crkey/i                                         // Google Chromecast, Android-based\n            ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n            /fuchsia.*crkey\\/([\\d\\.]+)/i                                        // Google Chromecast, Fuchsia-based\n            ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n            /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i                       // Google Chromecast, Linux-based Smart Speaker\n            ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n            /linux.*crkey\\/([\\d\\.]+)/i                                          // Google Chromecast, Legacy Linux-based\n            ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n            /crkey\\/([\\d\\.]+)/i                                                 // Google Chromecast, unknown\n            ], [VERSION, [NAME, CHROMECAST]], [\n\n            // Mobile OSes\n            /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i                    // Android-x86/HarmonyOS\n            ], [VERSION, NAME], [                                               \n            /(ubuntu) ([\\w\\.]+) like android/i                                  // Ubuntu Touch\n            ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n                                                                                // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n            /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\\w*[-\\/\\.; ]?([\\d\\.]*)/i\n            ], [NAME, VERSION], [\n            /\\(bb(10);/i                                                        // BlackBerry 10\n            ], [VERSION, [NAME, BLACKBERRY]], [\n            /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i       // Symbian\n            ], [VERSION, [NAME, 'Symbian']], [\n            /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n            ], [VERSION, [NAME, FIREFOX+' OS']], [\n            /web0s;.+rt(tv)/i,\n            /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i                              // WebOS\n            ], [VERSION, [NAME, 'webOS']], [\n            /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i                              // watchOS\n            ], [VERSION, [NAME, 'watchOS']], [\n\n            // Google ChromeOS\n            /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i                                  // Chromium OS\n            ], [[NAME, \"Chrome OS\"], VERSION],[\n\n            // Smart TVs\n            /panasonic;(viera)/i,                                               // Panasonic Viera\n            /(netrange)mmh/i,                                                   // Netrange\n            /(nettv)\\/(\\d+\\.[\\w\\.]+)/i,                                         // NetTV\n\n            // Console\n            /(nintendo|playstation) (\\w+)/i,                                    // Nintendo/Playstation\n            /(xbox); +xbox ([^\\);]+)/i,                                         // Microsoft Xbox (360, One, X, S, Series X, Series S)\n            /(pico) .+os([\\w\\.]+)/i,                                            // Pico\n\n            // Other\n            /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,                            // Joli/Palm\n            /(mint)[\\/\\(\\) ]?(\\w*)/i,                                           // Mint\n            /(mageia|vectorlinux)[; ]/i,                                        // Mageia/VectorLinux\n            /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n                                                                                // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n            /(hurd|linux)(?: arm\\w*| x86\\w*| ?)([\\w\\.]*)/i,                     // Hurd/Linux\n            /(gnu) ?([\\w\\.]*)/i,                                                // GNU\n            /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n            /(haiku) (\\w+)/i                                                    // Haiku\n            ], [NAME, VERSION], [\n            /(sunos) ?([\\w\\.\\d]*)/i                                             // Solaris\n            ], [[NAME, 'Solaris'], VERSION], [\n            /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,                              // Solaris\n            /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,                                  // AIX\n            /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n            /(unix) ?([\\w\\.]*)/i                                                // UNIX\n            ], [NAME, VERSION]\n        ]\n    };\n\n    /////////////////\n    // Factories\n    ////////////////\n\n    var defaultProps = (function () {\n            var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n            setProps.call(props.init, [\n                [UA_BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n                [UA_CPU, [ARCHITECTURE]],\n                [UA_DEVICE, [TYPE, MODEL, VENDOR]],\n                [UA_ENGINE, [NAME, VERSION]],\n                [UA_OS, [NAME, VERSION]]\n            ]);\n            setProps.call(props.isIgnore, [\n                [UA_BROWSER, [VERSION, MAJOR]],\n                [UA_ENGINE, [VERSION]],\n                [UA_OS, [VERSION]]\n            ]);\n            setProps.call(props.isIgnoreRgx, [\n                [UA_BROWSER, / ?browser$/i],\n                [UA_OS, / ?os$/i]\n            ]);\n            setProps.call(props.toString, [\n                [UA_BROWSER, [NAME, VERSION]],\n                [UA_CPU, [ARCHITECTURE]],\n                [UA_DEVICE, [VENDOR, MODEL]],\n                [UA_ENGINE, [NAME, VERSION]],\n                [UA_OS, [NAME, VERSION]]\n            ]);\n            return props;\n    })();\n\n    var createIData = function (item, itemType) {\n\n        var init_props = defaultProps.init[itemType],\n            is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n            is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n            toString_props = defaultProps.toString[itemType] || 0;\n\n        function IData () {\n            setProps.call(this, init_props);\n        }\n\n        IData.prototype.getItem = function () {\n            return item;\n        };\n\n        IData.prototype.withClientHints = function () {\n\n            // nodejs / non-client-hints browsers\n            if (!NAVIGATOR_UADATA) {\n                return item\n                        .parseCH()\n                        .get();\n            }\n\n            // browsers based on chromium 85+\n            return NAVIGATOR_UADATA\n                    .getHighEntropyValues(CH_ALL_VALUES)\n                    .then(function (res) {\n                        return item\n                                .setCH(new UACHData(res, false))\n                                .parseCH()\n                                .get();\n            });\n        };\n\n        IData.prototype.withFeatureCheck = function () {\n            return item.detectFeature().get();\n        };\n\n        if (itemType != UA_RESULT) {\n            IData.prototype.is = function (strToCheck) {\n                var is = false;\n                for (var i in this) {\n                    if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {\n                        is = true;\n                        if (strToCheck != UNDEF_TYPE) break;\n                    } else if (strToCheck == UNDEF_TYPE && is) {\n                        is = !is;\n                        break;\n                    }\n                }\n                return is;\n            };\n            IData.prototype.toString = function () {\n                var str = EMPTY;\n                for (var i in toString_props) {\n                    if (typeof(this[toString_props[i]]) !== UNDEF_TYPE) {\n                        str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n                    }\n                }\n                return str || UNDEF_TYPE;\n            };\n        }\n\n        if (!NAVIGATOR_UADATA) {\n            IData.prototype.then = function (cb) { \n                var that = this;\n                var IDataResolve = function () {\n                    for (var prop in that) {\n                        if (that.hasOwnProperty(prop)) {\n                            this[prop] = that[prop];\n                        }\n                    }\n                };\n                IDataResolve.prototype = {\n                    is : IData.prototype.is,\n                    toString : IData.prototype.toString\n                };\n                var resolveData = new IDataResolve();\n                cb(resolveData);\n                return resolveData;\n            };\n        }\n\n        return new IData();\n    };\n\n    /////////////////\n    // Constructor\n    ////////////////\n\n    function UACHData (uach, isHttpUACH) {\n        uach = uach || {};\n        setProps.call(this, CH_ALL_VALUES);\n        if (isHttpUACH) {\n            setProps.call(this, [\n                [BRANDS, itemListToArray(uach[CH_HEADER])],\n                [FULLVERLIST, itemListToArray(uach[CH_HEADER_FULL_VER_LIST])],\n                [MOBILE, /\\?1/.test(uach[CH_HEADER_MOBILE])],\n                [MODEL, stripQuotes(uach[CH_HEADER_MODEL])],\n                [PLATFORM, stripQuotes(uach[CH_HEADER_PLATFORM])],\n                [PLATFORMVER, stripQuotes(uach[CH_HEADER_PLATFORM_VER])],\n                [ARCHITECTURE, stripQuotes(uach[CH_HEADER_ARCH])],\n                [FORMFACTORS, itemListToArray(uach[CH_HEADER_FORM_FACTORS])],\n                [BITNESS, stripQuotes(uach[CH_HEADER_BITNESS])]\n            ]);\n        } else {\n            for (var prop in uach) {\n                if(this.hasOwnProperty(prop) && typeof uach[prop] !== UNDEF_TYPE) this[prop] = uach[prop];\n            }\n        }\n    }\n\n    function UAItem (itemType, ua, rgxMap, uaCH) {\n\n        this.get = function (prop) {\n            if (!prop) return this.data;\n            return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n        };\n\n        this.set = function (prop, val) {\n            this.data[prop] = val;\n            return this;\n        };\n\n        this.setCH = function (ch) {\n            this.uaCH = ch;\n            return this;\n        };\n\n        this.detectFeature = function () {\n            if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n                switch (this.itemType) {\n                    case UA_BROWSER:\n                        // Brave-specific detection\n                        if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == FUNC_TYPE) {\n                            this.set(NAME, 'Brave');\n                        }\n                        break;\n                    case UA_DEVICE:\n                        // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n                        if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n                            this.set(TYPE, MOBILE);\n                        }\n                        // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n                        if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== UNDEF_TYPE && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n                            this.set(MODEL, 'iPad')\n                                .set(TYPE, TABLET);\n                        }\n                        break;\n                    case UA_OS:\n                        // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n                        if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n                            this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n                        }\n                        break;\n                    case UA_RESULT:\n                        var data = this.data;\n                        var detect = function (itemType) {\n                            return data[itemType]\n                                    .getItem()\n                                    .detectFeature()\n                                    .get();\n                        };\n                        this.set(UA_BROWSER, detect(UA_BROWSER))\n                            .set(UA_CPU, detect(UA_CPU))\n                            .set(UA_DEVICE, detect(UA_DEVICE))\n                            .set(UA_ENGINE, detect(UA_ENGINE))\n                            .set(UA_OS, detect(UA_OS));\n                }\n            }\n            return this;\n        };\n\n        this.parseUA = function () {\n            if (this.itemType != UA_RESULT) {\n                rgxMapper.call(this.data, this.ua, this.rgxMap);\n            }\n            if (this.itemType == UA_BROWSER) {\n                this.set(MAJOR, majorize(this.get(VERSION)));\n            }\n            return this;\n        };\n\n        this.parseCH = function () {\n            var uaCH = this.uaCH,\n                rgxMap = this.rgxMap;\n    \n            switch (this.itemType) {\n                case UA_BROWSER:\n                case UA_ENGINE:\n                    var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n                    if (brands) {\n                        for (var i in brands) {\n                            var brandName = brands[i].brand || brands[i],\n                                brandVersion = brands[i].version;\n                            if (this.itemType == UA_BROWSER && !/not.a.brand/i.test(brandName) && (!prevName || (/chrom/i.test(prevName) && brandName != CHROMIUM))) {\n                                brandName = strMapper(brandName, {\n                                    'Chrome' : 'Google Chrome',\n                                    'Edge' : 'Microsoft Edge',\n                                    'Chrome WebView' : 'Android WebView',\n                                    'Chrome Headless' : 'HeadlessChrome',\n                                    'Huawei Browser' : 'HuaweiBrowser',\n                                    'MIUI Browser' : 'Miui Browser',\n                                    'Opera Mobi' : 'OperaMobile',\n                                    'Yandex' : 'YaBrowser'\n                                });\n                                this.set(NAME, brandName)\n                                    .set(VERSION, brandVersion)\n                                    .set(MAJOR, majorize(brandVersion));\n                                prevName = brandName;\n                            }\n                            if (this.itemType == UA_ENGINE && brandName == CHROMIUM) {\n                                this.set(VERSION, brandVersion);\n                            }\n                        }\n                    }\n                    break;\n                case UA_CPU:\n                    var archName = uaCH[ARCHITECTURE];\n                    if (archName) {\n                        if (archName && uaCH[BITNESS] == '64') archName += '64';\n                        rgxMapper.call(this.data, archName + ';', rgxMap);\n                    }\n                    break;\n                case UA_DEVICE:\n                    if (uaCH[MOBILE]) {\n                        this.set(TYPE, MOBILE);\n                    }\n                    if (uaCH[MODEL]) {\n                        this.set(MODEL, uaCH[MODEL]);\n                        if (!this.get(TYPE) || !this.get(VENDOR)) {\n                            var reParse = {};\n                            rgxMapper.call(reParse, 'droid 9; ' + uaCH[MODEL] + ')', rgxMap);\n                            if (!this.get(TYPE) && !!reParse.type) {\n                                this.set(TYPE, reParse.type);\n                            }\n                            if (!this.get(VENDOR) && !!reParse.vendor) {\n                                this.set(VENDOR, reParse.vendor);\n                            }\n                        }\n                    }\n                    if (uaCH[FORMFACTORS]) {\n                        var ff;\n                        if (typeof uaCH[FORMFACTORS] !== 'string') {\n                            var idx = 0;\n                            while (!ff && idx < uaCH[FORMFACTORS].length) {\n                                ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap);\n                            }\n                        } else {\n                            ff = strMapper(uaCH[FORMFACTORS], formFactorsMap);\n                        }\n                        this.set(TYPE, ff);\n                    }\n                    break;\n                case UA_OS:\n                    var osName = uaCH[PLATFORM];\n                    if(osName) {\n                        var osVersion = uaCH[PLATFORMVER];\n                        if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');\n                        this.set(NAME, osName)\n                            .set(VERSION, osVersion);\n                    }\n                    // Xbox-Specific Detection\n                    if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n                        this.set(NAME, 'Xbox')\n                            .set(VERSION, undefined);\n                    }           \n                    break;\n                case UA_RESULT:\n                    var data = this.data;\n                    var parse = function (itemType) {\n                        return data[itemType]\n                                .getItem()\n                                .setCH(uaCH)\n                                .parseCH()\n                                .get();\n                    };\n                    this.set(UA_BROWSER, parse(UA_BROWSER))\n                        .set(UA_CPU, parse(UA_CPU))\n                        .set(UA_DEVICE, parse(UA_DEVICE))\n                        .set(UA_ENGINE, parse(UA_ENGINE))\n                        .set(UA_OS, parse(UA_OS));\n            }\n            return this;\n        };\n\n        setProps.call(this, [\n            ['itemType', itemType],\n            ['ua', ua],\n            ['uaCH', uaCH],\n            ['rgxMap', rgxMap],\n            ['data', createIData(this, itemType)]\n        ]);\n\n        return this;\n    }\n\n    function UAParser (ua, extensions, headers) {\n\n        if (typeof ua === OBJ_TYPE) {\n            if (isExtensions(ua, true)) {\n                if (typeof extensions === OBJ_TYPE) {\n                    headers = extensions;               // case UAParser(extensions, headers)           \n                }\n                extensions = ua;                        // case UAParser(extensions)\n            } else {\n                headers = ua;                           // case UAParser(headers)\n                extensions = undefined;\n            }\n            ua = undefined;\n        } else if (typeof ua === STR_TYPE && !isExtensions(extensions, true)) {\n            headers = extensions;                       // case UAParser(ua, headers)\n            extensions = undefined;\n        }\n\n        // Convert Headers object into a plain object\n        if (headers && typeof headers.append === FUNC_TYPE) {\n            var kv = {};\n            headers.forEach(function (v, k) { kv[k] = v; });\n            headers = kv;\n        }\n        \n        if (!(this instanceof UAParser)) {\n            return new UAParser(ua, extensions, headers).getResult();\n        }\n\n        var userAgent = typeof ua === STR_TYPE ? ua :                                       // Passed user-agent string\n                                (headers && headers[USER_AGENT] ? headers[USER_AGENT] :     // User-Agent from passed headers\n                                ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n                                    EMPTY)),                                                // empty string\n\n            httpUACH = new UACHData(headers, true),\n            regexMap = extensions ? \n                        extend(defaultRegexes, extensions) : \n                        defaultRegexes,\n\n            createItemFunc = function (itemType) {\n                if (itemType == UA_RESULT) {\n                    return function () {\n                        return new UAItem(itemType, userAgent, regexMap, httpUACH)\n                                    .set('ua', userAgent)\n                                    .set(UA_BROWSER, this.getBrowser())\n                                    .set(UA_CPU, this.getCPU())\n                                    .set(UA_DEVICE, this.getDevice())\n                                    .set(UA_ENGINE, this.getEngine())\n                                    .set(UA_OS, this.getOS())\n                                    .get();\n                    };\n                } else {\n                    return function () {\n                        return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n                                    .parseUA()\n                                    .get();\n                    };\n                }\n            };\n            \n        // public methods\n        setProps.call(this, [\n            ['getBrowser', createItemFunc(UA_BROWSER)],\n            ['getCPU', createItemFunc(UA_CPU)],\n            ['getDevice', createItemFunc(UA_DEVICE)],\n            ['getEngine', createItemFunc(UA_ENGINE)],\n            ['getOS', createItemFunc(UA_OS)],\n            ['getResult', createItemFunc(UA_RESULT)],\n            ['getUA', function () { return userAgent; }],\n            ['setUA', function (ua) {\n                if (isString(ua))\n                    userAgent = ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;\n                return this;\n            }]\n        ])\n        .setUA(userAgent);\n\n        return this;\n    }\n\n    UAParser.VERSION = LIBVERSION;\n    UAParser.BROWSER =  enumerize([NAME, VERSION, MAJOR, TYPE]);\n    UAParser.CPU = enumerize([ARCHITECTURE]);\n    UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n    UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n    export {UAParser};","import { UAParser } from 'ua-parser-js';\n\nfunction appendQueryParams(destUrl) {\n    const currentQuery = window.location.search;\n    if (!currentQuery) return destUrl;\n\n    const [base, destQuery] = destUrl.split('?');\n    if (destQuery) {\n        const destParams = new URLSearchParams(destQuery);\n        const currentParams = new URLSearchParams(currentQuery);\n        for (const [k, v] of currentParams.entries()) {\n            destParams.set(k, v);\n        }\n        return `${base}?${destParams.toString()}`;\n    } else {\n        return destUrl + currentQuery;\n    }\n}\n\nfunction runActualRedirectChecks() {\n    'use strict';\n\n    if (window.wcmmode_disabled === false) {\n        return;\n    }\n\n    console.log(\"app redirect\");\n    let userAgentData;\n    try {\n        userAgentData = new UAParser().getResult();\n        console.log(userAgentData);\n    } catch (e) {\n        if (window.disambiguationRedirect) {\n            const urlWithParams = appendQueryParams(window.disambiguationRedirect);\n            window.location.replace(urlWithParams);\n        }\n        return;\n    }\n\n    const osName = userAgentData.os.name;\n    let finalTargetUrl = null;\n    console.log(osName);\n\n    if (osName === 'iOS' && window.iphoneRedirect) {\n        finalTargetUrl = window.iphoneRedirect;\n    } else if (osName === 'Android' && window.androidRedirect) {\n        finalTargetUrl = window.androidRedirect;\n    } else if (window.disambiguationRedirect) {\n        finalTargetUrl = window.disambiguationRedirect;\n    }\n\n    if (finalTargetUrl) {\n        const urlWithParams = appendQueryParams(finalTargetUrl);\n        window.location.replace(urlWithParams);\n    }\n}\n\nexport function setupDeviceRedirects() {\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', runActualRedirectChecks);\n    } else {\n        runActualRedirectChecks();\n    }\n}","import './style.scss';\nimport Component from '../../../../../../libs/components/component';\nimport { getFlowManager } from '../../../../../../libs/flow-manager';\nimport { getTrackingManager } from '../../../../../../libs/tracking-manager';\nimport { getUserService } from '../../../../../../libs/user-service';\nimport { getInsurancesManager } from '../../../../../../libs/insurances-manager';\nimport { delay, getCookieByName, getNextSibling, writeCookieWithName } from '../../../../../../libs/utils';\nimport { getDictionary } from '../../../../../../libs/dictionary-provider';\nimport {setupDeviceRedirects} from \"./appRedirect\";\n\nexport default class Page extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.body = document.body;\n        this.blockCounter = 0;\n        this.trackingManager = getTrackingManager();\n        this.userService = getUserService();\n        this.flowManager = getFlowManager();\n        this.insurancesManager = getInsurancesManager();\n        this._addEventListeners();\n        this._addStoreListeners();\n\n        this.coopPages = window.coopPages || [];\n        const coopPagesRegex = window.coopPagesRegex || [];\n        this.coopPagesRegex = coopPagesRegex.map((item) => new RegExp(item));\n        this.bookProviderUrlPatterns = window.bookProviderUrlPatterns || [];\n\n        if (window.iphoneRedirect || window.androidRedirect) {\n            setupDeviceRedirects();\n        }\n\n        // metas move\n        this._moveMetas();\n    }\n\n    _addEventListeners() {\n        ////////////////////////////////////////\n        ///////////////////////////////////////\n        //////////////// TRACKING INTERCEPTOR\n        ////////////////////////////////////////\n        this._addListener(\n            'click',\n            (event) => {\n                const linkEl = event.target.closest('[data-link-tracking]');\n                if (!linkEl) return;\n                const options = JSON.parse(linkEl.dataset.linkTracking);\n                this.trackingManager.trackLink(linkEl, options);\n            },\n            this.root,\n            { capture: true }\n        );\n\n        ////////////////////////////////////////\n        ///////////////////////////////////////\n        //////////////// CLICK INTERCEPTOR\n        ////////////////////////////////////////\n        this._addListener(\n            'click',\n            (event) => {\n                const target = event.target.closest('a[href]');\n                if (!target) return;\n\n                //////////////////////// CHECK BOOK\n                if (this._bookLink(event, target)) {\n                    return;\n                }\n\n                //////////////////////// CHECK COOP\n                if (this._coopLink(event, target)) {\n                    return;\n                }\n            },\n            this.root\n        );\n    }\n\n    _addStoreListeners() {\n        this._addStoreListener('blockScroll', (path, data) => {\n            if (data > 0) this.setBlockScroll();\n            else this.removeBlockScroll();\n        });\n\n        // change meta at page change\n        this._addStoreListener('currentPage', () => {\n            this._moveMetas();\n            // launch tracking page view\n            if (!this.storeManager.get('trackingPageViewDisabled')) this.trackingManager.trackPageView();\n            // check insurance links\n            this._setInsuranceLinks();\n            // check cardistaAnteCPlus popup (old card popup)\n            this._cardistaAnteCPlusPopup(); \n            // check refresh popup\n            this._checkRefreshPopup();\n        });\n    }\n\n    async _cardistaAnteCPlusPopup() {\n        let user = await getUserService().getUser();\n        if (!user) return;\n\n        if (user.cardistaAnteCPlus !== 'S') return;\n\n        let cookieCardistaAnteCPlus = getCookieByName('ecCardistaAnteCPlusPopup');\n        if (cookieCardistaAnteCPlus) return;\n\n        // get conad domain\n        let domainParts = location.hostname.split('.');\n        let domain = location.hostname;\n        if (domainParts.length >= 2) {\n            domain = '.' + domainParts.slice(-2).join('.');\n        }\n\n        // write cookie\n        let currentDate = new Date();\n        let expiringDate = new Date(currentDate.getTime() + 604800000); \n        writeCookieWithName('ecCardistaAnteCPlusPopup', 'true', domain, expiringDate.toUTCString());\n\n        this.flowManager.startFlow({ flowName: 'cardista-ante-c-plus', flowSteps: [{ name: 'cardista-ante-c-plus-popup' }] });\n    }\n\n    async _checkRefreshPopup() {\n        let user = await getUserService().getUser();\n        if (!user) return;\n\n        // if cardistaAnteCPlus don't show the popup \n        if (user.cardistaAnteCPlus == 'S') return; \n\n        if (!user.refresh) return;\n\n        let cookieRefresh = getCookieByName('ecRefreshBanner');\n        if (cookieRefresh) return;\n\n        // get conad domain\n        let domainParts = location.hostname.split('.');\n        let domain = location.hostname;\n        if (domainParts.length >= 2) {\n            domain = '.' + domainParts.slice(-2).join('.');\n        }\n\n        // write cookie\n        let currentDate = new Date();\n        let expiringDate = new Date(currentDate.getTime() + 172800000);\n        writeCookieWithName('ecRefreshBanner', 'true', domain, expiringDate.toUTCString());\n\n        this.flowManager.startFlow({ flowName: 'refresh-popup', flowSteps: [{ name: 'refresh-popup' }] });\n    }\n\n    _bookLink(event, target) {\n        let bookLink = null;\n        for (const pattern of this.bookProviderUrlPatterns) {\n            const split = pattern.split('{{anacanId}}');\n            const elLink =\n                (!['', 'http://', 'https://'].includes(split[0]) && target.closest(`a[href^='${split[0]}']`)) ||\n                (split[1] !== '' && target.closest(`a[href$='${split[1]}']`));\n\n            if (elLink) {\n                bookLink = elLink;\n                break;\n            }\n        }\n        if (!bookLink) return false;\n\n        // open books reservation modal\n        event.preventDefault();\n        this._goToBooksReservation(bookLink);\n        return true;\n    }\n\n    _coopLink(event, target) {\n        let link = null;\n        const href = target.getAttribute('href');\n        if (!href) return false;\n\n        let cndValid = false;\n        // check stanard coop pages\n        for (const page of this.coopPages) {\n            if (page == href) {\n                link = target;\n                break;\n            }\n        }\n        // check regex\n        for (const regex of this.coopPagesRegex) {\n            if (href.match(regex)) {\n                cndValid = true;\n                link = target;\n                break;\n            }\n        }\n        if (!link) return false;\n\n        // redirect to coop\n        event.preventDefault();\n        this._redirectToCoop(link, cndValid);\n        return true;\n    }\n\n    async _redirectToCoop(link, cndValid = false) {\n        const urlParams = new URLSearchParams(window.location.search);\n        const user = await this.userService.getUser();\n        const store = await this.userService.getStore();\n        const coop = urlParams.get('coop') || user?.newMappedCooperative || store?.newMappedCooperative;\n        if (coop || cndValid) {\n            const url = new URL(link.href, window.origin);\n            url.searchParams.set('coop', coop?.toLowerCase() || 'cnd');\n            window.open(url.href, link.target);\n            return;\n        }\n\n        //start flow\n        this.flowManager.startFlow({\n            flowName: 'select-pos',\n            flowSteps: [{ name: 'select-pos-step1' }, { name: 'select-pos-step-2' }],\n            onComplete: (flowName, data) => {\n                if (data?.selectedStore) {\n                    const coop = data.selectedStore.newMappedCooperative;\n                    /* set coop in query string */\n                    const url = new URL(link.href, window.origin);\n                    url.searchParams.set('coop', coop?.toLowerCase());\n                    window.open(url.href, link.target);\n                }\n            },\n        });\n        return true;\n    }\n\n    async _goToBooksReservation(link) {\n        this.flowManager.startFlow({\n            flowName: 'books-reservation-popup',\n            flowSteps: [{ name: 'books-reservation-popup' }],\n        });\n        await delay(8000);\n        this._emit('closeBooksPopup', {});\n        window.location = link.href;\n    }\n\n    async _setInsuranceLinks() {\n        const ctas = Array.from(this.root.querySelectorAll('[href=\"#carrello-protetto\"]'));\n        if (!ctas || ctas.length < 1) {\n            return;\n        }\n        for (let i = 0; i < ctas.length; i++) {\n            ctas[i].classList.add('!hidden');\n        }\n        const link = await this.insurancesManager.getLink();\n        for (let i = 0; i < ctas.length; i++) {\n            ctas[i].setAttribute('href', link.url);\n            const label = ctas[i].querySelector('span.rt002-cta__label');\n            label.innerHTML = getDictionary().get(link.label);\n            ctas[i].classList.remove('!hidden');\n        }\n    }\n\n    _moveMetas() {\n        this.metas = Array.from(this.root.querySelectorAll('.rl1-layout__meta'));\n        for (const meta of this.metas) {\n            const target = getNextSibling(meta);\n            if (target) {\n                for (let key in meta.dataset) {\n                    if (Object.hasOwn(meta.dataset, key)) {\n                        target.dataset[key] = meta.dataset[key];\n                    }\n                }\n            }\n            meta.remove();\n        }\n    }\n\n    toggleBlockPageScroll() {\n        const hasBlock = this.body.classList.contains('block-scroll');\n        if (hasBlock) this.removeBlockScroll();\n        else this.setBlockScroll();\n    }\n\n    setBlockScroll() {\n        if (this.blockCounter > 0) {\n            this.blockCounter++;\n            return;\n        }\n        const bodyWidth = this.body.clientWidth;\n        this.body.classList.add('block-scroll');\n        const margin = this.body.clientWidth - bodyWidth;\n        //set body margin\n        this.body.style.marginRight = `${margin}px`;\n        //set fixed margin\n        const fixedEls = this.root.querySelectorAll('.is-fixed');\n        for (const fix of fixedEls) {\n            fix.style.marginRight = `${margin}px`;\n        }\n        this.blockCounter++;\n    }\n\n    removeBlockScroll() {\n        if (this.blockCounter <= 0) return;\n        this.blockCounter--;\n        //remove block scroll only if block counter = 0 so there is only a 1 modal/popup open on page\n        if (this.blockCounter > 0) return;\n\n        this.body.classList.remove('block-scroll');\n        //set body margin\n        this.body.style.marginRight = 0;\n        //set fixed margin\n        const fixedEls = this.root.querySelectorAll('.is-fixed');\n        for (const fix of fixedEls) {\n            fix.style.marginRight = 0;\n        }\n    }\n}","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { BREAKPOINTS } from '../../../../../libs/constants';\n\nexport default class Modal extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.register = getRegister();\n\n        this.page = this.register.getClass(document.querySelector('.rs1-page'));\n        this.modalName = this.root.dataset.name;\n        this.backdrop = this._dEl('backdrop');\n        this.rightContent = this._dEl('rightContent');\n\n        this._addEventListeners();\n    }\n\n    _addEventListeners() {\n        this._addListener(\n            'click',\n            (event) => {\n                if (!event.target.matches(`[data-open-modal='${this.modalName}']`)) return;\n                event.preventDefault();\n                this.open();\n            },\n            document\n        );\n        this._addListener(\n            'click',\n            (event) => {\n                event.preventDefault();\n                this.cancel();\n            },\n            this.backdrop\n        );\n        this._addListener(\n            'click',\n            (event) => {\n                if (!event.target.matches('[data-close-modal]')) return;\n                event.preventDefault();\n                if (\n                    window.innerWidth < BREAKPOINTS.l &&\n                    this.rightContent &&\n                    this.rightContent.classList.contains(this._elMod('rightContent', 'forceShow'))\n                ) {\n                    this.rightContent.classList.remove(this._elMod('rightContent', 'forceShow'));\n                    return;\n                }\n                this.cancel();\n            },\n            this.root\n        );\n    }\n\n    open() {\n        const otherModalEl = document.querySelector(this._mod('open', true));\n        if (otherModalEl) {\n            this.register.getClass(otherModalEl).close(true);\n            this.root.classList.add(this._mod('noTransition'));\n            this.root.classList.add(this._mod('open'));\n            this.root.offsetHeight;\n            this.root.classList.remove(this._mod('noTransition'));\n        } else {\n            this.root.classList.add(this._mod('open'));\n        }\n        this.page.setBlockScroll();\n        this._sendOpenEvent();\n    }\n\n    close(force = false) {\n        if (!force) {\n            this.root.classList.remove(this._mod('open'));\n        } else {\n            this.root.classList.add(this._mod('noTransition'));\n            this.root.classList.remove(this._mod('open'));\n            this.root.offsetHeight;\n            this.root.classList.remove(this._mod('noTransition'));\n        }\n        this.page.removeBlockScroll();\n        this._sendCloseEvent();\n    }\n\n    cancel() {\n        this._sendCancelEvent();\n        this.close();\n    }\n\n    isOpen() {\n        return this.root.classList.contains(this._mod('open'));\n    }\n\n    showRight() {\n        if (!this.rightContent.classList.contains(this._elMod('rightContent', 'forceShow')))\n            this.rightContent.classList.add(this._elMod('rightContent', 'forceShow'));\n    }\n\n    hideRight() {\n        this.rightContent.classList.remove(this._elMod('rightContent', 'forceShow'));\n    }\n\n    _sendOpenEvent() {\n        const event = new CustomEvent('rcModalOpen', { bubbles: true });\n        this.root.dispatchEvent(event);\n    }\n\n    _sendCloseEvent() {\n        const event = new CustomEvent('rcModalClose', { bubbles: true });\n        this.root.dispatchEvent(event);\n    }\n\n    _sendCancelEvent() {\n        const event = new CustomEvent('rcModalCancel', { bubbles: true });\n        this.root.dispatchEvent(event);\n    }\n\n    toggle() {\n        if (this.root.classList.contains(this._mod('open'))) {\n            this.close();\n        } else {\n            this.open();\n        }\n    }\n\n    getModalName() {\n        return this.modalName;\n    }\n}\n\n\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\nimport { animationEnd, nextTick } from '../../../../../libs/utils';\n\nexport default class Popup extends Component {\n    constructor(name, root) {\n        super(name, root);\n\n        this.register = getRegister();\n        this.page = this.register.getClass(document.querySelector('.rs1-page'));\n        this.popupName = this.root.dataset.name;\n        this.backdrop = this._dEl('backdrop');\n        this.content = this._dEl('content');\n\n        this.updateHeight();\n        this._addEventListeners();\n        if (this.root.dataset.defaultOpen == 'true') {\n            this._initDefaultOpen();\n        }\n    }\n\n    _addEventListeners() {\n        document.addEventListener('click', (event) => {\n            if (!event.target.matches(`[data-open-popup='${this.popupName}']`)) return;\n            event.preventDefault();\n            this.open();\n        });\n        this.backdrop.addEventListener('click', (event) => {\n            event.preventDefault();\n            this.cancel();\n        });\n        this.root.addEventListener('click', (event) => {\n            if (!event.target.matches('[data-close-popup]')) return;\n            event.preventDefault();\n            this.cancel();\n        });\n        window.addEventListener('resize', () => {\n            this.updateHeight();\n        });\n        document.addEventListener('scroll', () => {\n            this.updateHeight();\n        });\n    }\n\n    updateHeight() {\n        this.root.style.height = `${window.innerHeight}px`;\n    }\n\n    async open() {\n        this._sendBeforeOpenEvent();\n        this.root.classList.add(this._mod('open'));\n        this.page.setBlockScroll();\n        this.content.classList.add(this._elMod('content', 'animate'));\n        await animationEnd(this.content);\n        this.content.classList.remove(this._elMod('content', 'animate'));\n        this._sendOpenEvent();\n    }\n\n    isOpen() {\n        return this.root.classList.contains(this._mod('open'));\n    }\n\n    close() {\n        this.root.classList.remove(this._mod('open'));\n        this.page.removeBlockScroll();\n        this._sendCloseEvent();\n    }\n\n    cancel() {\n        this._sendCancelEvent();\n        this.close();\n    }\n\n    toggle() {\n        if (this.root.classList.contains(this._mod('open'))) {\n            this.close();\n        } else {\n            this.open();\n        }\n    }\n\n    getPopupName() {\n        return this.popupName;\n    }\n\n    _sendBeforeOpenEvent() {\n        const event = new CustomEvent('ecPopupBefore', { bubbles: true });\n        this.root.dispatchEvent(event);\n    }\n\n    _sendOpenEvent() {\n        const event = new CustomEvent('ecPopupOpen', { bubbles: true });\n        this.root.dispatchEvent(event);\n    }\n\n    _sendCloseEvent() {\n        const event = new CustomEvent('ecPopupClose', { bubbles: true });\n        this.root.dispatchEvent(event);\n    }\n\n    _sendCancelEvent() {\n        const event = new CustomEvent('ecPopupCancel', { bubbles: true });\n        this.root.dispatchEvent(event);\n    }\n\n    async _initDefaultOpen() {\n        await nextTick();\n        await this.open();\n    }\n}\n","import './style.scss';\nimport Component from '../../../../../libs/components/component';\nimport { getRegister } from '../../../../../libs/register';\n\nexport default class Loader extends Component {\n    constructor(name, root) {\n        super(name, root);\n        this.register = getRegister();\n        this.page = document.querySelector('.rs1-page');\n    }\n\n    open() {\n        this.root.classList.add(this._mod('show'));\n        this.root.setAttribute('aria-hidden', 'false');\n        const pageObj = this.register.getClass(this.page);\n        pageObj.setBlockScroll();\n    }\n\n    close() {\n        const pageObj = this.register.getClass(this.page);\n        pageObj.removeBlockScroll();\n        this.root.classList.remove(this._mod('show'));\n        this.root.setAttribute('aria-hidden', 'true');\n    }\n\n    isOpen() {\n        return this.root.classList.contains(this._mod('show'));\n    }\n}\n\nexport const getLoader = (name) => {\n    const id = `loader-${name}`;\n    const el = document.getElementById(id);\n    if (!el) return null;\n\n    return getRegister().getClass(el);\n};\n\n\n","///////////////////////////////////////////////////\n///////////////////////////////////////////////////\n///////////////////////////////////////////////////\n//////////////// STYLE\n///////////////////////////////////////////////////\n///////////////////////////////////////////////////\n///////////////////////////////////////////////////\nimport './style/tailwind.css';\nimport './style/global.scss';\nimport './style/themes/index.scss';\nimport './style/vendor.scss';\n\n/////////////////////////////////// ALPINE\nimport Alpine from 'alpinejs';\nimport intersect from '@alpinejs/intersect';\nimport collapse from '@alpinejs/collapse';\nimport { cDialogOn } from './extensions/directives/cdialogon';\n\n/////////////////////////////////// LIBRARIES SCRIPTS\nimport { register } from './libs/register';\nimport { flowManager } from './libs/flow-manager';\nimport { storeManager } from './libs/store-manager';\nimport { toastManager } from './libs/toast-manager';\n\n/////////////////////////////////// COMPONENTS SCRIPTS\nimport { registerAll } from './load-components';\n\n/////////////////////////////////// LOAD\nconst initTools = () => {\n    storeManager.checkInit(window.initialStore);\n    toastManager.listen();\n\n    // init alpine plugins\n    Alpine.plugin(intersect);\n    Alpine.plugin(collapse);\n    Alpine.directive('cdialogon', cDialogOn);\n};\n\nconst startRegister = () => {\n    register.apply(document.body);\n};\n\nconst startAlpine = () => {\n    // start Alpine!!!!\n    window.Alpine = Alpine;\n    Alpine.start();\n};\n\nconst startFlow = () => {\n    flowManager.checkInit(window.initialFlow);\n};\n\n(() => {\n    const start = new Date();\n    // if (process.env.NODE_ENV === 'development') {\n    //     console.log('[CRP] Starting dev-utils...');\n    //     const devUtils = await import('./libs/dev-utils');\n    //     await devUtils.default();\n    //     console.log('[CRP] 🔧 Variables loaded');\n    // }\n    console.log('[CRP] ⛵ Initializing tools... ', new Date().getTime() - start.getTime());\n    initTools();\n    console.log('[CRP] ⛵ Import components... ', new Date().getTime() - start.getTime());\n    registerAll();\n    console.log('[CRP] 🚂 Start Register... ', new Date().getTime() - start.getTime());\n    startRegister();\n    console.log('[CRP] 🚞 Start Alpine...', new Date().getTime() - start.getTime());\n    startAlpine();\n    console.log('[MYC] 🍕 Start Flow Manager...', new Date().getTime() - start.getTime());\n    startFlow();\n    console.log('[CRP] 🚀 Init Complete', new Date().getTime() - start.getTime());\n})();\n","import Alpine from 'alpinejs';\nimport { getRegister } from './libs/register';\n\n/* Atoms */\nimport './repository/apps/conad-corporate/templates/rt001-richtext/script.js';\nimport rt002 from './repository/apps/conad-corporate/templates/rt002-cta/script.js';\nimport rt003 from './repository/apps/conad-corporate/templates/rt003-checkbox/script.js';\nimport rt004 from './repository/apps/conad-corporate/templates/rt004-radio/script.js';\nimport rt005 from './repository/apps/conad-corporate/templates/rt005-toggle/script.js';\nimport rt006 from './repository/apps/conad-corporate/templates/rt006-tag/script.js';\nimport './repository/apps/conad-corporate/templates/rt007-label-mdd/script.js';\nimport rt008 from './repository/apps/conad-corporate/templates/rt008-text-field/script.js';\nimport rt009 from './repository/apps/conad-corporate/templates/rt009-date-picker/script.js';\nimport rt010 from './repository/apps/conad-corporate/templates/rt010-search-field/script.js';\nimport rt011 from './repository/apps/conad-corporate/templates/rt011-select/script.js';\nimport rt012 from './repository/apps/conad-corporate/templates/rt012-switch/script.js';\nimport rt013 from './repository/apps/conad-corporate/templates/rt013-step/script.js';\nimport rt014 from './repository/apps/conad-corporate/templates/rt014-file-upload/script.js';\nimport './repository/apps/conad-corporate/templates/rt015-badge/script.js';\nimport rt016 from './repository/apps/conad-corporate/templates/rt016-map-pin/script.js';\nimport rt017 from './repository/apps/conad-corporate/templates/rt017-accordion/script.js';\nimport rt018 from './repository/apps/conad-corporate/templates/rt018-textarea/script.js';\nimport rt019 from './repository/apps/conad-corporate/templates/rt019-status-dot/script.js';\nimport rt020 from './repository/apps/conad-corporate/templates/rt020-map-info-window/script.js';\nimport rt021 from './repository/apps/conad-corporate/templates/rt021-store-card/script.js';\nimport rt022 from './repository/apps/conad-corporate/templates/rt022-picture/script.js';\nimport rt023 from './repository/apps/conad-corporate/templates/rt023-insignia-card/script.js';\nimport rt024 from './repository/apps/conad-corporate/templates/rt024-strillo/script.js';\nimport rt025 from './repository/apps/conad-corporate/templates/rt025-search-alert/script.js';\nimport './repository/apps/conad-corporate/templates/rt026-category/script.js';\nimport rt027 from './repository/apps/conad-corporate/templates/rt027-paginator/script.js';\nimport rt028 from './repository/apps/conad-corporate/templates/rt028-dynamic-image/script.js';\nimport rt029 from './repository/apps/conad-corporate/templates/rt029-share-links/script.js';\nimport rt030 from './repository/apps/conad-corporate/templates/rt030-hotspot-card/script.js';\nimport rt031 from './repository/apps/conad-corporate/templates/rt031-filter/script.js';\nimport rt032 from './repository/apps/conad-corporate/templates/rt032-filter-popup/script.js';\nimport rt033 from './repository/apps/conad-corporate/templates/rt033-video/script.js';\nimport rt034 from './repository/apps/conad-corporate/templates/rt034-pin-code-field/script.js';\nimport rt035 from './repository/apps/conad-corporate/templates/rt035-tooltip/script.js';\nimport rt036 from './repository/apps/conad-corporate/templates/rt036-feedback/script.js';\nimport rt037 from './repository/apps/conad-corporate/templates/rt037-bookmark/script.js';\nimport rt038 from './repository/apps/conad-corporate/templates/rt038-category-filter/script.js';\nimport rt039 from './repository/apps/conad-corporate/templates/rt039-generic-tooltip/script.js';\nimport rt045 from './repository/apps/conad-corporate/templates/rt045-refresh-prize-coupon/script.js';\n\nexport const registerAtoms = () => {\n    const register = getRegister();\n\n    // register.registerClass('rt001-richtext', rt001Richtext);\n    register.registerClass('rt002-cta', rt002);\n    register.registerClass('rt003-checkbox', rt003);\n    register.registerClass('rt004-radio', rt004);\n    register.registerClass('rt005-toggle', rt005);\n    register.registerClass('rt006-tag', rt006);\n    // register.registerClass('rt007-label-mdd', rt007);\n    register.registerClass('rt008-text-field', rt008);\n    register.registerClass('rt009-date-picker', rt009);\n    register.registerClass('rt010-search-field', rt010);\n    register.registerClass('rt011-select', rt011);\n    register.registerClass('rt012-switch', rt012);\n    register.registerClass('rt013-step', rt013);\n    register.registerClass('rt014-file-upload', rt014);\n    // register.registerClass('rt015-badge', rt015);\n    register.registerClass('rt016-map-pin', rt016);\n    register.registerClass('rt017-accordion', rt017);\n    register.registerClass('rt018-textarea', rt018);\n    register.registerClass('rt019-status-dot', rt019);\n    register.registerClass('rt020-map-info-window', rt020);\n    register.registerClass('rt021-store-card', rt021);\n    register.registerClass('rt022-picture', rt022);\n    register.registerClass('rt023-insignia-card', rt023);\n    register.registerClass('rt024-strillo', rt024);\n    register.registerClass('rt025-search-alert', rt025);\n    // register.registerClass('rt026-category', rt026);\n    register.registerClass('rt027-paginator', rt027);\n    register.registerClass('rt028-dynamic-image', rt028);\n    register.registerClass('rt029-share-links', rt029);\n    register.registerClass('rt030-hotspot-card', rt030);\n    register.registerClass('rt031-filter', rt031);\n    register.registerClass('rt032-filter-popup', rt032);\n    register.registerClass('rt033-video', rt033);\n    register.registerClass('rt034-pin-code-field', rt034);\n    register.registerClass('rt035-tooltip', rt035);\n    register.registerClass('rt036-feedback', rt036);\n    register.registerClass('rt037-bookmark', rt037);\n    register.registerClass('rt038-category-filter', rt038);\n    register.registerClass('rt039-generic-tooltip', rt039);\n    register.registerClass('rt045-refresh-prize-coupon', rt045);\n};\n\n/* Layouts */\nimport rl1 from './repository/apps/conad-corporate/components/layout/rl1-layout/script.js';\nimport './repository/apps/conad-corporate/components/layout/rl2-anchors-layout/script.js';\n\nexport const registerLayouts = () => {\n    const register = getRegister();\n\n    register.registerClass('rl1-layout', rl1);\n    //register.registerClass('rl2-anchors-layout', rl2);\n};\n\n/* Structure */\nimport rt050 from './repository/apps/conad-corporate/templates/rt050-footer/script.js';\nimport rt051 from './repository/apps/conad-corporate/templates/rt051-header/script.js';\nimport rt052 from './repository/apps/conad-corporate/templates/rt052-store-locator/script.js';\nimport rt054 from './repository/apps/conad-corporate/templates/rt054-topbar/script.js';\nimport rt055 from './repository/apps/conad-corporate/templates/rt055-menu-dsk/script.js';\nimport rt056 from './repository/apps/conad-corporate/templates/rt056-menu-mob/script.js';\nimport rt057 from './repository/apps/conad-corporate/templates/rt057-store-header/script.js';\nimport rt058 from './repository/apps/conad-corporate/templates/rt058-store-info/script.js';\nimport rt059 from './repository/apps/conad-corporate/templates/rt059-advice/script.js';\nimport rt060 from './repository/apps/conad-corporate/templates/rt060-recipe/script.js';\nimport rt061 from './repository/apps/conad-corporate/templates/rt061-anchors/script.js';\nimport rt062 from './repository/apps/conad-corporate/templates/rt062-faq/script.js';\nimport rt063 from './repository/apps/conad-corporate/templates/rt063-contact-form/script.js';\nimport rt064 from './repository/apps/conad-corporate/templates/rt064-filters/script.js';\nimport rt065 from './repository/apps/conad-corporate/templates/rt065-form-premio/script.js';\nimport './repository/apps/conad-corporate/templates/rt066-result-premio/script.js';\nimport rt066 from './repository/apps/conad-corporate/templates/rt066-result-premio/script.js';\nimport rt067 from './repository/apps/conad-corporate/templates/rt067-plays-premio/script.js';\nimport rt068 from './repository/apps/conad-corporate/templates/rt068-search-results/script.js';\nimport rt069 from './repository/apps/conad-corporate/templates/rt069-search-bar/script.js';\nimport './repository/apps/conad-corporate/templates/rt070-contact-heading/script.js';\nimport rt073 from './repository/apps/conad-corporate/templates/rt073-assicurazioni-form/script.js';\nimport rt074 from './repository/apps/conad-corporate/templates/rt074-in-this-store/script.js';\n\nexport const registerStructures = () => {\n    const register = getRegister();\n\n    register.registerClass('rt050-footer', rt050);\n    register.registerClass('rt051-header', rt051);\n    register.registerClass('rt052-store-locator', rt052);\n    register.registerClass('rt054-topbar', rt054);\n    register.registerClass('rt055-menu-dsk', rt055);\n    register.registerClass('rt056-menu-mob', rt056);\n    register.registerClass('rt057-store-header', rt057);\n    register.registerClass('rt058-store-info', rt058);\n    register.registerClass('rt059-advice', rt059);\n    register.registerClass('rt060-recipe', rt060);\n    register.registerClass('rt061-anchors', rt061);\n    register.registerClass('rt062-faq', rt062);\n    register.registerClass('rt063-contact-form', rt063);\n    register.registerClass('rt064-filters', rt064);\n    register.registerClass('rt065-form-premio', rt065);\n    register.registerClass('rt066-result-premio', rt066);\n    register.registerClass('rt067-plays-premio', rt067);\n    register.registerClass('rt068-search-results', rt068);\n    register.registerClass('rt069-search-bar', rt069);\n    // register.registerClass('rt070-contact-heading', rt070);\n    register.registerClass('rt073-assicurazioni-form', rt073);\n    Alpine.data('inThisStore', rt074);\n};\n\n/* Components */\nimport rt100Hero from './repository/apps/conad-corporate/templates/rt100-hero-carta/script.js';\nimport rt100 from './repository/apps/conad-corporate/templates/rt100-hero/script.js';\nimport rt101 from './repository/apps/conad-corporate/templates/rt101-thumb-slider/script.js';\nimport rt102fmf from './repository/apps/conad-corporate/templates/rt102-carrot-banner-fmf/script.js';\nimport rt102fsf from './repository/apps/conad-corporate/templates/rt102-carrot-banner-fsf/script.js';\nimport rt102Hmd from './repository/apps/conad-corporate/templates/rt102-carrot-banner-hmd/script.js';\nimport rt102hmf from './repository/apps/conad-corporate/templates/rt102-carrot-banner-hmf/script.js';\nimport rt102hsd from './repository/apps/conad-corporate/templates/rt102-carrot-banner-hsd/script.js';\nimport rt102hsf from './repository/apps/conad-corporate/templates/rt102-carrot-banner-hsf/script.js';\nimport rt102 from './repository/apps/conad-corporate/templates/rt102-carrot-banner/script.js';\nimport './repository/apps/conad-corporate/templates/rt103-categories-map/script.js';\nimport './repository/apps/conad-corporate/templates/rt104-service-banner/script.js';\nimport './repository/apps/conad-corporate/templates/rt105-collector/script.js';\nimport rt106 from './repository/apps/conad-corporate/templates/rt106-lancio/script.js';\nimport rt107 from './repository/apps/conad-corporate/templates/rt107-slider-mdd/script.js';\nimport rt108 from './repository/apps/conad-corporate/templates/rt108-select-store/script.js';\nimport rt109 from './repository/apps/conad-corporate/templates/rt109-container-card-text/script.js';\nimport rt110 from './repository/apps/conad-corporate/templates/rt110-italy-map/script.js';\nimport rt111 from './repository/apps/conad-corporate/templates/rt111-listing/script.js';\nimport rt112 from './repository/apps/conad-corporate/templates/rt112-associate-card-banner/script.js';\nimport rt113 from './repository/apps/conad-corporate/templates/rt113-italy-nav/script.js';\nimport './repository/apps/conad-corporate/templates/rt114-categories/script.js';\nimport rt115 from './repository/apps/conad-corporate/templates/rt115-ed-categories/script.js';\nimport './repository/apps/conad-corporate/templates/rt116-pub-banner/script.js';\nimport rt117 from './repository/apps/conad-corporate/templates/rt117-breadcrumb/script.js';\nimport rt118 from './repository/apps/conad-corporate/templates/rt118-slider-card-elev-editorial/script.js';\nimport rt119 from './repository/apps/conad-corporate/templates/rt119-slider-card-elev-news/script.js';\nimport rt120 from './repository/apps/conad-corporate/templates/rt120-slider-card-elev-recipes/script.js';\nimport rt121 from './repository/apps/conad-corporate/templates/rt121-slider-card-elev-contents/script.js';\nimport rt122 from './repository/apps/conad-corporate/templates/rt122-slider-card-text/script.js';\nimport './repository/apps/conad-corporate/templates/rt123-container-card-services/script.js';\nimport rt124 from './repository/apps/conad-corporate/templates/rt124-slider-card-elev-brands/script.js';\nimport rt125 from './repository/apps/conad-corporate/templates/rt125-banner-carousel/script.js';\nimport rt126 from './repository/apps/conad-corporate/templates/rt126-slider-card-spec-stores/script.js';\nimport rt127 from './repository/apps/conad-corporate/templates/rt127-slider-card-lanci/script.js';\nimport './repository/apps/conad-corporate/templates/rt128-cards-icon-text/script.js';\nimport rt129 from './repository/apps/conad-corporate/templates/rt129-strillo-booking/script.js';\nimport rt130 from './repository/apps/conad-corporate/templates/rt130-strillo-icon-text-link/script.js';\nimport rt131 from './repository/apps/conad-corporate/templates/rt131-strillo-specialized-store/script.js';\nimport rt132 from './repository/apps/conad-corporate/templates/rt132-login-banner/script.js';\nimport rt174 from './repository/apps/conad-corporate/templates/rt174-embedded-flyer/script.js';\nimport './repository/apps/conad-corporate/templates/rt134-cookie-settings/script.js';\nimport rt135 from './repository/apps/conad-corporate/templates/rt135-insieme-cards-banner-cta/script.js';\nimport './repository/apps/conad-corporate/templates/rt136-strillo-icon-richtext/script.js';\nimport './repository/apps/conad-corporate/templates/rt137-strillo-app/script.js';\nimport './repository/apps/conad-corporate/templates/rt138-richtext-section/script.js';\nimport rt139 from './repository/apps/conad-corporate/templates/rt139-hero-collection/script.js';\nimport rt140 from './repository/apps/conad-corporate/templates/rt140-hero-premio/script.js';\nimport rt141 from './repository/apps/conad-corporate/templates/rt141-slider-card-premi/script.js';\nimport rt142 from './repository/apps/conad-corporate/templates/rt142-container-card-premi/script.js';\nimport rt143 from './repository/apps/conad-corporate/templates/rt143-container-card-nearby/script.js';\nimport './repository/apps/conad-corporate/templates/rt144-slider-label-mdd/script.js';\nimport rt145form from './repository/apps/conad-corporate/templates/rt145-map-search-stores-form/script.js';\nimport rt145 from './repository/apps/conad-corporate/templates/rt145-map-search-stores/script.js';\nimport './repository/apps/conad-corporate/templates/rt146-ingredients-actions/script.js';\nimport rt147 from './repository/apps/conad-corporate/templates/rt147-two-columns-card-services/script.js';\nimport rt148 from './repository/apps/conad-corporate/templates/rt148-strillo-initiative/script.js';\nimport rt149 from './repository/apps/conad-corporate/templates/rt149-search-stores/script.js';\nimport rt153 from './repository/apps/conad-corporate/templates/rt153-banner-image/script.js';\nimport rt154 from './repository/apps/conad-corporate/templates/rt154-update-data-refresh/script.js';\nimport rt155 from './repository/apps/conad-corporate/templates/rt155-thankyou-simple-image-text/script.js';\nimport rt156form from './repository/apps/conad-corporate/templates/rt156-excel-to-map-search-stores-form/script.js';\nimport rt156 from './repository/apps/conad-corporate/templates/rt156-excel-to-map-search-stores/script.js';\nimport './repository/apps/conad-corporate/templates/rt157-cards-faq/script.js';\nimport rt158 from './repository/apps/conad-corporate/templates/rt158-after-policy-activation/script.js';\nimport rt159 from './repository/apps/conad-corporate/templates/rt159-strillo-icon-text-link/script.js';\nimport rt160 from './repository/apps/conad-corporate/templates/rt160-strillo-collection/script.js';\nimport rt161 from './repository/apps/conad-corporate/templates/rt161-embedded-widget/script.js';\nimport cardSliderPremiConcorso from './repository/apps/conad-corporate/templates/rt162-card-slider-premi-concorso/script.js';\nimport rt163 from './repository/apps/conad-corporate/templates/rt163-store-flyers/script.js';\nimport rt164 from './repository/apps/conad-corporate/templates/rt164-card-gallery/script.js';\nimport rt165 from './repository/apps/conad-corporate/templates/rt165-container-card-benefits/script.js';\nimport rt166 from './repository/apps/conad-corporate/templates/rt166-switch-tab-promotions/script.js';\nimport rt168 from './repository/apps/conad-corporate/templates/rt168-pdv-select/script.js';\nimport rt169 from './repository/apps/conad-corporate/templates/rt169-strillo-superbollini-balance/script.js';\nimport balanceBanner from './repository/apps/conad-corporate/templates/rt170-strillo-collection-wrapper/partials/balance-banner.js';\nimport rt170 from './repository/apps/conad-corporate/templates/rt170-strillo-collection-wrapper/script.js';\nimport rt171 from './repository/apps/conad-corporate/templates/rt171-rollout-dettaglio-premio/script.js';\nimport progressBanner from './repository/apps/conad-corporate/templates/rt171-rollout-dettaglio-premio/partials/progress-banner.js';\nimport rt172 from './repository/apps/conad-corporate/templates/rt172-buoni-community-balance/script.js';\nimport './repository/apps/conad-corporate/templates/rt173-news-product-recall/script.js';\nimport rt175 from './repository/apps/conad-corporate/templates/rt175-store-flyer-redirect/script.js';\n\nexport const registerContents = () => {\n    const register = getRegister();\n\n    register.registerClass('rt100-hero', rt100);\n    register.registerClass('rt100-hero-carta', rt100Hero);\n    register.registerClass('rt101-thumb-slider', rt101);\n    register.registerClass('rt102-carrot-banner', rt102);\n    register.registerClass('rt102-carrot-banner-hmd', rt102Hmd);\n    register.registerClass('rt102-carrot-banner-hsd', rt102hsd);\n    register.registerClass('rt102-carrot-banner-hmf', rt102hmf);\n    register.registerClass('rt102-carrot-banner-hsf', rt102hsf);\n    register.registerClass('rt102-carrot-banner-fmf', rt102fmf);\n    register.registerClass('rt102-carrot-banner-fsf', rt102fsf);\n    // register.registerClass('rt103-categories-map', rt103);\n    // register.registerClass('rt104-service-banner', rt104);\n    // register.registerClass('rt105-collector', rt105);\n    register.registerClass('rt106-lancio', rt106);\n    register.registerClass('rt107-slider-mdd', rt107);\n    register.registerClass('rt108-select-store', rt108);\n    register.registerClass('rt109-container-card-text', rt109);\n    register.registerClass('rt110-italy-map', rt110);\n    register.registerClass('rt111-listing', rt111);\n    register.registerClass('rt112-associate-card-banner', rt112);\n    register.registerClass('rt113-italy-nav', rt113);\n    // register.registerClass('rt114-categories', rt114);\n    register.registerClass('rt115-ed-categories', rt115);\n    register.registerClass('rt117-breadcrumb', rt117);\n    // register.registerClass('rt116-pub-banner', rt116);\n    register.registerClass('rt118-slider-card-elev-editorial', rt118);\n    register.registerClass('rt119-slider-card-elev-news', rt119);\n    register.registerClass('rt120-slider-card-elev-recipes', rt120);\n    register.registerClass('rt121-slider-card-elev-contents', rt121);\n    register.registerClass('rt122-slider-card-text', rt122);\n    // register.registerClass('rt123-container-card-services', rt123);\n    register.registerClass('rt124-slider-card-elev-brands', rt124);\n    register.registerClass('rt125-banner-carousel', rt125);\n    register.registerClass('rt126-slider-card-spec-stores', rt126);\n    register.registerClass('rt127-slider-card-lanci', rt127);\n    // register.registerClass('rt128-cards-icon-text', rt128);\n    register.registerClass('rt129-strillo-booking', rt129);\n    // register.registerClass('rt130-strillo-icon-text-link', rt130);\n    Alpine.data('strilloIconTextLink', rt130);\n    register.registerClass('rt131-strillo-specialized-store', rt131);\n    register.registerClass('rt132-login-banner', rt132);\n    register.registerClass('rt174-embedded-flyer', rt174);\n    register.registerClass('rt175-store-flyer-redirect', rt175);\n    // register.registerClass('rt134-cookie-settings', rt134);\n    register.registerClass('rt135-insieme-cards-banner-cta', rt135);\n    // register.registerClass('rt136-strillo-icon-richtext', rt136);\n    // register.registerClass('rt137-strillo-app', rt137);\n    // register.registerClass('rt138-richtext-section', rt138);\n    register.registerClass('rt139-hero-collection', rt139);\n    register.registerClass('rt140-hero-premio', rt140);\n    register.registerClass('rt141-slider-card-premi', rt141);\n    register.registerClass('rt142-container-card-premi', rt142);\n    register.registerClass('rt143-container-card-nearby', rt143);\n    // register.registerClass('rt144-slider-label-mdd', rt144);\n    register.registerClass('rt145-map-search-stores', rt145);\n    register.registerClass('rt145-map-search-stores-form', rt145form);\n    // register.registerClass('rt146-ingredients-actions', rt146);\n    register.registerClass('rt147-two-columns-card-services', rt147);\n    Alpine.data('strilloInitiative', rt148); \n    register.registerClass('rt149-search-stores', rt149);\n    register.registerClass('rt153-banner-image', rt153);\n    register.registerClass('rt154-update-data-refresh', rt154);\n    register.registerClass('rt155-thankyou-simple-image-text', rt155);\n    register.registerClass('rt156-excel-to-map-search-stores', rt156);\n    register.registerClass('rt156-excel-to-map-search-stores-form', rt156form);\n    // register.registerClass('rt157-cards-faq', rt157);\n    register.registerClass('rt158-after-policy-activation', rt158);\n    register.registerClass('rt159-strillo-icon-text-link', rt159);\n    register.registerClass('rt160-strillo-collection', rt160);\n    register.registerClass('rt161-embedded-widget', rt161);\n    Alpine.data('cardSliderPremiConcorso', cardSliderPremiConcorso);\n    register.registerClass('rt163-store-flyers', rt163);\n    Alpine.data('cardGallery', rt164);\n    Alpine.data('containerCardBenefits', rt165);\n    Alpine.data('switchTabPromotions', rt166);\n    Alpine.data('pdvSelect', rt168);\n    Alpine.data('strilloSuperbolliniBalance', rt169);\n    Alpine.data('strilloCollectionWrapper', rt170);\n    Alpine.data('rolloutDettaglioPremio', rt171);\n    Alpine.data('balanceBanner', balanceBanner);\n    Alpine.data('progressBanner', progressBanner);\n    Alpine.data('buoniCommunityBalance', rt172);\n};\n\n/* Cards */\nimport './repository/apps/conad-corporate/templates/rt200-card-elev-editorial/script.js';\nimport './repository/apps/conad-corporate/templates/rt201-card-elev-news/script.js';\nimport rt202 from './repository/apps/conad-corporate/templates/rt202-card-elev-recipes/script.js';\nimport './repository/apps/conad-corporate/templates/rt203-card-elev-contents/script.js';\nimport './repository/apps/conad-corporate/templates/rt204-card-text/script.js';\nimport './repository/apps/conad-corporate/templates/rt205-card-elev-brands/script.js';\nimport './repository/apps/conad-corporate/templates/rt206-card-services/script.js';\nimport './repository/apps/conad-corporate/templates/rt207-big-article/script.js';\nimport './repository/apps/conad-corporate/templates/rt208-small-articles/script.js';\nimport './repository/apps/conad-corporate/templates/rt209-card-product-mdd/script.js';\nimport './repository/apps/conad-corporate/templates/rt210-card-spec-stores/script.js';\nimport './repository/apps/conad-corporate/templates/rt211-card-lanci/script.js';\nimport './repository/apps/conad-corporate/templates/rt212-card-lancio/script.js';\nimport rt213 from './repository/apps/conad-corporate/templates/rt213-card-product-flyer/script.js';\nimport './repository/apps/conad-corporate/templates/rt214-card-mdd/script.js';\nimport rt215 from './repository/apps/conad-corporate/templates/rt215-card-flyer/script.js';\nimport './repository/apps/conad-corporate/templates/rt216-card-icon-text/script.js';\nimport rt217 from './repository/apps/conad-corporate/templates/rt217-card-banner/script.js';\nimport rt218 from './repository/apps/conad-corporate/templates/rt218-card-premi/script.js';\nimport './repository/apps/conad-corporate/templates/rt219-fuel-card/script.js';\nimport './repository/apps/conad-corporate/templates/rt220-card-nearby/script.js';\nimport './repository/apps/conad-corporate/templates/rt221-card-page/script.js';\nimport rt224 from './repository/apps/conad-corporate/templates/rt224-card-promo/script.js';\nimport cardPromotion from './repository/apps/conad-corporate/templates/rt225-card-spec-stores/card-promotion.js';\nimport rt225 from './repository/apps/conad-corporate/templates/rt225-card-spec-stores/script.js';\nimport cardPremioConcorso from './repository/apps/conad-corporate/templates/rt257-card-premio-concorso/script.js';\n\nexport const registerCards = () => {\n    const register = getRegister();\n\n    // register.registerClass('rt200-card-elev-editorial', rt200);\n    // register.registerClass('rt201-card-elev-news', rt201);\n    register.registerClass('rt202-card-elev-recipes', rt202);\n    // register.registerClass('rt203-card-elev-contents', rt203);\n    // register.registerClass('rt204-card-text', rt204);\n    // register.registerClass('rt205-card-elev-brands', rt205);\n    // register.registerClass('rt206-card-services', rt206);\n    // register.registerClass('rt207-big-article', rt207);\n    // register.registerClass('rt208-small-articles', rt208);\n    // register.registerClass('rt209-card-product-mdd', rt209);\n    // register.registerClass('rt210-card-spec-stores', rt210);\n    // register.registerClass('rt211-card-lanci', rt211);\n    // register.registerClass('rt212-card-lancio', rt212);\n    register.registerClass('rt213-card-product-flyer', rt213);\n    // register.registerClass('rt214-card-mdd', rt214);\n    register.registerClass('rt215-card-flyer', rt215);\n    // register.registerClass('rt216-card-icon-text', rt216);\n    register.registerClass('rt217-card-banner', rt217);\n    // register.registerClass('rt218-card-premi', rt218);\n    // register.registerClass('rt219-fuel-card', rt219);\n    // register.registerClass('rt220-card-nearby', rt220);\n    // register.registerClass('rt221-card-page', rt221);\n\n    Alpine.data('cardPremioConcorso', cardPremioConcorso);\n    Alpine.data('cardPremi', rt218);\n    Alpine.data('cardPromo', rt224);\n    Alpine.data('cardSpecStoresV2', rt225);\n    Alpine.data('cardPromotion', cardPromotion); \n};\n\n/* Modals */\nimport rt250 from './repository/apps/conad-corporate/templates/rt250-select-pos-step1/script.js';\nimport rt251map from './repository/apps/conad-corporate/templates/rt251-select-pos-step2-map/script.js';\nimport rt251 from './repository/apps/conad-corporate/templates/rt251-select-pos-step2/script.js';\nimport rt252 from './repository/apps/conad-corporate/templates/rt252-pos-list/script.js';\nimport rt253 from './repository/apps/conad-corporate/templates/rt253-store-locator-filters/script.js';\nimport rt254 from './repository/apps/conad-corporate/templates/rt254-filters/script.js';\nimport rt256 from './repository/apps/conad-corporate/templates/rt256-error/script.js';\nimport rt259 from './repository/apps/conad-corporate/templates/rt259-user-benefits/script.js';\n\nexport const registerModals = () => {\n    const register = getRegister();\n\n    register.registerClass('rt250-select-pos-step1', rt250);\n    register.registerClass('rt251-select-pos-step2', rt251);\n    register.registerClass('rt251-select-pos-step2-map', rt251map);\n    register.registerClass('rt252-pos-list', rt252);\n    register.registerClass('rt253-store-locator-filters', rt253);\n    register.registerClass('rt254-filters', rt254);\n    register.registerClass('rt256-error', rt256);\n    \n    Alpine.data('userBenefitsModal', rt259);\n};\n\n/* Popups */\nimport rt300 from './repository/apps/conad-corporate/templates/rt300-login-popup/script.js';\nimport rt301 from './repository/apps/conad-corporate/templates/rt301-books-reservation/script.js';\nimport rt302 from './repository/apps/conad-corporate/templates/rt302-add-store-popup/script.js';\nimport rt303 from './repository/apps/conad-corporate/templates/rt303-refresh-c-popup/script.js';\nimport rt304 from './repository/apps/conad-corporate/templates/rt304-refresh-confirm-popup/script.js';\nimport rt305 from './repository/apps/conad-corporate/templates/rt305-refresh-prize-choice/script.js';\nimport rt306 from './repository/apps/conad-corporate/templates/rt306-excel-to-map-card-details-popup/script.js';\nimport rt307 from './repository/apps/conad-corporate/templates/rt307-ean-collection-popup/script.js';\nimport rt308 from './repository/apps/conad-corporate/templates/rt308-cardista-ante-c-plus-popup/script.js';\nimport rt309 from './repository/apps/conad-corporate/templates/rt309-generic-popup/script.js';\n\nexport const registerPopups = () => {\n    const register = getRegister();\n\n    register.registerClass('rt300-login-popup', rt300);\n    register.registerClass('rt301-books-reservation', rt301);\n    register.registerClass('rt302-add-store-popup', rt302);\n    register.registerClass('rt303-refresh-c-popup', rt303);\n    register.registerClass('rt304-refresh-confirm-popup', rt304);\n    register.registerClass('rt305-refresh-prize-choice', rt305);\n    register.registerClass('rt306-excel-to-map-card-details-popup', rt306);\n\n    Alpine.data('rt307', rt307);\n    Alpine.data('cardistaAnteCPlus', rt308);\n    Alpine.data('genericPopup', rt309);\n};\n\n/* Page */\nimport rs1 from './repository/apps/conad-corporate/components/structure/rs1-page/script.js';\n\nexport const registerPages = () => {\n    const register = getRegister();\n\n    register.registerClass('rs1-page', rs1);\n};\n\n/* RU - Modal, popups and loaders */\nimport ru002 from './repository/apps/conad-corporate/templates/ru002-modal/script.js';\nimport ru003 from './repository/apps/conad-corporate/templates/ru003-popup/script.js';\nimport ru004 from './repository/apps/conad-corporate/templates/ru004-loader/script.js';\n\nexport const registerOthers = () => {\n    const register = getRegister();\n\n    register.registerClass('ru002-modal', ru002);\n    register.registerClass('ru003-popup', ru003);\n    register.registerClass('ru004-loader', ru004);\n};\n\nexport const registerAll = () => {\n    registerAtoms();\n    registerCards();\n    registerContents();\n    registerLayouts();\n    registerModals();\n    registerOthers();\n    registerPopups();\n    registerStructures();\n    registerPages();\n};\n"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","require","ensureCallable","fn","TypeError","byObserver","Observer","queue","currentQueue","node","document","createTextNode","i","callback","concat","data","shift","length","observe","characterData","push","module","exports","process","nextTick","queueMicrotask","cb","MutationObserver","WebKitMutationObserver","setImmediate","setTimeout","define","numeral","suffixes","register","delimiters","thousands","decimal","abbreviations","thousand","million","billion","trillion","ordinal","number","currency","symbol","b","remainder","a","_","binary","unformatRegex","formats","locales","defaults","currentLocale","zeroFormat","nullFormat","defaultFormat","scalePercentBy100","options","Numeral","input","this","_input","_value","value","kind","unformatFunction","regexp","isNumeral","isNaN","replace","regexps","unformat","match","stringToNumber","Number","version","obj","numberToFormat","format","roundingFunction","abbrForce","abs","int","precision","signed","output","leadingCount","locale","negP","optDec","abbr","neg","Math","includes","indexOf","RegExp","toString","split","toFixed","slice","String","string","abbreviation","stringOriginal","pow","min","search","insert","subString","start","reduce","array","t","Object","len","k","arguments","multiplier","x","parts","correctionFactor","Array","prototype","call","accum","next","mn","maxDecimals","optionals","boundedPrecision","optionalsRegExp","power","splitValue","minDecimals","max","key","toLowerCase","localeData","Error","reset","property","type","name","validate","val","culture","_decimalSep","_thousandSep","_currSymbol","_valArray","_abbrObj","_thousandRegEx","temp","console","warn","trim","e","substr","clone","inputString","formatFunction","round","set","add","corrFactor","curr","currI","O","subtract","multiply","divide","difference","space","splice","join","base","filter","item","bytes","suffix","bytesMultiplier","symbols","before","after","toExponential","hours","floor","minutes","seconds","timeArray","get","element","getComputedStyle","style","div","className","createElement","elMatches","Element","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","query","remove","parentNode","removeChild","queryChildren","selector","children","child","cls","main","rtl","thumb","rail","consuming","state","focus","clicking","active","scrolling","scrollingClassTimeout","y","addScrollingClass","classList","contains","clearTimeout","removeScrollingClass","isAlive","settings","scrollingThreshold","EventElement","handlers","bind","eventName","handler","addEventListener","unbind","target","this$1","removeEventListener","unbindAll","prototypeAccessors","isEmpty","keys","every","EventManager","eventElements","createEvent","window","CustomEvent","evt","initCustomEvent","undefined","processScrollDiff","axis","diff","useScrollingClass","forceFireReachEvent","fields","ref","reach","scrollTop","contentHeight","containerHeight","dispatchEvent","up","down","setScrollingClassInstantly","processScrollDiff$1","toInt","parseInt","eventElement","ee","forEach","once","onceHandler","env","isWebKit","documentElement","supportsTouch","navigator","maxTouchPoints","DocumentTouch","supportsIePointer","msMaxTouchPoints","isChrome","test","userAgent","updateGeometry","roundedScrollTop","rect","getBoundingClientRect","containerWidth","width","height","contentWidth","scrollWidth","scrollHeight","scrollbarXRail","el","appendChild","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","scrollbarXLeft","negativeScrollAdjustment","scrollLeft","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","isRtl","left","isScrollbarXUsingBottom","bottom","scrollbarXBottom","top","scrollbarXTop","yRailOffset","isScrollbarYUsingRight","right","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","thumbSize","minScrollbarLength","maxScrollbarLength","bindMouseScrollHandler","startingScrollTop","startingMousePageY","scrollBy","mouseMoveHandler","touches","pageY","stopPropagation","startsWith","changedTouches","preventDefault","mouseUpHandler","event","ownerDocument","bindMoves","touchMode","direction","pageYOffset","pageX","pageXOffset","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","deltaX","deltaY","which","metaKey","altKey","shiftKey","wheelPropagation","shouldPreventDefault","mousewheelHandler","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","querySelector","cursor","overflowY","maxScrollTop","clientHeight","overflowX","maxScrollLeft","clientWidth","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","offsetHeight","isLeft","isRight","offsetWidth","ctrlKey","onwheel","onmousewheel","startOffset","startTime","speed","easingLoop","touchStart","touchMove","touchEnd","PointerEvent","MSPointerEvent","applyTouchMove","differenceX","differenceY","getTouch","targetTouches","shouldHandle","pointerType","buttons","MSPOINTER_TYPE_MOUSE","touch","Date","getTime","clearInterval","currentOffset","currentTime","timeGap","magnitudeX","magnitudeY","scrollY","swipeEasing","setInterval","isInitialized","PerfectScrollbar","userSettings","nodeName","result","originalScrollLeft","blur","isNegativeScroll","setAttribute","railXStyle","borderLeftWidth","borderRightWidth","display","marginLeft","marginRight","railYStyle","styles","paddingLeft","paddingRight","outerWidth","borderTopWidth","borderBottomWidth","marginTop","marginBottom","handlerName","lastScrollTop","lastScrollLeft","onScroll","update","destroy","removePsClasses","n","assign","hasOwnProperty","apply","o","devicePixelRatio","r","elements_selector","container","threshold","thresholds","data_src","data_srcset","data_sizes","data_bg","data_bg_hidpi","data_bg_multi","data_bg_multi_hidpi","data_bg_set","data_poster","class_applied","class_loading","class_loaded","class_error","class_entered","class_exited","unobserve_completed","unobserve_entered","cancel_on_exit","callback_enter","callback_exit","callback_applied","callback_loading","callback_loaded","callback_error","callback_finish","callback_cancel","use_native","restore_on_error","c","l","detail","instance","u","s","d","f","g","v","m","p","h","getAttribute","w","removeAttribute","A","L","C","N","M","z","llTempImage","T","_observer","unobserve","R","loadingCount","G","toLoadCount","j","D","H","V","F","B","J","P","S","U","$","q","K","Q","W","X","Y","IMG","IFRAME","VIDEO","load","OBJECT","Z","nn","tn","llEvLisnrs","en","on","an","rn","cn","ln","backgroundImage","map","un","sn","dn","_n","gn","HTMLImageElement","bn","querySelectorAll","pn","hn","En","_settings","IntersectionObserver","isIntersecting","intersectionRatio","vn","root","rootMargin","_onlineHandler","disconnect","loadAll","restoreAll","resetStatus","lazyLoadOptions","render","globals","args","$t","uniqueid","extraclasses","text","textisrich","nostyling","addcontainer","$n","dom","create","var_attrValue1","col","empty","attr","var_attrValue_id0","var_unwrapcondition2","var_3","xss","append","pop","template","run","end","label","icon","link","ctacolor","ctatextcolor","ctahovercolor","variant","size","status","enabledtype","semantictype","socialtype","arialabel","ctaid","exec","variantclass","typeclass","sizeclass","statusclass","enabledclass","semanticclass","socialclass","finalclasses","ctatextcolorstyle","ctabgcolorstyle","rem","var_tagVar4","var_attrMap5","var_mapContains_class8","var_attrValue9","var_mapContains_style11","var_attrValue12","var_mapContains_data_variant14","var_attrValue15","var_mapContains_data_status17","var_attrValue18","var_attrValue_cta_hover_color1","var_attrValue_x_ref2","var_attrValue_data_icon3","var_attrValue_aria_label6","var_ignoredAttributes19","var_attrIndex22","var_attrName20","var_attrNameEscaped21","var_attrContent23","var_attrValue25","var_attrValue26","var_attrValue27","var_attrValue28","var_29","var_attrValue31","var_attrValue32","rt2","message","var_attrValue0","var_2","tablelabels","scontrino","var_collectionVar1","init","var_size2","var_index3","listInfo","var_4","var_collectionVar5","var_size6","var_index7","var_8","var_collectionVar9","var_size10","var_index11","var_12","var_collectionVar13","var_size14","var_index15","var_16","var_collectionVar17","var_size18","var_index19","var_20","var_collectionVar21","var_size22","var_index23","var_24","title","subtitle","description","linklabel","jsonmodal","imgflw","var_attrValue2","typelabel","var_5","var_6","isCallable","tryToString","$TypeError","argument","$String","isPrototypeOf","it","Prototype","isObject","ArrayBuffer","DataView","NAME","Constructor","NATIVE_ARRAY_BUFFER","DESCRIPTORS","global","hasOwn","classof","createNonEnumerableProperty","defineBuiltIn","defineBuiltInAccessor","getPrototypeOf","setPrototypeOf","wellKnownSymbol","uid","InternalStateModule","enforceInternalState","enforce","getInternalState","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","proto","isTypedArray","klass","Function","configurable","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","KEY","forced","ARRAY","TypedArrayConstructor","error","error2","exportTypedArrayStaticMethod","isView","lengthOfArrayLike","list","index","toIndexedObject","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","fromIndex","IndexedObject","toObject","TYPE","IS_FIND_LAST_INDEX","callbackfn","that","self","boundFunction","findLast","findLastIndex","isArray","getOwnPropertyDescriptor","SILENT_ON_NON_WRITABLE_LENGTH_SET","defineProperty","writable","uncurryThis","toIntegerOrInfinity","$RangeError","RangeError","relativeIndex","actualIndex","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","$Object","CORRECT_ARGUMENTS","tag","tryGet","callee","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","source","exceptions","fails","constructor","createPropertyDescriptor","object","bitmap","enumerable","makeBuiltIn","descriptor","getter","setter","defineGlobalProperty","simple","unsafe","nonConfigurable","nonWritable","documentAll","all","IS_HTMLDDA","EXISTS","IndexSizeError","DOMStringSizeError","HierarchyRequestError","WrongDocumentError","InvalidCharacterError","NoDataAllowedError","NoModificationAllowedError","NotFoundError","NotSupportedError","InUseAttributeError","InvalidStateError","SyntaxError","InvalidModificationError","NamespaceError","InvalidAccessError","ValidationError","TypeMismatchError","SecurityError","NetworkError","AbortError","URLMismatchError","QuotaExceededError","TimeoutError","InvalidNodeTypeError","DataCloneError","Bun","Deno","versions","v8","$Error","TEST","stack","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","sham","NATIVE_BIND","FunctionPrototype","Reflect","aCallable","getDescriptor","PROPER","CONFIGURABLE","method","uncurryThisWithBind","namespace","isNullOrUndefined","func","check","globalThis","getBuiltIn","propertyIsEnumerable","dummy","Wrapper","NewTarget","NewTargetPrototype","store","functionToString","inspectSource","has","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","metadata","facade","STATE","getterFor","$documentAll","replacement","feature","detection","normalize","POLYFILL","NATIVE","USE_SYMBOL_AS_UID","$Symbol","toLength","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE_LENGTH","TEMPLATE","arity","ceil","trunc","$default","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","propertyIsEnumerableModule","internalObjectKeys","getOwnPropertyNames","getOwnPropertySymbols","CORRECT_PROTOTYPE_GETTER","IE_PROTO","names","$propertyIsEnumerable","NASHORN_BUG","uncurryThisAccessor","aPossiblePrototype","CORRECT_SETTER","__proto__","pref","valueOf","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ENGINE_IS_BUN","USER_AGENT","arraySlice","validateArgumentsLength","WRAP","scheduler","hasTimeArg","firstParamIndex","timeout","boundArgs","params","SHARED","IS_PURE","mode","copyright","license","V8_VERSION","Symbol","$location","defer","channel","port","html","IS_IOS","IS_NODE","clear","clearImmediate","Dispatch","MessageChannel","counter","ONREADYSTATECHANGE","location","id","runner","eventListener","globalPostMessageDefer","postMessage","protocol","host","now","port2","port1","onmessage","importScripts","integer","toPrimitive","prim","BigInt","requireObjectCoercible","isSymbol","getMethod","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","postfix","random","NATIVE_SYMBOL","iterator","passed","required","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","setArrayLength","doesNotExceedSafeInteger","properErrorOnNonWritableLength","argCount","deletePropertyOrThrow","unshift","to","ArrayBufferViewCore","$findLastIndex","predicate","$findLast","arrayToReversed","arrayFromConstructorAndList","sort","compareFn","arrayWith","isBigIntArray","toBigInt","PROPER_ORDER","actualValue","anInstance","inheritIfRequired","normalizeStringArgument","DOMExceptionConstants","clearErrorStack","DOM_EXCEPTION","NativeDOMException","$DOMException","DOMExceptionPrototype","argumentsLength","ERROR_HAS_STACK","DOM_EXCEPTION_HAS_STACK","BUGGY_DESCRIPTOR","FORCED_CONSTRUCTOR","DOMException","PolyfilledDOMException","PolyfilledDOMExceptionPrototype","constant","constantName","setTask","schedulersFix","URLSearchParamsPrototype","URLSearchParams","count","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__esModule","then","ns","def","definition","chunkId","Promise","promises","miniCssF","prop","url","done","script","needAttach","scripts","getElementsByTagName","charset","nc","src","onScriptComplete","prev","onerror","onload","doneFns","head","toStringTag","installedCssChunks","miniCss","resolve","reject","href","fullhref","existingLinkTags","dataHref","rel","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","err","code","request","createStylesheet","loadStylesheet","installedChunks","installedChunkData","promise","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","reactive","effect","release","raw","flushPending","flushing","lastFlushedIndex","dequeueJob","job","flushJobs","shouldSchedule","overrideEffect","override","watch","oldValue","firstTime","effectReference","JSON","stringify","onAttributeAddeds","onElRemoveds","onElAddeds","onElRemoved","_x_cleanups","onAttributesAdded","onAttributeRemoved","_x_attributeCleanups","cleanupAttributes","entries","_ref","observer","onMutate","currentlyObserving","startObservingMutations","subtree","childList","attributes","attributeOldValue","stopObservingMutations","records","takeRecords","queuedMutations","queueLengthWhenTriggered","flushObserver","mutateDom","isCollecting","deferredMutations","mutations","addedNodes","Set","removedNodes","addedAttributes","Map","removedAttributes","_x_ignoreMutationObserver","nodeType","attributeName","add2","hasAttribute","attrs","_x_ignoreSelf","_x_ignore","isConnected","scope","mergeProxies","closestDataStack","addScopeToNode","data2","referenceNode","_x_dataStack","ShadowRoot","objects","Proxy","mergeProxyTrap","_ref2","from","flatMap","_ref3","unscopables","_ref4","thisProxy","collapseProxies","find","_ref5","acc","initInterceptors","recurse","basePath","getOwnPropertyDescriptors","_ref6","__v_skip","path","_x_interceptor","initialize","interceptor","initialValue","carry","segment","innerValue","magics","magic","injectMagics","memoizedUtilities","utilities","cleanup2","getElementBoundUtilities","utils","getUtilities","_ref7","tryCatch","expression","_len","_key","handleError","shouldAutoEvaluateFunctions","dontAutoEvaluateFunctions","cache","evaluate","extras","evaluateLater","theEvaluatorFunction","normalEvaluator","overriddenMagics","dataStack","evaluator","receiver","scope2","runIfTypeOfFunction","generateEvaluatorFromFunction","evaluatorMemo","AsyncFunction","async","rightSideSafeExpression","safeAsyncFunction","func2","generateFunctionFromString","finished","completeScope","catch","finally","generateEvaluatorFromString","prefixAsString","prefix","directiveHandlers","directive","directive2","pos","directiveOrder","directives","originalAttributeOverride","_x_virtualDirectives","vAttributes","_ref8","staticAttributes","attributesOnly","attribute","transformedAttributeMap","directives2","toTransformedAttributes","newName","oldName","outNonAlpineAttributes","_ref12","typeMatch","alpineAttributeRegex","valueMatch","modifiers","original","toParsedDirectives","byPriority","handler4","noop","fullHandler","inline","isDeferringHandlers","directiveHandlerStacks","currentHandlerStackKey","runCleanups","getDirectiveHandler","cleanups","effect3","cleanupEffect","_x_effects","_x_runEffects","delete","elementBoundEffect","Alpine","alpine_default","cleanup","doCleanup","startingWith","subject","_ref9","_ref10","newValue","attributeTransformers","transform","mapAttributes","_ref11","DEFAULT","typeA","typeB","dispatch","bubbles","composed","cancelable","walk","el2","skip","firstElementChild","nextElementSibling","_len2","_key2","started","rootSelectorCallbacks","initSelectorCallbacks","rootSelectors","allSelectors","addRootSelector","selectorCallback","addInitSelector","closestRoot","includeInitSelectors","findClosest","_x_teleportBack","parentElement","initInterceptors2","initTree","walker","intercept","flushHandlers","handle","deferHandlingDirectives","destroyTree","cleanupElement","tickStack","isHolding","releaseNextTicks","res","setClasses","setClassesFromString","classObject","classString","Boolean","forAdd","_ref14","bool","forRemove","_ref15","added","removed","setClassesFromObject","classes","setStyles","previousStyles","_ref16","value2","setProperty","setStylesFromObject","setStylesFromString","fallback","called","registerTransitionObject","setFunction","defaultValue","_x_transition","enter","during","leave","in","transition","out","closestHide","parent","_x_hidePromise","undoStart","undoDuring","undoEnd","start2","_x_transitioning","cancel","stages","interrupted","reachedBefore","reachedEnd","finish","beforeCancels","beforeCancel","requestAnimationFrame","duration","transitionDuration","delay","transitionDelay","animationDuration","performTransition","modifierValue","rawValue","_ref17","_ref18","evaluate2","stage","registerTransitionsFromClassString","doesntSpecify","transitioningIn","transitioningOut","wantsAll","opacityValue","scaleValue","origin","durationIn","durationOut","easing","transformOrigin","transitionProperty","transitionTimingFunction","opacity","registerTransitionsFromHelper","_x_toggleAndCascadeWithTransitions","show","hide","nextTick2","visibilityState","clickAwayCompatibleShow","isFromCancelledTransition","closest","_x_hideChildren","hideAfterChildren","_ref19","isCloning","skipDuringClone","interceptors","interceptClone","isCloningLegacy","dontRegisterReactiveSideEffects","callback2","storedEffect","_x_bindings","char","toUpperCase","isRadio","fromModel","checked","safeParseBoolean","checkedAttrLooseCompare","isCheckbox","isInteger","arrayWrappedValue","option","selected","updateSelect","bindInputValue","_x_undoAddedStyles","bindStyles","_x_undoAddedClasses","bindClasses","bindAttribute","propName","setPropertyIfChanged","bindAttributeAndProperty","attributeShouldntBePreservedIfFalsy","isBooleanAttr","attrName","setIfChanged","valueA","valueB","booleanAttributes","getAttributeBinding","localName","debounce","wait","context","throttle","limit","inThrottle","entangle","_ref20","_ref21","outerHash","innerHash","outerGet","outerSet","innerGet","innerSet","firstRun","reference","outer","inner","cloneIfObject","outerHashLatest","innerHashLatest","parse","stores","isReactive","binds","applyBindingsObject","cleanupRunners","_ref23","datas","flushAndStopDeferringMutations","disableEffectScheduling","setReactivityEngine","engine","task","onlyDuringClone","deferMutations","interceptInit","setEvaluator","newEvaluator","extractProp","extract","_x_inlineBindings","binding","prefixed","newPrefix","plugin","body","_ref13","plugin2","selectors","oldEl","newEl","hasRunThroughFirstEl","shallowWalker","el3","isRoot","cloneTree","cloneNode","bound","$data","bindings","getBindings","makeMap","str","expectsLowerCase","activeEffect","EMPTY_OBJ","freeze","isMap","toTypeString","objectToString","toRawType","isIntegerKey","cacheStringFunction","camelizeRE","hyphenateRE","capitalize","charAt","hasChanged","targetMap","effectStack","ITERATE_KEY","MAP_KEY_ITERATE_KEY","deps","shouldTrack","trackStack","resetTracking","last","track","depsMap","dep","onTrack","trigger","oldTarget","effects","effectsToAdd","allowRecurse","key2","onTrigger","isNonTrackableKeys","builtInSymbols","get2","createGetter","readonlyGet","arrayInstrumentations","createArrayInstrumentations","instrumentations","arr","toRaw","_len3","_key3","_len4","_key4","isReadonly","shallow","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","isRef","readonly","reactive2","createSetter","hadKey","mutableHandlers","deleteProperty","readonlyHandlers","toReactive","toReadonly","toShallow","get$1","isShallow","rawTarget","rawKey","has2","wrap","has$1","set$1","get3","checkIdentityKeys","deleteEntry","hadItems","createForEach","thisArg","observed","createIterableMethod","targetIsMap","isPair","isKeyOnly","innerIterator","createReadonlyMethod","createInstrumentations","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","mutableInstrumentations","readonlyInstrumentations","shallowInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","mutableCollectionHandlers","readonlyCollectionHandlers","createReactiveObject","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","isExtensible","rawType","targetTypeMap","proxy","__v_isRef","_ref25","evaluateLater2","unwatch","_x_refs_proxy","refObjects","_x_refs","getArrayOfRefObject","globalIdMemo","findAndIncrementId","warnMissingPluginMagic","magicName","slug","_ref26","cacheKey","_x_id","cacheIdByNameOnElement","_x_ids","closestIdRoot","_ref27","_ref28","evaluateInnerSet","_x_model","_x_removeModelListeners","releaseEntanglement","_ref29","_ref30","getTarget","clone2","content","_x_teleport","_x_forwardEvents","placeInDom","clone3","target2","modifiers2","insertBefore","nextSibling","_x_teleportPutBack","teleportContainerDuringClone","listenerTarget","wrapHandler","wrapper","passive","capture","nextModifier","isNumeric","_x_isShown","isKeyEvent","isClickEvent","keyModifiers","debounceIndex","keyToModifiers","selectedSystemKeyModifiers","modifier","isListeningForASpecificKeyThatHasntBeenPressed","modifierToKeyMap","getInputValue","currentValue","safeParseNumber","multiple","selectedOptions","parseFloat","isGetterSetter","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","scopeTarget","evaluateSet","evaluateGet","getValue","setValue","removeListener","form","removeResetListener","_x_forceModelUpdate","isSameNode","_ref37","_ref38","_ref39","_ref40","textContent","_ref41","_ref42","innerHTML","handler2","_ref43","_ref44","bindingProviders","_ref22","_x_keyExpression","storeKeyForXFor","getIterationScopeVariables","iteratorNames","items","scopeVariables","collection","handler3","warnMissingPluginDirective","directiveName","_ref45","_ref46","_ref47","shouldSkipRegisteringDataDuringClone","magicContext","dataProviderContext","_ref24","reactiveData","undo","_ref48","_ref49","_x_doHide","_x_doShow","removeProperty","toggle","_ref50","_ref51","forIteratorRE","inMatch","iteratorMatch","parseForExpression","evaluateItems","evaluateKey","_x_prevKeys","_x_lookup","templateEl","lookup","prevKeys","scopes","_ref52","adds","moves","removes","sames","lastKey","prevIndex","keyInSpot","keyForSpot","elInSpot","elForSpot","marker","_x_currentIfEl","_x_refreshXForScope","lastKey2","lastEl","importNode","reactiveScope","newScope","_ref53","loop","values","_ref54","_ref55","_ref56","_ref57","_x_undoIf","_ref58","_ref59","setIdRoot","_ref60","_ref61","_isEffect","isEffect","createReactiveEffect","lazy","onStop","module_default","getThreshold","getLengthValue","getRootMargin","entry","collapse","fullyHide","hidden","overflow","revertFunction","transitionStyles","full","cDialogOn","evExpression","pm","evl","Dictionary","dictionary","_get","getDictionary","rcDictionary","DOMFactory","domImplementation","_impl","withKeepFragment","_keepFragment","_doc","createHTMLDocument","_isFragment","_root","createDocumentFragment","_usedNodes","doctype","firstChild","createComment","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","token","tokenValue","addSuffix","comparison","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","formatRelative","_date","_baseDate","_options","buildLocalizeFn","valuesArray","formattingValues","defaultWidth","defaultFormattingWidth","argumentCallback","localize","ordinalNumber","dirtyNumber","rem100","era","narrow","abbreviated","wide","quarter","month","day","short","dayPeriod","am","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findIndex","findKey","valueCallback","rest","buildMatchPatternFn","parseResult","parsePattern","any","buildFormatLongFn","enGB","formatLong","date","long","medium","time","dateTime","weekStartsOn","firstWeekContainsDate","toDate","argStr","NaN","defaultOptions","getDefaultOptions","startOfWeek","getDay","setDate","getDate","setHours","isSameWeek","dateLeft","dateRight","weekdays","thisWeek","baseDate","isValid","enUS","millisecondsInWeek","millisecondsInDay","startOfDay","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","constructFrom","getDayOfYear","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarDays","cleanDate","setFullYear","startOfYear","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getISOWeek","fourthOfJanuary","startOfISOWeekYear","getWeekYear","firstWeekOfNextYear","firstWeekOfThisYear","getWeek","firstWeek","startOfWeekYear","addLeadingZeros","targetLength","padStart","lightFormatters","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","formatters","unit","signedWeekYear","weekYear","week","I","isoWeek","dayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","offset","delimiter","sign","absOffset","dateLongFormatter","pattern","timeLongFormatter","longFormatters","datePattern","timePattern","dateTimeFormat","dayOfYearTokenRE","weekYearTokenRE","throwTokens","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","originalDate","substring","firstCharacter","longFormatter","isToken","cleanEscapedString","preprocessor","formatterOptions","part","useAdditionalWeekYearTokens","isProtectedWeekYearToken","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","_message","warnOrThrowProtectedError","formatter","matched","HTMLRuntime","_globals","_templates","_resourceLoader","_includeHandler","_dom","implementation","templates","opts","begin","step","ret","coerce","gen","withDomFactory","domFactory","withResourceLoader","withIncludeHandler","setGlobal","idx","nIdx","nSize","first","middle","odd","even","use","Mod","mod","baseObject","resource","uri","include","file","callable","group","arg0","fmt","argArray","dateFormat","defaultLocale","dateFF","runTemplate","htmlRuntime","tpl","runWithTemplate","getFirstChild","kindOf","thing","kindOfTest","typeOfTest","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isPlainObject","isDate","isFile","isBlob","isFileList","isURLSearchParams","allOwnKeys","_global","isContextDefined","isHTMLForm","isRegExp","reduceDescriptors","reducer","descriptors","reducedDescriptors","defineProperties","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","isBuffer","isFormData","FormData","isArrayBufferView","buffer","isBoolean","isStream","pipe","merge","caseless","assignValue","targetKey","extend","stripBOM","charCodeAt","inherits","superConstructor","props","toFlatObject","sourceObj","destObj","propFilter","merged","endsWith","searchString","position","lastIndex","toArray","forEachEntry","pair","matchAll","regExp","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","toCamelCase","p1","p2","toFiniteNumber","isFinite","generateString","alphabet","isSpecCompliantForm","toJSONObject","visit","reducedValue","isThenable","AxiosError","config","response","captureStackTrace","toJSON","fileName","lineNumber","columnNumber","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","dots","predicates","formData","metaTokens","indexes","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","isFlatArray","exposedHelpers","build","encode","charMap","encodeURIComponent","AxiosURLSearchParams","_pairs","toFormData","encoder","_encode","buildURL","serializeFn","serialize","serializedParams","hashmarkIndex","fulfilled","rejected","synchronous","runWhen","eject","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isBrowser","isStandardBrowserEnv","product","isStandardBrowserWebWorkerEnv","WorkerGlobalScope","protocols","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","transitional","transitionalDefaults","adapter","platform","isNode","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","helpers","toURLEncodedForm","formSerializer","_FormData","parser","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","parseHeaders","tokens","tokensRE","parseTokens","matcher","deleted","deleteHeader","normalized","formatHeader","targets","asStrings","computed","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","mapped","headerValue","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","write","expires","domain","secure","cookie","toGMTString","read","decodeURIComponent","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","msie","urlParsingNode","originURL","resolveURL","hash","hostname","pathname","requestURL","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","samplesCount","timestamps","firstSampleTS","tail","chunkLength","startedAt","bytesCount","speedometer","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","XMLHttpRequest","requestData","requestHeaders","onCanceled","cancelToken","unsubscribe","signal","auth","username","password","unescape","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","ERR_BAD_REQUEST","settle","responseText","statusText","open","paramsSerializer","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","withCredentials","isURLSameOrigin","cookies","setRequestHeader","onDownloadProgress","onUploadProgress","upload","abort","subscribe","aborted","parseProtocol","send","knownAdapters","http","xhr","xhrAdapter","adapters","nameOrAdapter","throwIfCancellationRequested","throwIfRequested","dispatchRequest","reason","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","validators","deprecatedWarnings","validator","formatMessage","opt","desc","ERR_DEPRECATED","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","InterceptorManager","configOrUrl","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","createInstance","defaultConfig","VERSION","Cancel","spread","isAxiosError","payload","formToJSON","getAdapter","default","ApiProvider","serviceLang","dataset","jsonLoader","baseUrl","urlMap","regolamentolink","privacyLink","cached","user","_doGet","_getEndpoint","getInformativa","cooperativa","ecommerce","card","conadPay","prepaidCard","ricaricabileCard","piuCard","insiemeCard","isGuestUser","informativeType","userType","thematic","initiative","_doCachedGet","getStoreFlyers","anacanId","associateComplementaryData","_doPost","removeComplementaryData","getComplementaryData","setPreferredStore","setSavedStore","removeSavedStore","customerCare","_doMultipartPost","policyActivation","unwrap","getPolicyStatus","cartaFedelta","sendPinCode","contestName","queryParams","getAppJwt","getFlyerProductById","productId","coopId","addDisFavoriteProduct","flyerCode","volantino","removeDisProduct","idProdottoNegozioUtente","getDisProduct","getPointOfServiceByAnacanId","retrievePointOfService","latitudine","longitudine","raggioRicerca","insegneId","serviziId","repartiId","apertura","province","nome","codice","comuni","provinciaId","getPlaysComp","getFirmaDigitale","firmaDigitale","editUserData","cognome","stato","dataNascita","comuneNascita","sesso","telefonoCellulare","telefonoFisso","indirizzo","numeroCivico","cap","citta","codiceProvincia","codiceFiscale","dataNascitaFiglio1","dataNascitaFiglio2","dataNascitaFiglio3","privacy1","privacy2","privacy3","privacyTZ","numeroComponentiNucleoFamiliare","dataNascitaConiuge","animaliDomestici","abitudiniAlimentariFamiglia","hobbyFamiglia","acquistiOnline","preferenzeComunicazioneNewsletter","preferenzeComunicazioneSoloPerTe","accessoMinisito","invioMailEstrattoContoConadCard","rendicontazioneConadCard","attivazioneServizioOnlineConadCard","versioneInformativaPrivacy","mailOcdb","emailOCDB","codiceCitta","codiceComuneNascita","codiceNazione","canaliDiContatto","negozioPreferito","changeEmailRequestV2","email","updateGccMail","getScontrino","getUserBalance","collectionCode","fidelityCard","getBuoniMovements","initiativeCodes","getDashboardCounts","excludeNotificationCount","getRegolamentoLink","coop","loaderGet","endpoint","newEndpoint","_doTextGet","textGet","post","_doBlobPost","failSilently","loc","localStorage","getItem","deserialized","setItem","_paramsToURLParams","urlParams","param","getApiProvider","rcApiProvider","BREAKPOINTS","xl","TIME_IN_MILLIS","TAG_QUERY_PARAM_NAME","PRIVATE_TAG_QUERY_PARAM_NAME","NEWS_FILTER_QUERY_PARAM_VALUE_PRODUCT_RECALL","NEWS_FILTER_QUERY_PARAM_VALUE_NEWS","TAG_QUERY_PARAM_ALLOWED_VALUES","buildWaitForEvent","HTMLElement","SVGElement","animationEnd","transitionEnd","ms","dNextTick","getNextSibling","elem","sibling","nodes","getClosestAll","closestOne","clo","htmlToElement","emptyElement","lastChild","isObjectEmpty","makeid","characters","isReferrerCurrentDomain","referrer","URL","info","calcTop","popHeight","calcLeft","popWidth","flyerData","flyer","validity","fullDateFormatter","Intl","DateTimeFormat","shortDateFormatter","dayFormatter","until","validFrom","validTo","eDate","sDate","computeFlyerValidity","downloadLink","pdfUrl","download","linkLabel","flyersData","rawData","volantini","generateShareLinks","ignoreSharers","extraClasses","shareLinksData","uniqueId","heading","shareUrl","shareTitle","shareLinksHtml","shareLinksTooltip","generateTooltip","tooltipData","tooltipHtml","tooltip","mergeDeep","sources","openLoader","loader","getElementById","loaderObj","getRegister","getClass","closeLoader","close","generateTrackVolantinoInfo","CooperativaVolantino","cooperative","feTitle","flyerFormat","generateTrackNegozioInfo","withServices","trackData","idNegozio","CooperativaNegozio","codiceCooperativa","Insegna","descrizioneInsegna","ServiziAggiuntivi","getCookieByName","mt","writeCookieWithName","loadStep","stepName","found","availableSteps","popups","modals","DOMParser","parseFromString","forceReflow","getZIndex","getPropertyValue","shuffleCards","cardsContainer","preserveHighlighted","allChildren","highlighted","others","shuffledOthersFragment","getScreenType","matchMedia","removeMainComponent","wcmmodeDisabled","rootParent","rcStoreManager","rootEl","initialized","cbs","checkInit","initialStore","st","emit","log","addListener","regex","fFn","pathChanged","newData","oldData","emitIncrement","_recLookup","emitDecrement","emitToggle","_recSetup","debug","nObj","iObj","waitInit","getStoreManager","storeManager","Component","listeners","storeListeners","getName","getRoot","getSelector","dispose","_removeAllListeners","_removeAllStoreListeners","_addListener","ev","events","_dEl","Document","Window","_addListenerTo","_emit","_emitIncrement","_emitDecrement","_emitToggle","_addStoreListener","_elMod","elName","_mod","_el","_dMod","_dElMod","_hideMainComponent","_showMainComponent","_removeMainComponent","MODALITY_SELECTOR","rcRegister","reg","modality","CMP_MODALITY","registerClass","cl","realName","_apply","endDate","elFirstClass","_applyTo","components","component","firstClass","applyTo","objReference","componentClazz","objCreating","reload","cmp","elements","defaultFlowManager","dataFlow","getFlowNameByStorePath","initialFlow","flowConf","startFlow","startAsyncFlow","flowName","flowSteps","initialData","onComplete","steps","stepConf","stepEl","stepObj","stepIndex","disableBack","currentFlow","_goTo","currentStep","_getFlowStorePath","backStack","flow","_getByName","_getStepIndex","back","tmpStep","backOrComplete","complete","appendDataToFlow","getDataFromFlow","getOptionsFromFlow","getCurrentFlowName","isOpen","_getState","currentStepIndex","backNames","action","rcFlowManager","getFlowManager","flowManager","TYPES","SEMANTIC","success","warning","defaultToastManager","pending","seq","listening","waitingDom","_onShowToast","listen","textOrOptions","extra","_normalize","_ensureContainer","_mount","_flushOnReady","dismiss","closing","_clearTimer","dismissAll","closable","existing","queued","_trim","semanticType","_pause","_resume","relatedTarget","timer","remaining","pauses","_arm","oldest","rcToastManager","toastManager","Cta","super","VARIANT","primary","secondary","tertiary","semantic","social","none","circle","square","SIZE","small","large","STATUS","enabled","disabled","ENABLED_TYPE","neutralDark","neutralLight","SEMANTIC_TYPE","SOCIAL_TYPE","google","facebook","apple","initialIcon","icons","ctaHoverColor","originalCtaColor","backgroundColor","_hover","setStatus","getStatus","_status","_resetEnabled","setSize","setIcon","iconEl","clazz","setLabel","translated","innerText","_enabledType","enabledType","_var","hoverColor","_applyAlpha","color","alpha","hex","num","ValidableComponent","VALID","ERROR","WARNING","_getInput","getInput","getLabel","placeholder","_changedInput","valid","checkValidity","setState","setCustomValidity","_checkState","trackFormError","errorText","errorField","Checkbox","_addEventListeners","click","_requireField","valueMissing","Radio","inputs","labels","emptyInput","groupLabel","_initEmptyInput","radio","enable","disable","Toggle","CHECKED","Tag","ICON","DISABLED","SELECTED","labelText","isSelected","select","sendChangedInputEvent","unselect","setDisabled","TextField","tooltipId","setTooltip","tooltipText","invalidFieldLabel","validationsMap","_readValidationsMap","_validationMessage","re","isDisabled","_invalidField","tooltipIcon","getTooltipId","DatePicker","currentYear","inputTitle","optional","showCalendar","_init","Datepicker","itModule","datepicker","showOnClick","showOnFocus","autohide","orientation","language","lang","_setAdditionalOptions","futureDisabled","setOptions","beforeShowDay","beforeShowMonth","beforeShowYear","beforeShowDecade","startView","_isDateValid","reverse","dd","mm","yyyy","leapYear","setRequired","getDefaultExportFromCjs","SuppressedError","isEqual","equal","flags","DEFAULT_ID","LoaderStatus","Loader","apiKey","authReferrerPolicy","client","libraries","mapIds","nonce","region","retries","callbacks","loading","errors","FAILURE","SUCCESS","LOADING","INITIALIZED","failed","createUrl","deleteScript","loadPromise","loadCallback","importLibrary","execute","maps","setScript","_a","_b","__awaiter","_arguments","generator","libraryPromises","library","ErrorEvent","loadErrorCallback","onerrorEvent","resetIfRetryingFailed","gMapsLoaded","GMapsHelper","gMapsApi","getGMaps","loadGMaps","getMarkerClusterer","MarkerClusterer","getGMapsHelper","rcGMapsHelper","MyConadApiProvider","myConadDomain","getMyConadApiProvider","mcApiProvider","UserService","apiProvider","myConadApiProvider","userLoadedReady","userLoaded","complementaryDataReady","complementaryDataLoaded","disFavoriteProductsLoaded","getUser","_loadUser","_getUser","getStore","_getStore","getSavedStores","_getSavedStores","checkComplementaryData","_loadComplementaryData","addComplementaryData","cd","removeItem","checkDisFavoriteProduct","disaggregatedId","disFavorites","getDisFavoriteProduct","disFav","lsfid","disFavoriteProductsReady","_loadDisFavoritesProducts","reloadDisFavoriteProduct","removeDisFavoriteProduct","reloadUser","addSavedStore","setLastVisitedStore","syncDate","resetUser","sessionStorage","userData","feType","storeJson","_isToday","lastVisited","negozioPreferitoObj","negoziDiInteresse","tokenId","appTokenFixed","domainParts","complementaryData","disFavoriteProducts","toDateString","getUserService","rcUserService","rcTrackingManager","userService","isProd","IS_PROD_ENV","appendVariable","vars","trackPageView","owr","_loadTrackContext","_track","trackLink","CustomLink","_loadBasicInfo","userinfo","jsonContext","els","trackingContext","tmpContext","_resolveVars","getVars","trackingVars","storeTrackingVars","adobeDataLayer","json","replacerFunction","replacements","replaceAsync","p3","_findClosestData","_runFunction","_findClosestText","_findComponentText","_cleanTrackingObject","dataToFind","validCmp","_getStoreFromParams","_eventLink","pdv","getTrackingManager","SearchField","gMapsHelper","trackingManager","_getElements","_doLogic","searchQuery","_initGoogleAutocomplete","selectedOptionIndex","autogeocode","geolocation","CANCEL_HIDDEN","DETECT_LOCATION_ACTIVE","searchBtn","detectLocationContainer","detectLocationItem","resultsSelect","country","checkStreet","searchType","_showCancelField","_showDetectLocation","_clearSelect","_handleInput","_detectLocation","_doGoogleSearch","_highlightOption","selectedOption","mouseEvent","MouseEvent","_searchQuery","disableTracking","zindex","funnel","stepFunnel","pc","zIndex","_handleOption","selectedText","setInputValue","gApiSearchDebounce","inputText","sessionToken","componentRestrictions","types","autocompleteService","getPlacePredictions","predictions","places","PlacesServiceStatus","OK","_populateSelect","ZERO_RESULTS","prediction","place_id","mainText","structured_formatting","main_text","mainTextMatches","main_text_matched_substrings","lastIndexMain","secondaryText","secondary_text","secondaryTextMatches","secondary_text_matched_substrings","lastIndexSecondary","gmaps","AutocompleteService","AutocompleteSessionToken","geocoder","Geocoder","_detectingLocation","getCurrentPosition","_locationDetectionSuccess","_endLocationDetection","_locationDetectionFailed","maximumAge","enableHighAccuracy","coords","lat","latitude","lng","longitude","geocode","results","place","formatted_address","_manageState","_toggleCancelField","GeolocationPositionError","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","_hideCancelField","placeId","GeocoderStatus","formattedAddress","negozioInfo","indirizzoRicerca","currentPlace","address_components","_getAddressComp","comps","field","comp","clearListeners","autocomplete","clearInstanceListeners","ExtApiHelper","s7viewersReady","s7viewersLoaded","shopfullyReady","shopfullyLoaded","getS7ViewersApi","_downloadS7ViewersApi","s7viewers","getLeaflet","getSwiper","swiperModule","Swiper","Pagination","Navigation","Mousewheel","Scrollbar","Autoplay","Thumbs","FreeMode","getPerfectScrollbar","firstScriptTag","getShopfullyViewerApi","_downloadShopfullyApi","SFviewer","shopfullyViewerUrl","getExtApiHelper","rcExtApiHelper","Select","OPEN","LABEL_HIDDEN","page","button","selectLabel","inputLabel","selectedItem","selValue","keyDownText","_itemsGeneration","_populating","_pendingLock","_applyOrClearValue","scrollbarOptions","ps","sel","closeDropdown","isDropdownOpen","openDropdown","setSelected","scrollDebounced","timeoutId","scored","score","bestOption","offsetTop","_scrollIntoView","innerHeight","innerWidth","isInViewport","scrollIntoView","_optionByValue","_resetItems","_showLabel","setItems","preferredValue","generation","selectItemCall","documentFragment","_applyItemsSelection","_finishPendingLock","wanted","optionValue","_clearForcedValue","_isLocked","_unlockSelect","_hideLabel","getSelected","_lockSelect","_applyLockChrome","readOnly","Switch","Step","FILLED","isFilled","fill","unfill","FileUpload","parsingError","maxNumFiles","maxFileSize","formattedMaxSize","_formattedFileSize","_initText","requiredTitle","optionalLabel","accept","dropzone","files","filesMap","filesUploaded","preview","_setMaxFilesExceeded","_renderTitle","titleEl","getFiles","_validNumFiles","_validFileType","_validFileSize","requiredMissing","_addFiles","_updateFiles","droppedFiles","dataTransfer","getAsFile","newFiles","maxFilesExceeded","_getDataTransfer","exceeded","resetMaxFilesValidation","_resetPreview","_loadPreview","_attachRemoveHandlers","invalid","formattedSize","fileUploadedCall","fileUploaded","fu","DataTransfer","textEl","DEFAULT_POI_TYPE","STANDALONE_INSIGNIA_IDS","isStandaloneInsigniaId","getInsigniaKey","PARENT_INSIGNIA_KEYS","CONCEPT_ORDER","CONCEPT_SORT_ALIASES","INSIGNIA_SORT_SPAN","DEFAULT_INSIGNIA_LEGEND","troviAnche","insignia","legendText","mergeLegendItem","custom","iconSrc","SEARCH_INSIGNIA_PREFIXES","resolveInsigniaKeysFromSearchQuery","getPdvDistance","distanza","toLocaleString","maximumFractionDigits","minimumFractionDigits","getPoiType","specialized","storeData","pdvTitle","address","pdvAddress","opening","pdvDayOpen","pdvOpening","pdvCurrentDay","pdvOpen","distance","pdvLink","ctaDirections","pdvDirectionsLink","ctaSecondary","ctaPrimary","volantiniCount","storeLink","finalData","storeId","insigniaKey","flyersLabel","storeSavedLabel","favoriteLabel","maxStoresLabel","saveAsFav","save","inStoreLabel","MapPin","AGGREGATOR","MIXED","MOBILE","PAGE_SELECTOR","mixed","pinId","pin","mapPinObj","fav","pois","multiPois","infoWindows","infoWindowElements","_activeType","_activeIdx","_swiper","_infoWindowsByType","_infoWindowsByIndex","_addMapListeners","setMapParams","poi","simplified","_initInfoWindow","_emitSuppressMapClick","getVisible","isAggregator","_trackPinMappa","clickedAggregator","getPosition","_onMultiLocationClick","clickedStore","isCluster","isAggregated","nomeFunnel","PinMappa","getPinType","_pinLabelForPoi","tipologiaRisultati","margherita","fuel","eye","pharmacy","pet","benessity","_multiIconFromEvent","_activateMultiIcon","composedPath","fromTarget","point","clientX","clientY","elementsFromPoint","elementFromPoint","swiperIdx","brandType","setActiveType","slideTo","addMixed","setMultiLocation","pill","tabIndex","setSwiperData","swiper","setMultiPois","mapInfoWindowCall","iwData","getActiveIdx","activateStore","slides","storeType","activeIndex","activeClass","iwEl","setContent","iwComp","refresh","isMultiLocation","isMixed","pixelOffset","Size","InfoWindow","minWidth","maxWidth","infoWindowData","infoWindowOptions","DEFAULT_INFO_WINDOW_OPTIONS","setOnTop","infoWindow","resetPins","pins","pinObj","Accordion","BADGE_SHOW","badge","visibility","updateContentHeight","_updateAriaAttributes","customEvent","maxHeight","setBadgeText","badgeText","hideBadge","getBadgeText","contentEl","openContent","closeContent","Textarea","showOptional","_disableNewLine","keyCode","StatusDot","MapInfoWindow","MAP_PIN_SELECTOR","FAVORITE","SAVED","FAV_DISABLED","SHOW_POPUP","SHOW_TOOLTIP","SHOW_TOOLTIP_MAX_STORES","poiLink","flyerLink","closeBtn","favorite","setFavoriteBtn","setSavedBtn","_flyerPromise","_flyer","FLYER_LOADING","_isFlyerHrefReady","_setFlyerLoading","_addStoreListeners","_updateStatus","favoriteStore","savedStores","maxStoreOfInterest","_prefetchFlyer","_hideFlyerCta","_resolveFlyer","flyers","_trackFlyerClick","volantinoInfo","_trackFavorite","pinEl","res1","res2","StoreCard","FLYERS_OPEN","servicesUrlMap","mapping","serviceId","cplData","flyersHeading","nameEl","services","_hidePopups","unselectCards","flyerId","flyerCoop","flyerName","flyerType","isStoreSaved","_callStoreFlyers","fData","accContentHtml","accContent","isAccOpen","service","cards","cardObj","decode83","PI","PI2","sRGBToLinear","linearTosRGB","signSqr","fastCos","cos","Picture","isSimple","img","urlDefault","placeHolder","_initAsync","blurhash","_addBlurHash","_addLazy","ratio","dWidth","dHeight","pixels","blurHash","punch","sizeFlag","numX","numY","basis","basisY","colorIndex","pixelIndex","yh","xw","maximumValue","colors","averageColor","getBlurHashAverageColor","bytesPerRow","decodeBlurHash","canvas","ctx","getContext","imageData","createImageData","putImageData","dataURL","toDataURL","lazyLoad","LazyLoad","_callbackLazy","InsigniaCard","Strillo","withCta","_addListeners","SearchAlert","trailingText","closeSearchAlert","setTrailingText","setTheme","theme","PaginatorComp","pageBack","pageNext","pageItems","_sendGoTo","DynamicImage","extApiHelper","HOTSPOT_SELECTOR","CARD_SELECTOR","configuration","skuArray","hotspotsMap","_initImage","_renderHotspotCards","interactiveImage","InteractiveImage","containerId","setHandlers","initComplete","_getHotspotsMap","_addHotspotsListeners","quickViewActivate","sku","cardId","skuData","_callHotspotCard","_closeOthers","hotspot","forceClose","hotspotsArray","hotspotCardHtml","_generateHotspotCard","hotspotCard","ShareLinks","sharers","twitter","linkedin","whatsapp","pinterest","shareOptions","_renderShareLinks","hookedRoot","_setTooltipPosition","shareOptionHtml","shareLinksMap","_computeShareLinks","shareOptionData","sharer","sharerLabel","shareOption","ignore","searchParams","HotspotCard","Filter","btn","SHOW_COUNT","_generateFilterPopup","_manageFilterPopup","_close","_callFilterPopup","popupId","filterName","_open","setCount","category","filters","popup","filterPopupHtml","filterPopupData","filterId","filterCategory","searchable","searchLabel","filterPopup","isValidElement","isMultiSelect","includeEmpty","hasValue","isValidValue","jsonToForm","each","FilterPopup","_addPerfectScrollBar","_updateFilters","currentString","_maskFilters","appliedFilters","currentFilterName","ytReadyEvent","loadedMetadataEvent","ytLoaded","onYouTubeIframeAPIReady","Video","ytId","ytid","videoUrl","autoplay","controls","fullscreen","mute","seekFrom","_initVideo","_initYt","_initUrl","_initResponsive","_resizeResponsive","playerEl","muted","oldPlayerEl","replaceChild","ytApi","_getYouTubeApi","player","Player","videoId","playerVars","modestbranding","showinfo","fs","onReady","_downloadYtApi","YT","play","playVideo","pause","pauseVideo","seekTo","togglePlay","getPlayerState","paused","aspectRatio","computedStyle","newWidth","newHeight","PinCodeField","maxLength","invalidFieldMessage","_initPinCode","Tooltip","Feedback","Bookmark","ctaEl","_checkBookmark","_setBookmark","cardType","cta","CategoryFilterCard","GenericTooltip","_appendPopup","_watchHostLifecycle","_closeTooltip","_openTooltip","_calcTop","_calcLeft","spaceBelow","spaceAbove","viewportWidth","_lifeObserver","_disposed","RefreshPrizeCoupon","L1Layout","metas","_addItemListeners","_insertFirstLayoutItem","htmlTarget","spacedBottom","spacingMods","shrinkDsk","shrinkDskContest","section","prepend","Footer","links","privacyPolicyLink","linkContent","newMappedCooperative","Header","lastScroll","anonymousLoginBtn","anonymousRegisterBtn","_setCallbackCb","menu","submenu","menuItems","submenuItems","activeMenuItemEl","currentSubmenuEl","skipLinkSeen","currentSubmenuId","menuMobTransition","searchBar","desktopBenefitCta","mobileBenefitCta","mobileBenefitCtaLabel","benefitPanel","benefitChevron","skipLink","backdrop","_updateHeaderHeightVar","ResizeObserver","_calcMenuPosition","_checkUser","_doCalculationsOnMouseoverSubmenuAndHideThem","submenuItem","mouseoverSubmenuWrappers","_calculateMaxHeight","_hideSubmenusWrappers","heights","menuItem","_clickMenuItem","_closeMenu","order","_focusableEls","navLinks","trigIdx","_mouseoverMenuItem","_isSearchBarOpen","removeBlockScroll","setBlockScroll","_setHeaderScroll","_closeSearchBar","_openSearchBar","elementoHeader","_toggleBenefitPanel","_checkPage","currentPath","itemPath","_isBenefitPanelOpen","_openBenefitPanel","_loadBenefitPanelContent","_benefitPanelLoaded","fetch","_closeBenefitPanel","linkA","menuId","currentSubmenu","focusDone","doFocus","onEnd","propertyName","itemRef","elementToShow","offsetParent","printMedia","print","limitScroll","_updateBenefitCtaVisibility","_getCoopsToExclude","coopsToExclude","_isBenefitCtaEnabled","_hideBenefitCtas","htmlMapPin","OverlayView","setMap","onAdd","_attach","visible","onTop","pane","getPanes","onRemove","draw","getProjection","fromLatLngToDivPixel","setVisible","getDraggable","getElem","ClusterPinRenderer","mapPinCall","markers","aggregator","clusterMapPin","styledMapFeatures","elementType","stylers","featureType","mapDimLayer","boundsListener","mapPane","getMap","projection","bounds","getBounds","ne","getNorthEast","sw","getSouthWest","FOUND_SINGULAR_KEY","StoreLocator","api","RES_ITEM","PAD_BOX_SHADOW","CARD_PANEL_GAP","FILTERS_PANE_OPEN","BG_FILTERS","BREAKPOINT_L","MAP_SELECTOR","SHOW_MAP_MOB","FILTER_OPENING_SELECTOR","NO_RESULTS","SEARCH_EMPTY","PRE_FILTERED","HIGH_BG","bg","searchAlert","filtersContainer","numRes","resList","openFiltersPane","closeFiltersPane","filtersCount","filtersOpening","filtersPane","fAccInsignia","fAccDepartment","fAccService","fInsSpecTitle","fade","mapEl","sidePane","mapMob","mapDsk","showMap","showList","mapToggle","mapPins","markerClusterer","selectedAddress","_lastTypedSearchQuery","searchPreferredInsigniaKeys","yourStoreLink","specializedStoreFilters","insigniaLegend","defaultsByKey","customList","itemsOrdered","customByKey","resolveInsigniaLegend","_parseInsigniaLegend","_showSearchEmpty","_disableReset","_disableApply","ff","_getFixedFilter","sf","realValue","ffInput","psFilters","psResults","psFiltersOpening","initMap","_initScrollbarFilters","_initScrollbarFiltersOpening","_getSearch","_manualSearch","addressInput","_holdScrollOnFocus","geometry","_closeFiltersPane","_disableFilters","setSelectionRange","_resetFilters","_initFilters","_loadPoi","_enableFilters","_refreshSearchWithFilters","numChecked","_refreshModals","filtersModal","_openFiltersModal","_openFiltersPane","filtro","nomeFiltro","manageAccordion","_showMapMob","_updateSelectedRes","_trackApplyFilter","_emptyMarkers","_emptyResults","_refreshMapPosition","currentBounds","fitBounds","_suppressMapClick","_suppressMapClickTimer","_resetPin","_panToWithOffset","selectedResItem","panTo","setZoom","getZoom","_doClosedSearchAlertLogic","center","zoom","streetViewControl","mapTypeControl","fullscreenControl","clickableIcons","styledMapType","StyledMapType","mapTypes","setMapTypeId","mapDim","resObj","_selectCarouselCard","carouselItem","slideIdx","_releaseScrollHold","lockedY","frame","snapBack","scrollTo","restore","viewport","visualViewport","cancelAnimationFrame","pinSelected","_initScrollbarResults","_initFiltersOpeningDrag","startX","isDown","offsetLeft","hasFiltersOpen","elObj","modalEl","modalObj","_closeFiltersModal","_enableOpeningFilters","_disableOpeningFilters","_updateFiltersCount","insigniaSpecialized","department","sum","_resetFiltersCount","setForm","sidePaneRight","panBy","_keepCardBelowPanel","getContent","minTop","deficit","addListenerOnce","selectedPinObj","_getEmptyFiltersCopy","_appliedFilters","cardEmitter","_getCardEmitterFilter","_syncResetStatus","currentSearchAddress","_getSearchRadius","standaloneInsignia","specializedServices","filtered","_hydrateFamilySiblings","_addResults","_showNoResults","filteredHits","searchData","nearby","matchedFamilies","_familyKey","byAnacanId","ordered","emittedFamilies","hit","_address","_removeFade","_showResults","storeCardCall","familyGroups","_groupByFamily","numResults","_addFade","_updateNumRes","currentNumRes","numeroRisultati","LatLngBounds","sorted","_sortByBrandOrder","_addResultToMap","_addResultToList","_addMultiPinToMap","_addCarouselToList","renderer","getStoreLocation","LatLng","pinData","mapPin","sortedGroup","primaryPoi","anchorPoi","_anchorPoi","multiLocation","_buildStoreCardData","numFlyers","serviceCodes","storeCardData","storeCard","parentId","anacanIdPadre","familyKey","nearest","nearestDistance","POSITIVE_INFINITY","groupMap","groups","_insigniaKeyForCode","insigniaToId","_selectedInsigniaKeys","codes","fromSearch","rank","conceptKey","conceptIdx","getInsigniaSortRank","primaryAnacanId","carousel","slide","cardData","colocatedTypes","legendTitle","troviAncheLabel","legend","dotsEl","_initCarouselSwiper","wrapperClass","slideClass","slidesPerView","spaceBetween","watchOverflow","pagination","bulletClass","bulletActiveClass","clickable","slideChange","insigniaSpecializedServiceIds","availableFilters","insigniaId","dId","sId","hideIfNotAvailable","availableSet","allHiddenOfType","allSettled","accObj","NomeFiltro","Insegne","Reparti","AltriServizi","Node","TEXT_NODE","_foundLabelPlural","singular","selectedMarker","clearMarkers","_hideFilters","Topbar","storeLocatorLink","_load","MenuDesktop","MenuMob","menus","submenus","searchInput","searchResultsPath","submenuColumnItems","subEl","_showMenu","otherSubmenu","_showSubmenu","_resetView","tpMenu","StoreHeader","FLYER_HIDDEN","N_IMAGES_TO_PRELOAD","flyersWrapper","showAll","prevSlide","nextSlide","btnPreferred","telButton","directions","hoursId","currentServices","_configureAssociatedStoreTracking","_addFlyers","flyerCards","_initSwiper","childElementCount","isLocked","_initArrowStates","_trackPageView","bannersAdv","orderedFlyersBanners","flyersBanners","flyersBannersLength","flyerCardHtml","bannerAdvHtml","typeTemplate","flyersTrack","goToPromotionLabel","optionsTemplate","titleForTracking","_getTextContentFromHtml","imageUrl","chipLabel","headerText","imageAlt","ctaUrl","linkTarget","_getTrackBannerAdv","ctaLabel","ctaColor","ctaTextColor","titleTag","loadingEager","decodingAsync","image","_getTrackVolantino","flyerEl","trackingLabel","linkTracking","ServizioAggiuntivoScelto","slidePrev","_getTrackSlide","slideNext","_disableEl","_enableEl","navigation","nextEl","prevEl","ctaPreferred","noSlides","idsCards","bannerCards","cardInfo","IDCard","titoloCard","chipCard","posizioneCard","StoreInfo","_setGridRows","_initDesktopTabs","_initTooltips","itemCount","maxColumns","rows","allHeadings","hasActive","_isActive","_closeTab","_openTab","_isOpenMobile","arrow","_hideTooltips","tooltipIcons","tooltipsData","isVisible","otherIcon","otherData","_callTooltip","tooltipEl","Advice","share","cardInEvidence","categoryLink","_initShare","shareId","Recipe","ctas","tab","minus","plus","quantity","showFraction","fraction","initialQuantity","_calcUnit","_multiply","_frac","fr","Anchors","layout","layoutItems","anchorsMap","_initAnchors","anchorTitle","anchorData","anchor","anchorCall","behavior","Faq","_checkHide","tabList","tabs","tabFocus","activeTab","_selectTab","_isTabActive","selectedTabs","_getTabPanelFromTab","tabPanel","CONTACT_FORM_CONSTANTS","cardTypeInsieme","cardTypeConadCard","cardTypePrepagata","cardTypePaymentServices","formTypeBrandedProd","formTypeOtherProd","formTypeStores","formTypeInsurances","formTypeAppSite","formTypePrizes","ccrtComplBrandedProd","ccrtComplOtherProd","ccrtReqInfo","ccrtBlockCardRequest","ccrtReqTechSupport","ccrtComplPayments","ccrtReqInfoPaymentCards","ccrtReqSupportPaymentCards","ccrtRecharge","ccrtConadPay","ccrtInfoPrizes","ccrtComplPrizes","thematicExpiredBrandedProd","thematicExpiredOtherProd","thematicConadCard","thematicRechargeableCard","thematicConadPay","thematicConadPrepaidCard","thematicInfoBollini","thematicInfoMiPremio","thematicInfoContest","thematicComplContest","thematicComplBollini","thematicComplMiPremio","delayInMillis","paramRecordType","paramTipo","paramArgomento","paramStoreId","IGNORE_FORM_FIELDS","contactFormLogic","_doFormLogic","ccrt","_isCardsForm","isPaymentServices","_getCardRadioValue","CONSTANTS","_hideMessageDataSection","_setCardFieldState","_getThematicValue","_showMessageDataSection","_showPrivacyAndCtas","formType","_setEanTooltip","_doExpirationDateLogic","tipoCartaConadPayEl","selectObj","ccrtValue","_getCCRTValue","isConadPay","isRecharge","_hideFileUpload","_setPrivacyText","thematicValue","blockReason","fieldsBlockCard","_applyPaymentCardsFieldsByThematic","_showFileUpload","formSectionCCRTT","ccrtt","_loadSubFormSectionCCRTT","_hidePrivacyAndCtas","_clearPrivacyText","_setFieldsGroupState","selectedValue","initiativeBanner","isAltro","_setFileUploadRequired","_updateInitiativeBanner","_initPrizeCodeOrPinValidation","fieldName","shouldEnable","fieldObj","groupName","shouldShow","hiddenMod","toggleAttribute","FIELD_COMPONENTS_SELECTOR","fileUpload","fileUploadObj","ean","eanTooltipText","productComplaintReason","expirationDate","bannerEl","initiativeBannerMap","paragraph","premioEl","_getPrizeCodeOrPinElements","orPinValidation","onChange","_hasPrizeCodeOrPin","_setPrizeCodeOrPinRequired","premioObj","premioValue","pinValue","_validatePrizeCodeOrPin","filled","contactFormPrivacy","_resolveUserType","_resolveCooperative","_hasAnyCard","conadCard","conadCardRicaricabile","_isPrizesForm","_isContestThematic","_getInitiativeValue","_resolveCardsFormCardFlags","_buildPrivacyParams","forceCoop","staleRichtext","_renderPrivacyText","informativa","informativaText","informativaPdfLink","linkPdfInformativa","textWithPdfLink","richtext","richtextHtml","textIsRich","privacyDataText","_fetchInformativa","ContactForm","_checkNecessaryData","_initForm","loaderEndpoint","cardRecordTypes","ccrtByCard","invisibleCCRTMap","invisibleCcrtMap","invisibleThematicMap","thankyouPageUrl","cardRadios","ccRequestType","formSectionCCRT","privacyData","privacyDataReadAll","ccrtOptions","_loadCCRT","history","_getFormValidity","_showStoreValidity","_scrollToFirstInvalid","_showStatusError","_hideStatusError","_sendCustomerCare","selectedStoreId","noLoader","_loadFormSectionCCRT","afterLoad","loaderParams","_callLoader","_setFormSection","subsection","prizeCodeOrPinValidity","browserValidity","filesValidity","_validFiles","storeValidity","storeObj","checkMissingField","block","_getFormData","ctaLink","unclosable","feedbackHtml","feedback","feedbackContainer","generateFeedback","recordType","_getCardsFormRecordType","tipo","_getInvisibleCCRT","argomento","_getInvisibleThematic","ignored","_normalizeCustomerCarePayload","aliases","ConcorsoIniziativa","CodiceConcorso","NomeConcorsoInziativa","NomeConcorsoIniziativa","NomeCollection","legacyName","contractName","emptyKeys","File","toPopulate","_getExtraFieldsFromData","codiceCartaFidelity","ccrtEl","FALLBACK","thematics","statusMsg","statusMsgHtml","codiceErrore","descrizioneErroreBase64Url","dispositivoTelefono","descrizioneErrore","base64Url","base64","binaryString","atob","TextDecoder","decode","base64UrlDecode","informazioniTecnicheErrore","Filters","useFilterTags","_doFilterTagsLogic","_doDefaultFiltersLogic","_setResultsText","_setCount","filterTagsForm","filterTags","currentTarget","paramsToUpdate","pushState","updateUrlQueryParams","fromEntries","getQueryParams","selectedTag","control","FormPremio","positiveUrl","negativeUrl","privacySelectorType","isTooltipVisible","_initTooltip","_populateUserForm","_setInformativeLink","_setContacts","loginPageUrl","redirectUrl","informativaLink","_getInformativa","loginLink","sendCode","pinCode","errorCodeField","getElementsByClassName","errorSendCodeGeneric","incorrectPinErrorLabel","alreadyUsedPinErrorLabel","_checkSendStatus","_sendCode","resultSendCode","loyaltyId","birthDate","errorCode","errorDescription","prize","prizeDescription","utenzaId","errore","phoneEl","phone","phoneData","phoneCta","ctaHtml","mailEl","mail","mailData","mailCta","nameField","getElementsByName","surnameField","emailField","birthDateField","telField","ResultPremio","gdiPrize","homeLink","playCodeLink","enterYourDetailsLink","gdiPrizeString","_compareUrlsIgnoringQuery","appJwt","_setAppJwtParameter","url1","url2","parsedUrl1","parsedUrl2","playsTable","plays","playSingle","row","insertRow","insertCell","usedInDate","winData","resHtml","createdAt","SearchResults","_initSearch","_initLoadMore","termineRicerca","_getQuery","initLengths","downloadLengths","totalLengths","articleType","loadMore","currentSize","initLength","downloadLength","totalLength","filterObjs","filterAllObj","fo","filterAll","searchObj","_maskSections","_downloadResults","_appendResults","doc","loadMoreText","newResults","countResults","SearchBar","E_CANCELED","__awaiter$2","Semaphore","_maxConcurrency","_cancelError","_queue","_waiters","acquire","locked","ticketPromise","_dispatch","runExclusive","waitForUnlock","_currentReleaser","releaser","ticket","nextTicket","released","_resolveWaiters","waiter","Mutex","cancelError","_semaphore","InsurancesManager","cardRequestLink","viewInsurancesLink","policyActivationFormLink","carrelloProtettoPolicyName","lock","informations","_isLocalMock","_getMockInsurancesInformation","receiptDate","setUTCHours","saldoPunti","codiceCooperativaMigrazione","dataUltimoAggiornamento","provenienza","codiceComuneDiNascita","cardistaAnteCPlus","cartaDematerializzata","saldoPuntiCollectionPrecedente","consenso","totCoupons","unreadMessages","socialRegistration","agevolazioni","cluster","pdvPreferito","oneAgevolazioneValid","tesseraDisattivata","negozioPreferitoCooperativa","statoTessera","refreshAlready","preferenze","codiciUtenzeSocial","_internalGetInsuranceInformations","getInsurancesInformation","getLink","insurancesInformation","loginLinkWithCallback","getInsurancesManager","rcInsuranceManager","AssicurazioniForm","taxIdCodeField","consentField","regulationField","submitButton","isCasaPolicy","policyVariant","tableWrapper","receiptValidityDays","afterPolicyActivationPageUrl","maxAgeCheckEnabled","mobilePhone","mobilePhoneUnderLabel","propertyAddress","streetNo","cityImmobile","postalCodeImmobile","italyProvinceOptions","_readJsonOptions","italyProvinceOptionsJson","casaCountryMode","casaProvinceLockedValue","tableLabels","tableLabelDate","puntoVendita","tableLabelShop","totaleSpesa","tableLabelTotalCost","tableLabelStatus","insurancesManager","_getScontrinoValidity","_checkRegistry","_prepareTable","_setupCasaPolicy","_checkMobilePhoneLabel","_activateButton","_deactivateButton","_submitForm","_syncCasaPolicyCountry","_syncCasaPolicyProvince","countrySelect","provinceSelect","citySelect","countryValue","_getSanMarinoProvinces","_getSanMarinoCities","_getVaticanProvinces","_getVaticanCities","provinceValue","_loadCasaCities","_readSelectOptions","selectRoot","jsonValue","provinceId","cities","_getCitiesFromProvince","localeCompare","scontrinoData","_processRow","tableRendered","tableTemplate","diffDays","formattedDate","_formatDate","birthCityField","parentDivTel","fidelityCardField","codiceFiscaleField","addressField","postalCodeField","cityField","jsonForm","casaPolicy","addressLine","riskProperty","addressLine1","city","postCode","receiptAmount","receiptPdv","_formatBirthdate","requestDate","effectiveDate","age","_getAge","ddMMYYYY","monthDifference","rt074","slidesCount","$refs","infoNegozio","initCarousel","$root","breakpoints","HeroCarta","Hero","randomizeCards","sliderAutoplayDelay","playPauseBtn","level","viewWithPositionCta","chef2","chef3","_randomizeCards","_initPlayPause","_initIcons","_updatePaginationPosition","disableOnInteraction","stop","running","swiperActive","ThumbSlider","itemsLength","logo","userSuggestedProducts","_getFlyerProducts","_showComponents","slidesOffsetBefore","slidesOffsetAfter","dragClass","dragSize","draggable","disabledClass","hiddenClass","TRACKING_SLIDE_LATERALE","currentPageStoreAnacan","pageStore","urlTemp","differentSuggestedStore","bassiFissi","headerComponentPageStore","flyersFromStore","randomNumber","tr","trackContainer","sfFlyerCode","newArray","randomPosition","randomItem","shuffleArray","scrollBarContainer","SCOPRI_DI_PIU_TRACKING","flyerCtaLabel","flyerSuggestedCtaLabel","flyerText","flyerSuggestedText","_buildRichTextText","flyerTitle","flyerSuggestedTitle","_buildRichTextTitle","CarrotBannerFmf","flyerVariant","_getAnacanIdParam","fmfTitleV1","fmfTitleV2","fmfTextV2","fmfTitleV3","viewAllLabel","_renderContent","flyerVariant1Call","flyerVariant2Call","flyerVariant3Call","fmfTitle","fmfText","storeLinkMob","viewAll","_trackGoToStore","CarrotBannerFsf","TEXT_OPEN","LOAD_MORE_HIDDEN","NO_SWIPE","_setTrackingConsts","downloadLabel","shareLabel","readMoreLabel","readMoreText","_showLoadMore","_addSwiperListeners","_manageSwiperMobile","flyerVariant1Html","flyerVariant2Html","flyerVariant3Html","focusedFlyer","DATA_LINK_TRACKING_DOWNLOAD","otherFlyers","disabledDownload","DATA_LINK_TRACKING_OTH_FLYER","textWrapper","_hideLoadMore","_updateTextWrapperHeight","swiperConfig","mousewheel","eventsTarget","releaseOnEdges","TipologiaVolantino","CarrotBannerHmd","findStoreText","_initFindStoreText","registerLink","renderedText","CarrotBannerHmf","changeFavoriteStoreLink","changeFavoriteStore","contentCall","plainHref","CarrotBannerHsd","stUrl","CarrotBannerHsf","FLYER","_renderFlyers","flyerCall","DATA_LINK_TRACKING","scrollbar","CarrotBanner","SIDE_HIDDEN_MOB","hsfTitle","fsfFlyersHeading","side","mainDiv","sideDiv","_checkLastVisitedStore","_fillHomeMain","_fillHomeSide","hmfCall","hmfData","tmpData","storeLocatorLinkJson","changeFavoriteStoreLinkJson","hmfElem","hsfCall","hsfData","_hideEmptySideMob","hsfElem","_resetSideMob","Lancio","updateHeight","slideCounts","leftAll","autoHeight","observeParents","sensitivy","forceToAxis","thresholdDelta","updateAutoHeight","paginationRender","paginationEl","bulletElement","leftHeight","heightTot","SlideMdd","renderFraction","currentClass","totalClass","SelectStore","storeWrapper","storeCardHtml","TextIconContainer","grid","_initMuuri","Muuri","muuri","layoutDuration","fillGaps","refreshItems","getElement","ItalyMap","regions","_loadMap","_removeUnusedRegions","regionMap","accordion","dataId","compId","prevReg","prevMap","prevComp","regionListItems","cardIds","mapPath","_appendMap","ListingComp","staticFilters","filtersWrapper","fixedCard","_initFiltersModal","initialFilters","filtersData","_scrollToTop","_loadCards","_appendRecipes","AssociateCardBanner","_checkUserConadCard","ItalyNav","_makeLeafletIcons","_initMap","_setPins","mapBgColor","pinConf","pinNotSelectedImg","pinNotSelected","pinSelectedImg","iconUrl","iconSize","iconAnchor","crs","CRS","Simple","maxBounds","minZoom","imageOverlay","addTo","popupHtml","popupData","popupEl","markerOptions","popupOptions","keepInView","closeButton","bindPopup","_pinClick","latlng","getPopup","selectedPin","EdCategories","centerInsufficientSlides","Breadcrumb","_initScrollbarBreadcrumb","psBreadcrumb","CardElevEdComponent","CardElevNewsComponent","_initSlides","_loadSlides","_appendSlides","CardElevRecipesComponent","CardElevContentsComponent","CardTextComponent","activeBulletColor","bulletColor","rules","rulesId","_scroll","CardElevBrandsComponent","BannerCarousel","bulletsBgColor","shuffledColors","originalIndex","_setInactiveBulletsBgColor","bullets","SpecializedStores","SliderLanci","StrilloBooking","iconColor","textColor","_initIcon","_initDownloadLink","rt130","isLogged","isLoaded","guestUserLink","loggedUserLink","replaceAll","StrilloSpecializedStore","appliedTheme","_initStoreLocatorLink","LoginBanner","_initLinks","_checkUserLogged","ADOBE_MAPPED_EVENTS","SCROLL_SOURCE_EVENTS","TARGET_MILESTONES","FUNNEL_VOLANTINO","consultazione","interazioni","condividi","FUNNEL_BASSI_E_FISSI","viewedProducts","viewedPages","reachedMilestones","datalayerHookInstalled","pageContextPromise","trackingRoot","normalizeFormat","getSection","categoryName","section_name","buildNegozioInfo","buildVolantinoInfo","custom_label","catalogue_title","buildProdottoInfo","isDiscounted","full_price","discounted_price","product_name","product_code","pushToAdobe","emitScrollDepth","milestone","percentage","customLabel","milestone_percentage","unique_items_viewed","uniqueItemsViewed","total_items","totalItems","handleSmartViewerPush","page_number","total_pages","totalPages","products_count","totalProducts","product_position","handleScrollSources","adobePayload","prodottoInfo","cta_type","cta_label","cta_url","format_to","banner","nomeBanner","banner_url","link_url","mapSmartViewerEvent","EmbeddedFlyer","isEditorialFlyer","hideDownload","embedContainer","dataLayer","originalPush","pushedItem","installSmartViewerDatalayerHook","_initViewer","profilingConsent","_readProfilingConsent","sfViewerOptions","container_id","sf_custom_label","sf_section","sf_hide_download","sf_hide_thumbnail_on_flyer_loading","showThumbnailOnFlyerLoading","profiling_consent","sf_enable_datalayer_events","sf_onsectionchange","sf_store_id","sf_on_add_to_cart","_addFavoriteProduct","_watchProfilingConsent","OnetrustActiveGroups","viewerReady","updateConsent","consent","SFupdateConsent","onViewerMessage","iframe","contentWindow","productCode","_saveFavoriteProduct","addStore","ok","InsiemeCardsBannerCta","HeroCollection","_setTextColor","_setCtaTextColor","textElements","ctaText","HeroPremio","bolliniValue","suitableNameplate","_showSuitableNameplate","bolliniBalance","initiativeCode","ean1","ean2","descrizioneMetodoRedenzione1","bolliniText","descrizioneMetodoRedenzione2","pointsText","totalBalance","saldoCumulato","saldoSpeso","divider","CardPremiSlider","ContainerCardPremi","CardNearbyContainer","SLIDE","lon","storeLon","storeLat","storeNeighbors","nearbyCardCall","destinations","times","calcDistance","nearbyCardData","km","nearbyCard","DistanceMatrixService","matrixOptions","origins","travelMode","unitSystem","UnitSystem","METRIC","getDistanceMatrix","MapSearchStoresForm","isBooksReservation","textLink","storeTextLink","showServices","showServicesIcons","citiesMap","PAGE_SIZE","_convertToUrlFriendly","tmp","district","numResultsCount","statusAnnouncer","NUM_RESULTS_SHOW","districtCode","_loadCities","_doSearchLogic","currentPage","renderResults","_checkLoadMore","codiceComune","cityCode","_loadStores","_requireSelection","selectEl","nomeComune","paginateStoreCards","setNumResults","_getText","_getServices","storeCardServicesMap","_getTimes","fromDate","extFrom","extTo","resultTimes","giornateStraordinarie","giornoDate","_getStoreCard","booksProviderEmail","booksProviderLink","servicesSize","numPages","pageIndex","MapSearchStores","btnRegions","announcer","searchContainer","regionMaps","selectRegion","regionCode","regionListItem","regionName","_loadSearchSection","codiceRegione","nomeRegione","regionPath","_updateSearchSection","searchSection","CardServicesTwoColumnsComponent","strilloInitiative","showComponent","_showHideMainComponent","campaignCode","_checkUserCredits","ctaABCmobileObj","ctaABCmobile","playLabel","ctaCdesktopObj","ctaCdesktop","storeCards","pageSize","STORE_CARD_HIDDEN","NO_RESULTS_HIDDEN","noResults","addr","_loadResults","hiddenStores","_loadResultsSection","__eck","BannerImageRefresh","alreadyPartecipated","discoverMoreCta","labelIVnonValorizzatoStep","labelIVvalorizzatoStep","_addEventListener","UpdateDataRefresh","consents","submit","thankYouPageUrl","wrapperAlreadyDoneAll","paragraphBannerAlreadyDone","wrapperAlreadyParticipated","bottomTextInformative","paragraphBannerAlreadyParticipated","alreadyDoneAllLink","alreadyParticipatedLink","userInteract","currentPrivacy","choice","privacyTzTrackingView","mailAddresses","showCommonPrivacy","show4Privacy","_initPrivacyAndRegulationText","_setPrivacyAndRegulation","_initNotEnabledRadioText","tempLink","outerHTML","_trackNotPartecipatedVariant","hiddenButton","box","_checkRadio","_enableSubmitBtn","_submit","_openConfirmLeavePopUp","updatedData","mailAddress","quartoConsenso","privacyCheckbox","regulationCartaInsiemeCheckbox","mailAddressLabel","changedPrivacy","_callEditUserData","changedMailLogin","dataMailCall","boxNotSelected","_disableSubmitBtn","privacyText","privacyHtml","privacyLinkLabel","privacy","splitPrivacy","linkPrivacy","regulationCheckbox","regulationText","regulationHtml","regulationLinkLabel","regulation","splitRegulation","linkRegulation","regolamentoLink","pageToGo","ThankYouSimpleImageText","additionalText","choiceText","shoppingCouponText","travelCouponText","ExcelToMapSearchStoresForm","labelCtaCards","_extractColumns","configExcelMap","titleKey","typeLabelKey","descriptionKey","iconCardKey","filtersColumns","filterDependant","tipologies","newRows","_filterRows","_changeFilterAfter","jsonModal","modalJson","currentStore","formJson","filteredStores","currentFilter","indexCurrentFilter","filterValues","filterSingle","elementAfter","ExcelToMapSearchStores","AfterPolicyActivation","imageSuccess","imageError","titleSuccess","titleGenericError","titlePolicyAlreadyActiveError","textSuccess","textSuccessBox","textGenericError","textPolicyAlreadyActiveError","ctaSuccess","ctaGenericError","ctaPolicyAlreadyActiveError","StrilloIconTextLinkStructure","guest","light","logged","policyAlreadyActive","ctaLabels","ctaLabelGuest","ctaLabelLight","ctaLabelLogged","ctaLabelPolicyAlreadyActive","titleAndTexts","ctaLabelContent","StrilloCollection","ctasViewBollini","ctasLogin","balanceLabels","balanceContents","balance","ctaLogin","balanceI","inTarget","ctaViewBollini","balanceLabel","balanceContent","cardSliderPremiConcorso","slideIndex","cardsSize","_initSwipers","thumbsSwiper","thumbnailsSlider","freeMode","watchSlidesProgress","watchSlidesVisibility","thumbs","StoreFlyers","appSelHide","_renderStoreInfo","_renderFlyersCarousel","_initFlyersCarousel","storeTemplate","storeTemplateData","storeHtml","carouselWrapper","carouselTrackTemplate","carouselTrackTemplateData","carouselTrackHtml","TRACKING_GO_TO_STORE","rt164","isLoading","hideButton","onLoadMoreClick","responseContent","tempDiv","hasMoreFlag","hasmore","containerCardBenefits","desktopRows","tabletRows","mobileRows","visibleCount","currentStoreInsignia","moveUpStores","upOrDown","nPositions","previousElementSibling","moveComponent","desktopInitialRows","tabletInitialRows","mobileInitialRows","_fixCardsIndex","showMoreButton","showMore","_calculateVisibleCount","screenType","_getColsForScreenType","switchTabPromotions","delaySec","swipeSpeed","indicator","$el","initSwiper","setupButtons","updateIndicator","initInnerTabSliders","realIndex","updateUI","refreshInnerTabSliders","_rt166Swiper","sliders","scrollbarEl","innerSwiper","updateNavState","isBeginning","isEnd","btnEl","tracking","TabLabel","activeBtn","btnWidth","btnLeft","pdvSelect","resHeading","selectedCard","selectedPoi","footerCta","ctaHref","pdvPlainUrl","alignDistanceRight","headingCta","_attachStoreCardSelection","clearSelection","poiId","templateHref","newHref","currentHref","selectedStoreInsignia","selectedStoreCoop","strilloSuperbolliniBalance","superbollini","punti","loadData","formatNumber","NumberFormat","balanceBanner","puntiMiPremioMode","strilloCollectionWrapper","userIsLoading","isUserCAD","rolloutDettaglioPremio","puntiMiPremio","priceBollini","pricePlusEuro","priceMiPremio","isProgressLoading","_loadBalance","_buildCtaLogic","isUserEnabled","isBimodal","isCad","progressBanner","userTotal","redeemTotal","price","percentProgress","progressLabel","redeemLabelBase","labelRedeemText","getUserTotal","getProgressLabel","getRedeemLabel","buoniCommunityBalance","buoniBalance","buoniDonated","buoniCode","_loadMovements","structuresCredits","totalUserCredits","sustainabilityInitiativeCode","credits","appendQueryParams","destUrl","currentQuery","destQuery","destParams","currentParams","StoreFlyerRedirect","fallbackHref","_redirect","storeHref","CardElevRecipes","CardProductFlyer","ctaFavorite","_checkFavorite","_setFavorite","_addRemoveDisFavoriteProduct","_addStoreAndDisFavoriteProduct","_sendTracking","isNotLogged","componente","evidenza","marchio","sottomarchio","categoria","sottocategoria","meccanicaPromozionale","tipologiaPromozione","tagPromozione","cardistaPromozione","CardFlyer","CardBanner","_setBannerValidity","bgGradientFrom","bgGradientTo","bgColor","_updateBackground","borderColor","background","_getValidity","cardPremi","bolliniProgress","miPREMIOProgress","dataCoopsToExclude","_resolveUser","maxBollini","maxPoints","_getBolliniProgress","_getMiPREMIOProgress","replacePointsPlaceholders","replaceBolliniPlaceholders","isCAD","canRedeemWithBollini","canRedeemWithMiPREMIO","bolliniPercentage","miPREMIOPercentage","cardPromotion","startValidityDate","endValidityDate","cardSpecStoresV2","showAccordion","toggleAccordion","accordionContent","cardPremioConcorso","ModalComponent","topBar","bottomBar","stepsIcons","_initModal","modal","getCurrentModal","_initModalEvents","_initSteps","_initScrollbar","_onOpen","_onClose","_onCancel","flowStep","activeStep","hideStepIcons","icStep","SelectPosStep1","selectStore","SelectPosStep2Map","PRE_SHOW","SHOW","markersMap","closer","selectPoi","listObj","setSelectedStoreId","selectPos","addResults","markerObj","panSelected","SelectPosStep2","CARD_TITLE_SELECTOR","selectBtn","showMapBtn","showListBtn","selectedStore","extendedVersion","_initMapMob","rightContent","showRight","hideRight","_showMobileMap","selectBtnObj","storeEl","_enableSelectBtn","_disableStoreTitlesClick","_addResultsToMap","storeTitle","hideFavorite","PosList","storeDetailPrefix","posItemCall","posItemData","posItemEl","StoreLocatorFilters","storeLocator","_refreshStoreLocator","_refreshModal","storeLocatorObj","_enableApply","_enableReset","FiltersModal","ACC_OPEN","ACCORDION_OPEN","ACCORDION_SHOW_COUNT","_checkApplyResetCtas","_initScrollbars","accordions","headings","counts","contents","forms","scrollbars","resets","applies","_isAccordionOpen","forceClosed","_reloadFilters","filterAccordionHtml","accordionData","accordionEl","ErrorModal","genericErrorTitle","genericErrorText","genericErrorCta","registryErrorTitle","registryErrorText","registryErrorCta","noCardErrorTitle","noCardErrorText","noCardErrorCta","insurancePolicyAlreadyActiveErrorTitle","insurancePolicyAlreadyActiveErrorText","insurancePolicyAlreadyActiveErrorCta","noValidReceiptErrorTitle","noValidReceiptErrorText","noValidReceiptErrorCta","termsAndConditions","CounterBoxTypeEnum","COUPONS","MIPREMIO_CURRENT_YEAR","MIPREMIO_PREVIOUS_YEAR","SUPERBOLLINI","BUONI_SPORT","fromValue","userBenefitsModal","balances","coupons","miPremioCurrentYear","miPremioPreviousYear","buoniSport","cardBalances","_loadBimodalBalances","_initTracking","iconaModale","counterType","couponsCount","bal","cardSuperbolliniCode","isInHeaderPanel","isTouchDevice","SwiperModule","SwiperClass","_initCountersSwiper","_initPrizesSwiper","isCounterVisible","enumType","getVisibleCountersCount","countersEl","scrollbarWrapperEl","getCounterBalance","resolveLabelPlaceholders","previuosYear","getCardBalance","onCounterClick","hrefGuest","hrefLight","hrefBimodal","isGuest","isLight","isBimodalNonCAD","getCurrentPopup","PopupComponent","_initPopup","_initPopupEvents","_onBeforeOpen","LoginPopup","loginEl","BooksReservationPopup","AddStorePopup","proceed","MAX_STORES","_checkSavedStores","RefreshCPopup","RefreshConfirmPopup","proceedCta","cancelCta","closeCta","redirectPage","RefreshPrizeChoice","shoppingCoupon","travelCoupon","goNextButton","backButton","ExcelToMapCardDetailsPopup","primaryCta","indexTextForType","bulletsSectionCreated","typeOfText","typeText","printColumnTitle","elementValue","bold","elementsContainer","singleTag","tagElement","addPrefix","elementsListContainer","bulletsSectionsList","singleOpt","singleElement","rt307","premio","twoEan","initBarcode","barcodeLibrary","EAN13","flat","fontSize","fontOptions","textMargin","genericPopup","placeholdersToSearch","placeholdersToSearchJson","titlePlaceholders","textPlaceholders","confirm","previous","UA_MAX_LENGTH","EMPTY","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","UA_BROWSER","UA_CPU","UA_DEVICE","UA_ENGINE","UA_OS","UA_RESULT","VENDOR","ARCHITECTURE","MAJOR","MODEL","CONSOLE","TABLET","SMARTTV","WEARABLE","XR","EMBEDDED","INAPP","BRANDS","FORMFACTORS","FULLVERLIST","PLATFORM","PLATFORMVER","BITNESS","CH_HEADER","CH_HEADER_FULL_VER_LIST","CH_HEADER_ARCH","CH_HEADER_BITNESS","CH_HEADER_FORM_FACTORS","CH_HEADER_MOBILE","CH_HEADER_MODEL","CH_HEADER_PLATFORM","CH_HEADER_PLATFORM_VER","CH_ALL_VALUES","AMAZON","APPLE","ASUS","BLACKBERRY","GOOGLE","HUAWEI","LENOVO","HONOR","LG","MICROSOFT","MOTOROLA","NVIDIA","ONEPLUS","OPPO","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","CHROME","CHROMIUM","CHROMECAST","FIREFOX","OPERA","FACEBOOK","SOGOU","PREFIX_MOBILE","SUFFIX_BROWSER","WINDOWS","NAVIGATOR","NAVIGATOR_UADATA","userAgentData","defaultRgx","extensions","mergedRgx","extraRgx","isExtensions","enumerize","enums","str1","str2","lowerize","deep","itemListToArray","strip","brand","majorize","setProps","stripQuotes","rgxMapper","ua","arrays","strMapper","windowsVersionMap","formFactorsMap","defaultRegexes","browser","cpu","device","EDGE","os","defaultProps","isIgnore","isIgnoreRgx","createIData","itemType","init_props","is_ignoreProps","is_ignoreRgx","toString_props","IData","withClientHints","getHighEntropyValues","setCH","UACHData","parseCH","withFeatureCheck","detectFeature","is","strToCheck","IDataResolve","resolveData","uach","isHttpUACH","UAItem","rgxMap","uaCH","ch","brave","isBrave","standalone","detect","parseUA","prevName","brands","brandName","brandVersion","archName","reParse","vendor","osName","osVersion","UAParser","kv","getResult","httpUACH","regexMap","createItemFunc","getBrowser","getCPU","getDevice","getEngine","getOS","setUA","runActualRedirectChecks","wcmmode_disabled","disambiguationRedirect","urlWithParams","finalTargetUrl","iphoneRedirect","androidRedirect","BROWSER","CPU","DEVICE","ENGINE","OS","Page","blockCounter","coopPages","coopPagesRegex","bookProviderUrlPatterns","_moveMetas","linkEl","_bookLink","_coopLink","_setInsuranceLinks","_cardistaAnteCPlusPopup","_checkRefreshPopup","currentDate","expiringDate","toUTCString","bookLink","elLink","_goToBooksReservation","cndValid","_redirectToCoop","meta","toggleBlockPageScroll","bodyWidth","margin","fixedEls","fix","Modal","modalName","otherModalEl","_sendOpenEvent","_sendCloseEvent","_sendCancelEvent","getModalName","Popup","popupName","defaultOpen","_initDefaultOpen","_sendBeforeOpenEvent","getPopupName","intersect","registerAtoms","rt002","rt003","rt004","rt005","rt006","rt008","rt009","rt010","rt011","rt012","rt013","rt014","rt016","rt017","rt018","rt019","rt020","rt021","rt022","rt023","rt024","rt025","rt027","rt028","rt029","rt030","rt031","rt032","rt033","rt034","rt035","rt036","rt037","rt038","rt039","rt045","registerCards","rt202","rt213","rt215","rt217","rt218","rt224","rt225","registerContents","rt100","rt100Hero","rt101","rt102","rt102Hmd","rt102hsd","rt102hmf","rt102hsf","rt102fmf","rt102fsf","rt106","rt107","rt108","rt109","rt110","rt111","rt112","rt113","rt115","rt117","rt118","rt119","rt120","rt121","rt122","rt124","rt125","rt126","rt127","rt129","rt131","rt132","rt174","rt175","rt135","rt139","rt140","rt141","rt142","rt143","rt145","rt145form","rt147","rt148","rt149","rt153","rt154","rt155","rt156","rt156form","rt158","rt159","rt160","rt161","rt163","rt165","rt166","rt168","rt169","rt170","rt171","rt172","rl1","registerModals","rt250","rt251","rt251map","rt252","rt253","rt254","rt256","rt259","registerOthers","ru002","ru003","ru004","registerPopups","rt300","rt301","rt302","rt303","rt304","rt305","rt306","rt308","rt309","registerStructures","rt050","rt051","rt052","rt054","rt055","rt056","rt057","rt058","rt059","rt060","rt061","rt062","rt063","rt064","rt065","rt066","rt067","rt068","rt069","rt073","rs1"],"sourceRoot":""}