{ "version": 3, "sources": ["../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/index.js", "../../../node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js", "../../../node_modules/jquery/dist/jquery.js", "../../../node_modules/trix/dist/trix.js", "../../../node_modules/moment/moment.js", "../../../vendor/assets/javascripts/fullcalendar/main.min.js", "../../../node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js", "../../../node_modules/intl-tel-input/build/js/intlTelInput.js", "../../../node_modules/intl-tel-input/index.js", "../../../node_modules/jquery-minicolors/jquery.minicolors.js", "../../../node_modules/q-flat/src/index.ts", "../../../node_modules/tom-select/src/contrib/microevent.ts", "../../../node_modules/tom-select/src/contrib/microplugin.ts", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/lib/diacritics.ts", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/lib/utils.ts", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/lib/sifter.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/contrib/highlight.ts", "../../../node_modules/tom-select/src/constants.ts", "../../../node_modules/tom-select/src/defaults.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/getSettings.ts", "../../../node_modules/tom-select/src/tom-select.ts", "../../../node_modules/tom-select/src/plugins/change_listener/plugin.ts", "../../../node_modules/tom-select/src/plugins/checkbox_options/plugin.ts", "../../../node_modules/tom-select/src/plugins/clear_button/plugin.ts", "../../../node_modules/tom-select/src/plugins/drag_drop/plugin.ts", "../../../node_modules/tom-select/src/plugins/dropdown_header/plugin.ts", "../../../node_modules/tom-select/src/plugins/caret_position/plugin.ts", "../../../node_modules/tom-select/src/plugins/dropdown_input/plugin.ts", "../../../node_modules/tom-select/src/plugins/input_autogrow/plugin.ts", "../../../node_modules/tom-select/src/plugins/no_backspace_delete/plugin.ts", "../../../node_modules/tom-select/src/plugins/no_active_items/plugin.ts", "../../../node_modules/tom-select/src/plugins/optgroup_columns/plugin.ts", "../../../node_modules/tom-select/src/plugins/remove_button/plugin.ts", "../../../node_modules/tom-select/src/plugins/restore_on_backspace/plugin.ts", "../../../node_modules/tom-select/src/plugins/virtual_scroll/plugin.ts", "../../../node_modules/tom-select/src/tom-select.complete.ts", "../../../node_modules/flatpickr/dist/plugins/monthSelect/index.js", "../../../node_modules/froala-editor/js/froala_editor.min.js", "../../../node_modules/froala-editor/js/plugins/align.min.js", "../../../node_modules/froala-editor/js/plugins/colors.min.js", "../../../node_modules/froala-editor/js/plugins/image.min.js", "../../../node_modules/froala-editor/js/plugins/link.min.js", "../../../node_modules/froala-editor/js/plugins/special_characters.min.js", "../../../node_modules/froala-editor/js/plugins/draggable.min.js", "../../../node_modules/froala-editor/js/plugins/font_size.min.js", "../../../node_modules/froala-editor/js/plugins/lists.min.js", "../../../node_modules/froala-editor/js/plugins/paragraph_format.min.js", "../../../node_modules/froala-editor/js/plugins/help.min.js", "../../../node_modules/froala-editor/js/plugins/quick_insert.min.js", "../../../node_modules/froala-editor/js/plugins/video.min.js", "../../../node_modules/froala-editor/js/plugins/table.min.js", "../../../node_modules/froala-editor/js/plugins/url.min.js", "../../../node_modules/preact/src/constants.js", "../../../node_modules/preact/src/util.js", "../../../node_modules/preact/src/options.js", "../../../node_modules/preact/src/create-element.js", "../../../node_modules/preact/src/component.js", "../../../node_modules/preact/src/diff/props.js", "../../../node_modules/preact/src/create-context.js", "../../../node_modules/preact/src/diff/children.js", "../../../node_modules/preact/src/diff/index.js", "../../../node_modules/preact/src/render.js", "../../../node_modules/preact/src/clone-element.js", "../../../node_modules/preact/src/diff/catch-error.js", "../../../node_modules/preact/hooks/src/index.js", "../../../node_modules/preact/compat/src/util.js", "../../../node_modules/preact/compat/src/PureComponent.js", "../../../node_modules/preact/compat/src/memo.js", "../../../node_modules/preact/compat/src/forwardRef.js", "../../../node_modules/preact/compat/src/Children.js", "../../../node_modules/preact/compat/src/suspense.js", "../../../node_modules/preact/compat/src/suspense-list.js", "../../../node_modules/preact/src/constants.js", "../../../node_modules/preact/compat/src/portals.js", "../../../node_modules/preact/compat/src/render.js", "../../../node_modules/preact/compat/src/index.js", "../../../node_modules/@fortawesome/react-fontawesome/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/@fortawesome/react-fontawesome/node_modules/prop-types/factoryWithThrowingShims.js", "../../../node_modules/@fortawesome/react-fontawesome/node_modules/prop-types/index.js", "../../../node_modules/react/index.js", "../../../node_modules/@stripe/react-stripe-js/dist/react-stripe.umd.js", "../javascripts/cable.js", "../../../node_modules/jstz/dist/jstz.js", "../../../node_modules/jstz/index.js", "../../../node_modules/local-time/app/assets/javascripts/local-time.js", "../../../node_modules/json-stringify-pretty-compact/index.js", "../../../node_modules/select2/dist/js/select2.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../../node_modules/turbo_power/dist/turbo_power.js", "../../javascript/application.js", "../../javascript/initializers/jquery.js", "../../../vendor/assets/javascripts/voltage.js", "../../javascript/initializers/voltage.js", "../javascripts/collapse_expand.js", "../../javascript/initializers/collapse_expand.js", "../../javascript/helpers/trix_helper.js", "../../javascript/initializers/trix.js", "../javascripts/school/bizbuilders.js", "../../javascript/initializers/bizbuilders.js", "../javascripts/school/bizbuilder/landing_pages/trial_memberships.js", "../../javascript/initializers/trial_memberships.js", "../javascripts/school/bizbuilder/landing_pages/programs.js", "../../javascript/initializers/programs.js", "../javascripts/school/bizbuilder/landing_pages/scheduler.js", "../../javascript/initializers/scheduler.js", "../../javascript/initializers/moment.js", "../../javascript/initializers/fullcalendar.js", "../javascripts/forms.js", "../../javascript/initializers/forms.js", "../javascripts/init_modal_content.js", "../../javascript/initializers/modal_content.js", "../javascripts/lazy_load.js", "../../javascript/initializers/lazy_load.js", "../javascripts/school/students.js", "../../javascript/initializers/students.js", "../javascripts/support.js", "../../javascript/initializers/support.js", "../javascripts/adobe_pdf.js", "../../javascript/initializers/adobe_pdf.js", "../javascripts/clipboard.js", "../../javascript/initializers/clipboard.js", "../javascripts/custom_list_view.js", "../../javascript/initializers/custom_list_view.js", "../javascripts/embedded.js", "../../javascript/initializers/embedded.js", "../javascripts/is_mobile.js", "../../javascript/initializers/is_mobile.js", "../javascripts/signature.js", "../../javascript/initializers/signature.js", "../javascripts/school/navbar_highlight.js", "../../javascript/initializers/navbar_hightlight.js", "../javascripts/school/people/profile/student_user_account.js", "../../javascript/initializers/student_user_account.js", "../javascripts/school/people/profile.js", "../../javascript/initializers/profile.js", "../javascripts/school/bizbuilder/landing_pages/inventory.js", "../../javascript/initializers/inventory.js", "../javascripts/school/bizbuilder/landing_pages.js", "../../javascript/initializers/landing_pages.js", "../../../node_modules/signature_pad/src/point.ts", "../../../node_modules/signature_pad/src/bezier.ts", "../../../node_modules/signature_pad/src/signature_event_target.ts", "../../../node_modules/signature_pad/src/throttle.ts", "../../../node_modules/signature_pad/src/signature_pad.ts", "../../javascript/initializers/signature_pad.js", "../../../vendor/assets/javascripts/voltage-themes/pallette.js", "../../javascript/initializers/pallette.js", "../javascripts/school/bizbuilder/landing_pages/create_prospect.js", "../../javascript/initializers/create_prospect.js", "../../javascript/initializers/rails_ujs.js", "../../javascript/initializers/intl_tel_input.js", "../javascripts/layout.js", "../../../node_modules/bootstrap-sass/assets/javascripts/bootstrap.js", "../../../node_modules/bootstrap-toggle/js/bootstrap-toggle.js", "../../../vendor/assets/javascripts/jquery.gauge.js", "../../../vendor/assets/javascripts/intl-tel-input/utils.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/helpers/fetch_helper.js", "../../javascript/controllers/application_controller.js", "../../../node_modules/hotkeys-js/dist/hotkeys.esm.js", "../../../node_modules/stimulus-use/dist/index.js", "../../javascript/controllers/click_outside_controller.js", "../../javascript/helpers/confirmation_submit_helper.js", "../../javascript/helpers/modal_helper.js", "../../javascript/controllers/confirmation_submit_controller.js", "../../javascript/controllers/dashboard_module_controller.js", "../../../node_modules/sortablejs/modular/sortable.core.esm.js", "../../javascript/helpers/sortable_helper.js", "../../javascript/controllers/drop_sortable_controller.js", "../../../node_modules/just-extend/index.esm.js", "../../../node_modules/dropzone/dist/src/dropzone.js", "../../../node_modules/dropzone/dist/src/emitter.js", "../../../node_modules/dropzone/dist/src/options.js", "../../../node_modules/dropzone/dist/node_modules/@parcel/runtime-js/lib/bundles/runtime-044f6de40395a564.js", "../../javascript/controllers/dropzone_controller.js", "../../javascript/helpers/visibility_helper.js", "../../javascript/controllers/embedded/lp_navigation_controller.js", "../../javascript/controllers/embedded/lp_payment_controller.js", "../../javascript/controllers/embedded/lp_scheduler_controller.js", "../../javascript/controllers/embedded/program_signup_controller.js", "../../javascript/controllers/embedded/public_controller.js", "../../javascript/controllers/schools/recent_activity_filter_controller.js", "../../javascript/controllers/focus_controller.js", "../../javascript/controllers/form_sortable_controller.js", "../../javascript/controllers/icon_loading_controller.js", "../../../node_modules/imask/esm/_rollupPluginBabelHelpers-a0b34764.js", "../../../node_modules/imask/esm/core/utils.js", "../../../node_modules/imask/esm/core/action-details.js", "../../../node_modules/imask/esm/core/change-details.js", "../../../node_modules/imask/esm/core/continuous-tail-details.js", "../../../node_modules/imask/esm/core/holder.js", "../../../node_modules/imask/esm/masked/base.js", "../../../node_modules/imask/esm/masked/factory.js", "../../../node_modules/imask/esm/masked/pattern/input-definition.js", "../../../node_modules/imask/esm/masked/pattern/fixed-definition.js", "../../../node_modules/imask/esm/masked/pattern/chunk-tail-details.js", "../../../node_modules/imask/esm/masked/regexp.js", "../../../node_modules/imask/esm/masked/pattern.js", "../../../node_modules/imask/esm/masked/range.js", "../../../node_modules/imask/esm/masked/date.js", "../../../node_modules/imask/esm/controls/mask-element.js", "../../../node_modules/imask/esm/controls/html-mask-element.js", "../../../node_modules/imask/esm/controls/html-contenteditable-mask-element.js", "../../../node_modules/imask/esm/controls/input.js", "../../../node_modules/imask/esm/masked/enum.js", "../../../node_modules/imask/esm/masked/number.js", "../../../node_modules/imask/esm/masked/function.js", "../../../node_modules/imask/esm/masked/dynamic.js", "../../../node_modules/imask/esm/masked/pipe.js", "../../../node_modules/imask/esm/index.js", "../../javascript/controllers/imask_controller.js", "../../javascript/controllers/inline_edit_controller.js", "../../javascript/controllers/modal_controller.js", "../../javascript/controllers/preferences_controller.js", "../../javascript/controllers/radio_btn_controller.js", "../../javascript/controllers/radio_btn_group_controller.js", "../../javascript/controllers/schools/class_events_controller.js", "../../javascript/controllers/schools/class_registrations_controller.js", "../../javascript/controllers/schools/event_type_toggler_controller.js", "../../javascript/controllers/schools/hovercard_controller.js", "../../javascript/controllers/schools/membership_templates_controller.js", "../../javascript/controllers/schools/mini_calendar_controller.js", "../../javascript/controllers/schools/pagination_controller.js", "../../javascript/controllers/schools/pretty_checkbox_controller.js", "../../javascript/controllers/schools/programs_controller.js", "../../javascript/helpers/gray_out_helper.js", "../../javascript/helpers/belt_graphic_preview_helper.js", "../../javascript/controllers/schools/ranks_controller.js", "../../javascript/controllers/schools/recurring_classes_controller.js", "../../javascript/controllers/schools/students_filter_controller.js", "../../javascript/controllers/select2_controller.js", "../../components/time_field/component.js", "../../javascript/controllers/toggle_class_controller.js", "../../javascript/controllers/schools/signups/programs_and_ranks_step_controller.js", "../../javascript/controllers/schools/signups/calculate_membership_totals_controller.js", "../../javascript/controllers/toggle_disable_controller.js", "../../javascript/helpers/flatpickr_helper.js", "../../javascript/controllers/toggle_form_submit_controller.js", "../../javascript/controllers/tom_select_controller.js", "../../javascript/controllers/tooltip_controller.js", "../../javascript/controllers/url_field_controller.js", "../../javascript/controllers/replace_on_change_controller.js", "../../javascript/controllers/payment_form_controller.js", "../../javascript/controllers/lazy_image_controller.js", "../../javascript/helpers/cookies.js", "../../javascript/controllers/pwa_controller.js", "../../javascript/controllers/beacon_controller.js", "../../../node_modules/flatpickr/dist/esm/types/options.js", "../../../node_modules/flatpickr/dist/esm/l10n/default.js", "../../../node_modules/flatpickr/dist/esm/utils/index.js", "../../../node_modules/flatpickr/dist/esm/utils/dom.js", "../../../node_modules/flatpickr/dist/esm/utils/formatting.js", "../../../node_modules/flatpickr/dist/esm/utils/dates.js", "../../../node_modules/flatpickr/dist/esm/utils/polyfills.js", "../../../node_modules/flatpickr/dist/esm/index.js", "../../../node_modules/stimulus-flatpickr/node_modules/@hotwired/stimulus/dist/stimulus.js", "../../../node_modules/stimulus-flatpickr/src/utils.js", "../../../node_modules/stimulus-flatpickr/src/config_options.js", "../../../node_modules/stimulus-flatpickr/src/events.js", "../../../node_modules/stimulus-flatpickr/src/elements.js", "../../../node_modules/stimulus-flatpickr/src/strftime_mapping.js", "../../../node_modules/stimulus-flatpickr/src/index.js", "../../javascript/controllers/flatpickr_controller.js", "../../../node_modules/stimulus-carousel/node_modules/ssr-window/ssr-window.esm.js", "../../../node_modules/stimulus-carousel/node_modules/dom7/dom7.esm.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/dom.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/utils.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/get-support.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/get-device.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/get-browser.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/modules/resize/resize.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/modules/observer/observer.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events-emitter.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateSize.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateSlides.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateAutoHeight.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateSlidesOffset.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateSlidesProgress.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateProgress.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateSlidesClasses.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateActiveIndex.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateClickedSlide.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/translate/getTranslate.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/translate/setTranslate.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/translate/minTranslate.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/translate/maxTranslate.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/translate/translateTo.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/translate/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/transition/setTransition.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/transition/transitionEmit.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/transition/transitionStart.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/transition/transitionEnd.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/transition/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slideTo.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slideToLoop.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slideNext.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slidePrev.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slideReset.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slideToClosest.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slideToClickedSlide.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/loop/loopCreate.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/loop/loopFix.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/loop/loopDestroy.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/loop/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/grab-cursor/setGrabCursor.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/grab-cursor/unsetGrabCursor.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/grab-cursor/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/onTouchStart.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/onTouchMove.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/onTouchEnd.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/onResize.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/onClick.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/onScroll.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/breakpoints/setBreakpoint.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/breakpoints/getBreakpoint.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/breakpoints/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/classes/addClasses.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/classes/removeClasses.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/classes/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/images/loadImage.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/images/preloadImages.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/images/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/check-overflow/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/defaults.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/moduleExtendParams.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/core.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/virtual/virtual.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/keyboard/keyboard.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/mousewheel/mousewheel.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/create-element-if-not-defined.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/navigation/navigation.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/classes-to-selector.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/pagination/pagination.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/scrollbar/scrollbar.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/parallax/parallax.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/zoom/zoom.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/lazy/lazy.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/controller/controller.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/a11y/a11y.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/history/history.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/hash-navigation/hash-navigation.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/autoplay/autoplay.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/thumbs/thumbs.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/free-mode/free-mode.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/grid/grid.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/manipulation/methods/appendSlide.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/manipulation/methods/prependSlide.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/manipulation/methods/addSlide.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/manipulation/methods/removeSlide.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/manipulation/methods/removeAllSlides.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/manipulation/manipulation.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/effect-init.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/effect-target.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/effect-virtual-transition-end.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/effect-fade/effect-fade.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/effect-cube/effect-cube.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/create-shadow.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/effect-flip/effect-flip.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/effect-coverflow/effect-coverflow.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/effect-creative/effect-creative.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/effect-cards/effect-cards.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/swiper-bundle.esm.js", "../../../node_modules/stimulus-carousel/dist/stimulus-carousel.es.js", "../../components/sidebar/component_controller.js", "../../components/collapse/component_controller.js", "../../components/dropdown/component_controller.js", "../../components/tray/component_controller.js", "../../components/address_field/component_controller.js", "../../components/editable_logo/component_controller.js", "../../components/payment_methods/component_controller.js", "../../components/tokenizer/component_controller.js", "../../components/stripe_form/component_controller.js", "../../components/basys_form/component_controller.js", "../../components/usa_epay_form/component_controller.js", "../../components/password_field/component_controller.js", "../../components/phone_field/component_controller.js", "../../components/confirmable_button/component_controller.js", "../../components/gauge/component_controller.js", "../../components/searchable_person_field/component_controller.js", "../../components/preferrable_collapse/component_controller.js", "../../components/modal/component_controller.js", "../../components/modal_form/component_controller.js", "../../components/wizard_modal/component_controller.js", "../../components/countable_text_field/component_controller.js", "../../components/expandable_text_display/component_controller.js", "../../components/filter/component_controller.js", "../../components/did_you_know/component_controller.js", "../../javascript/controllers/student_view/scheduler_controller.js", "../../javascript/controllers/schools/student_controller.js", "../../javascript/controllers/scroll_to_controller.js", "../../javascript/controllers/toggleable_input_controller.js", "../../javascript/controllers/toggleable_frame_controller.js", "../../javascript/controllers/copyable_input_controller.js", "../../javascript/controllers/turbo_pagination_controller.js", "../javascripts/school/prospects.js", "../../javascript/controllers/schools/prospect_controller.js", "../../javascript/controllers/duplicate_fieldset_controller.js", "../../javascript/controllers/auto_sort_controller.js", "../../components/text_editor/component_controller.js", "../../javascript/controllers/add_on_select_controller.js", "../../components/transition_button/component_controller.js", "../../components/auto_sort_list/component_controller.js", "../../components/money_field/component_controller.js", "../../components/percentage_field/component_controller.js", "../../components/integer_field/component_controller.js", "../../javascript/controllers/required_field_checkbox_controller.js", "../../javascript/controllers/toggle_select_controller.js", "../../javascript/helpers/rounding_helper.js", "../../javascript/controllers/line_item_calculate_controller.js", "../../javascript/controllers/calculate_invoice_totals_controller.js", "../../javascript/controllers/calculate_invoice_due_date_controller.js", "../../javascript/controllers/change_due_controller.js", "../../javascript/controllers/turbo_stream_controller.js", "../../javascript/controllers/payment_processing_controller.js", "../../javascript/controllers/stripe_controller.js", "../../javascript/controllers/basys_controller.js", "../../javascript/controllers/usa_epay_controller.js", "../../javascript/controllers/print_controller.js", "../../javascript/controllers/money_distributor_controller.js", "../../javascript/controllers/money_controller.js", "../../javascript/controllers/remove_line_item_controller.js", "../../javascript/controllers/recurring_billings_controller.js", "../../components/image_cropper/component_controller.js", "../../javascript/channels/consumer.js", "../../javascript/controllers/quick_action_progress_controller.js", "../../javascript/controllers/state_transitions_controller.js", "../../javascript/controllers/remove_notice_controller.js", "../../components/filterable_list/component_controller.js", "../../components/filterable_list/sorter/component_controller.js", "../../components/filterable_list/search/component_controller.js", "../../components/filterable_list/action/component_controller.js", "../../components/filterable_list/selection_banner/component_controller.js", "../../javascript/controllers/attendances_controller.js", "../../javascript/controllers/share_and_sign_agreement_controller.js", "../../components/pdf_viewer/component_controller.js", "../../components/wysiwyg/component_controller.js", "../../javascript/controllers/agreement_preview_controller.js", "../../javascript/controllers/trial_membership_form_controller.js", "../../javascript/controllers/signup_membership_controller.js", "../../components/filter_section/component_controller.js", "../../components/filter_section/group/component_controller.js", "../../components/filter_section/filter/component_controller.js", "../../javascript/controllers/recurring_billings_index_controller.js", "../../javascript/controllers/edit_membership_controller.js", "../../javascript/controllers/backdated_payments_controller.js", "../../javascript/controllers/reactivate_membership_controller.js", "../../javascript/controllers/form_controller.js", "../../components/payment_method_selector/component_controller.js", "../../javascript/controllers/adjust_invoice_balance_controller.js", "../../javascript/controllers/reecurring_billing_duration_controller.js", "../../javascript/controllers/membership_attendance_controller.js", "../../javascript/controllers/new_student_controller.js", "../../components/universal_search_field/component_controller.js", "../../javascript/controllers/classes_details_controller.js", "../../javascript/controllers/promotions_controller.js", "../../javascript/controllers/promotions_progress_controller.js", "../../../node_modules/fuse.js/dist/fuse.mjs", "../../javascript/controllers/quicklinks_controller.js", "../../javascript/controllers/new_attendance_controller.js", "../../javascript/controllers/edit_person_attendances_controller.js", "../../components/file_field/component_controller.js", "../../javascript/controllers/new_family_member_controller.js", "../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs", "../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs", "../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs", "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs", "../../javascript/controllers/person_hovercard_controller.js", "../../javascript/controllers/schools/modules_nav_controller.js", "../../javascript/controllers/accounts_controller.js", "../../javascript/controllers/family_management_invites_send_modal_controller.js", "../../../node_modules/tabbable/src/index.js", "../../../node_modules/focus-trap/index.js", "../../components/popover/component_controller.js", "../../components/expandable_list_display/component_controller.js", "../../javascript/controllers/schools/turbo_form_submit_redirect_controller.js", "../../components/profile_field/component_controller.js", "../../javascript/controllers/toggle_visibility_controller.js", "../../javascript/controllers/hideable_form_controller.js", "../../javascript/controllers/searchable_list.js", "../../javascript/controllers/toggle_save_visibility_controller.js", "../../javascript/controllers/safe_submit_controller.js", "../../javascript/controllers/lcf_preview_controller.jsx", "../../javascript/components/lead_capture_form.jsx", "../../javascript/components/address_field.jsx", "../../javascript/components/landing_page.jsx", "../../../node_modules/@preact/signals/src/index.ts", "../../../node_modules/@preact/signals-core/src/index.ts", "../../javascript/components/landing_pages/sign_up.jsx", "../../javascript/components/landing_pages/membership.jsx", "../../../node_modules/@fortawesome/fontawesome-svg-core/index.mjs", "../../../node_modules/@fortawesome/react-fontawesome/index.es.js", "../../../node_modules/react/index.mjs", "../../javascript/components/landing_pages/collapsible.jsx", "../../javascript/components/landing_pages/cart.jsx", "../../javascript/components/landing_pages/error.jsx", "../../javascript/components/select.jsx", "../../javascript/components/landing_pages/classes.jsx", "../../javascript/components/landing_pages/merchandise.jsx", "../../javascript/components/landing_pages/confirmation.jsx", "../../javascript/components/landing_pages/confirmation/generic.jsx", "../../javascript/components/landing_pages/confirmation/members.jsx", "../../javascript/components/landing_pages/confirmation/cart.jsx", "../../javascript/components/landing_pages/confirmation/payment.jsx", "../../javascript/components/landing_pages/confirmation/basys.jsx", "../../javascript/components/landing_pages/tokenizers/basys.js", "../../javascript/components/landing_pages/confirmation/stripe.jsx", "../../javascript/components/landing_pages/confirmation/usa_epay.jsx", "../../javascript/components/landing_pages/tokenizers/usa_epay.js", "../../javascript/components/landing_pages/step_tracker.jsx", "../../javascript/components/agreements.jsx", "../../javascript/components/phone_field.jsx", "../../javascript/controllers/new_promotion_controller.js", "../../javascript/controllers/schools/profile_setting_controller.js", "../../components/color_field/component_controller.js", "../../javascript/controllers/keyed_visibility_controller.js", "../../javascript/controllers/swap_visibility_controller.js", "../../javascript/controllers/required_checkbox_group_controller.js", "../../javascript/controllers/mark_checked_controller.js", "../../javascript/controllers/sync_checkboxes_controller.js", "../../javascript/controllers/account_registrations_controller.js", "../../javascript/controllers/landing_page_programs_controller.js", "../../javascript/controllers/index.js", "../javascripts/index.js", "../javascripts/accounts.js", "../javascripts/calendar.js", "../javascripts/user_sessions.js", "../javascripts/school/add_new_modal_submission.js", "../javascripts/school/add_new_modal.js", "../javascripts/school/calendar.js", "../javascripts/school/dashboard.js", "../javascripts/school/fixable_header.js", "../javascripts/school/notifications.js", "../javascripts/school/search.js", "../javascripts/school/theme.js", "../javascripts/school/bizbuilder/lead_capture_forms.js", "../javascripts/school/bizbuilder/landing_pages/add_new_agreement.js", "../javascripts/school/bizbuilder/landing_pages/add_new_trial_membership.js", "../javascripts/school/bizbuilder/landing_pages/confirmation_email.js", "../javascripts/school/bizbuilder/landing_pages/quick_connect.js", "../javascripts/school/bizbuilder/landing_pages/redirect.js", "../javascripts/school/configuration/dashboard.js", "../javascripts/school/people/comments.js", "../javascripts/school/people/profile_photo.js", "../javascripts/school/people/profile_sidebar.js", "../javascripts/school/people/profile/agreements.js", "../javascripts/school/people/profile/history.js", "../javascripts/school/people/profile/promotions.js", "../javascripts/school/students/profile/programs_modal.js", "../javascripts/channels/attendances_delete_notifications.js", "../javascripts/channels/person_comment_delete_notifications.js", "../javascripts/channels/prospects_bulk_edit_notifications.js", "../javascripts/channels/student_restore_notifications.js", "../javascripts/channels/students_bulk_edit_notifications.js", "../javascripts/billing/ks_basys.js", "../javascripts/billing/ks_stripe.js", "../javascripts/billing/ks_usa_epay.js", "../../javascript/helpers/html_helper.js", "../../components/confirm_button_to/component.js", "../../../node_modules/fast-json-patch/module/core.mjs", "../../../node_modules/fast-json-patch/module/helpers.mjs", "../../../node_modules/fast-json-patch/module/duplex.mjs", "../../../node_modules/fast-json-patch/index.mjs", "../../../node_modules/vega/build/vega.module.js", "../../../node_modules/vega-util/build/vega-util.module.js", "../../../node_modules/d3-dsv/src/dsv.js", "../../../node_modules/topojson-client/src/identity.js", "../../../node_modules/topojson-client/src/transform.js", "../../../node_modules/topojson-client/src/reverse.js", "../../../node_modules/topojson-client/src/feature.js", "../../../node_modules/topojson-client/src/stitch.js", "../../../node_modules/topojson-client/src/mesh.js", "../../../node_modules/d3-array/src/ascending.js", "../../../node_modules/d3-array/src/descending.js", "../../../node_modules/d3-array/src/bisector.js", "../../../node_modules/d3-array/src/number.js", "../../../node_modules/d3-array/src/bisect.js", "../../../node_modules/d3-array/src/variance.js", "../../../node_modules/d3-array/src/deviation.js", "../../../node_modules/d3-array/src/fsum.js", "../../../node_modules/internmap/src/index.js", "../../../node_modules/d3-array/src/permute.js", "../../../node_modules/d3-array/src/sort.js", "../../../node_modules/d3-array/src/ticks.js", "../../../node_modules/d3-array/src/max.js", "../../../node_modules/d3-array/src/min.js", "../../../node_modules/d3-array/src/quickselect.js", "../../../node_modules/d3-array/src/quantile.js", "../../../node_modules/d3-array/src/mean.js", "../../../node_modules/d3-array/src/median.js", "../../../node_modules/d3-array/src/merge.js", "../../../node_modules/d3-array/src/range.js", "../../../node_modules/d3-array/src/sum.js", "../../../node_modules/d3-array/src/intersection.js", "../../../node_modules/d3-array/src/union.js", "../../../node_modules/d3-format/src/formatDecimal.js", "../../../node_modules/d3-format/src/exponent.js", "../../../node_modules/d3-format/src/formatGroup.js", "../../../node_modules/d3-format/src/formatNumerals.js", "../../../node_modules/d3-format/src/formatSpecifier.js", "../../../node_modules/d3-format/src/formatTrim.js", "../../../node_modules/d3-format/src/formatPrefixAuto.js", "../../../node_modules/d3-format/src/formatRounded.js", "../../../node_modules/d3-format/src/formatTypes.js", "../../../node_modules/d3-format/src/identity.js", "../../../node_modules/d3-format/src/locale.js", "../../../node_modules/d3-format/src/defaultLocale.js", "../../../node_modules/d3-format/src/precisionFixed.js", "../../../node_modules/d3-format/src/precisionPrefix.js", "../../../node_modules/d3-format/src/precisionRound.js", "../../../node_modules/d3-time/src/interval.js", "../../../node_modules/d3-time/src/millisecond.js", "../../../node_modules/d3-time/src/second.js", "../../../node_modules/d3-time/src/minute.js", "../../../node_modules/d3-time/src/hour.js", "../../../node_modules/d3-time/src/day.js", "../../../node_modules/d3-time/src/week.js", "../../../node_modules/d3-time/src/month.js", "../../../node_modules/d3-time/src/year.js", "../../../node_modules/d3-time/src/ticks.js", "../../../node_modules/vega-time/build/vega-time.module.js", "../../../node_modules/d3-time-format/src/locale.js", "../../../node_modules/d3-time-format/src/defaultLocale.js", "../../../node_modules/vega-format/build/vega-format.module.js", "../../../node_modules/vega-loader/build/vega-loader.browser.module.js", "../../../node_modules/vega-dataflow/build/vega-dataflow.module.js", "../../../node_modules/vega-transforms/build/vega-transforms.module.js", "../../../node_modules/vega-statistics/build/vega-statistics.module.js", "../../../node_modules/vega-view-transforms/build/vega-view-transforms.module.js", "../../../node_modules/d3-shape/src/constant.js", "../../../node_modules/d3-shape/src/math.js", "../../../node_modules/d3-path/src/path.js", "../../../node_modules/d3-shape/src/path.js", "../../../node_modules/d3-shape/src/arc.js", "../../../node_modules/d3-shape/src/array.js", "../../../node_modules/d3-shape/src/curve/linear.js", "../../../node_modules/d3-shape/src/point.js", "../../../node_modules/d3-shape/src/line.js", "../../../node_modules/d3-shape/src/area.js", "../../../node_modules/d3-shape/src/symbol/circle.js", "../../../node_modules/d3-shape/src/symbol.js", "../../../node_modules/d3-shape/src/noop.js", "../../../node_modules/d3-shape/src/curve/basis.js", "../../../node_modules/d3-shape/src/curve/basisClosed.js", "../../../node_modules/d3-shape/src/curve/basisOpen.js", "../../../node_modules/d3-shape/src/curve/bundle.js", "../../../node_modules/d3-shape/src/curve/cardinal.js", "../../../node_modules/d3-shape/src/curve/cardinalClosed.js", "../../../node_modules/d3-shape/src/curve/cardinalOpen.js", "../../../node_modules/d3-shape/src/curve/catmullRom.js", "../../../node_modules/d3-shape/src/curve/catmullRomClosed.js", "../../../node_modules/d3-shape/src/curve/catmullRomOpen.js", "../../../node_modules/d3-shape/src/curve/linearClosed.js", "../../../node_modules/d3-shape/src/curve/monotone.js", "../../../node_modules/d3-shape/src/curve/natural.js", "../../../node_modules/d3-shape/src/curve/step.js", "../../../node_modules/vega-canvas/build/vega-canvas.browser.module.js", "../../../node_modules/d3-scale/src/init.js", "../../../node_modules/d3-scale/src/ordinal.js", "../../../node_modules/d3-interpolate/src/index.js", "../../../node_modules/d3-color/src/define.js", "../../../node_modules/d3-color/src/color.js", "../../../node_modules/d3-color/src/math.js", "../../../node_modules/d3-color/src/lab.js", "../../../node_modules/d3-color/src/cubehelix.js", "../../../node_modules/d3-interpolate/src/basis.js", "../../../node_modules/d3-interpolate/src/basisClosed.js", "../../../node_modules/d3-interpolate/src/constant.js", "../../../node_modules/d3-interpolate/src/color.js", "../../../node_modules/d3-interpolate/src/rgb.js", "../../../node_modules/d3-interpolate/src/numberArray.js", "../../../node_modules/d3-interpolate/src/array.js", "../../../node_modules/d3-interpolate/src/date.js", "../../../node_modules/d3-interpolate/src/number.js", "../../../node_modules/d3-interpolate/src/object.js", "../../../node_modules/d3-interpolate/src/string.js", "../../../node_modules/d3-interpolate/src/value.js", "../../../node_modules/d3-interpolate/src/discrete.js", "../../../node_modules/d3-interpolate/src/hue.js", "../../../node_modules/d3-interpolate/src/round.js", "../../../node_modules/d3-interpolate/src/transform/decompose.js", "../../../node_modules/d3-interpolate/src/transform/parse.js", "../../../node_modules/d3-interpolate/src/transform/index.js", "../../../node_modules/d3-interpolate/src/zoom.js", "../../../node_modules/d3-interpolate/src/hsl.js", "../../../node_modules/d3-interpolate/src/lab.js", "../../../node_modules/d3-interpolate/src/hcl.js", "../../../node_modules/d3-interpolate/src/cubehelix.js", "../../../node_modules/d3-interpolate/src/piecewise.js", "../../../node_modules/d3-interpolate/src/quantize.js", "../../../node_modules/d3-scale/src/constant.js", "../../../node_modules/d3-scale/src/number.js", "../../../node_modules/d3-scale/src/continuous.js", "../../../node_modules/d3-scale/src/tickFormat.js", "../../../node_modules/d3-scale/src/linear.js", "../../../node_modules/d3-scale/src/identity.js", "../../../node_modules/d3-scale/src/nice.js", "../../../node_modules/d3-scale/src/log.js", "../../../node_modules/d3-scale/src/symlog.js", "../../../node_modules/d3-scale/src/pow.js", "../../../node_modules/d3-scale/src/quantile.js", "../../../node_modules/d3-scale/src/quantize.js", "../../../node_modules/d3-scale/src/threshold.js", "../../../node_modules/d3-scale/src/time.js", "../../../node_modules/d3-scale/src/utcTime.js", "../../../node_modules/d3-scale/src/sequential.js", "../../../node_modules/d3-scale/src/diverging.js", "../../../node_modules/vega-scale/build/vega-scale.module.js", "../../../node_modules/vega-scenegraph/build/vega-scenegraph.module.js", "../../../node_modules/vega-encode/build/vega-encode.module.js", "../../../node_modules/vega-geo/build/vega-geo.module.js", "../../../node_modules/d3-geo/src/math.js", "../../../node_modules/d3-geo/src/noop.js", "../../../node_modules/d3-geo/src/stream.js", "../../../node_modules/d3-geo/src/area.js", "../../../node_modules/d3-geo/src/cartesian.js", "../../../node_modules/d3-geo/src/bounds.js", "../../../node_modules/d3-geo/src/centroid.js", "../../../node_modules/d3-geo/src/compose.js", "../../../node_modules/d3-geo/src/rotation.js", "../../../node_modules/d3-geo/src/circle.js", "../../../node_modules/d3-geo/src/clip/buffer.js", "../../../node_modules/d3-geo/src/pointEqual.js", "../../../node_modules/d3-geo/src/clip/rejoin.js", "../../../node_modules/d3-geo/src/polygonContains.js", "../../../node_modules/d3-geo/src/clip/index.js", "../../../node_modules/d3-geo/src/clip/antimeridian.js", "../../../node_modules/d3-geo/src/clip/circle.js", "../../../node_modules/d3-geo/src/clip/line.js", "../../../node_modules/d3-geo/src/clip/rectangle.js", "../../../node_modules/d3-geo/src/graticule.js", "../../../node_modules/d3-geo/src/identity.js", "../../../node_modules/d3-geo/src/path/area.js", "../../../node_modules/d3-geo/src/path/bounds.js", "../../../node_modules/d3-geo/src/path/centroid.js", "../../../node_modules/d3-geo/src/path/context.js", "../../../node_modules/d3-geo/src/path/measure.js", "../../../node_modules/d3-geo/src/path/string.js", "../../../node_modules/d3-geo/src/path/index.js", "../../../node_modules/d3-geo/src/transform.js", "../../../node_modules/d3-geo/src/projection/fit.js", "../../../node_modules/d3-geo/src/projection/resample.js", "../../../node_modules/d3-geo/src/projection/index.js", "../../../node_modules/d3-geo/src/projection/conic.js", "../../../node_modules/d3-geo/src/projection/cylindricalEqualArea.js", "../../../node_modules/d3-geo/src/projection/conicEqualArea.js", "../../../node_modules/d3-geo/src/projection/albers.js", "../../../node_modules/d3-geo/src/projection/albersUsa.js", "../../../node_modules/d3-geo/src/projection/azimuthal.js", "../../../node_modules/d3-geo/src/projection/azimuthalEqualArea.js", "../../../node_modules/d3-geo/src/projection/azimuthalEquidistant.js", "../../../node_modules/d3-geo/src/projection/mercator.js", "../../../node_modules/d3-geo/src/projection/conicConformal.js", "../../../node_modules/d3-geo/src/projection/equirectangular.js", "../../../node_modules/d3-geo/src/projection/conicEquidistant.js", "../../../node_modules/d3-geo/src/projection/equalEarth.js", "../../../node_modules/d3-geo/src/projection/gnomonic.js", "../../../node_modules/d3-geo/src/projection/identity.js", "../../../node_modules/d3-geo/src/projection/naturalEarth1.js", "../../../node_modules/d3-geo/src/projection/orthographic.js", "../../../node_modules/d3-geo/src/projection/stereographic.js", "../../../node_modules/d3-geo/src/projection/transverseMercator.js", "../../../node_modules/d3-geo-projection/src/math.js", "../../../node_modules/d3-geo-projection/src/mollweide.js", "../../../node_modules/vega-projection/build/vega-projection.module.js", "../../../node_modules/vega-force/build/vega-force.module.js", "../../../node_modules/d3-force/src/center.js", "../../../node_modules/d3-quadtree/src/add.js", "../../../node_modules/d3-quadtree/src/cover.js", "../../../node_modules/d3-quadtree/src/data.js", "../../../node_modules/d3-quadtree/src/extent.js", "../../../node_modules/d3-quadtree/src/quad.js", "../../../node_modules/d3-quadtree/src/find.js", "../../../node_modules/d3-quadtree/src/remove.js", "../../../node_modules/d3-quadtree/src/root.js", "../../../node_modules/d3-quadtree/src/size.js", "../../../node_modules/d3-quadtree/src/visit.js", "../../../node_modules/d3-quadtree/src/visitAfter.js", "../../../node_modules/d3-quadtree/src/x.js", "../../../node_modules/d3-quadtree/src/y.js", "../../../node_modules/d3-quadtree/src/quadtree.js", "../../../node_modules/d3-force/src/constant.js", "../../../node_modules/d3-force/src/jiggle.js", "../../../node_modules/d3-force/src/collide.js", "../../../node_modules/d3-force/src/link.js", "../../../node_modules/d3-dispatch/src/dispatch.js", "../../../node_modules/d3-timer/src/timer.js", "../../../node_modules/d3-timer/src/interval.js", "../../../node_modules/d3-force/src/lcg.js", "../../../node_modules/d3-force/src/simulation.js", "../../../node_modules/d3-force/src/manyBody.js", "../../../node_modules/d3-force/src/x.js", "../../../node_modules/d3-force/src/y.js", "../../../node_modules/vega-hierarchy/build/vega-hierarchy.module.js", "../../../node_modules/d3-hierarchy/src/cluster.js", "../../../node_modules/d3-hierarchy/src/hierarchy/count.js", "../../../node_modules/d3-hierarchy/src/hierarchy/each.js", "../../../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js", "../../../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js", "../../../node_modules/d3-hierarchy/src/hierarchy/find.js", "../../../node_modules/d3-hierarchy/src/hierarchy/sum.js", "../../../node_modules/d3-hierarchy/src/hierarchy/sort.js", "../../../node_modules/d3-hierarchy/src/hierarchy/path.js", "../../../node_modules/d3-hierarchy/src/hierarchy/ancestors.js", "../../../node_modules/d3-hierarchy/src/hierarchy/descendants.js", "../../../node_modules/d3-hierarchy/src/hierarchy/leaves.js", "../../../node_modules/d3-hierarchy/src/hierarchy/links.js", "../../../node_modules/d3-hierarchy/src/hierarchy/iterator.js", "../../../node_modules/d3-hierarchy/src/hierarchy/index.js", "../../../node_modules/d3-hierarchy/src/accessors.js", "../../../node_modules/d3-hierarchy/src/constant.js", "../../../node_modules/d3-hierarchy/src/lcg.js", "../../../node_modules/d3-hierarchy/src/array.js", "../../../node_modules/d3-hierarchy/src/pack/enclose.js", "../../../node_modules/d3-hierarchy/src/pack/siblings.js", "../../../node_modules/d3-hierarchy/src/pack/index.js", "../../../node_modules/d3-hierarchy/src/treemap/round.js", "../../../node_modules/d3-hierarchy/src/treemap/dice.js", "../../../node_modules/d3-hierarchy/src/partition.js", "../../../node_modules/d3-hierarchy/src/stratify.js", "../../../node_modules/d3-hierarchy/src/tree.js", "../../../node_modules/d3-hierarchy/src/treemap/slice.js", "../../../node_modules/d3-hierarchy/src/treemap/squarify.js", "../../../node_modules/d3-hierarchy/src/treemap/index.js", "../../../node_modules/d3-hierarchy/src/treemap/binary.js", "../../../node_modules/d3-hierarchy/src/treemap/sliceDice.js", "../../../node_modules/d3-hierarchy/src/treemap/resquarify.js", "../../../node_modules/vega-label/build/vega-label.module.js", "../../../node_modules/vega-regression/build/vega-regression.module.js", "../../../node_modules/vega-voronoi/build/vega-voronoi.module.js", "../../../node_modules/robust-predicates/esm/util.js", "../../../node_modules/robust-predicates/esm/orient2d.js", "../../../node_modules/robust-predicates/esm/orient3d.js", "../../../node_modules/robust-predicates/esm/incircle.js", "../../../node_modules/robust-predicates/esm/insphere.js", "../../../node_modules/delaunator/index.js", "../../../node_modules/d3-delaunay/src/path.js", "../../../node_modules/d3-delaunay/src/polygon.js", "../../../node_modules/d3-delaunay/src/voronoi.js", "../../../node_modules/d3-delaunay/src/delaunay.js", "../../../node_modules/vega-wordcloud/build/vega-wordcloud.module.js", "../../../node_modules/vega-crossfilter/build/vega-crossfilter.module.js", "../../../node_modules/vega-expression/build/vega-expression.module.js", "../../../node_modules/vega-selections/build/vega-selection.module.js", "../../../node_modules/vega-functions/build/vega-functions.module.js", "../../../node_modules/vega-runtime/build/vega-runtime.module.js", "../../../node_modules/vega-view/build/vega-view.module.js", "../../../node_modules/vega-event-selector/build/vega-event-selector.module.js", "../../../node_modules/vega-parser/build/vega-parser.module.js", "../../../node_modules/vega-interpreter/build/vega-interpreter.module.js", "../../../node_modules/vega-lite/src/index.ts", "../../../node_modules/vega-lite/src/logical.ts", "../../../node_modules/vega-lite/src/util.ts", "../../../node_modules/vega-lite/src/channel.ts", "../../../node_modules/vega-lite/src/aggregate.ts", "../../../node_modules/vega-lite/src/bin.ts", "../../../node_modules/vega-lite/src/expr.ts", "../../../node_modules/vega-lite/src/title.ts", "../../../node_modules/vega-lite/src/vega.schema.ts", "../../../node_modules/vega-lite/src/compile/common.ts", "../../../node_modules/vega-lite/src/log/message.ts", "../../../node_modules/vega-lite/src/log/index.ts", "../../../node_modules/vega-lite/src/datetime.ts", "../../../node_modules/vega-lite/src/timeunit.ts", "../../../node_modules/vega-lite/src/predicate.ts", "../../../node_modules/vega-lite/src/type.ts", "../../../node_modules/vega-lite/src/scale.ts", "../../../node_modules/vega-lite/src/mark.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/valueref.ts", "../../../node_modules/vega-lite/src/compile/format.ts", "../../../node_modules/vega-lite/src/sort.ts", "../../../node_modules/vega-lite/src/spec/facet.ts", "../../../node_modules/vega-lite/src/channeldef.ts", "../../../node_modules/vega-lite/src/axis.ts", "../../../node_modules/vega-lite/src/spec/unit.ts", "../../../node_modules/vega-lite/src/compositemark/base.ts", "../../../node_modules/vega-lite/src/encoding.ts", "../../../node_modules/vega-lite/src/compositemark/common.ts", "../../../node_modules/vega-lite/src/compositemark/boxplot.ts", "../../../node_modules/vega-lite/src/compositemark/errorbar.ts", "../../../node_modules/vega-lite/src/compositemark/errorband.ts", "../../../node_modules/vega-lite/src/compositemark/index.ts", "../../../node_modules/vega-lite/src/guide.ts", "../../../node_modules/vega-lite/src/header.ts", "../../../node_modules/vega-lite/src/legend.ts", "../../../node_modules/vega-lite/src/selection.ts", "../../../node_modules/vega-lite/src/parameter.ts", "../../../node_modules/vega-lite/src/spec/concat.ts", "../../../node_modules/vega-lite/src/spec/base.ts", "../../../node_modules/vega-lite/src/config.ts", "../../../node_modules/vega-lite/src/spec/layer.ts", "../../../node_modules/vega-lite/src/spec/repeat.ts", "../../../node_modules/vega-lite/src/spec/map.ts", "../../../node_modules/vega-lite/src/stack.ts", "../../../node_modules/vega-lite/src/compile/mark/init.ts", "../../../node_modules/vega-lite/src/normalize/pathoverlay.ts", "../../../node_modules/vega-lite/src/normalize/repeater.ts", "../../../node_modules/vega-lite/src/normalize/ruleforrangedline.ts", "../../../node_modules/vega-lite/src/normalize/core.ts", "../../../node_modules/vega-lite/src/transform.ts", "../../../node_modules/vega-lite/src/normalize/selectioncompat.ts", "../../../node_modules/vega-lite/src/normalize/toplevelselection.ts", "../../../node_modules/vega-lite/src/normalize/index.ts", "../../../node_modules/vega-lite/src/spec/toplevel.ts", "../../../node_modules/vega-lite/src/compile/split.ts", "../../../node_modules/vega-lite/src/compile/data/index.ts", "../../../node_modules/vega-lite/src/data.ts", "../../../node_modules/vega-lite/src/compile/selection/assemble.ts", "../../../node_modules/vega-lite/src/compile/data/dataflow.ts", "../../../node_modules/vega-lite/src/compile/data/timeunit.ts", "../../../node_modules/vega-lite/src/compile/selection/project.ts", "../../../node_modules/vega-lite/src/compile/selection/scales.ts", "../../../node_modules/vega-lite/src/compile/selection/interval.ts", "../../../node_modules/vega-lite/src/compile/selection/point.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/conditional.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/text.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/tooltip.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/aria.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/nonposition.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/color.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/zindex.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/offset.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/position-point.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/position-align.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/position-range.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/position-rect.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/base.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/defined.ts", "../../../node_modules/vega-lite/src/compile/selection/nearest.ts", "../../../node_modules/vega-lite/src/compile/selection/inputs.ts", "../../../node_modules/vega-lite/src/compile/selection/toggle.ts", "../../../node_modules/vega-lite/src/compile/selection/clear.ts", "../../../node_modules/vega-lite/src/compile/selection/legends.ts", "../../../node_modules/vega-lite/src/compile/selection/translate.ts", "../../../node_modules/vega-lite/src/compile/selection/zoom.ts", "../../../node_modules/vega-lite/src/compile/selection/index.ts", "../../../node_modules/vega-lite/src/compile/data/expressions.ts", "../../../node_modules/vega-lite/src/compile/data/filter.ts", "../../../node_modules/vega-lite/src/compile/selection/parse.ts", "../../../node_modules/vega-lite/src/compile/predicate.ts", "../../../node_modules/vega-lite/src/compile/axis/assemble.ts", "../../../node_modules/vega-lite/src/compile/axis/config.ts", "../../../node_modules/vega-lite/src/compile/axis/properties.ts", "../../../node_modules/vega-lite/src/compile/data/calculate.ts", "../../../node_modules/vega-lite/src/compile/header/common.ts", "../../../node_modules/vega-lite/src/compile/header/component.ts", "../../../node_modules/vega-lite/src/compile/header/assemble.ts", "../../../node_modules/vega-lite/src/compile/layoutsize/assemble.ts", "../../../node_modules/vega-lite/src/compile/layoutsize/component.ts", "../../../node_modules/vega-lite/src/compile/guide.ts", "../../../node_modules/vega-lite/src/compile/resolve.ts", "../../../node_modules/vega-lite/src/compile/legend/component.ts", "../../../node_modules/vega-lite/src/compile/legend/encode.ts", "../../../node_modules/vega-lite/src/compile/legend/properties.ts", "../../../node_modules/vega-lite/src/compile/legend/parse.ts", "../../../node_modules/vega-lite/src/compile/legend/assemble.ts", "../../../node_modules/vega-lite/src/compile/projection/assemble.ts", "../../../node_modules/vega-lite/src/projection.ts", "../../../node_modules/vega-lite/src/compile/projection/component.ts", "../../../node_modules/vega-lite/src/compile/projection/parse.ts", "../../../node_modules/vega-lite/src/compile/data/bin.ts", "../../../node_modules/vega-lite/src/compile/data/aggregate.ts", "../../../node_modules/vega-lite/src/compile/data/facet.ts", "../../../node_modules/vega-lite/src/compile/data/formatparse.ts", "../../../node_modules/vega-lite/src/compile/data/identifier.ts", "../../../node_modules/vega-lite/src/compile/data/graticule.ts", "../../../node_modules/vega-lite/src/compile/data/sequence.ts", "../../../node_modules/vega-lite/src/compile/data/source.ts", "../../../node_modules/vega-lite/src/compile/data/optimizer.ts", "../../../node_modules/vega-lite/src/compile/data/optimizers.ts", "../../../node_modules/vega-lite/src/compile/data/joinaggregate.ts", "../../../node_modules/vega-lite/src/compile/data/stack.ts", "../../../node_modules/vega-lite/src/compile/data/window.ts", "../../../node_modules/vega-lite/src/compile/data/subtree.ts", "../../../node_modules/vega-lite/src/compile/data/optimize.ts", "../../../node_modules/vega-lite/src/compile/signal.ts", "../../../node_modules/vega-lite/src/compile/scale/domain.ts", "../../../node_modules/vega-lite/src/compile/scale/assemble.ts", "../../../node_modules/vega-lite/src/compile/scale/component.ts", "../../../node_modules/vega-lite/src/compile/scale/range.ts", "../../../node_modules/vega-lite/src/compile/scale/properties.ts", "../../../node_modules/vega-lite/src/compile/scale/type.ts", "../../../node_modules/vega-lite/src/compile/scale/parse.ts", "../../../node_modules/vega-lite/src/compile/model.ts", "../../../node_modules/vega-lite/src/compile/data/density.ts", "../../../node_modules/vega-lite/src/compile/data/extent.ts", "../../../node_modules/vega-lite/src/compile/data/filterinvalid.ts", "../../../node_modules/vega-lite/src/compile/data/flatten.ts", "../../../node_modules/vega-lite/src/compile/data/fold.ts", "../../../node_modules/vega-lite/src/compile/data/geojson.ts", "../../../node_modules/vega-lite/src/compile/data/geopoint.ts", "../../../node_modules/vega-lite/src/compile/data/impute.ts", "../../../node_modules/vega-lite/src/compile/data/loess.ts", "../../../node_modules/vega-lite/src/compile/data/lookup.ts", "../../../node_modules/vega-lite/src/compile/data/quantile.ts", "../../../node_modules/vega-lite/src/compile/data/regression.ts", "../../../node_modules/vega-lite/src/compile/data/pivot.ts", "../../../node_modules/vega-lite/src/compile/data/sample.ts", "../../../node_modules/vega-lite/src/compile/data/assemble.ts", "../../../node_modules/vega-lite/src/compile/header/parse.ts", "../../../node_modules/vega-lite/src/compile/layoutsize/parse.ts", "../../../node_modules/vega-lite/src/compile/facet.ts", "../../../node_modules/vega-lite/src/compile/data/joinaggregatefacet.ts", "../../../node_modules/vega-lite/src/compile/data/parse.ts", "../../../node_modules/vega-lite/src/compile/concat.ts", "../../../node_modules/vega-lite/src/compile/axis/component.ts", "../../../node_modules/vega-lite/src/compile/axis/encode.ts", "../../../node_modules/vega-lite/src/compile/axis/parse.ts", "../../../node_modules/vega-lite/src/compile/layoutsize/init.ts", "../../../node_modules/vega-lite/src/compile/mark/arc.ts", "../../../node_modules/vega-lite/src/compile/mark/area.ts", "../../../node_modules/vega-lite/src/compile/mark/bar.ts", "../../../node_modules/vega-lite/src/compile/mark/geoshape.ts", "../../../node_modules/vega-lite/src/compile/mark/image.ts", "../../../node_modules/vega-lite/src/compile/mark/line.ts", "../../../node_modules/vega-lite/src/compile/mark/point.ts", "../../../node_modules/vega-lite/src/compile/mark/rect.ts", "../../../node_modules/vega-lite/src/compile/mark/rule.ts", "../../../node_modules/vega-lite/src/compile/mark/text.ts", "../../../node_modules/vega-lite/src/compile/mark/tick.ts", "../../../node_modules/vega-lite/src/compile/mark/mark.ts", "../../../node_modules/vega-lite/src/compile/unit.ts", "../../../node_modules/vega-lite/src/compile/layer.ts", "../../../node_modules/vega-lite/src/compile/buildmodel.ts", "../../../node_modules/vega-lite/src/compile/compile.ts", "../../../node_modules/vega-schema-url-parser/parser.ts", "../../../node_modules/vega-themes/build/vega-themes.module.js", "../../../node_modules/vega-tooltip/src/formatValue.ts", "../../../node_modules/vega-tooltip/src/style.ts", "../../../node_modules/vega-tooltip/src/defaults.ts", "../../../node_modules/vega-tooltip/src/position.ts", "../../../node_modules/vega-tooltip/src/Handler.ts", "../../../node_modules/vega-tooltip/src/index.ts", "../../../node_modules/vega-embed/node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../node_modules/vega-embed/node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../../node_modules/vega-embed/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../../node_modules/vega-embed/node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../node_modules/vega-embed/node_modules/yallist/iterator.js", "../../../node_modules/vega-embed/node_modules/yallist/yallist.js", "../../../node_modules/vega-embed/node_modules/lru-cache/index.js", "../../../node_modules/vega-embed/node_modules/semver/internal/parse-options.js", "../../../node_modules/vega-embed/node_modules/semver/internal/constants.js", "../../../node_modules/vega-embed/node_modules/semver/internal/debug.js", "../../../node_modules/vega-embed/node_modules/semver/internal/re.js", "../../../node_modules/vega-embed/node_modules/semver/internal/identifiers.js", "../../../node_modules/vega-embed/node_modules/semver/classes/semver.js", "../../../node_modules/vega-embed/node_modules/semver/functions/compare.js", "../../../node_modules/vega-embed/node_modules/semver/functions/eq.js", "../../../node_modules/vega-embed/node_modules/semver/functions/neq.js", "../../../node_modules/vega-embed/node_modules/semver/functions/gt.js", "../../../node_modules/vega-embed/node_modules/semver/functions/gte.js", "../../../node_modules/vega-embed/node_modules/semver/functions/lt.js", "../../../node_modules/vega-embed/node_modules/semver/functions/lte.js", "../../../node_modules/vega-embed/node_modules/semver/functions/cmp.js", "../../../node_modules/vega-embed/node_modules/semver/classes/comparator.js", "../../../node_modules/vega-embed/node_modules/semver/classes/range.js", "../../../node_modules/vega-embed/node_modules/semver/functions/satisfies.js", "../../../node_modules/vega-embed/src/post.ts", "../../../node_modules/vega-embed/src/style.ts", "../../../node_modules/vega-embed/src/util.ts", "../../../node_modules/vega-embed/src/embed.ts", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js"], "sourcesContent": ["export default {\n logger: self.console,\n WebSocket: self.WebSocket\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n// ActionCable.logger.enabled = true\n//\n// Example:\n//\n// import * as ActionCable from '@rails/actioncable'\n//\n// ActionCable.logger.enabled = true\n// ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now())\n adapters.logger.log(\"[ActionCable]\", ...messages)\n }\n },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this)\n this.connection = connection\n this.reconnectAttempts = 0\n }\n\n start() {\n if (!this.isRunning()) {\n this.startedAt = now()\n delete this.stoppedAt\n this.startPolling()\n addEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n }\n }\n\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now()\n this.stopPolling()\n removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(\"ConnectionMonitor stopped\")\n }\n }\n\n isRunning() {\n return this.startedAt && !this.stoppedAt\n }\n\n recordPing() {\n this.pingedAt = now()\n }\n\n recordConnect() {\n this.reconnectAttempts = 0\n this.recordPing()\n delete this.disconnectedAt\n logger.log(\"ConnectionMonitor recorded connect\")\n }\n\n recordDisconnect() {\n this.disconnectedAt = now()\n logger.log(\"ConnectionMonitor recorded disconnect\")\n }\n\n // Private\n\n startPolling() {\n this.stopPolling()\n this.poll()\n }\n\n stopPolling() {\n clearTimeout(this.pollTimeout)\n }\n\n poll() {\n this.pollTimeout = setTimeout(() => {\n this.reconnectIfStale()\n this.poll()\n }\n , this.getPollInterval())\n }\n\n getPollInterval() {\n const { staleThreshold, reconnectionBackoffRate } = this.constructor\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n const jitter = jitterMax * Math.random()\n return staleThreshold * 1000 * backoff * (1 + jitter)\n }\n\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n this.reconnectAttempts++\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n } else {\n logger.log(\"ConnectionMonitor reopening\")\n this.connection.reopen()\n }\n }\n }\n\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt\n }\n\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n }\n\n disconnectedRecently() {\n return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n }\n\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout(() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n this.connection.reopen()\n }\n }\n , 200)\n }\n }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n \"message_types\": {\n \"welcome\": \"welcome\",\n \"disconnect\": \"disconnect\",\n \"ping\": \"ping\",\n \"confirmation\": \"confirm_subscription\",\n \"rejection\": \"reject_subscription\"\n },\n \"disconnect_reasons\": {\n \"unauthorized\": \"unauthorized\",\n \"invalid_request\": \"invalid_request\",\n \"server_restart\": \"server_restart\"\n },\n \"default_mount_path\": \"/cable\",\n \"protocols\": [\n \"actioncable-v1-json\",\n \"actioncable-unsupported\"\n ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this)\n this.consumer = consumer\n this.subscriptions = this.consumer.subscriptions\n this.monitor = new ConnectionMonitor(this)\n this.disconnected = true\n }\n\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data))\n return true\n } else {\n return false\n }\n }\n\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n return false\n } else {\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`)\n if (this.webSocket) { this.uninstallEventHandlers() }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols)\n this.installEventHandlers()\n this.monitor.start()\n return true\n }\n }\n\n close({allowReconnect} = {allowReconnect: true}) {\n if (!allowReconnect) { this.monitor.stop() }\n // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n if (this.isOpen()) {\n return this.webSocket.close()\n }\n }\n\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n if (this.isActive()) {\n try {\n return this.close()\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error)\n }\n finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n setTimeout(this.open, this.constructor.reopenDelay)\n }\n } else {\n return this.open()\n }\n }\n\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol\n }\n }\n\n isOpen() {\n return this.isState(\"open\")\n }\n\n isActive() {\n return this.isState(\"open\", \"connecting\")\n }\n\n // Private\n\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n }\n\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0\n }\n\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase()\n }\n }\n }\n return null\n }\n\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this)\n this.webSocket[`on${eventName}`] = handler\n }\n }\n\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {}\n }\n }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) { return }\n const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect()\n return this.subscriptions.reload()\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`)\n return this.close({allowReconnect: reconnect})\n case message_types.ping:\n return this.monitor.recordPing()\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier)\n return this.subscriptions.notify(identifier, \"connected\")\n case message_types.rejection:\n return this.subscriptions.reject(identifier)\n default:\n return this.subscriptions.notify(identifier, \"received\", message)\n }\n },\n\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n this.disconnected = false\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n return this.close({allowReconnect: false})\n }\n },\n\n close(event) {\n logger.log(\"WebSocket onclose event\")\n if (this.disconnected) { return }\n this.disconnected = true\n this.monitor.recordDisconnect()\n return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n },\n\n error() {\n logger.log(\"WebSocket onerror event\")\n }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n// connected() {\n// // Called once the subscription has been successfully completed\n// },\n//\n// disconnected({ willAttemptReconnect: boolean }) {\n// // Called when the client has disconnected with the server.\n// // The object will have an `willAttemptReconnect` property which\n// // says whether the client has the intention of attempting\n// // to reconnect.\n// },\n//\n// appear() {\n// this.perform('appear', {appearing_on: this.appearingOn()})\n// },\n//\n// away() {\n// this.perform('away')\n// },\n//\n// appearingOn() {\n// $('main').data('appearing-on')\n// }\n// })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n// class AppearanceChannel < ApplicationActionCable::Channel\n// def subscribed\n// current_user.appear\n// end\n//\n// def unsubscribed\n// current_user.disappear\n// end\n//\n// def appear(data)\n// current_user.appear on: data['appearing_on']\n// end\n//\n// def away\n// current_user.away\n// end\n// end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key]\n object[key] = value\n }\n }\n return object\n}\n\nexport default class Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer\n this.identifier = JSON.stringify(params)\n extend(this, mixin)\n }\n\n // Perform a channel action with the optional data passed as an attribute\n perform(action, data = {}) {\n data.action = action\n return this.send(data)\n }\n\n send(data) {\n return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n }\n\n unsubscribe() {\n return this.consumer.subscriptions.remove(this)\n }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions\n this.pendingSubscriptions = []\n }\n\n guarantee(subscription) {\n if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n this.pendingSubscriptions.push(subscription) \n }\n else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n }\n this.startGuaranteeing()\n }\n\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n }\n\n startGuaranteeing() {\n this.stopGuaranteeing()\n this.retrySubscribing()\n }\n \n stopGuaranteeing() {\n clearTimeout(this.retryTimeout)\n }\n\n retrySubscribing() {\n this.retryTimeout = setTimeout(() => {\n if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n this.pendingSubscriptions.map((subscription) => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n this.subscriptions.subscribe(subscription)\n })\n }\n }\n , 500)\n }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n constructor(consumer) {\n this.consumer = consumer\n this.guarantor = new SubscriptionGuarantor(this)\n this.subscriptions = []\n }\n\n create(channelName, mixin) {\n const channel = channelName\n const params = typeof channel === \"object\" ? channel : {channel}\n const subscription = new Subscription(this.consumer, params, mixin)\n return this.add(subscription)\n }\n\n // Private\n\n add(subscription) {\n this.subscriptions.push(subscription)\n this.consumer.ensureActiveConnection()\n this.notify(subscription, \"initialized\")\n this.subscribe(subscription)\n return subscription\n }\n\n remove(subscription) {\n this.forget(subscription)\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\")\n }\n return subscription\n }\n\n reject(identifier) {\n return this.findAll(identifier).map((subscription) => {\n this.forget(subscription)\n this.notify(subscription, \"rejected\")\n return subscription\n })\n }\n\n forget(subscription) {\n this.guarantor.forget(subscription)\n this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n return subscription\n }\n\n findAll(identifier) {\n return this.subscriptions.filter((s) => s.identifier === identifier)\n }\n\n reload() {\n return this.subscriptions.map((subscription) =>\n this.subscribe(subscription))\n }\n\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription) =>\n this.notify(subscription, callbackName, ...args))\n }\n\n notify(subscription, callbackName, ...args) {\n let subscriptions\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription)\n } else {\n subscriptions = [subscription]\n }\n\n return subscriptions.map((subscription) =>\n (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n }\n\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription)\n }\n }\n\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`)\n this.findAll(identifier).map((subscription) =>\n this.guarantor.forget(subscription))\n }\n\n sendCommand(subscription, command) {\n const {identifier} = subscription\n return this.consumer.send({command, identifier})\n }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n// App.cable.disconnect()\n//\n// and to restart the connection:\n//\n// App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n constructor(url) {\n this._url = url\n this.subscriptions = new Subscriptions(this)\n this.connection = new Connection(this)\n }\n\n get url() {\n return createWebSocketURL(this._url)\n }\n\n send(data) {\n return this.connection.send(data)\n }\n\n connect() {\n return this.connection.open()\n }\n\n disconnect() {\n return this.connection.close({allowReconnect: false})\n }\n\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open()\n }\n }\n}\n\nexport function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url()\n }\n\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\")\n a.href = url\n // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n a.href = a.href\n a.protocol = a.protocol.replace(\"http\", \"ws\")\n return a.href\n } else {\n return url\n }\n}\n", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n Connection,\n ConnectionMonitor,\n Consumer,\n INTERNAL,\n Subscription,\n Subscriptions,\n SubscriptionGuarantor,\n adapters,\n createWebSocketURL,\n logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url)\n}\n\nexport function getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n if (element) {\n return element.getAttribute(\"content\")\n }\n}\n", "(function(global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActionCable = {});\n})(this, function(exports) {\n \"use strict\";\n var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n };\n var logger = {\n log: function log() {\n if (this.enabled) {\n var _adapters$logger;\n for (var _len = arguments.length, messages = Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n messages.push(Date.now());\n (_adapters$logger = adapters.logger).log.apply(_adapters$logger, [ \"[ActionCable]\" ].concat(messages));\n }\n }\n };\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n var classCallCheck = function(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var now = function now() {\n return new Date().getTime();\n };\n var secondsSince = function secondsSince(time) {\n return (now() - time) / 1e3;\n };\n var clamp = function clamp(number, min, max) {\n return Math.max(min, Math.min(max, number));\n };\n var ConnectionMonitor = function() {\n function ConnectionMonitor(connection) {\n classCallCheck(this, ConnectionMonitor);\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n ConnectionMonitor.prototype.start = function start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor started. pollInterval = \" + this.getPollInterval() + \" ms\");\n }\n };\n ConnectionMonitor.prototype.stop = function stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n };\n ConnectionMonitor.prototype.isRunning = function isRunning() {\n return this.startedAt && !this.stoppedAt;\n };\n ConnectionMonitor.prototype.recordPing = function recordPing() {\n this.pingedAt = now();\n };\n ConnectionMonitor.prototype.recordConnect = function recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n };\n ConnectionMonitor.prototype.recordDisconnect = function recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n };\n ConnectionMonitor.prototype.startPolling = function startPolling() {\n this.stopPolling();\n this.poll();\n };\n ConnectionMonitor.prototype.stopPolling = function stopPolling() {\n clearTimeout(this.pollTimeout);\n };\n ConnectionMonitor.prototype.poll = function poll() {\n var _this = this;\n this.pollTimeout = setTimeout(function() {\n _this.reconnectIfStale();\n _this.poll();\n }, this.getPollInterval());\n };\n ConnectionMonitor.prototype.getPollInterval = function getPollInterval() {\n var _constructor$pollInte = this.constructor.pollInterval, min = _constructor$pollInte.min, max = _constructor$pollInte.max, multiplier = _constructor$pollInte.multiplier;\n var interval = multiplier * Math.log(this.reconnectAttempts + 1);\n return Math.round(clamp(interval, min, max) * 1e3);\n };\n ConnectionMonitor.prototype.reconnectIfStale = function reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + this.getPollInterval() + \" ms, time disconnected = \" + secondsSince(this.disconnectedAt) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n logger.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n };\n ConnectionMonitor.prototype.connectionIsStale = function connectionIsStale() {\n return secondsSince(this.pingedAt ? this.pingedAt : this.startedAt) > this.constructor.staleThreshold;\n };\n ConnectionMonitor.prototype.disconnectedRecently = function disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n };\n ConnectionMonitor.prototype.visibilityDidChange = function visibilityDidChange() {\n var _this2 = this;\n if (document.visibilityState === \"visible\") {\n setTimeout(function() {\n if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {\n logger.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = \" + document.visibilityState);\n _this2.connection.reopen();\n }\n }, 200);\n }\n };\n return ConnectionMonitor;\n }();\n ConnectionMonitor.pollInterval = {\n min: 3,\n max: 30,\n multiplier: 5\n };\n ConnectionMonitor.staleThreshold = 6;\n var INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n };\n var message_types = INTERNAL.message_types, protocols = INTERNAL.protocols;\n var supportedProtocols = protocols.slice(0, protocols.length - 1);\n var indexOf = [].indexOf;\n var Connection = function() {\n function Connection(consumer) {\n classCallCheck(this, Connection);\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n Connection.prototype.send = function send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n };\n Connection.prototype.open = function open() {\n if (this.isActive()) {\n logger.log(\"Attempted to open WebSocket, but existing socket is \" + this.getState());\n return false;\n } else {\n logger.log(\"Opening WebSocket, current state is \" + this.getState() + \", subprotocols: \" + protocols);\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n };\n Connection.prototype.close = function close() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n allowReconnect: true\n }, allowReconnect = _ref.allowReconnect;\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isActive()) {\n return this.webSocket.close();\n }\n };\n Connection.prototype.reopen = function reopen() {\n logger.log(\"Reopening WebSocket, current state is \" + this.getState());\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n };\n Connection.prototype.getProtocol = function getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n };\n Connection.prototype.isOpen = function isOpen() {\n return this.isState(\"open\");\n };\n Connection.prototype.isActive = function isActive() {\n return this.isState(\"open\", \"connecting\");\n };\n Connection.prototype.isProtocolSupported = function isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n };\n Connection.prototype.isState = function isState() {\n for (var _len = arguments.length, states = Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n return indexOf.call(states, this.getState()) >= 0;\n };\n Connection.prototype.getState = function getState() {\n if (this.webSocket) {\n for (var state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n return null;\n };\n Connection.prototype.installEventHandlers = function installEventHandlers() {\n for (var eventName in this.events) {\n var handler = this.events[eventName].bind(this);\n this.webSocket[\"on\" + eventName] = handler;\n }\n };\n Connection.prototype.uninstallEventHandlers = function uninstallEventHandlers() {\n for (var eventName in this.events) {\n this.webSocket[\"on\" + eventName] = function() {};\n }\n };\n return Connection;\n }();\n Connection.reopenDelay = 500;\n Connection.prototype.events = {\n message: function message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n var _JSON$parse = JSON.parse(event.data), identifier = _JSON$parse.identifier, message = _JSON$parse.message, reason = _JSON$parse.reason, reconnect = _JSON$parse.reconnect, type = _JSON$parse.type;\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(\"Disconnecting. Reason: \" + reason);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier);\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function open() {\n logger.log(\"WebSocket onopen event, using '\" + this.getProtocol() + \"' subprotocol\");\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function close(event) {\n logger.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function error() {\n logger.log(\"WebSocket onerror event\");\n }\n };\n var extend = function extend(object, properties) {\n if (properties != null) {\n for (var key in properties) {\n var value = properties[key];\n object[key] = value;\n }\n }\n return object;\n };\n var Subscription = function() {\n function Subscription(consumer) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mixin = arguments[2];\n classCallCheck(this, Subscription);\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n Subscription.prototype.perform = function perform(action) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n data.action = action;\n return this.send(data);\n };\n Subscription.prototype.send = function send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n };\n Subscription.prototype.unsubscribe = function unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n };\n return Subscription;\n }();\n var SubscriptionGuarantor = function() {\n function SubscriptionGuarantor(subscriptions) {\n classCallCheck(this, SubscriptionGuarantor);\n this.subscriptions = subscriptions;\n this.pendingSubscriptions = [];\n }\n SubscriptionGuarantor.prototype.guarantee = function guarantee(subscription) {\n if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n logger.log(\"SubscriptionGuarantor guaranteeing \" + subscription.identifier);\n this.pendingSubscriptions.push(subscription);\n } else {\n logger.log(\"SubscriptionGuarantor already guaranteeing \" + subscription.identifier);\n }\n this.startGuaranteeing();\n };\n SubscriptionGuarantor.prototype.forget = function forget(subscription) {\n logger.log(\"SubscriptionGuarantor forgetting \" + subscription.identifier);\n this.pendingSubscriptions = this.pendingSubscriptions.filter(function(s) {\n return s !== subscription;\n });\n };\n SubscriptionGuarantor.prototype.startGuaranteeing = function startGuaranteeing() {\n this.stopGuaranteeing();\n this.retrySubscribing();\n };\n SubscriptionGuarantor.prototype.stopGuaranteeing = function stopGuaranteeing() {\n clearTimeout(this.retryTimeout);\n };\n SubscriptionGuarantor.prototype.retrySubscribing = function retrySubscribing() {\n var _this = this;\n this.retryTimeout = setTimeout(function() {\n if (_this.subscriptions && typeof _this.subscriptions.subscribe === \"function\") {\n _this.pendingSubscriptions.map(function(subscription) {\n logger.log(\"SubscriptionGuarantor resubscribing \" + subscription.identifier);\n _this.subscriptions.subscribe(subscription);\n });\n }\n }, 500);\n };\n return SubscriptionGuarantor;\n }();\n var Subscriptions = function() {\n function Subscriptions(consumer) {\n classCallCheck(this, Subscriptions);\n this.consumer = consumer;\n this.guarantor = new SubscriptionGuarantor(this);\n this.subscriptions = [];\n }\n Subscriptions.prototype.create = function create(channelName, mixin) {\n var channel = channelName;\n var params = (typeof channel === \"undefined\" ? \"undefined\" : _typeof(channel)) === \"object\" ? channel : {\n channel: channel\n };\n var subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n };\n Subscriptions.prototype.add = function add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.subscribe(subscription);\n return subscription;\n };\n Subscriptions.prototype.remove = function remove(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n };\n Subscriptions.prototype.reject = function reject(identifier) {\n var _this = this;\n return this.findAll(identifier).map(function(subscription) {\n _this.forget(subscription);\n _this.notify(subscription, \"rejected\");\n return subscription;\n });\n };\n Subscriptions.prototype.forget = function forget(subscription) {\n this.guarantor.forget(subscription);\n this.subscriptions = this.subscriptions.filter(function(s) {\n return s !== subscription;\n });\n return subscription;\n };\n Subscriptions.prototype.findAll = function findAll(identifier) {\n return this.subscriptions.filter(function(s) {\n return s.identifier === identifier;\n });\n };\n Subscriptions.prototype.reload = function reload() {\n var _this2 = this;\n return this.subscriptions.map(function(subscription) {\n return _this2.subscribe(subscription);\n });\n };\n Subscriptions.prototype.notifyAll = function notifyAll(callbackName) {\n var _this3 = this;\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return this.subscriptions.map(function(subscription) {\n return _this3.notify.apply(_this3, [ subscription, callbackName ].concat(args));\n });\n };\n Subscriptions.prototype.notify = function notify(subscription, callbackName) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n var subscriptions = void 0;\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [ subscription ];\n }\n return subscriptions.map(function(subscription) {\n return typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : undefined;\n });\n };\n Subscriptions.prototype.subscribe = function subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription);\n }\n };\n Subscriptions.prototype.confirmSubscription = function confirmSubscription(identifier) {\n var _this4 = this;\n logger.log(\"Subscription confirmed \" + identifier);\n this.findAll(identifier).map(function(subscription) {\n return _this4.guarantor.forget(subscription);\n });\n };\n Subscriptions.prototype.sendCommand = function sendCommand(subscription, command) {\n var identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n };\n return Subscriptions;\n }();\n var Consumer = function() {\n function Consumer(url) {\n classCallCheck(this, Consumer);\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n Consumer.prototype.send = function send(data) {\n return this.connection.send(data);\n };\n Consumer.prototype.connect = function connect() {\n return this.connection.open();\n };\n Consumer.prototype.disconnect = function disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n };\n Consumer.prototype.ensureActiveConnection = function ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n };\n createClass(Consumer, [ {\n key: \"url\",\n get: function get$$1() {\n return createWebSocketURL(this._url);\n }\n } ]);\n return Consumer;\n }();\n function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n if (url && !/^wss?:/i.test(url)) {\n var a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n }\n function createConsumer() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getConfig(\"url\") || INTERNAL.default_mount_path;\n return new Consumer(url);\n }\n function getConfig(name) {\n var element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n exports.Connection = Connection;\n exports.ConnectionMonitor = ConnectionMonitor;\n exports.Consumer = Consumer;\n exports.INTERNAL = INTERNAL;\n exports.Subscription = Subscription;\n exports.Subscriptions = Subscriptions;\n exports.SubscriptionGuarantor = SubscriptionGuarantor;\n exports.adapters = adapters;\n exports.createWebSocketURL = createWebSocketURL;\n exports.logger = logger;\n exports.createConsumer = createConsumer;\n exports.getConfig = getConfig;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});\n", "/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\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}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\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\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\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}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\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}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\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\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\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};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\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}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n", "/*\nTrix 1.3.1\nCopyright \u00A9 2020 Basecamp, LLC\nhttp://trix-editor.org/\n */\n(function(){}).call(this),function(){var t;null==window.Set&&(window.Set=t=function(){function t(){this.clear()}return t.prototype.clear=function(){return this.values=[]},t.prototype.has=function(t){return-1!==this.values.indexOf(t)},t.prototype.add=function(t){return this.has(t)||this.values.push(t),this},t.prototype[\"delete\"]=function(t){var e;return-1===(e=this.values.indexOf(t))?!1:(this.values.splice(e,1),!0)},t.prototype.forEach=function(){var t;return(t=this.values).forEach.apply(t,arguments)},t}())}.call(this),function(t){function e(){}function n(t,e){return function(){t.apply(e,arguments)}}function i(t){if(\"object\"!=typeof this)throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof t)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],c(t,this)}function o(t,e){for(;3===t._state;)t=t._value;return 0===t._state?void t._deferreds.push(e):(t._handled=!0,void h(function(){var n=1===t._state?e.onFulfilled:e.onRejected;if(null===n)return void(1===t._state?r:s)(e.promise,t._value);var i;try{i=n(t._value)}catch(o){return void s(e.promise,o)}r(e.promise,i)}))}function r(t,e){try{if(e===t)throw new TypeError(\"A promise cannot be resolved with itself.\");if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var o=e.then;if(e instanceof i)return t._state=3,t._value=e,void a(t);if(\"function\"==typeof o)return void c(n(o,e),t)}t._state=1,t._value=e,a(t)}catch(r){s(t,r)}}function s(t,e){t._state=2,t._value=e,a(t)}function a(t){2===t._state&&0===t._deferreds.length&&setTimeout(function(){t._handled||p(t._value)},1);for(var e=0,n=t._deferreds.length;n>e;e++)o(t,t._deferreds[e]);t._deferreds=null}function u(t,e,n){this.onFulfilled=\"function\"==typeof t?t:null,this.onRejected=\"function\"==typeof e?e:null,this.promise=n}function c(t,e){var n=!1;try{t(function(t){n||(n=!0,r(e,t))},function(t){n||(n=!0,s(e,t))})}catch(i){if(n)return;n=!0,s(e,i)}}var l=setTimeout,h=\"function\"==typeof setImmediate&&setImmediate||function(t){l(t,1)},p=function(t){\"undefined\"!=typeof console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",t)};i.prototype[\"catch\"]=function(t){return this.then(null,t)},i.prototype.then=function(t,n){var r=new i(e);return o(this,new u(t,n,r)),r},i.all=function(t){var e=Array.prototype.slice.call(t);return new i(function(t,n){function i(r,s){try{if(s&&(\"object\"==typeof s||\"function\"==typeof s)){var a=s.then;if(\"function\"==typeof a)return void a.call(s,function(t){i(r,t)},n)}e[r]=s,0===--o&&t(e)}catch(u){n(u)}}if(0===e.length)return t([]);for(var o=e.length,r=0;r<e.length;r++)i(r,e[r])})},i.resolve=function(t){return t&&\"object\"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(t){return new i(function(e,n){n(t)})},i.race=function(t){return new i(function(e,n){for(var i=0,o=t.length;o>i;i++)t[i].then(e,n)})},i._setImmediateFn=function(t){h=t},i._setUnhandledRejectionFn=function(t){p=t},\"undefined\"!=typeof module&&module.exports?module.exports=i:t.Promise||(t.Promise=i)}(this),function(){var t=\"object\"==typeof window.customElements,e=\"function\"==typeof document.registerElement,n=t||e;n||(/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\"undefined\"==typeof WeakMap&&!function(){var t=Object.defineProperty,e=Date.now()%1e9,n=function(){this.name=\"__st\"+(1e9*Math.random()>>>0)+(e++ +\"__\")};n.prototype={set:function(e,n){var i=e[this.name];return i&&i[0]===e?i[1]=n:t(e,this.name,{value:[e,n],writable:!0}),this},get:function(t){var e;return(e=t[this.name])&&e[0]===t?e[1]:void 0},\"delete\":function(t){var e=t[this.name];return e&&e[0]===t?(e[0]=e[1]=void 0,!0):!1},has:function(t){var e=t[this.name];return e?e[0]===t:!1}},window.WeakMap=n}(),function(t){function e(t){A.push(t),b||(b=!0,g(i))}function n(t){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(t)||t}function i(){b=!1;var t=A;A=[],t.sort(function(t,e){return t.uid_-e.uid_});var e=!1;t.forEach(function(t){var n=t.takeRecords();o(t),n.length&&(t.callback_(n,t),e=!0)}),e&&i()}function o(t){t.nodes_.forEach(function(e){var n=m.get(e);n&&n.forEach(function(e){e.observer===t&&e.removeTransientObservers()})})}function r(t,e){for(var n=t;n;n=n.parentNode){var i=m.get(n);if(i)for(var o=0;o<i.length;o++){var r=i[o],s=r.options;if(n===t||s.subtree){var a=e(s);a&&r.enqueue(a)}}}}function s(t){this.callback_=t,this.nodes_=[],this.records_=[],this.uid_=++C}function a(t,e){this.type=t,this.target=e,this.addedNodes=[],this.removedNodes=[],this.previousSibling=null,this.nextSibling=null,this.attributeName=null,this.attributeNamespace=null,this.oldValue=null}function u(t){var e=new a(t.type,t.target);return e.addedNodes=t.addedNodes.slice(),e.removedNodes=t.removedNodes.slice(),e.previousSibling=t.previousSibling,e.nextSibling=t.nextSibling,e.attributeName=t.attributeName,e.attributeNamespace=t.attributeNamespace,e.oldValue=t.oldValue,e}function c(t,e){return x=new a(t,e)}function l(t){return w?w:(w=u(x),w.oldValue=t,w)}function h(){x=w=void 0}function p(t){return t===w||t===x}function d(t,e){return t===e?t:w&&p(t)?w:null}function f(t,e,n){this.observer=t,this.target=e,this.options=n,this.transientObservedNodes=[]}if(!t.JsMutationObserver){var g,m=new WeakMap;if(/Trident|Edge/.test(navigator.userAgent))g=setTimeout;else if(window.setImmediate)g=window.setImmediate;else{var v=[],y=String(Math.random());window.addEventListener(\"message\",function(t){if(t.data===y){var e=v;v=[],e.forEach(function(t){t()})}}),g=function(t){v.push(t),window.postMessage(y,\"*\")}}var b=!1,A=[],C=0;s.prototype={observe:function(t,e){if(t=n(t),!e.childList&&!e.attributes&&!e.characterData||e.attributeOldValue&&!e.attributes||e.attributeFilter&&e.attributeFilter.length&&!e.attributes||e.characterDataOldValue&&!e.characterData)throw new SyntaxError;var i=m.get(t);i||m.set(t,i=[]);for(var o,r=0;r<i.length;r++)if(i[r].observer===this){o=i[r],o.removeListeners(),o.options=e;break}o||(o=new f(this,t,e),i.push(o),this.nodes_.push(t)),o.addListeners()},disconnect:function(){this.nodes_.forEach(function(t){for(var e=m.get(t),n=0;n<e.length;n++){var i=e[n];if(i.observer===this){i.removeListeners(),e.splice(n,1);break}}},this),this.records_=[]},takeRecords:function(){var t=this.records_;return this.records_=[],t}};var x,w;f.prototype={enqueue:function(t){var n=this.observer.records_,i=n.length;if(n.length>0){var o=n[i-1],r=d(o,t);if(r)return void(n[i-1]=r)}else e(this.observer);n[i]=t},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(t){var e=this.options;e.attributes&&t.addEventListener(\"DOMAttrModified\",this,!0),e.characterData&&t.addEventListener(\"DOMCharacterDataModified\",this,!0),e.childList&&t.addEventListener(\"DOMNodeInserted\",this,!0),(e.childList||e.subtree)&&t.addEventListener(\"DOMNodeRemoved\",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(t){var e=this.options;e.attributes&&t.removeEventListener(\"DOMAttrModified\",this,!0),e.characterData&&t.removeEventListener(\"DOMCharacterDataModified\",this,!0),e.childList&&t.removeEventListener(\"DOMNodeInserted\",this,!0),(e.childList||e.subtree)&&t.removeEventListener(\"DOMNodeRemoved\",this,!0)},addTransientObserver:function(t){if(t!==this.target){this.addListeners_(t),this.transientObservedNodes.push(t);var e=m.get(t);e||m.set(t,e=[]),e.push(this)}},removeTransientObservers:function(){var t=this.transientObservedNodes;this.transientObservedNodes=[],t.forEach(function(t){this.removeListeners_(t);for(var e=m.get(t),n=0;n<e.length;n++)if(e[n]===this){e.splice(n,1);break}},this)},handleEvent:function(t){switch(t.stopImmediatePropagation(),t.type){case\"DOMAttrModified\":var e=t.attrName,n=t.relatedNode.namespaceURI,i=t.target,o=new c(\"attributes\",i);o.attributeName=e,o.attributeNamespace=n;var s=t.attrChange===MutationEvent.ADDITION?null:t.prevValue;r(i,function(t){return!t.attributes||t.attributeFilter&&t.attributeFilter.length&&-1===t.attributeFilter.indexOf(e)&&-1===t.attributeFilter.indexOf(n)?void 0:t.attributeOldValue?l(s):o});break;case\"DOMCharacterDataModified\":var i=t.target,o=c(\"characterData\",i),s=t.prevValue;r(i,function(t){return t.characterData?t.characterDataOldValue?l(s):o:void 0});break;case\"DOMNodeRemoved\":this.addTransientObserver(t.target);case\"DOMNodeInserted\":var a,u,p=t.target;\"DOMNodeInserted\"===t.type?(a=[p],u=[]):(a=[],u=[p]);var d=p.previousSibling,f=p.nextSibling,o=c(\"childList\",t.target.parentNode);o.addedNodes=a,o.removedNodes=u,o.previousSibling=d,o.nextSibling=f,r(t.relatedNode,function(t){return t.childList?o:void 0})}h()}},t.JsMutationObserver=s,t.MutationObserver||(t.MutationObserver=s,s._isPolyfilled=!0)}}(self),function(){\"use strict\";if(!window.performance||!window.performance.now){var t=Date.now();window.performance={now:function(){return Date.now()-t}}}window.requestAnimationFrame||(window.requestAnimationFrame=function(){var t=window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;return t?function(e){return t(function(){e(performance.now())})}:function(t){return window.setTimeout(t,1e3/60)}}()),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(){return window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||function(t){clearTimeout(t)}}());var e=function(){var t=document.createEvent(\"Event\");return t.initEvent(\"foo\",!0,!0),t.preventDefault(),t.defaultPrevented}();if(!e){var n=Event.prototype.preventDefault;Event.prototype.preventDefault=function(){this.cancelable&&(n.call(this),Object.defineProperty(this,\"defaultPrevented\",{get:function(){return!0},configurable:!0}))}}var i=/Trident/.test(navigator.userAgent);if((!window.CustomEvent||i&&\"function\"!=typeof window.CustomEvent)&&(window.CustomEvent=function(t,e){e=e||{};var n=document.createEvent(\"CustomEvent\");return n.initCustomEvent(t,Boolean(e.bubbles),Boolean(e.cancelable),e.detail),n},window.CustomEvent.prototype=window.Event.prototype),!window.Event||i&&\"function\"!=typeof window.Event){var o=window.Event;window.Event=function(t,e){e=e||{};var n=document.createEvent(\"Event\");return n.initEvent(t,Boolean(e.bubbles),Boolean(e.cancelable)),n},window.Event.prototype=o.prototype}}(window.WebComponents),window.CustomElements=window.CustomElements||{flags:{}},function(t){var e=t.flags,n=[],i=function(t){n.push(t)},o=function(){n.forEach(function(e){e(t)})};t.addModule=i,t.initializeModules=o,t.hasNative=Boolean(document.registerElement),t.isIE=/Trident/.test(navigator.userAgent),t.useNative=!e.register&&t.hasNative&&!window.ShadowDOMPolyfill&&(!window.HTMLImports||window.HTMLImports.useNative)}(window.CustomElements),window.CustomElements.addModule(function(t){function e(t,e){n(t,function(t){return e(t)?!0:void i(t,e)}),i(t,e)}function n(t,e,i){var o=t.firstElementChild;if(!o)for(o=t.firstChild;o&&o.nodeType!==Node.ELEMENT_NODE;)o=o.nextSibling;for(;o;)e(o,i)!==!0&&n(o,e,i),o=o.nextElementSibling;return null}function i(t,n){for(var i=t.shadowRoot;i;)e(i,n),i=i.olderShadowRoot}function o(t,e){r(t,e,[])}function r(t,e,n){if(t=window.wrap(t),!(n.indexOf(t)>=0)){n.push(t);for(var i,o=t.querySelectorAll(\"link[rel=\"+s+\"]\"),a=0,u=o.length;u>a&&(i=o[a]);a++)i.import&&r(i.import,e,n);e(t)}}var s=window.HTMLImports?window.HTMLImports.IMPORT_LINK_TYPE:\"none\";t.forDocumentTree=o,t.forSubtree=e}),window.CustomElements.addModule(function(t){function e(t,e){return n(t,e)||i(t,e)}function n(e,n){return t.upgrade(e,n)?!0:void(n&&s(e))}function i(t,e){b(t,function(t){return n(t,e)?!0:void 0})}function o(t){w.push(t),x||(x=!0,setTimeout(r))}function r(){x=!1;for(var t,e=w,n=0,i=e.length;i>n&&(t=e[n]);n++)t();w=[]}function s(t){C?o(function(){a(t)}):a(t)}function a(t){t.__upgraded__&&!t.__attached&&(t.__attached=!0,t.attachedCallback&&t.attachedCallback())}function u(t){c(t),b(t,function(t){c(t)})}function c(t){C?o(function(){l(t)}):l(t)}function l(t){t.__upgraded__&&t.__attached&&(t.__attached=!1,t.detachedCallback&&t.detachedCallback())}function h(t){for(var e=t,n=window.wrap(document);e;){if(e==n)return!0;e=e.parentNode||e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host}}function p(t){if(t.shadowRoot&&!t.shadowRoot.__watched){y.dom&&console.log(\"watching shadow-root for: \",t.localName);for(var e=t.shadowRoot;e;)g(e),e=e.olderShadowRoot}}function d(t,n){if(y.dom){var i=n[0];if(i&&\"childList\"===i.type&&i.addedNodes&&i.addedNodes){for(var o=i.addedNodes[0];o&&o!==document&&!o.host;)o=o.parentNode;var r=o&&(o.URL||o._URL||o.host&&o.host.localName)||\"\";r=r.split(\"/?\").shift().split(\"/\").pop()}console.group(\"mutations (%d) [%s]\",n.length,r||\"\")}var s=h(t);n.forEach(function(t){\"childList\"===t.type&&(E(t.addedNodes,function(t){t.localName&&e(t,s)}),E(t.removedNodes,function(t){t.localName&&u(t)}))}),y.dom&&console.groupEnd()}function f(t){for(t=window.wrap(t),t||(t=window.wrap(document));t.parentNode;)t=t.parentNode;var e=t.__observer;e&&(d(t,e.takeRecords()),r())}function g(t){if(!t.__observer){var e=new MutationObserver(d.bind(this,t));e.observe(t,{childList:!0,subtree:!0}),t.__observer=e}}function m(t){t=window.wrap(t),y.dom&&console.group(\"upgradeDocument: \",t.baseURI.split(\"/\").pop());var n=t===window.wrap(document);e(t,n),g(t),y.dom&&console.groupEnd()}function v(t){A(t,m)}var y=t.flags,b=t.forSubtree,A=t.forDocumentTree,C=window.MutationObserver._isPolyfilled&&y[\"throttle-attached\"];t.hasPolyfillMutations=C,t.hasThrottledAttached=C;var x=!1,w=[],E=Array.prototype.forEach.call.bind(Array.prototype.forEach),S=Element.prototype.createShadowRoot;S&&(Element.prototype.createShadowRoot=function(){var t=S.call(this);return window.CustomElements.watchShadow(this),t}),t.watchShadow=p,t.upgradeDocumentTree=v,t.upgradeDocument=m,t.upgradeSubtree=i,t.upgradeAll=e,t.attached=s,t.takeRecords=f}),window.CustomElements.addModule(function(t){function e(e,i){if(\"template\"===e.localName&&window.HTMLTemplateElement&&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(e),!e.__upgraded__&&e.nodeType===Node.ELEMENT_NODE){var o=e.getAttribute(\"is\"),r=t.getRegisteredDefinition(e.localName)||t.getRegisteredDefinition(o);if(r&&(o&&r.tag==e.localName||!o&&!r.extends))return n(e,r,i)}}function n(e,n,o){return s.upgrade&&console.group(\"upgrade:\",e.localName),n.is&&e.setAttribute(\"is\",n.is),i(e,n),e.__upgraded__=!0,r(e),o&&t.attached(e),t.upgradeSubtree(e,o),s.upgrade&&console.groupEnd(),e}function i(t,e){Object.__proto__?t.__proto__=e.prototype:(o(t,e.prototype,e.native),t.__proto__=e.prototype)}function o(t,e,n){for(var i={},o=e;o!==n&&o!==HTMLElement.prototype;){for(var r,s=Object.getOwnPropertyNames(o),a=0;r=s[a];a++)i[r]||(Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(o,r)),i[r]=1);o=Object.getPrototypeOf(o)}}function r(t){t.createdCallback&&t.createdCallback()}var s=t.flags;t.upgrade=e,t.upgradeWithDefinition=n,t.implementPrototype=i}),window.CustomElements.addModule(function(t){function e(e,i){var u=i||{};if(!e)throw new Error(\"document.registerElement: first argument `name` must not be empty\");if(e.indexOf(\"-\")<0)throw new Error(\"document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '\"+String(e)+\"'.\");if(o(e))throw new Error(\"Failed to execute 'registerElement' on 'Document': Registration failed for type '\"+String(e)+\"'. The type name is invalid.\");if(c(e))throw new Error(\"DuplicateDefinitionError: a type with name '\"+String(e)+\"' is already registered\");return u.prototype||(u.prototype=Object.create(HTMLElement.prototype)),u.__name=e.toLowerCase(),u.extends&&(u.extends=u.extends.toLowerCase()),u.lifecycle=u.lifecycle||{},u.ancestry=r(u.extends),s(u),a(u),n(u.prototype),l(u.__name,u),u.ctor=h(u),u.ctor.prototype=u.prototype,u.prototype.constructor=u.ctor,t.ready&&m(document),u.ctor}function n(t){if(!t.setAttribute._polyfilled){var e=t.setAttribute;t.setAttribute=function(t,n){i.call(this,t,n,e)};var n=t.removeAttribute;t.removeAttribute=function(t){i.call(this,t,null,n)},t.setAttribute._polyfilled=!0}}function i(t,e,n){t=t.toLowerCase();var i=this.getAttribute(t);n.apply(this,arguments);var o=this.getAttribute(t);this.attributeChangedCallback&&o!==i&&this.attributeChangedCallback(t,i,o)}function o(t){for(var e=0;e<C.length;e++)if(t===C[e])return!0}function r(t){var e=c(t);return e?r(e.extends).concat([e]):[]}function s(t){for(var e,n=t.extends,i=0;e=t.ancestry[i];i++)n=e.is&&e.tag;t.tag=n||t.__name,n&&(t.is=t.__name)}function a(t){if(!Object.__proto__){var e=HTMLElement.prototype;if(t.is){var n=document.createElement(t.tag);e=Object.getPrototypeOf(n)}for(var i,o=t.prototype,r=!1;o;)o==e&&(r=!0),i=Object.getPrototypeOf(o),i&&(o.__proto__=i),o=i;r||console.warn(t.tag+\" prototype not found in prototype chain for \"+t.is),t.native=e}}function u(t){return y(E(t.tag),t)}function c(t){return t?x[t.toLowerCase()]:void 0}function l(t,e){x[t]=e}function h(t){return function(){return u(t)}}function p(t,e,n){return t===w?d(e,n):S(t,e)}function d(t,e){t&&(t=t.toLowerCase()),e&&(e=e.toLowerCase());var n=c(e||t);if(n){if(t==n.tag&&e==n.is)return new n.ctor;if(!e&&!n.is)return new n.ctor}var i;return e?(i=d(t),i.setAttribute(\"is\",e),i):(i=E(t),t.indexOf(\"-\")>=0&&b(i,HTMLElement),i)}function f(t,e){var n=t[e];t[e]=function(){var t=n.apply(this,arguments);return v(t),t}}var g,m=(t.isIE,t.upgradeDocumentTree),v=t.upgradeAll,y=t.upgradeWithDefinition,b=t.implementPrototype,A=t.useNative,C=[\"annotation-xml\",\"color-profile\",\"font-face\",\"font-face-src\",\"font-face-uri\",\"font-face-format\",\"font-face-name\",\"missing-glyph\"],x={},w=\"http://www.w3.org/1999/xhtml\",E=document.createElement.bind(document),S=document.createElementNS.bind(document);g=Object.__proto__||A?function(t,e){return t instanceof e}:function(t,e){if(t instanceof e)return!0;for(var n=t;n;){if(n===e.prototype)return!0;n=n.__proto__}return!1},f(Node.prototype,\"cloneNode\"),f(document,\"importNode\"),document.registerElement=e,document.createElement=d,document.createElementNS=p,t.registry=x,t.instanceof=g,t.reservedTagList=C,t.getRegisteredDefinition=c,document.register=document.registerElement}),function(t){function e(){r(window.wrap(document)),window.CustomElements.ready=!0;var t=window.requestAnimationFrame||function(t){setTimeout(t,16)};t(function(){setTimeout(function(){window.CustomElements.readyTime=Date.now(),window.HTMLImports&&(window.CustomElements.elapsed=window.CustomElements.readyTime-window.HTMLImports.readyTime),document.dispatchEvent(new CustomEvent(\"WebComponentsReady\",{bubbles:!0}))})})}var n=t.useNative,i=t.initializeModules;if(t.isIE,n){var o=function(){};t.watchShadow=o,t.upgrade=o,t.upgradeAll=o,t.upgradeDocumentTree=o,t.upgradeSubtree=o,t.takeRecords=o,t.instanceof=function(t,e){return t instanceof e}}else i();var r=t.upgradeDocumentTree,s=t.upgradeDocument;if(window.wrap||(window.ShadowDOMPolyfill?(window.wrap=window.ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=window.ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(t){return t}),window.HTMLImports&&(window.HTMLImports.__importsParsingHook=function(t){t.import&&s(wrap(t.import))}),\"complete\"===document.readyState||t.flags.eager)e();else if(\"interactive\"!==document.readyState||window.attachEvent||window.HTMLImports&&!window.HTMLImports.ready){var a=window.HTMLImports&&!window.HTMLImports.ready?\"HTMLImportsLoaded\":\"DOMContentLoaded\";window.addEventListener(a,e)}else e()}(window.CustomElements))}.call(this),function(){}.call(this),function(){var t=this;(function(){(function(){this.Trix={VERSION:\"1.3.1\",ZERO_WIDTH_SPACE:\"\\ufeff\",NON_BREAKING_SPACE:\"\\xa0\",OBJECT_REPLACEMENT_CHARACTER:\"\\ufffc\",browser:{composesExistingText:/Android.*Chrome/.test(navigator.userAgent),forcesObjectResizing:/Trident.*rv:11/.test(navigator.userAgent),supportsInputEvents:function(){var t,e,n,i;if(\"undefined\"==typeof InputEvent)return!1;for(i=[\"data\",\"getTargetRanges\",\"inputType\"],t=0,e=i.length;e>t;t++)if(n=i[t],!(n in InputEvent.prototype))return!1;return!0}()},config:{}}}).call(this)}).call(t);var e=t.Trix;(function(){(function(){e.BasicObject=function(){function t(){}var e,n,i;return t.proxyMethod=function(t){var i,o,r,s,a;return r=n(t),i=r.name,s=r.toMethod,a=r.toProperty,o=r.optional,this.prototype[i]=function(){var t,n;return t=null!=s?o?\"function\"==typeof this[s]?this[s]():void 0:this[s]():null!=a?this[a]:void 0,o?(n=null!=t?t[i]:void 0,null!=n?e.call(n,t,arguments):void 0):(n=t[i],e.call(n,t,arguments))}},n=function(t){var e,n;if(!(n=t.match(i)))throw new Error(\"can't parse @proxyMethod expression: \"+t);return e={name:n[4]},null!=n[2]?e.toMethod=n[1]:e.toProperty=n[1],null!=n[3]&&(e.optional=!0),e},e=Function.prototype.apply,i=/^(.+?)(\\(\\))?(\\?)?\\.(.+?)$/,t}()}).call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Object=function(n){function i(){this.id=++o}var o;return t(i,n),o=0,i.fromJSONString=function(t){return this.fromJSON(JSON.parse(t))},i.prototype.hasSameConstructorAs=function(t){return this.constructor===(null!=t?t.constructor:void 0)},i.prototype.isEqualTo=function(t){return this===t},i.prototype.inspect=function(){var t,e,n;return t=function(){var t,i,o;i=null!=(t=this.contentsForInspection())?t:{},o=[];for(e in i)n=i[e],o.push(e+\"=\"+n);return o}.call(this),\"#<\"+this.constructor.name+\":\"+this.id+(t.length?\" \"+t.join(\", \"):\"\")+\">\"},i.prototype.contentsForInspection=function(){},i.prototype.toJSONString=function(){return JSON.stringify(this)},i.prototype.toUTF16String=function(){return e.UTF16String.box(this)},i.prototype.getCacheKey=function(){return this.id.toString()},i}(e.BasicObject)}.call(this),function(){e.extend=function(t){var e,n;for(e in t)n=t[e],this[e]=n;return this}}.call(this),function(){e.extend({defer:function(t){return setTimeout(t,1)}})}.call(this),function(){var t,n;e.extend({normalizeSpaces:function(t){return t.replace(RegExp(\"\"+e.ZERO_WIDTH_SPACE,\"g\"),\"\").replace(RegExp(\"\"+e.NON_BREAKING_SPACE,\"g\"),\" \")},normalizeNewlines:function(t){return t.replace(/\\r\\n/g,\"\\n\")},breakableWhitespacePattern:RegExp(\"[^\\\\S\"+e.NON_BREAKING_SPACE+\"]\"),squishBreakableWhitespace:function(t){return t.replace(RegExp(\"\"+e.breakableWhitespacePattern.source,\"g\"),\" \").replace(/\\ {2,}/g,\" \")},summarizeStringChange:function(t,i){var o,r,s,a;return t=e.UTF16String.box(t),i=e.UTF16String.box(i),i.length<t.length?(r=n(t,i),a=r[0],o=r[1]):(s=n(i,t),o=s[0],a=s[1]),{added:o,removed:a}}}),n=function(n,i){var o,r,s,a,u;return n.isEqualTo(i)?[\"\",\"\"]:(r=t(n,i),a=r.utf16String.length,s=a?(u=r.offset,r,o=n.codepoints.slice(0,u).concat(n.codepoints.slice(u+a)),t(i,e.UTF16String.fromCodepoints(o))):t(i,n),[r.utf16String.toString(),s.utf16String.toString()])},t=function(t,e){var n,i,o;for(n=0,i=t.length,o=e.length;i>n&&t.charAt(n).isEqualTo(e.charAt(n));)n++;for(;i>n+1&&t.charAt(i-1).isEqualTo(e.charAt(o-1));)i--,o--;return{utf16String:t.slice(n,i),offset:n}}}.call(this),function(){e.extend({copyObject:function(t){var e,n,i;null==t&&(t={}),n={};for(e in t)i=t[e],n[e]=i;return n},objectsAreEqual:function(t,e){var n,i;if(null==t&&(t={}),null==e&&(e={}),Object.keys(t).length!==Object.keys(e).length)return!1;for(n in t)if(i=t[n],i!==e[n])return!1;return!0}})}.call(this),function(){var t=[].slice;e.extend({arraysAreEqual:function(t,e){var n,i,o,r;if(null==t&&(t=[]),null==e&&(e=[]),t.length!==e.length)return!1;for(i=n=0,o=t.length;o>n;i=++n)if(r=t[i],r!==e[i])return!1;return!0},arrayStartsWith:function(t,n){return null==t&&(t=[]),null==n&&(n=[]),e.arraysAreEqual(t.slice(0,n.length),n)},spliceArray:function(){var e,n,i;return n=arguments[0],e=2<=arguments.length?t.call(arguments,1):[],i=n.slice(0),i.splice.apply(i,e),i},summarizeArrayChange:function(t,e){var n,i,o,r,s,a,u,c,l,h,p;for(null==t&&(t=[]),null==e&&(e=[]),n=[],h=[],o=new Set,r=0,u=t.length;u>r;r++)p=t[r],o.add(p);for(i=new Set,s=0,c=e.length;c>s;s++)p=e[s],i.add(p),o.has(p)||n.push(p);for(a=0,l=t.length;l>a;a++)p=t[a],i.has(p)||h.push(p);return{added:n,removed:h}}})}.call(this),function(){var t,n,i,o;t=null,n=null,o=null,i=null,e.extend({getAllAttributeNames:function(){return null!=t?t:t=e.getTextAttributeNames().concat(e.getBlockAttributeNames())},getBlockConfig:function(t){return e.config.blockAttributes[t]},getBlockAttributeNames:function(){return null!=n?n:n=Object.keys(e.config.blockAttributes)},getTextConfig:function(t){return e.config.textAttributes[t]},getTextAttributeNames:function(){return null!=o?o:o=Object.keys(e.config.textAttributes)},getListAttributeNames:function(){var t,n;return null!=i?i:i=function(){var i,o;i=e.config.blockAttributes,o=[];for(t in i)n=i[t].listAttribute,null!=n&&o.push(n);return o}()}})}.call(this),function(){var t,n,i,o,r,s=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=document.documentElement,n=null!=(i=null!=(o=null!=(r=t.matchesSelector)?r:t.webkitMatchesSelector)?o:t.msMatchesSelector)?i:t.mozMatchesSelector,e.extend({handleEvent:function(n,i){var o,r,s,a,u,c,l,h,p,d,f,g;return h=null!=i?i:{},c=h.onElement,u=h.matchingSelector,g=h.withCallback,a=h.inPhase,l=h.preventDefault,d=h.times,r=null!=c?c:t,p=u,o=g,f=\"capturing\"===a,s=function(t){var n;return null!=d&&0===--d&&s.destroy(),n=e.findClosestElementFromNode(t.target,{matchingSelector:p}),null!=n&&(null!=g&&g.call(n,t,n),l)?t.preventDefault():void 0},s.destroy=function(){return r.removeEventListener(n,s,f)},r.addEventListener(n,s,f),s},handleEventOnce:function(t,n){return null==n&&(n={}),n.times=1,e.handleEvent(t,n)},triggerEvent:function(n,i){var o,r,s,a,u,c,l;return l=null!=i?i:{},c=l.onElement,r=l.bubbles,s=l.cancelable,o=l.attributes,a=null!=c?c:t,r=r!==!1,s=s!==!1,u=document.createEvent(\"Events\"),u.initEvent(n,r,s),null!=o&&e.extend.call(u,o),a.dispatchEvent(u)},elementMatchesSelector:function(t,e){return 1===(null!=t?t.nodeType:void 0)?n.call(t,e):void 0},findClosestElementFromNode:function(t,n){var i,o,r;for(o=null!=n?n:{},i=o.matchingSelector,r=o.untilNode;null!=t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.parentNode;if(null!=t){if(null==i)return t;if(t.closest&&null==r)return t.closest(i);for(;t&&t!==r;){if(e.elementMatchesSelector(t,i))return t;t=t.parentNode}}},findInnerElement:function(t){for(;null!=t?t.firstElementChild:void 0;)t=t.firstElementChild;return t},innerElementIsActive:function(t){return document.activeElement!==t&&e.elementContainsNode(t,document.activeElement)},elementContainsNode:function(t,e){if(t&&e)for(;e;){if(e===t)return!0;e=e.parentNode}},findNodeFromContainerAndOffset:function(t,e){var n;if(t)return t.nodeType===Node.TEXT_NODE?t:0===e?null!=(n=t.firstChild)?n:t:t.childNodes.item(e-1)},findElementFromContainerAndOffset:function(t,n){var i;return i=e.findNodeFromContainerAndOffset(t,n),e.findClosestElementFromNode(i)},findChildIndexOfNode:function(t){var e;if(null!=t?t.parentNode:void 0){for(e=0;t=t.previousSibling;)e++;return e}},removeNode:function(t){var e;return null!=t&&null!=(e=t.parentNode)?e.removeChild(t):void 0},walkTree:function(t,e){var n,i,o,r,s;return o=null!=e?e:{},i=o.onlyNodesOfType,r=o.usingFilter,n=o.expandEntityReferences,s=function(){switch(i){case\"element\":return NodeFilter.SHOW_ELEMENT;case\"text\":return NodeFilter.SHOW_TEXT;case\"comment\":return NodeFilter.SHOW_COMMENT;default:return NodeFilter.SHOW_ALL}}(),document.createTreeWalker(t,s,null!=r?r:null,n===!0)},tagName:function(t){var e;return null!=t&&null!=(e=t.tagName)?e.toLowerCase():void 0},makeElement:function(t,e){var n,i,o,r,s,a,u,c,l,h,p,d,f,g;if(null==e&&(e={}),\"object\"==typeof t?(e=t,t=e.tagName):e={attributes:e},o=document.createElement(t),null!=e.editable&&(null==e.attributes&&(e.attributes={}),e.attributes.contenteditable=e.editable),e.attributes){l=e.attributes;for(a in l)g=l[a],o.setAttribute(a,g)}if(e.style){h=e.style;for(a in h)g=h[a],o.style[a]=g}if(e.data){p=e.data;for(a in p)g=p[a],o.dataset[a]=g}if(e.className)for(d=e.className.split(\" \"),r=0,u=d.length;u>r;r++)i=d[r],o.classList.add(i);if(e.textContent&&(o.textContent=e.textContent),e.childNodes)for(f=[].concat(e.childNodes),s=0,c=f.length;c>s;s++)n=f[s],o.appendChild(n);return o},getBlockTagNames:function(){var t,n;return null!=e.blockTagNames?e.blockTagNames:e.blockTagNames=function(){var i,o;i=e.config.blockAttributes,o=[];for(t in i)n=i[t].tagName,n&&o.push(n);return o}()},nodeIsBlockContainer:function(t){return e.nodeIsBlockStartComment(null!=t?t.firstChild:void 0)},nodeProbablyIsBlockContainer:function(t){var n,i;return n=e.tagName(t),s.call(e.getBlockTagNames(),n)>=0&&(i=e.tagName(t.firstChild),s.call(e.getBlockTagNames(),i)<0)},nodeIsBlockStart:function(t,n){var i;return i=(null!=n?n:{strict:!0}).strict,i?e.nodeIsBlockStartComment(t):e.nodeIsBlockStartComment(t)||!e.nodeIsBlockStartComment(t.firstChild)&&e.nodeProbablyIsBlockContainer(t)},nodeIsBlockStartComment:function(t){return e.nodeIsCommentNode(t)&&\"block\"===(null!=t?t.data:void 0)},nodeIsCommentNode:function(t){return(null!=t?t.nodeType:void 0)===Node.COMMENT_NODE},nodeIsCursorTarget:function(t,n){var i;return i=(null!=n?n:{}).name,t?e.nodeIsTextNode(t)?t.data===e.ZERO_WIDTH_SPACE?i?t.parentNode.dataset.trixCursorTarget===i:!0:void 0:e.nodeIsCursorTarget(t.firstChild):void 0},nodeIsAttachmentElement:function(t){return e.elementMatchesSelector(t,e.AttachmentView.attachmentSelector)},nodeIsEmptyTextNode:function(t){return e.nodeIsTextNode(t)&&\"\"===(null!=t?t.data:void 0)},nodeIsTextNode:function(t){return(null!=t?t.nodeType:void 0)===Node.TEXT_NODE}})}.call(this),function(){var t,n,i,o,r;t=e.copyObject,o=e.objectsAreEqual,e.extend({normalizeRange:i=function(t){var e;if(null!=t)return Array.isArray(t)||(t=[t,t]),[n(t[0]),n(null!=(e=t[1])?e:t[0])]},rangeIsCollapsed:function(t){var e,n,o;if(null!=t)return n=i(t),o=n[0],e=n[1],r(o,e)},rangesAreEqual:function(t,e){var n,o,s,a,u,c;if(null!=t&&null!=e)return s=i(t),o=s[0],n=s[1],a=i(e),c=a[0],u=a[1],r(o,c)&&r(n,u)}}),n=function(e){return\"number\"==typeof e?e:t(e)},r=function(t,e){return\"number\"==typeof t?t===e:o(t,e)}}.call(this),function(){var t,n,i,o,r,s,a;e.registerElement=function(t,e){var n,i;return null==e&&(e={}),t=t.toLowerCase(),e=a(e),i=s(e),(n=i.defaultCSS)&&(delete i.defaultCSS,o(n,t)),r(t,i)},o=function(t,e){var n;return n=i(e),n.textContent=t.replace(/%t/g,e)},i=function(e){var n,i;return n=document.createElement(\"style\"),n.setAttribute(\"type\",\"text/css\"),n.setAttribute(\"data-tag-name\",e.toLowerCase()),(i=t())&&n.setAttribute(\"nonce\",i),document.head.insertBefore(n,document.head.firstChild),n},t=function(){var t;return(t=n(\"trix-csp-nonce\")||n(\"csp-nonce\"))?t.getAttribute(\"content\"):void 0},n=function(t){return document.head.querySelector(\"meta[name=\"+t+\"]\")},s=function(t){var e,n,i;n={};for(e in t)i=t[e],n[e]=\"function\"==typeof i?{value:i}:i;return n},a=function(){var t;return t=function(t){var e,n,i,o,r;for(e={},r=[\"initialize\",\"connect\",\"disconnect\"],n=0,o=r.length;o>n;n++)i=r[n],e[i]=t[i],delete t[i];return e},window.customElements?function(e){var n,i,o,r,s;return s=t(e),o=s.initialize,n=s.connect,i=s.disconnect,o&&(r=n,n=function(){return this.initialized||(this.initialized=!0,o.call(this)),null!=r?r.call(this):void 0}),n&&(e.connectedCallback=n),i&&(e.disconnectedCallback=i),e}:function(e){var n,i,o,r;return r=t(e),o=r.initialize,n=r.connect,i=r.disconnect,o&&(e.createdCallback=o),n&&(e.attachedCallback=n),i&&(e.detachedCallback=i),e}}(),r=function(){return window.customElements?function(t,e){var n;return n=function(){return\"object\"==typeof Reflect?Reflect.construct(HTMLElement,[],n):HTMLElement.apply(this)},Object.setPrototypeOf(n.prototype,HTMLElement.prototype),Object.setPrototypeOf(n,HTMLElement),Object.defineProperties(n.prototype,e),window.customElements.define(t,n),n}:function(t,e){var n,i;return i=Object.create(HTMLElement.prototype,e),n=document.registerElement(t,{prototype:i}),Object.defineProperty(i,\"constructor\",{value:n}),n}}()}.call(this),function(){var t,n;e.extend({getDOMSelection:function(){var t;return t=window.getSelection(),t.rangeCount>0?t:void 0},getDOMRange:function(){var n,i;return(n=null!=(i=e.getDOMSelection())?i.getRangeAt(0):void 0)&&!t(n)?n:void 0},setDOMRange:function(t){var n;return n=window.getSelection(),n.removeAllRanges(),n.addRange(t),e.selectionChangeObserver.update()}}),t=function(t){return n(t.startContainer)||n(t.endContainer)},n=function(t){return!Object.getPrototypeOf(t)}}.call(this),function(){var t;t={\"application/x-trix-feature-detection\":\"test\"},e.extend({dataTransferIsPlainText:function(t){var e,n,i;return i=t.getData(\"text/plain\"),n=t.getData(\"text/html\"),i&&n?(e=(new DOMParser).parseFromString(n,\"text/html\").body,e.textContent===i?!e.querySelector(\"*\"):void 0):null!=i?i.length:void 0},dataTransferIsWritable:function(e){var n,i;if(null!=(null!=e?e.setData:void 0)){for(n in t)if(i=t[n],!function(){try{return e.setData(n,i),e.getData(n)===i}catch(t){}}())return;return!0}},keyEventIsKeyboardCommand:function(){return/Mac|^iP/.test(navigator.platform)?function(t){return t.metaKey}:function(t){return t.ctrlKey}}()})}.call(this),function(){e.extend({RTL_PATTERN:/[\\u05BE\\u05C0\\u05C3\\u05D0-\\u05EA\\u05F0-\\u05F4\\u061B\\u061F\\u0621-\\u063A\\u0640-\\u064A\\u066D\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D5\\u06E5\\u06E6\\u200F\\u202B\\u202E\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC]/,getDirection:function(){var t,n,i,o;return n=e.makeElement(\"input\",{dir:\"auto\",name:\"x\",dirName:\"x.dir\"}),t=e.makeElement(\"form\"),t.appendChild(n),i=function(){try{return new FormData(t).has(n.dirName)}catch(e){}}(),o=function(){try{return n.matches(\":dir(ltr),:dir(rtl)\")}catch(t){}}(),i?function(e){return n.value=e,new FormData(t).get(n.dirName)}:o?function(t){return n.value=t,n.matches(\":dir(rtl)\")?\"rtl\":\"ltr\"}:function(t){var n;return n=t.trim().charAt(0),e.RTL_PATTERN.test(n)?\"rtl\":\"ltr\"}}()})}.call(this),function(){}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;t=e.arraysAreEqual,e.Hash=function(i){function o(t){null==t&&(t={}),this.values=s(t),o.__super__.constructor.apply(this,arguments)}var r,s,a,u,c;return n(o,i),o.fromCommonAttributesOfObjects=function(t){var e,n,i,o,s,a;if(null==t&&(t=[]),!t.length)return new this;for(e=r(t[0]),i=e.getKeys(),a=t.slice(1),n=0,o=a.length;o>n;n++)s=a[n],i=e.getKeysCommonToHash(r(s)),e=e.slice(i);return e},o.box=function(t){return r(t)},o.prototype.add=function(t,e){return this.merge(u(t,e))},o.prototype.remove=function(t){return new e.Hash(s(this.values,t))},o.prototype.get=function(t){return this.values[t]},o.prototype.has=function(t){return t in this.values},o.prototype.merge=function(t){return new e.Hash(a(this.values,c(t)))},o.prototype.slice=function(t){var n,i,o,r;for(r={},n=0,o=t.length;o>n;n++)i=t[n],this.has(i)&&(r[i]=this.values[i]);return new e.Hash(r)},o.prototype.getKeys=function(){return Object.keys(this.values)},o.prototype.getKeysCommonToHash=function(t){var e,n,i,o,s;for(t=r(t),o=this.getKeys(),s=[],e=0,i=o.length;i>e;e++)n=o[e],this.values[n]===t.values[n]&&s.push(n);return s},o.prototype.isEqualTo=function(e){return t(this.toArray(),r(e).toArray())},o.prototype.isEmpty=function(){return 0===this.getKeys().length},o.prototype.toArray=function(){var t,e,n;return(null!=this.array?this.array:this.array=function(){var i;e=[],i=this.values;for(t in i)n=i[t],e.push(t,n);return e}.call(this)).slice(0)},o.prototype.toObject=function(){return s(this.values)},o.prototype.toJSON=function(){return this.toObject()},o.prototype.contentsForInspection=function(){return{values:JSON.stringify(this.values)}},u=function(t,e){var n;return n={},n[t]=e,n},a=function(t,e){var n,i,o;i=s(t);for(n in e)o=e[n],i[n]=o;return i},s=function(t,e){var n,i,o,r,s;for(r={},s=Object.keys(t).sort(),n=0,o=s.length;o>n;n++)i=s[n],i!==e&&(r[i]=t[i]);return r},r=function(t){return t instanceof e.Hash?t:new e.Hash(t)},c=function(t){return t instanceof e.Hash?t.values:t\n},o}(e.Object)}.call(this),function(){e.ObjectGroup=function(){function t(t,e){var n,i;this.objects=null!=t?t:[],i=e.depth,n=e.asTree,n&&(this.depth=i,this.objects=this.constructor.groupObjects(this.objects,{asTree:n,depth:this.depth+1}))}return t.groupObjects=function(t,e){var n,i,o,r,s,a,u,c,l;for(null==t&&(t=[]),l=null!=e?e:{},o=l.depth,n=l.asTree,n&&null==o&&(o=0),c=[],s=0,a=t.length;a>s;s++){if(u=t[s],r){if((\"function\"==typeof u.canBeGrouped?u.canBeGrouped(o):void 0)&&(\"function\"==typeof(i=r[r.length-1]).canBeGroupedWith?i.canBeGroupedWith(u,o):void 0)){r.push(u);continue}c.push(new this(r,{depth:o,asTree:n})),r=null}(\"function\"==typeof u.canBeGrouped?u.canBeGrouped(o):void 0)?r=[u]:c.push(u)}return r&&c.push(new this(r,{depth:o,asTree:n})),c},t.prototype.getObjects=function(){return this.objects},t.prototype.getDepth=function(){return this.depth},t.prototype.getCacheKey=function(){var t,e,n,i,o;for(e=[\"objectGroup\"],o=this.getObjects(),t=0,n=o.length;n>t;t++)i=o[t],e.push(i.getCacheKey());return e.join(\"/\")},t}()}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ObjectMap=function(e){function n(t){var e,n,i,o,r;for(null==t&&(t=[]),this.objects={},i=0,o=t.length;o>i;i++)r=t[i],n=JSON.stringify(r),null==(e=this.objects)[n]&&(e[n]=r)}return t(n,e),n.prototype.find=function(t){var e;return e=JSON.stringify(t),this.objects[e]},n}(e.BasicObject)}.call(this),function(){e.ElementStore=function(){function t(t){this.reset(t)}var e;return t.prototype.add=function(t){var n;return n=e(t),this.elements[n]=t},t.prototype.remove=function(t){var n,i;return n=e(t),(i=this.elements[n])?(delete this.elements[n],i):void 0},t.prototype.reset=function(t){var e,n,i;for(null==t&&(t=[]),this.elements={},n=0,i=t.length;i>n;n++)e=t[n],this.add(e);return t},e=function(t){return t.dataset.trixStoreKey},t}()}.call(this),function(){}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Operation=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return t(n,e),n.prototype.isPerforming=function(){return this.performing===!0},n.prototype.hasPerformed=function(){return this.performed===!0},n.prototype.hasSucceeded=function(){return this.performed&&this.succeeded},n.prototype.hasFailed=function(){return this.performed&&!this.succeeded},n.prototype.getPromise=function(){return null!=this.promise?this.promise:this.promise=new Promise(function(t){return function(e,n){return t.performing=!0,t.perform(function(i,o){return t.succeeded=i,t.performing=!1,t.performed=!0,t.succeeded?e(o):n(o)})}}(this))},n.prototype.perform=function(t){return t(!1)},n.prototype.release=function(){var t;return null!=(t=this.promise)&&\"function\"==typeof t.cancel&&t.cancel(),this.promise=null,this.performing=null,this.performed=null,this.succeeded=null},n.proxyMethod(\"getPromise().then\"),n.proxyMethod(\"getPromise().catch\"),n}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s=function(t,e){function n(){this.constructor=t}for(var i in e)a.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},a={}.hasOwnProperty;e.UTF16String=function(t){function e(t,e){this.ucs2String=t,this.codepoints=e,this.length=this.codepoints.length,this.ucs2Length=this.ucs2String.length}return s(e,t),e.box=function(t){return null==t&&(t=\"\"),t instanceof this?t:this.fromUCS2String(null!=t?t.toString():void 0)},e.fromUCS2String=function(t){return new this(t,o(t))},e.fromCodepoints=function(t){return new this(r(t),t)},e.prototype.offsetToUCS2Offset=function(t){return r(this.codepoints.slice(0,Math.max(0,t))).length},e.prototype.offsetFromUCS2Offset=function(t){return o(this.ucs2String.slice(0,Math.max(0,t))).length},e.prototype.slice=function(){var t;return this.constructor.fromCodepoints((t=this.codepoints).slice.apply(t,arguments))},e.prototype.charAt=function(t){return this.slice(t,t+1)},e.prototype.isEqualTo=function(t){return this.constructor.box(t).ucs2String===this.ucs2String},e.prototype.toJSON=function(){return this.ucs2String},e.prototype.getCacheKey=function(){return this.ucs2String},e.prototype.toString=function(){return this.ucs2String},e}(e.BasicObject),t=1===(\"function\"==typeof Array.from?Array.from(\"\\ud83d\\udc7c\").length:void 0),n=null!=(\"function\"==typeof\" \".codePointAt?\" \".codePointAt(0):void 0),i=\" \\ud83d\\udc7c\"===(\"function\"==typeof String.fromCodePoint?String.fromCodePoint(32,128124):void 0),o=t&&n?function(t){return Array.from(t).map(function(t){return t.codePointAt(0)})}:function(t){var e,n,i,o,r;for(o=[],e=0,i=t.length;i>e;)r=t.charCodeAt(e++),r>=55296&&56319>=r&&i>e&&(n=t.charCodeAt(e++),56320===(64512&n)?r=((1023&r)<<10)+(1023&n)+65536:e--),o.push(r);return o},r=i?function(t){return String.fromCodePoint.apply(String,t)}:function(t){var e,n,i;return e=function(){var e,o,r;for(r=[],e=0,o=t.length;o>e;e++)i=t[e],n=\"\",i>65535&&(i-=65536,n+=String.fromCharCode(i>>>10&1023|55296),i=56320|1023&i),r.push(n+String.fromCharCode(i));return r}(),e.join(\"\")}}.call(this),function(){}.call(this),function(){}.call(this),function(){e.config.lang={attachFiles:\"Attach Files\",bold:\"Bold\",bullets:\"Bullets\",\"byte\":\"Byte\",bytes:\"Bytes\",captionPlaceholder:\"Add a caption\\u2026\",code:\"Code\",heading1:\"Heading\",indent:\"Increase Level\",italic:\"Italic\",link:\"Link\",numbers:\"Numbers\",outdent:\"Decrease Level\",quote:\"Quote\",redo:\"Redo\",remove:\"Remove\",strike:\"Strikethrough\",undo:\"Undo\",unlink:\"Unlink\",url:\"URL\",urlPlaceholder:\"Enter a URL\\u2026\",GB:\"GB\",KB:\"KB\",MB:\"MB\",PB:\"PB\",TB:\"TB\"}}.call(this),function(){e.config.css={attachment:\"attachment\",attachmentCaption:\"attachment__caption\",attachmentCaptionEditor:\"attachment__caption-editor\",attachmentMetadata:\"attachment__metadata\",attachmentMetadataContainer:\"attachment__metadata-container\",attachmentName:\"attachment__name\",attachmentProgress:\"attachment__progress\",attachmentSize:\"attachment__size\",attachmentToolbar:\"attachment__toolbar\",attachmentGallery:\"attachment-gallery\"}}.call(this),function(){var t;e.config.blockAttributes=t={\"default\":{tagName:\"div\",parse:!1},quote:{tagName:\"blockquote\",nestable:!0},heading1:{tagName:\"h1\",terminal:!0,breakOnReturn:!0,group:!1},code:{tagName:\"pre\",terminal:!0,text:{plaintext:!0}},bulletList:{tagName:\"ul\",parse:!1},bullet:{tagName:\"li\",listAttribute:\"bulletList\",group:!1,nestable:!0,test:function(n){return e.tagName(n.parentNode)===t[this.listAttribute].tagName}},numberList:{tagName:\"ol\",parse:!1},number:{tagName:\"li\",listAttribute:\"numberList\",group:!1,nestable:!0,test:function(n){return e.tagName(n.parentNode)===t[this.listAttribute].tagName}},attachmentGallery:{tagName:\"div\",exclusive:!0,terminal:!0,parse:!1,group:!1}}}.call(this),function(){var t,n;t=e.config.lang,n=[t.bytes,t.KB,t.MB,t.GB,t.TB,t.PB],e.config.fileSize={prefix:\"IEC\",precision:2,formatter:function(e){var i,o,r,s,a;switch(e){case 0:return\"0 \"+t.bytes;case 1:return\"1 \"+t.byte;default:return i=function(){switch(this.prefix){case\"SI\":return 1e3;case\"IEC\":return 1024}}.call(this),o=Math.floor(Math.log(e)/Math.log(i)),r=e/Math.pow(i,o),s=r.toFixed(this.precision),a=s.replace(/0*$/,\"\").replace(/\\.$/,\"\"),a+\" \"+n[o]}}}}.call(this),function(){e.config.textAttributes={bold:{tagName:\"strong\",inheritable:!0,parser:function(t){var e;return e=window.getComputedStyle(t),\"bold\"===e.fontWeight||e.fontWeight>=600}},italic:{tagName:\"em\",inheritable:!0,parser:function(t){var e;return e=window.getComputedStyle(t),\"italic\"===e.fontStyle}},href:{groupTagName:\"a\",parser:function(t){var n,i,o;return n=e.AttachmentView.attachmentSelector,o=\"a:not(\"+n+\")\",(i=e.findClosestElementFromNode(t,{matchingSelector:o}))?i.getAttribute(\"href\"):void 0}},strike:{tagName:\"del\",inheritable:!0},frozen:{style:{backgroundColor:\"highlight\"}}}}.call(this),function(){var t,n,i,o,r;r=\"[data-trix-serialize=false]\",o=[\"contenteditable\",\"data-trix-id\",\"data-trix-store-key\",\"data-trix-mutable\",\"data-trix-placeholder\",\"tabindex\"],n=\"data-trix-serialized-attributes\",i=\"[\"+n+\"]\",t=new RegExp(\"<!--block-->\",\"g\"),e.extend({serializers:{\"application/json\":function(t){var n;if(t instanceof e.Document)n=t;else{if(!(t instanceof HTMLElement))throw new Error(\"unserializable object\");n=e.Document.fromHTML(t.innerHTML)}return n.toSerializableDocument().toJSONString()},\"text/html\":function(s){var a,u,c,l,h,p,d,f,g,m,v,y,b,A,C,x,w;if(s instanceof e.Document)l=e.DocumentView.render(s);else{if(!(s instanceof HTMLElement))throw new Error(\"unserializable object\");l=s.cloneNode(!0)}for(A=l.querySelectorAll(r),h=0,g=A.length;g>h;h++)c=A[h],e.removeNode(c);for(p=0,m=o.length;m>p;p++)for(a=o[p],C=l.querySelectorAll(\"[\"+a+\"]\"),d=0,v=C.length;v>d;d++)c=C[d],c.removeAttribute(a);for(x=l.querySelectorAll(i),f=0,y=x.length;y>f;f++){c=x[f];try{u=JSON.parse(c.getAttribute(n)),c.removeAttribute(n);for(b in u)w=u[b],c.setAttribute(b,w)}catch(E){}}return l.innerHTML.replace(t,\"\")}},deserializers:{\"application/json\":function(t){return e.Document.fromJSONString(t)},\"text/html\":function(t){return e.Document.fromHTML(t)}},serializeToContentType:function(t,n){var i;if(i=e.serializers[n])return i(t);throw new Error(\"unknown content type: \"+n)},deserializeFromContentType:function(t,n){var i;if(i=e.deserializers[n])return i(t);throw new Error(\"unknown content type: \"+n)}})}.call(this),function(){var t;t=e.config.lang,e.config.toolbar={getDefaultHTML:function(){return'<div class=\"trix-button-row\">\\n <span class=\"trix-button-group trix-button-group--text-tools\" data-trix-button-group=\"text-tools\">\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bold\" data-trix-attribute=\"bold\" data-trix-key=\"b\" title=\"'+t.bold+'\" tabindex=\"-1\">'+t.bold+'</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-italic\" data-trix-attribute=\"italic\" data-trix-key=\"i\" title=\"'+t.italic+'\" tabindex=\"-1\">'+t.italic+'</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"'+t.strike+'\" tabindex=\"-1\">'+t.strike+'</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-link\" data-trix-attribute=\"href\" data-trix-action=\"link\" data-trix-key=\"k\" title=\"'+t.link+'\" tabindex=\"-1\">'+t.link+'</button>\\n </span>\\n\\n <span class=\"trix-button-group trix-button-group--block-tools\" data-trix-button-group=\"block-tools\">\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-attribute=\"heading1\" title=\"'+t.heading1+'\" tabindex=\"-1\">'+t.heading1+'</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"'+t.quote+'\" tabindex=\"-1\">'+t.quote+'</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"'+t.code+'\" tabindex=\"-1\">'+t.code+'</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"'+t.bullets+'\" tabindex=\"-1\">'+t.bullets+'</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"'+t.numbers+'\" tabindex=\"-1\">'+t.numbers+'</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"'+t.outdent+'\" tabindex=\"-1\">'+t.outdent+'</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"'+t.indent+'\" tabindex=\"-1\">'+t.indent+'</button>\\n </span>\\n\\n <span class=\"trix-button-group trix-button-group--file-tools\" data-trix-button-group=\"file-tools\">\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-attach\" data-trix-action=\"attachFiles\" title=\"'+t.attachFiles+'\" tabindex=\"-1\">'+t.attachFiles+'</button>\\n </span>\\n\\n <span class=\"trix-button-group-spacer\"></span>\\n\\n <span class=\"trix-button-group trix-button-group--history-tools\" data-trix-button-group=\"history-tools\">\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-undo\" data-trix-action=\"undo\" data-trix-key=\"z\" title=\"'+t.undo+'\" tabindex=\"-1\">'+t.undo+'</button>\\n <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-redo\" data-trix-action=\"redo\" data-trix-key=\"shift+z\" title=\"'+t.redo+'\" tabindex=\"-1\">'+t.redo+'</button>\\n </span>\\n</div>\\n\\n<div class=\"trix-dialogs\" data-trix-dialogs>\\n <div class=\"trix-dialog trix-dialog--link\" data-trix-dialog=\"href\" data-trix-dialog-attribute=\"href\">\\n <div class=\"trix-dialog__link-fields\">\\n <input type=\"url\" name=\"href\" class=\"trix-input trix-input--dialog\" placeholder=\"'+t.urlPlaceholder+'\" aria-label=\"'+t.url+'\" required data-trix-input>\\n <div class=\"trix-button-group\">\\n <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"'+t.link+'\" data-trix-method=\"setAttribute\">\\n <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"'+t.unlink+'\" data-trix-method=\"removeAttribute\">\\n </div>\\n </div>\\n </div>\\n</div>'}}}.call(this),function(){e.config.undoInterval=5e3}.call(this),function(){e.config.attachments={preview:{presentation:\"gallery\",caption:{name:!0,size:!0}},file:{caption:{size:!0}}}}.call(this),function(){e.config.keyNames={8:\"backspace\",9:\"tab\",13:\"return\",27:\"escape\",37:\"left\",39:\"right\",46:\"delete\",68:\"d\",72:\"h\",79:\"o\"}}.call(this),function(){e.config.input={level2Enabled:!0,getLevel:function(){return this.level2Enabled&&e.browser.supportsInputEvents?2:0},pickFiles:function(t){var n;return n=e.makeElement(\"input\",{type:\"file\",multiple:!0,hidden:!0,id:this.fileInputId}),n.addEventListener(\"change\",function(){return t(n.files),e.removeNode(n)}),e.removeNode(document.getElementById(this.fileInputId)),document.body.appendChild(n),n.click()},fileInputId:\"trix-file-input-\"+Date.now().toString(16)}}.call(this),function(){}.call(this),function(){e.registerElement(\"trix-toolbar\",{defaultCSS:\"%t {\\n display: block;\\n}\\n\\n%t {\\n white-space: nowrap;\\n}\\n\\n%t [data-trix-dialog] {\\n display: none;\\n}\\n\\n%t [data-trix-dialog][data-trix-active] {\\n display: block;\\n}\\n\\n%t [data-trix-dialog] [data-trix-validate]:invalid {\\n background-color: #ffdddd;\\n}\",initialize:function(){return\"\"===this.innerHTML?this.innerHTML=e.config.toolbar.getDefaultHTML():void 0}})}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty,i=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};e.ObjectView=function(n){function o(t,e){this.object=t,this.options=null!=e?e:{},this.childViews=[],this.rootView=this}return t(o,n),o.prototype.getNodes=function(){var t,e,n,i,o;for(null==this.nodes&&(this.nodes=this.createNodes()),i=this.nodes,o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.cloneNode(!0));return o},o.prototype.invalidate=function(){var t;return this.nodes=null,this.childViews=[],null!=(t=this.parentView)?t.invalidate():void 0},o.prototype.invalidateViewForObject=function(t){var e;return null!=(e=this.findViewForObject(t))?e.invalidate():void 0},o.prototype.findOrCreateCachedChildView=function(t,e){var n;return(n=this.getCachedViewForObject(e))?this.recordChildView(n):(n=this.createChildView.apply(this,arguments),this.cacheViewForObject(n,e)),n},o.prototype.createChildView=function(t,n,i){var o;return null==i&&(i={}),n instanceof e.ObjectGroup&&(i.viewClass=t,t=e.ObjectGroupView),o=new t(n,i),this.recordChildView(o)},o.prototype.recordChildView=function(t){return t.parentView=this,t.rootView=this.rootView,this.childViews.push(t),t},o.prototype.getAllChildViews=function(){var t,e,n,i,o;for(o=[],i=this.childViews,e=0,n=i.length;n>e;e++)t=i[e],o.push(t),o=o.concat(t.getAllChildViews());return o},o.prototype.findElement=function(){return this.findElementForObject(this.object)},o.prototype.findElementForObject=function(t){var e;return(e=null!=t?t.id:void 0)?this.rootView.element.querySelector(\"[data-trix-id='\"+e+\"']\"):void 0},o.prototype.findViewForObject=function(t){var e,n,i,o;for(i=this.getAllChildViews(),e=0,n=i.length;n>e;e++)if(o=i[e],o.object===t)return o},o.prototype.getViewCache=function(){return this.rootView!==this?this.rootView.getViewCache():this.isViewCachingEnabled()?null!=this.viewCache?this.viewCache:this.viewCache={}:void 0},o.prototype.isViewCachingEnabled=function(){return this.shouldCacheViews!==!1},o.prototype.enableViewCaching=function(){return this.shouldCacheViews=!0},o.prototype.disableViewCaching=function(){return this.shouldCacheViews=!1},o.prototype.getCachedViewForObject=function(t){var e;return null!=(e=this.getViewCache())?e[t.getCacheKey()]:void 0},o.prototype.cacheViewForObject=function(t,e){var n;return null!=(n=this.getViewCache())?n[e.getCacheKey()]=t:void 0},o.prototype.garbageCollectCachedViews=function(){var t,e,n,o,r,s;if(t=this.getViewCache()){s=this.getAllChildViews().concat(this),n=function(){var t,e,n;for(n=[],t=0,e=s.length;e>t;t++)r=s[t],n.push(r.object.getCacheKey());return n}(),o=[];for(e in t)i.call(n,e)<0&&o.push(delete t[e]);return o}},o}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ObjectGroupView=function(e){function n(){n.__super__.constructor.apply(this,arguments),this.objectGroup=this.object,this.viewClass=this.options.viewClass,delete this.options.viewClass}return t(n,e),n.prototype.getChildViews=function(){var t,e,n,i;if(!this.childViews.length)for(i=this.objectGroup.getObjects(),t=0,e=i.length;e>t;t++)n=i[t],this.findOrCreateCachedChildView(this.viewClass,n,this.options);return this.childViews},n.prototype.createNodes=function(){var t,e,n,i,o,r,s,a,u;for(t=this.createContainerElement(),s=this.getChildViews(),e=0,i=s.length;i>e;e++)for(u=s[e],a=u.getNodes(),n=0,o=a.length;o>n;n++)r=a[n],t.appendChild(r);return[t]},n.prototype.createContainerElement=function(t){return null==t&&(t=this.objectGroup.getDepth()),this.getChildViews()[0].createContainerElement(t)},n}(e.ObjectView)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Controller=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return t(n,e),n}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a=function(t,e){return function(){return t.apply(e,arguments)}},u=function(t,e){function n(){this.constructor=t}for(var i in e)c.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},c={}.hasOwnProperty,l=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.findClosestElementFromNode,i=e.nodeIsEmptyTextNode,n=e.nodeIsBlockStartComment,o=e.normalizeSpaces,r=e.summarizeStringChange,s=e.tagName,e.MutationObserver=function(e){function c(t){this.element=t,this.didMutate=a(this.didMutate,this),this.observer=new window.MutationObserver(this.didMutate),this.start()}var h,p,d,f;return u(c,e),p=\"data-trix-mutable\",d=\"[\"+p+\"]\",f={attributes:!0,childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0},c.prototype.start=function(){return this.reset(),this.observer.observe(this.element,f)},c.prototype.stop=function(){return this.observer.disconnect()},c.prototype.didMutate=function(t){var e,n;return(e=this.mutations).push.apply(e,this.findSignificantMutations(t)),this.mutations.length?(null!=(n=this.delegate)&&\"function\"==typeof n.elementDidMutate&&n.elementDidMutate(this.getMutationSummary()),this.reset()):void 0},c.prototype.reset=function(){return this.mutations=[]},c.prototype.findSignificantMutations=function(t){var e,n,i,o;for(o=[],e=0,n=t.length;n>e;e++)i=t[e],this.mutationIsSignificant(i)&&o.push(i);return o},c.prototype.mutationIsSignificant=function(t){var e,n,i,o;if(this.nodeIsMutable(t.target))return!1;for(o=this.nodesModifiedByMutation(t),e=0,n=o.length;n>e;e++)if(i=o[e],this.nodeIsSignificant(i))return!0;return!1},c.prototype.nodeIsSignificant=function(t){return t!==this.element&&!this.nodeIsMutable(t)&&!i(t)},c.prototype.nodeIsMutable=function(e){return t(e,{matchingSelector:d})},c.prototype.nodesModifiedByMutation=function(t){var e;switch(e=[],t.type){case\"attributes\":t.attributeName!==p&&e.push(t.target);break;case\"characterData\":e.push(t.target.parentNode),e.push(t.target);break;case\"childList\":e.push.apply(e,t.addedNodes),e.push.apply(e,t.removedNodes)}return e},c.prototype.getMutationSummary=function(){return this.getTextMutationSummary()},c.prototype.getTextMutationSummary=function(){var t,e,n,i,o,r,s,a,u,c,h;for(a=this.getTextChangesFromCharacterData(),n=a.additions,o=a.deletions,h=this.getTextChangesFromChildList(),u=h.additions,r=0,s=u.length;s>r;r++)e=u[r],l.call(n,e)<0&&n.push(e);return o.push.apply(o,h.deletions),c={},(t=n.join(\"\"))&&(c.textAdded=t),(i=o.join(\"\"))&&(c.textDeleted=i),c},c.prototype.getMutationsByType=function(t){var e,n,i,o,r;for(o=this.mutations,r=[],e=0,n=o.length;n>e;e++)i=o[e],i.type===t&&r.push(i);return r},c.prototype.getTextChangesFromChildList=function(){var t,e,i,r,s,a,u,c,l,p,d;for(t=[],u=[],a=this.getMutationsByType(\"childList\"),e=0,r=a.length;r>e;e++)s=a[e],t.push.apply(t,s.addedNodes),u.push.apply(u,s.removedNodes);return c=0===t.length&&1===u.length&&n(u[0]),c?(p=[],d=[\"\\n\"]):(p=h(t),d=h(u)),{additions:function(){var t,e,n;for(n=[],i=t=0,e=p.length;e>t;i=++t)l=p[i],l!==d[i]&&n.push(o(l));return n}(),deletions:function(){var t,e,n;for(n=[],i=t=0,e=d.length;e>t;i=++t)l=d[i],l!==p[i]&&n.push(o(l));return n}()}},c.prototype.getTextChangesFromCharacterData=function(){var t,e,n,i,s,a,u,c;return e=this.getMutationsByType(\"characterData\"),e.length&&(c=e[0],n=e[e.length-1],s=o(c.oldValue),i=o(n.target.data),a=r(s,i),t=a.added,u=a.removed),{additions:t?[t]:[],deletions:u?[u]:[]}},h=function(t){var e,n,i,o;for(null==t&&(t=[]),o=[],e=0,n=t.length;n>e;e++)switch(i=t[e],i.nodeType){case Node.TEXT_NODE:o.push(i.data);break;case Node.ELEMENT_NODE:\"br\"===s(i)?o.push(\"\\n\"):o.push.apply(o,h(i.childNodes))}return o},c}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.FileVerificationOperation=function(e){function n(t){this.file=t}return t(n,e),n.prototype.perform=function(t){var e;return e=new FileReader,e.onerror=function(){return t(!1)},e.onload=function(n){return function(){e.onerror=null;try{e.abort()}catch(i){}return t(!0,n.file)}}(this),e.readAsArrayBuffer(this.file)},n}(e.Operation)}.call(this),function(){var t,n,i=function(t,e){function n(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty;t=e.handleEvent,n=e.innerElementIsActive,e.InputController=function(o){function r(n){var i;this.element=n,this.mutationObserver=new e.MutationObserver(this.element),this.mutationObserver.delegate=this;for(i in this.events)t(i,{onElement:this.element,withCallback:this.handlerFor(i)})}return i(r,o),r.prototype.events={},r.prototype.elementDidMutate=function(){},r.prototype.editorWillSyncDocumentView=function(){return this.mutationObserver.stop()},r.prototype.editorDidSyncDocumentView=function(){return this.mutationObserver.start()},r.prototype.requestRender=function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidRequestRender?t.inputControllerDidRequestRender():void 0},r.prototype.requestReparse=function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidRequestReparse&&t.inputControllerDidRequestReparse(),this.requestRender()},r.prototype.attachFiles=function(t){var n,i;return i=function(){var i,o,r;for(r=[],i=0,o=t.length;o>i;i++)n=t[i],r.push(new e.FileVerificationOperation(n));return r}(),Promise.all(i).then(function(t){return function(e){return t.handleInput(function(){var t,n;return null!=(t=this.delegate)&&t.inputControllerWillAttachFiles(),null!=(n=this.responder)&&n.insertFiles(e),this.requestRender()})}}(this))},r.prototype.handlerFor=function(t){return function(e){return function(i){return i.defaultPrevented?void 0:e.handleInput(function(){return n(this.element)?void 0:(this.eventName=t,this.events[t].call(this,i))})}}(this)},r.prototype.handleInput=function(t){var e,n;try{return null!=(e=this.delegate)&&e.inputControllerWillHandleInput(),t.call(this)}finally{null!=(n=this.delegate)&&n.inputControllerDidHandleInput()}},r.prototype.createLinkHTML=function(t,e){var n;return n=document.createElement(\"a\"),n.href=t,n.textContent=null!=e?e:t,n.outerHTML},r}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h,p,d,f=function(t,e){function n(){this.constructor=t}for(var i in e)g.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},g={}.hasOwnProperty,m=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};c=e.makeElement,l=e.objectsAreEqual,d=e.tagName,n=e.browser,a=e.keyEventIsKeyboardCommand,o=e.dataTransferIsWritable,i=e.dataTransferIsPlainText,u=e.config.keyNames,e.Level0InputController=function(n){function s(){s.__super__.constructor.apply(this,arguments),this.resetInputSummary()}var d;return f(s,n),d=0,s.prototype.setInputSummary=function(t){var e,n;null==t&&(t={}),this.inputSummary.eventName=this.eventName;for(e in t)n=t[e],this.inputSummary[e]=n;return this.inputSummary},s.prototype.resetInputSummary=function(){return this.inputSummary={}},s.prototype.reset=function(){return this.resetInputSummary(),e.selectionChangeObserver.reset()},s.prototype.elementDidMutate=function(t){var e;return this.isComposing()?null!=(e=this.delegate)&&\"function\"==typeof e.inputControllerDidAllowUnhandledInput?e.inputControllerDidAllowUnhandledInput():void 0:this.handleInput(function(){return this.mutationIsSignificant(t)&&(this.mutationIsExpected(t)?this.requestRender():this.requestReparse()),this.reset()})},s.prototype.mutationIsExpected=function(t){var e,n,i,o,r,s,a,u,c,l;return a=t.textAdded,u=t.textDeleted,this.inputSummary.preferDocument?!0:(e=null!=a?a===this.inputSummary.textAdded:!this.inputSummary.textAdded,n=null!=u?this.inputSummary.didDelete:!this.inputSummary.didDelete,c=(\"\\n\"===a||\" \\n\"===a)&&!e,l=\"\\n\"===u&&!n,s=c&&!l||l&&!c,s&&(o=this.getSelectedRange())&&(i=c?a.replace(/\\n$/,\"\").length||-1:(null!=a?a.length:void 0)||1,null!=(r=this.responder)?r.positionIsBlockBreak(o[1]+i):void 0)?!0:e&&n)},s.prototype.mutationIsSignificant=function(t){var e,n,i;return i=Object.keys(t).length>0,e=\"\"===(null!=(n=this.compositionInput)?n.getEndData():void 0),i||!e},s.prototype.events={keydown:function(t){var n,i,o,r,s,c,l,h,p;if(this.isComposing()||this.resetInputSummary(),this.inputSummary.didInput=!0,r=u[t.keyCode]){for(i=this.keys,h=[\"ctrl\",\"alt\",\"shift\",\"meta\"],o=0,c=h.length;c>o;o++)l=h[o],t[l+\"Key\"]&&(\"ctrl\"===l&&(l=\"control\"),i=null!=i?i[l]:void 0);null!=(null!=i?i[r]:void 0)&&(this.setInputSummary({keyName:r}),e.selectionChangeObserver.reset(),i[r].call(this,t))}return a(t)&&(n=String.fromCharCode(t.keyCode).toLowerCase())&&(s=function(){var e,n,i,o;for(i=[\"alt\",\"shift\"],o=[],e=0,n=i.length;n>e;e++)l=i[e],t[l+\"Key\"]&&o.push(l);return o}(),s.push(n),null!=(p=this.delegate)?p.inputControllerDidReceiveKeyboardCommand(s):void 0)?t.preventDefault():void 0},keypress:function(t){var e,n,i;if(null==this.inputSummary.eventName&&!t.metaKey&&(!t.ctrlKey||t.altKey))return(i=p(t))?(null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.insertString(i),this.setInputSummary({textAdded:i,didDelete:this.selectionIsExpanded()})):void 0},textInput:function(t){var e,n,i,o;return e=t.data,o=this.inputSummary.textAdded,o&&o!==e&&o.toUpperCase()===e?(n=this.getSelectedRange(),this.setSelectedRange([n[0],n[1]+o.length]),null!=(i=this.responder)&&i.insertString(e),this.setInputSummary({textAdded:e}),this.setSelectedRange(n)):void 0},dragenter:function(t){return t.preventDefault()},dragstart:function(t){var e,n;return n=t.target,this.serializeSelectionToDataTransfer(t.dataTransfer),this.draggedRange=this.getSelectedRange(),null!=(e=this.delegate)&&\"function\"==typeof e.inputControllerDidStartDrag?e.inputControllerDidStartDrag():void 0},dragover:function(t){var e,n;return!this.draggedRange&&!this.canAcceptDataTransfer(t.dataTransfer)||(t.preventDefault(),e={x:t.clientX,y:t.clientY},l(e,this.draggingPoint))?void 0:(this.draggingPoint=e,null!=(n=this.delegate)&&\"function\"==typeof n.inputControllerDidReceiveDragOverPoint?n.inputControllerDidReceiveDragOverPoint(this.draggingPoint):void 0)},dragend:function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidCancelDrag&&t.inputControllerDidCancelDrag(),this.draggedRange=null,this.draggingPoint=null},drop:function(t){var n,i,o,r,s,a,u,c,l;return t.preventDefault(),o=null!=(s=t.dataTransfer)?s.files:void 0,r={x:t.clientX,y:t.clientY},null!=(a=this.responder)&&a.setLocationRangeFromPointRange(r),(null!=o?o.length:void 0)?this.attachFiles(o):this.draggedRange?(null!=(u=this.delegate)&&u.inputControllerWillMoveText(),null!=(c=this.responder)&&c.moveTextFromRange(this.draggedRange),this.draggedRange=null,this.requestRender()):(i=t.dataTransfer.getData(\"application/x-trix-document\"))&&(n=e.Document.fromJSONString(i),null!=(l=this.responder)&&l.insertDocument(n),this.requestRender()),this.draggedRange=null,this.draggingPoint=null},cut:function(t){var e,n;return(null!=(e=this.responder)?e.selectionIsExpanded():void 0)&&(this.serializeSelectionToDataTransfer(t.clipboardData)&&t.preventDefault(),null!=(n=this.delegate)&&n.inputControllerWillCutText(),this.deleteInDirection(\"backward\"),t.defaultPrevented)?this.requestRender():void 0},copy:function(t){var e;return(null!=(e=this.responder)?e.selectionIsExpanded():void 0)&&this.serializeSelectionToDataTransfer(t.clipboardData)?t.preventDefault():void 0},paste:function(t){var n,o,s,a,u,c,l,p,f,g,v,y,b,A,C,x,w,E,S,R,k,D,L;return n=null!=(p=t.clipboardData)?p:t.testClipboardData,l={clipboard:n},null==n||h(t)?void this.getPastedHTMLUsingHiddenElement(function(t){return function(e){var n,i,o;return l.type=\"text/html\",l.html=e,null!=(n=t.delegate)&&n.inputControllerWillPaste(l),null!=(i=t.responder)&&i.insertHTML(l.html),t.requestRender(),null!=(o=t.delegate)?o.inputControllerDidPaste(l):void 0}}(this)):((a=n.getData(\"URL\"))?(l.type=\"text/html\",L=(c=n.getData(\"public.url-name\"))?e.squishBreakableWhitespace(c).trim():a,l.html=this.createLinkHTML(a,L),null!=(f=this.delegate)&&f.inputControllerWillPaste(l),this.setInputSummary({textAdded:L,didDelete:this.selectionIsExpanded()}),null!=(C=this.responder)&&C.insertHTML(l.html),this.requestRender(),null!=(x=this.delegate)&&x.inputControllerDidPaste(l)):i(n)?(l.type=\"text/plain\",l.string=n.getData(\"text/plain\"),null!=(w=this.delegate)&&w.inputControllerWillPaste(l),this.setInputSummary({textAdded:l.string,didDelete:this.selectionIsExpanded()}),null!=(E=this.responder)&&E.insertString(l.string),this.requestRender(),null!=(S=this.delegate)&&S.inputControllerDidPaste(l)):(u=n.getData(\"text/html\"))?(l.type=\"text/html\",l.html=u,null!=(R=this.delegate)&&R.inputControllerWillPaste(l),null!=(k=this.responder)&&k.insertHTML(l.html),this.requestRender(),null!=(D=this.delegate)&&D.inputControllerDidPaste(l)):m.call(n.types,\"Files\")>=0&&(s=null!=(g=n.items)&&null!=(v=g[0])&&\"function\"==typeof v.getAsFile?v.getAsFile():void 0)&&(!s.name&&(o=r(s))&&(s.name=\"pasted-file-\"+ ++d+\".\"+o),l.type=\"File\",l.file=s,null!=(y=this.delegate)&&y.inputControllerWillAttachFiles(),null!=(b=this.responder)&&b.insertFile(l.file),this.requestRender(),null!=(A=this.delegate)&&A.inputControllerDidPaste(l)),t.preventDefault())},compositionstart:function(t){return this.getCompositionInput().start(t.data)},compositionupdate:function(t){return this.getCompositionInput().update(t.data)},compositionend:function(t){return this.getCompositionInput().end(t.data)},beforeinput:function(){return this.inputSummary.didInput=!0\n},input:function(t){return this.inputSummary.didInput=!0,t.stopPropagation()}},s.prototype.keys={backspace:function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"backward\",t)},\"delete\":function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"forward\",t)},\"return\":function(){var t,e;return this.setInputSummary({preferDocument:!0}),null!=(t=this.delegate)&&t.inputControllerWillPerformTyping(),null!=(e=this.responder)?e.insertLineBreak():void 0},tab:function(t){var e,n;return(null!=(e=this.responder)?e.canIncreaseNestingLevel():void 0)?(null!=(n=this.responder)&&n.increaseNestingLevel(),this.requestRender(),t.preventDefault()):void 0},left:function(t){var e;return this.selectionIsInCursorTarget()?(t.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"backward\"):void 0):void 0},right:function(t){var e;return this.selectionIsInCursorTarget()?(t.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"forward\"):void 0):void 0},control:{d:function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"forward\",t)},h:function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"backward\",t)},o:function(t){var e,n;return t.preventDefault(),null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.insertString(\"\\n\",{updatePosition:!1}),this.requestRender()}},shift:{\"return\":function(t){var e,n;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.insertString(\"\\n\"),this.requestRender(),t.preventDefault()},tab:function(t){var e,n;return(null!=(e=this.responder)?e.canDecreaseNestingLevel():void 0)?(null!=(n=this.responder)&&n.decreaseNestingLevel(),this.requestRender(),t.preventDefault()):void 0},left:function(t){return this.selectionIsInCursorTarget()?(t.preventDefault(),this.expandSelectionInDirection(\"backward\")):void 0},right:function(t){return this.selectionIsInCursorTarget()?(t.preventDefault(),this.expandSelectionInDirection(\"forward\")):void 0}},alt:{backspace:function(){var t;return this.setInputSummary({preferDocument:!1}),null!=(t=this.delegate)?t.inputControllerWillPerformTyping():void 0}},meta:{backspace:function(){var t;return this.setInputSummary({preferDocument:!1}),null!=(t=this.delegate)?t.inputControllerWillPerformTyping():void 0}}},s.prototype.getCompositionInput=function(){return this.isComposing()?this.compositionInput:this.compositionInput=new t(this)},s.prototype.isComposing=function(){return null!=this.compositionInput&&!this.compositionInput.isEnded()},s.prototype.deleteInDirection=function(t,e){var n;return(null!=(n=this.responder)?n.deleteInDirection(t):void 0)!==!1?this.setInputSummary({didDelete:!0}):e?(e.preventDefault(),this.requestRender()):void 0},s.prototype.serializeSelectionToDataTransfer=function(t){var n,i;if(o(t))return n=null!=(i=this.responder)?i.getSelectedDocument().toSerializableDocument():void 0,t.setData(\"application/x-trix-document\",JSON.stringify(n)),t.setData(\"text/html\",e.DocumentView.render(n).innerHTML),t.setData(\"text/plain\",n.toString().replace(/\\n$/,\"\")),!0},s.prototype.canAcceptDataTransfer=function(t){var e,n,i,o,r,s;for(s={},o=null!=(i=null!=t?t.types:void 0)?i:[],e=0,n=o.length;n>e;e++)r=o[e],s[r]=!0;return s.Files||s[\"application/x-trix-document\"]||s[\"text/html\"]||s[\"text/plain\"]},s.prototype.getPastedHTMLUsingHiddenElement=function(t){var n,i,o;return i=this.getSelectedRange(),o={position:\"absolute\",left:window.pageXOffset+\"px\",top:window.pageYOffset+\"px\",opacity:0},n=c({style:o,tagName:\"div\",editable:!0}),document.body.appendChild(n),n.focus(),requestAnimationFrame(function(o){return function(){var r;return r=n.innerHTML,e.removeNode(n),o.setSelectedRange(i),t(r)}}(this))},s.proxyMethod(\"responder?.getSelectedRange\"),s.proxyMethod(\"responder?.setSelectedRange\"),s.proxyMethod(\"responder?.expandSelectionInDirection\"),s.proxyMethod(\"responder?.selectionIsInCursorTarget\"),s.proxyMethod(\"responder?.selectionIsExpanded\"),s}(e.InputController),r=function(t){var e,n;return null!=(e=t.type)&&null!=(n=e.match(/\\/(\\w+)$/))?n[1]:void 0},s=null!=(\"function\"==typeof\" \".codePointAt?\" \".codePointAt(0):void 0),p=function(t){var n;return t.key&&s&&t.key.codePointAt(0)===t.keyCode?t.key:(null===t.which?n=t.keyCode:0!==t.which&&0!==t.charCode&&(n=t.charCode),null!=n&&\"escape\"!==u[n]?e.UTF16String.fromCodepoints([n]).toString():void 0)},h=function(t){var e,n,i,o,r,s,a,u,c,l;if(u=t.clipboardData){if(m.call(u.types,\"text/html\")>=0){for(c=u.types,i=0,s=c.length;s>i;i++)if(l=c[i],e=/^CorePasteboardFlavorType/.test(l),n=/^dyn\\./.test(l)&&u.getData(l),a=e||n)return!0;return!1}return o=m.call(u.types,\"com.apple.webarchive\")>=0,r=m.call(u.types,\"com.apple.flat-rtfd\")>=0,o||r}},t=function(t){function e(t){var e;this.inputController=t,e=this.inputController,this.responder=e.responder,this.delegate=e.delegate,this.inputSummary=e.inputSummary,this.data={}}return f(e,t),e.prototype.start=function(t){var e,n;return this.data.start=t,this.isSignificant()?(\"keypress\"===this.inputSummary.eventName&&this.inputSummary.textAdded&&null!=(e=this.responder)&&e.deleteInDirection(\"left\"),this.selectionIsExpanded()||(this.insertPlaceholder(),this.requestRender()),this.range=null!=(n=this.responder)?n.getSelectedRange():void 0):void 0},e.prototype.update=function(t){var e;return this.data.update=t,this.isSignificant()&&(e=this.selectPlaceholder())?(this.forgetPlaceholder(),this.range=e):void 0},e.prototype.end=function(t){var e,n,i,o;return this.data.end=t,this.isSignificant()?(this.forgetPlaceholder(),this.canApplyToDocument()?(this.setInputSummary({preferDocument:!0,didInput:!1}),null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.setSelectedRange(this.range),null!=(i=this.responder)&&i.insertString(this.data.end),null!=(o=this.responder)?o.setSelectedRange(this.range[0]+this.data.end.length):void 0):null!=this.data.start||null!=this.data.update?(this.requestReparse(),this.inputController.reset()):void 0):this.inputController.reset()},e.prototype.getEndData=function(){return this.data.end},e.prototype.isEnded=function(){return null!=this.getEndData()},e.prototype.isSignificant=function(){return n.composesExistingText?this.inputSummary.didInput:!0},e.prototype.canApplyToDocument=function(){var t,e;return 0===(null!=(t=this.data.start)?t.length:void 0)&&(null!=(e=this.data.end)?e.length:void 0)>0&&null!=this.range},e.proxyMethod(\"inputController.setInputSummary\"),e.proxyMethod(\"inputController.requestRender\"),e.proxyMethod(\"inputController.requestReparse\"),e.proxyMethod(\"responder?.selectionIsExpanded\"),e.proxyMethod(\"responder?.insertPlaceholder\"),e.proxyMethod(\"responder?.selectPlaceholder\"),e.proxyMethod(\"responder?.forgetPlaceholder\"),e}(e.BasicObject)}.call(this),function(){var t,n,i,o=function(t,e){return function(){return t.apply(e,arguments)}},r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty,a=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.dataTransferIsPlainText,n=e.keyEventIsKeyboardCommand,i=e.objectsAreEqual,e.Level2InputController=function(s){function u(){return this.render=o(this.render,this),u.__super__.constructor.apply(this,arguments)}var c,l,h,p,d,f;return r(u,s),u.prototype.elementDidMutate=function(){var t;return this.scheduledRender?this.composing&&null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidAllowUnhandledInput?t.inputControllerDidAllowUnhandledInput():void 0:this.reparse()},u.prototype.scheduleRender=function(){return null!=this.scheduledRender?this.scheduledRender:this.scheduledRender=requestAnimationFrame(this.render)},u.prototype.render=function(){var t;return cancelAnimationFrame(this.scheduledRender),this.scheduledRender=null,this.composing||null!=(t=this.delegate)&&t.render(),\"function\"==typeof this.afterRender&&this.afterRender(),this.afterRender=null},u.prototype.reparse=function(){var t;return null!=(t=this.delegate)?t.reparse():void 0},u.prototype.events={keydown:function(t){var e,i,o,r;if(n(t)){if(e=l(t),null!=(r=this.delegate)?r.inputControllerDidReceiveKeyboardCommand(e):void 0)return t.preventDefault()}else if(o=t.key,t.altKey&&(o+=\"+Alt\"),t.shiftKey&&(o+=\"+Shift\"),i=this.keys[o])return this.withEvent(t,i)},paste:function(t){var e,n,i,o,r,s,a,u,c;return h(t)?(t.preventDefault(),this.attachFiles(t.clipboardData.files)):p(t)?(t.preventDefault(),n={type:\"text/plain\",string:t.clipboardData.getData(\"text/plain\")},null!=(i=this.delegate)&&i.inputControllerWillPaste(n),null!=(o=this.responder)&&o.insertString(n.string),this.render(),null!=(r=this.delegate)?r.inputControllerDidPaste(n):void 0):(e=null!=(s=t.clipboardData)?s.getData(\"URL\"):void 0)?(t.preventDefault(),n={type:\"text/html\",html:this.createLinkHTML(e)},null!=(a=this.delegate)&&a.inputControllerWillPaste(n),null!=(u=this.responder)&&u.insertHTML(n.html),this.render(),null!=(c=this.delegate)?c.inputControllerDidPaste(n):void 0):void 0},beforeinput:function(t){var e;return(e=this.inputTypes[t.inputType])?(this.withEvent(t,e),this.scheduleRender()):void 0},input:function(){return e.selectionChangeObserver.reset()},dragstart:function(t){var e,n;return(null!=(e=this.responder)?e.selectionContainsAttachments():void 0)?(t.dataTransfer.setData(\"application/x-trix-dragging\",!0),this.dragging={range:null!=(n=this.responder)?n.getSelectedRange():void 0,point:d(t)}):void 0},dragenter:function(t){return c(t)?t.preventDefault():void 0},dragover:function(t){var e,n;if(this.dragging){if(t.preventDefault(),e=d(t),!i(e,this.dragging.point))return this.dragging.point=e,null!=(n=this.responder)?n.setLocationRangeFromPointRange(e):void 0}else if(c(t))return t.preventDefault()},drop:function(t){var e,n,i,o;return this.dragging?(t.preventDefault(),null!=(n=this.delegate)&&n.inputControllerWillMoveText(),null!=(i=this.responder)&&i.moveTextFromRange(this.dragging.range),this.dragging=null,this.scheduleRender()):c(t)?(t.preventDefault(),e=d(t),null!=(o=this.responder)&&o.setLocationRangeFromPointRange(e),this.attachFiles(t.dataTransfer.files)):void 0},dragend:function(){var t;return this.dragging?(null!=(t=this.responder)&&t.setSelectedRange(this.dragging.range),this.dragging=null):void 0},compositionend:function(){return this.composing?(this.composing=!1,this.scheduleRender()):void 0}},u.prototype.keys={ArrowLeft:function(){var t,e;return(null!=(t=this.responder)?t.shouldManageMovingCursorInDirection(\"backward\"):void 0)?(this.event.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"backward\"):void 0):void 0},ArrowRight:function(){var t,e;return(null!=(t=this.responder)?t.shouldManageMovingCursorInDirection(\"forward\"):void 0)?(this.event.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"forward\"):void 0):void 0},Backspace:function(){var t,e,n;return(null!=(t=this.responder)?t.shouldManageDeletingInDirection(\"backward\"):void 0)?(this.event.preventDefault(),null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.deleteInDirection(\"backward\"),this.render()):void 0},Tab:function(){var t,e;return(null!=(t=this.responder)?t.canIncreaseNestingLevel():void 0)?(this.event.preventDefault(),null!=(e=this.responder)&&e.increaseNestingLevel(),this.render()):void 0},\"Tab+Shift\":function(){var t,e;return(null!=(t=this.responder)?t.canDecreaseNestingLevel():void 0)?(this.event.preventDefault(),null!=(e=this.responder)&&e.decreaseNestingLevel(),this.render()):void 0}},u.prototype.inputTypes={deleteByComposition:function(){return this.deleteInDirection(\"backward\",{recordUndoEntry:!1})},deleteByCut:function(){return this.deleteInDirection(\"backward\")},deleteByDrag:function(){return this.event.preventDefault(),this.withTargetDOMRange(function(){var t;return this.deleteByDragRange=null!=(t=this.responder)?t.getSelectedRange():void 0})},deleteCompositionText:function(){return this.deleteInDirection(\"backward\",{recordUndoEntry:!1})},deleteContent:function(){return this.deleteInDirection(\"backward\")},deleteContentBackward:function(){return this.deleteInDirection(\"backward\")},deleteContentForward:function(){return this.deleteInDirection(\"forward\")},deleteEntireSoftLine:function(){return this.deleteInDirection(\"forward\")},deleteHardLineBackward:function(){return this.deleteInDirection(\"backward\")},deleteHardLineForward:function(){return this.deleteInDirection(\"forward\")},deleteSoftLineBackward:function(){return this.deleteInDirection(\"backward\")},deleteSoftLineForward:function(){return this.deleteInDirection(\"forward\")},deleteWordBackward:function(){return this.deleteInDirection(\"backward\")},deleteWordForward:function(){return this.deleteInDirection(\"forward\")},formatBackColor:function(){return this.activateAttributeIfSupported(\"backgroundColor\",this.event.data)},formatBold:function(){return this.toggleAttributeIfSupported(\"bold\")},formatFontColor:function(){return this.activateAttributeIfSupported(\"color\",this.event.data)},formatFontName:function(){return this.activateAttributeIfSupported(\"font\",this.event.data)},formatIndent:function(){var t;return(null!=(t=this.responder)?t.canIncreaseNestingLevel():void 0)?this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.increaseNestingLevel():void 0}):void 0},formatItalic:function(){return this.toggleAttributeIfSupported(\"italic\")},formatJustifyCenter:function(){return this.toggleAttributeIfSupported(\"justifyCenter\")},formatJustifyFull:function(){return this.toggleAttributeIfSupported(\"justifyFull\")},formatJustifyLeft:function(){return this.toggleAttributeIfSupported(\"justifyLeft\")},formatJustifyRight:function(){return this.toggleAttributeIfSupported(\"justifyRight\")},formatOutdent:function(){var t;return(null!=(t=this.responder)?t.canDecreaseNestingLevel():void 0)?this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.decreaseNestingLevel():void 0}):void 0},formatRemove:function(){return this.withTargetDOMRange(function(){var t,e,n,i;i=[];for(t in null!=(e=this.responder)?e.getCurrentAttributes():void 0)i.push(null!=(n=this.responder)?n.removeCurrentAttribute(t):void 0);return i})},formatSetBlockTextDirection:function(){return this.activateAttributeIfSupported(\"blockDir\",this.event.data)},formatSetInlineTextDirection:function(){return this.activateAttributeIfSupported(\"textDir\",this.event.data)},formatStrikeThrough:function(){return this.toggleAttributeIfSupported(\"strike\")},formatSubscript:function(){return this.toggleAttributeIfSupported(\"sub\")},formatSuperscript:function(){return this.toggleAttributeIfSupported(\"sup\")},formatUnderline:function(){return this.toggleAttributeIfSupported(\"underline\")},historyRedo:function(){var t;return null!=(t=this.delegate)?t.inputControllerWillPerformRedo():void 0},historyUndo:function(){var t;return null!=(t=this.delegate)?t.inputControllerWillPerformUndo():void 0},insertCompositionText:function(){return this.composing=!0,this.insertString(this.event.data)},insertFromComposition:function(){return this.composing=!1,this.insertString(this.event.data)},insertFromDrop:function(){var t,e;return(t=this.deleteByDragRange)?(this.deleteByDragRange=null,null!=(e=this.delegate)&&e.inputControllerWillMoveText(),this.withTargetDOMRange(function(){var e;return null!=(e=this.responder)?e.moveTextFromRange(t):void 0})):void 0},insertFromPaste:function(){var n,i,o,r,s,a,u,c,l,h,p;return n=this.event.dataTransfer,s={dataTransfer:n},(i=n.getData(\"URL\"))?(this.event.preventDefault(),s.type=\"text/html\",p=(r=n.getData(\"public.url-name\"))?e.squishBreakableWhitespace(r).trim():i,s.html=this.createLinkHTML(i,p),null!=(a=this.delegate)&&a.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertHTML(s.html):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):t(n)?(s.type=\"text/plain\",s.string=n.getData(\"text/plain\"),null!=(u=this.delegate)&&u.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertString(s.string):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):(o=n.getData(\"text/html\"))?(this.event.preventDefault(),s.type=\"text/html\",s.html=o,null!=(c=this.delegate)&&c.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertHTML(s.html):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):(null!=(l=n.files)?l.length:void 0)?(s.type=\"File\",s.file=n.files[0],null!=(h=this.delegate)&&h.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertFile(s.file):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):void 0},insertFromYank:function(){return this.insertString(this.event.data)},insertLineBreak:function(){return this.insertString(\"\\n\")},insertLink:function(){return this.activateAttributeIfSupported(\"href\",this.event.data)},insertOrderedList:function(){return this.toggleAttributeIfSupported(\"number\")},insertParagraph:function(){var t;return null!=(t=this.delegate)&&t.inputControllerWillPerformTyping(),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertLineBreak():void 0})},insertReplacementText:function(){return this.insertString(this.event.dataTransfer.getData(\"text/plain\"),{updatePosition:!1})},insertText:function(){var t,e;return this.insertString(null!=(t=this.event.data)?t:null!=(e=this.event.dataTransfer)?e.getData(\"text/plain\"):void 0)},insertTranspose:function(){return this.insertString(this.event.data)},insertUnorderedList:function(){return this.toggleAttributeIfSupported(\"bullet\")}},u.prototype.insertString=function(t,e){var n;return null==t&&(t=\"\"),null!=(n=this.delegate)&&n.inputControllerWillPerformTyping(),this.withTargetDOMRange(function(){var n;return null!=(n=this.responder)?n.insertString(t,e):void 0})},u.prototype.toggleAttributeIfSupported=function(t){var n;return a.call(e.getAllAttributeNames(),t)>=0?(null!=(n=this.delegate)&&n.inputControllerWillPerformFormatting(t),this.withTargetDOMRange(function(){var e;return null!=(e=this.responder)?e.toggleCurrentAttribute(t):void 0})):void 0},u.prototype.activateAttributeIfSupported=function(t,n){var i;return a.call(e.getAllAttributeNames(),t)>=0?(null!=(i=this.delegate)&&i.inputControllerWillPerformFormatting(t),this.withTargetDOMRange(function(){var e;return null!=(e=this.responder)?e.setCurrentAttribute(t,n):void 0})):void 0},u.prototype.deleteInDirection=function(t,e){var n,i,o,r;return o=(null!=e?e:{recordUndoEntry:!0}).recordUndoEntry,o&&null!=(r=this.delegate)&&r.inputControllerWillPerformTyping(),i=function(e){return function(){var n;return null!=(n=e.responder)?n.deleteInDirection(t):void 0}}(this),(n=this.getTargetDOMRange({minLength:2}))?this.withTargetDOMRange(n,i):i()},u.prototype.withTargetDOMRange=function(t,n){var i;return\"function\"==typeof t&&(n=t,t=this.getTargetDOMRange()),t?null!=(i=this.responder)?i.withTargetDOMRange(t,n.bind(this)):void 0:(e.selectionChangeObserver.reset(),n.call(this))},u.prototype.getTargetDOMRange=function(t){var e,n,i,o;return i=(null!=t?t:{minLength:0}).minLength,(o=\"function\"==typeof(e=this.event).getTargetRanges?e.getTargetRanges():void 0)&&o.length&&(n=f(o[0]),0===i||n.toString().length>=i)?n:void 0},f=function(t){var e;return e=document.createRange(),e.setStart(t.startContainer,t.startOffset),e.setEnd(t.endContainer,t.endOffset),e},u.prototype.withEvent=function(t,e){var n;this.event=t;try{n=e.call(this)}finally{this.event=null}return n},c=function(t){var e,n;return a.call(null!=(e=null!=(n=t.dataTransfer)?n.types:void 0)?e:[],\"Files\")>=0},h=function(t){var e;return(e=t.clipboardData)?a.call(e.types,\"Files\")>=0&&1===e.types.length&&e.files.length>=1:void 0},p=function(t){var e;return(e=t.clipboardData)?a.call(e.types,\"text/plain\")>=0&&1===e.types.length:void 0},l=function(t){var e;return e=[],t.altKey&&e.push(\"alt\"),t.shiftKey&&e.push(\"shift\"),e.push(t.key),e},d=function(t){return{x:t.clientX,y:t.clientY}},u}(e.InputController)}.call(this),function(){var t,n,i,o,r,s,a,u,c=function(t,e){return function(){return t.apply(e,arguments)}},l=function(t,e){function n(){this.constructor=t}for(var i in e)h.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},h={}.hasOwnProperty;n=e.defer,i=e.handleEvent,s=e.makeElement,u=e.tagName,a=e.config,r=a.lang,t=a.css,o=a.keyNames,e.AttachmentEditorController=function(a){function h(t,e,n,i){this.attachmentPiece=t,this.element=e,this.container=n,this.options=null!=i?i:{},this.didBlurCaption=c(this.didBlurCaption,this),this.didChangeCaption=c(this.didChangeCaption,this),this.didInputCaption=c(this.didInputCaption,this),this.didKeyDownCaption=c(this.didKeyDownCaption,this),this.didClickActionButton=c(this.didClickActionButton,this),this.didClickToolbar=c(this.didClickToolbar,this),this.attachment=this.attachmentPiece.attachment,\"a\"===u(this.element)&&(this.element=this.element.firstChild),this.install()}var p;return l(h,a),p=function(t){return function(){var e;return e=t.apply(this,arguments),e[\"do\"](),null==this.undos&&(this.undos=[]),this.undos.push(e.undo)}},h.prototype.install=function(){return this.makeElementMutable(),this.addToolbar(),this.attachment.isPreviewable()?this.installCaptionEditor():void 0},h.prototype.uninstall=function(){var t,e;for(this.savePendingCaption();e=this.undos.pop();)e();return null!=(t=this.delegate)?t.didUninstallAttachmentEditor(this):void 0},h.prototype.savePendingCaption=function(){var t,e,n;return null!=this.pendingCaption?(t=this.pendingCaption,this.pendingCaption=null,t?null!=(e=this.delegate)&&\"function\"==typeof e.attachmentEditorDidRequestUpdatingAttributesForAttachment?e.attachmentEditorDidRequestUpdatingAttributesForAttachment({caption:t},this.attachment):void 0:null!=(n=this.delegate)&&\"function\"==typeof n.attachmentEditorDidRequestRemovingAttributeForAttachment?n.attachmentEditorDidRequestRemovingAttributeForAttachment(\"caption\",this.attachment):void 0):void 0},h.prototype.makeElementMutable=p(function(){return{\"do\":function(t){return function(){return t.element.dataset.trixMutable=!0}}(this),undo:function(t){return function(){return delete t.element.dataset.trixMutable}}(this)}}),h.prototype.addToolbar=p(function(){var n;return n=s({tagName:\"div\",className:t.attachmentToolbar,data:{trixMutable:!0},childNodes:s({tagName:\"div\",className:\"trix-button-row\",childNodes:s({tagName:\"span\",className:\"trix-button-group trix-button-group--actions\",childNodes:s({tagName:\"button\",className:\"trix-button trix-button--remove\",textContent:r.remove,attributes:{title:r.remove},data:{trixAction:\"remove\"}})})})}),this.attachment.isPreviewable()&&n.appendChild(s({tagName:\"div\",className:t.attachmentMetadataContainer,childNodes:s({tagName:\"span\",className:t.attachmentMetadata,childNodes:[s({tagName:\"span\",className:t.attachmentName,textContent:this.attachment.getFilename(),attributes:{title:this.attachment.getFilename()}}),s({tagName:\"span\",className:t.attachmentSize,textContent:this.attachment.getFormattedFilesize()})]})})),i(\"click\",{onElement:n,withCallback:this.didClickToolbar}),i(\"click\",{onElement:n,matchingSelector:\"[data-trix-action]\",withCallback:this.didClickActionButton}),{\"do\":function(t){return function(){return t.element.appendChild(n)}}(this),undo:function(){return function(){return e.removeNode(n)}}(this)}}),h.prototype.installCaptionEditor=p(function(){var o,a,u,c,l;return c=s({tagName:\"textarea\",className:t.attachmentCaptionEditor,attributes:{placeholder:r.captionPlaceholder},data:{trixMutable:!0}}),c.value=this.attachmentPiece.getCaption(),l=c.cloneNode(),l.classList.add(\"trix-autoresize-clone\"),l.tabIndex=-1,o=function(){return l.value=c.value,c.style.height=l.scrollHeight+\"px\"},i(\"input\",{onElement:c,withCallback:o}),i(\"input\",{onElement:c,withCallback:this.didInputCaption}),i(\"keydown\",{onElement:c,withCallback:this.didKeyDownCaption}),i(\"change\",{onElement:c,withCallback:this.didChangeCaption}),i(\"blur\",{onElement:c,withCallback:this.didBlurCaption}),u=this.element.querySelector(\"figcaption\"),a=u.cloneNode(),{\"do\":function(e){return function(){return u.style.display=\"none\",a.appendChild(c),a.appendChild(l),a.classList.add(t.attachmentCaption+\"--editing\"),u.parentElement.insertBefore(a,u),o(),e.options.editCaption?n(function(){return c.focus()}):void 0}}(this),undo:function(){return e.removeNode(a),u.style.display=null}}}),h.prototype.didClickToolbar=function(t){return t.preventDefault(),t.stopPropagation()},h.prototype.didClickActionButton=function(t){var e,n;switch(e=t.target.getAttribute(\"data-trix-action\")){case\"remove\":return null!=(n=this.delegate)?n.attachmentEditorDidRequestRemovalOfAttachment(this.attachment):void 0}},h.prototype.didKeyDownCaption=function(t){var e;return\"return\"===o[t.keyCode]?(t.preventDefault(),this.savePendingCaption(),null!=(e=this.delegate)&&\"function\"==typeof e.attachmentEditorDidRequestDeselectingAttachment?e.attachmentEditorDidRequestDeselectingAttachment(this.attachment):void 0):void 0},h.prototype.didInputCaption=function(t){return this.pendingCaption=t.target.value.replace(/\\s/g,\" \").trim()},h.prototype.didChangeCaption=function(){return this.savePendingCaption()},h.prototype.didBlurCaption=function(){return this.savePendingCaption()},h}(e.BasicObject)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;i=e.makeElement,t=e.config.css,e.AttachmentView=function(r){function s(){s.__super__.constructor.apply(this,arguments),this.attachment=this.object,this.attachment.uploadProgressDelegate=this,this.attachmentPiece=this.options.piece}var a;return o(s,r),s.attachmentSelector=\"[data-trix-attachment]\",s.prototype.createContentNodes=function(){return[]},s.prototype.createNodes=function(){var e,n,o,r,s,u,c;if(e=r=i({tagName:\"figure\",className:this.getClassName(),data:this.getData(),editable:!1}),(n=this.getHref())&&(r=i({tagName:\"a\",editable:!1,attributes:{href:n,tabindex:-1}}),e.appendChild(r)),this.attachment.hasContent())r.innerHTML=this.attachment.getContent();else for(c=this.createContentNodes(),o=0,s=c.length;s>o;o++)u=c[o],r.appendChild(u);return r.appendChild(this.createCaptionElement()),this.attachment.isPending()&&(this.progressElement=i({tagName:\"progress\",attributes:{\"class\":t.attachmentProgress,value:this.attachment.getUploadProgress(),max:100},data:{trixMutable:!0,trixStoreKey:[\"progressElement\",this.attachment.id].join(\"/\")}}),e.appendChild(this.progressElement)),[a(\"left\"),e,a(\"right\")]},s.prototype.createCaptionElement=function(){var e,n,o,r,s,a,u;return o=i({tagName:\"figcaption\",className:t.attachmentCaption}),(e=this.attachmentPiece.getCaption())?(o.classList.add(t.attachmentCaption+\"--edited\"),o.textContent=e):(n=this.getCaptionConfig(),n.name&&(r=this.attachment.getFilename()),n.size&&(a=this.attachment.getFormattedFilesize()),r&&(s=i({tagName:\"span\",className:t.attachmentName,textContent:r}),o.appendChild(s)),a&&(r&&o.appendChild(document.createTextNode(\" \")),u=i({tagName:\"span\",className:t.attachmentSize,textContent:a}),o.appendChild(u))),o},s.prototype.getClassName=function(){var e,n;return n=[t.attachment,t.attachment+\"--\"+this.attachment.getType()],(e=this.attachment.getExtension())&&n.push(t.attachment+\"--\"+e),n.join(\" \")},s.prototype.getData=function(){var t,e;return e={trixAttachment:JSON.stringify(this.attachment),trixContentType:this.attachment.getContentType(),trixId:this.attachment.id},t=this.attachmentPiece.attributes,t.isEmpty()||(e.trixAttributes=JSON.stringify(t)),this.attachment.isPending()&&(e.trixSerialize=!1),e},s.prototype.getHref=function(){return n(this.attachment.getContent(),\"a\")?void 0:this.attachment.getHref()},s.prototype.getCaptionConfig=function(){var t,n,i;return i=this.attachment.getType(),t=e.copyObject(null!=(n=e.config.attachments[i])?n.caption:void 0),\"file\"===i&&(t.name=!0),t},s.prototype.findProgressElement=function(){var t;return null!=(t=this.findElement())?t.querySelector(\"progress\"):void 0},a=function(t){return i({tagName:\"span\",textContent:e.ZERO_WIDTH_SPACE,data:{trixCursorTarget:t,trixSerialize:!1}})},s.prototype.attachmentDidChangeUploadProgress=function(){var t,e;return e=this.attachment.getUploadProgress(),null!=(t=this.findProgressElement())?t.value=e:void 0},s}(e.ObjectView),n=function(t,e){var n;return n=i(\"div\"),n.innerHTML=null!=t?t:\"\",n.querySelector(e)}}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;t=e.makeElement,e.PreviewableAttachmentView=function(i){function o(){o.__super__.constructor.apply(this,arguments),this.attachment.previewDelegate=this}return n(o,i),o.prototype.createContentNodes=function(){return this.image=t({tagName:\"img\",attributes:{src:\"\"},data:{trixMutable:!0}}),this.refresh(this.image),[this.image]},o.prototype.createCaptionElement=function(){var t;return t=o.__super__.createCaptionElement.apply(this,arguments),t.textContent||t.setAttribute(\"data-trix-placeholder\",e.config.lang.captionPlaceholder),t},o.prototype.refresh=function(t){var e;return null==t&&(t=null!=(e=this.findElement())?e.querySelector(\"img\"):void 0),t?this.updateAttributesForImage(t):void 0},o.prototype.updateAttributesForImage=function(t){var e,n,i,o,r,s;return r=this.attachment.getURL(),n=this.attachment.getPreviewURL(),t.src=n||r,n===r?t.removeAttribute(\"data-trix-serialized-attributes\"):(i=JSON.stringify({src:r}),t.setAttribute(\"data-trix-serialized-attributes\",i)),s=this.attachment.getWidth(),e=this.attachment.getHeight(),null!=s&&(t.width=s),null!=e&&(t.height=e),o=[\"imageElement\",this.attachment.id,t.src,t.width,t.height].join(\"/\"),t.dataset.trixStoreKey=o},o.prototype.attachmentDidChangeAttributes=function(){return this.refresh(this.image),this.refresh()},o}(e.AttachmentView)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;i=e.makeElement,t=e.findInnerElement,n=e.getTextConfig,e.PieceView=function(r){function s(){var t;s.__super__.constructor.apply(this,arguments),this.piece=this.object,this.attributes=this.piece.getAttributes(),t=this.options,this.textConfig=t.textConfig,this.context=t.context,this.piece.attachment?this.attachment=this.piece.attachment:this.string=this.piece.toString()}var a;return o(s,r),s.prototype.createNodes=function(){var e,n,i,o,r,s;if(s=this.attachment?this.createAttachmentNodes():this.createStringNodes(),e=this.createElement()){for(i=t(e),n=0,o=s.length;o>n;n++)r=s[n],i.appendChild(r);s=[e]}return s},s.prototype.createAttachmentNodes=function(){var t,n;return t=this.attachment.isPreviewable()?e.PreviewableAttachmentView:e.AttachmentView,n=this.createChildView(t,this.piece.attachment,{piece:this.piece}),n.getNodes()},s.prototype.createStringNodes=function(){var t,e,n,o,r,s,a,u,c,l;if(null!=(u=this.textConfig)?u.plaintext:void 0)return[document.createTextNode(this.string)];for(a=[],c=this.string.split(\"\\n\"),n=e=0,o=c.length;o>e;n=++e)l=c[n],n>0&&(t=i(\"br\"),a.push(t)),(r=l.length)&&(s=document.createTextNode(this.preserveSpaces(l)),a.push(s));return a},s.prototype.createElement=function(){var t,e,o,r,s,a,u,c,l;c={},a=this.attributes;for(r in a)if(l=a[r],(t=n(r))&&(t.tagName&&(s=i(t.tagName),o?(o.appendChild(s),o=s):e=o=s),t.styleProperty&&(c[t.styleProperty]=l),t.style)){u=t.style;for(r in u)l=u[r],c[r]=l}if(Object.keys(c).length){null==e&&(e=i(\"span\"));for(r in c)l=c[r],e.style[r]=l}return e},s.prototype.createContainerElement=function(){var t,e,o,r,s;r=this.attributes;for(o in r)if(s=r[o],(e=n(o))&&e.groupTagName)return t={},t[o]=s,i(e.groupTagName,t)},a=e.NON_BREAKING_SPACE,s.prototype.preserveSpaces=function(t){return this.context.isLast&&(t=t.replace(/\\ $/,a)),t=t.replace(/(\\S)\\ {3}(\\S)/g,\"$1 \"+a+\" $2\").replace(/\\ {2}/g,a+\" \").replace(/\\ {2}/g,\" \"+a),(this.context.isFirst||this.context.followsWhitespace)&&(t=t.replace(/^\\ /,a)),t},s}(e.ObjectView)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t\n}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.TextView=function(n){function i(){i.__super__.constructor.apply(this,arguments),this.text=this.object,this.textConfig=this.options.textConfig}var o;return t(i,n),i.prototype.createNodes=function(){var t,n,i,r,s,a,u,c,l,h;for(a=[],c=e.ObjectGroup.groupObjects(this.getPieces()),r=c.length-1,i=n=0,s=c.length;s>n;i=++n)u=c[i],t={},0===i&&(t.isFirst=!0),i===r&&(t.isLast=!0),o(l)&&(t.followsWhitespace=!0),h=this.findOrCreateCachedChildView(e.PieceView,u,{textConfig:this.textConfig,context:t}),a.push.apply(a,h.getNodes()),l=u;return a},i.prototype.getPieces=function(){var t,e,n,i,o;for(i=this.text.getPieces(),o=[],t=0,e=i.length;e>t;t++)n=i[t],n.hasAttribute(\"blockBreak\")||o.push(n);return o},o=function(t){return/\\s$/.test(null!=t?t.toString():void 0)},i}(e.ObjectView)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;i=e.makeElement,n=e.getBlockConfig,t=e.config.css,e.BlockView=function(r){function s(){s.__super__.constructor.apply(this,arguments),this.block=this.object,this.attributes=this.block.getAttributes()}return o(s,r),s.prototype.createNodes=function(){var t,o,r,s,a,u,c,l,h,p,d;if(o=document.createComment(\"block\"),c=[o],this.block.isEmpty()?c.push(i(\"br\")):(p=null!=(l=n(this.block.getLastAttribute()))?l.text:void 0,d=this.findOrCreateCachedChildView(e.TextView,this.block.text,{textConfig:p}),c.push.apply(c,d.getNodes()),this.shouldAddExtraNewlineElement()&&c.push(i(\"br\"))),this.attributes.length)return c;for(h=e.config.blockAttributes[\"default\"].tagName,this.block.isRTL()&&(t={dir:\"rtl\"}),r=i({tagName:h,attributes:t}),s=0,a=c.length;a>s;s++)u=c[s],r.appendChild(u);return[r]},s.prototype.createContainerElement=function(e){var o,r,s,a,u;return o=this.attributes[e],u=n(o).tagName,0===e&&this.block.isRTL()&&(r={dir:\"rtl\"}),\"attachmentGallery\"===o&&(a=this.block.getBlockBreakPosition(),s=t.attachmentGallery+\" \"+t.attachmentGallery+\"--\"+a),i({tagName:u,className:s,attributes:r})},s.prototype.shouldAddExtraNewlineElement=function(){return/\\n\\n$/.test(this.block.toString())},s}(e.ObjectView)}.call(this),function(){var t,n,i=function(t,e){function n(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty;t=e.defer,n=e.makeElement,e.DocumentView=function(o){function r(){r.__super__.constructor.apply(this,arguments),this.element=this.options.element,this.elementStore=new e.ElementStore,this.setDocument(this.object)}var s,a,u;return i(r,o),r.render=function(t){var e,i;return e=n(\"div\"),i=new this(t,{element:e}),i.render(),i.sync(),e},r.prototype.setDocument=function(t){return t.isEqualTo(this.document)?void 0:this.document=this.object=t},r.prototype.render=function(){var t,i,o,r,s,a,u;if(this.childViews=[],this.shadowElement=n(\"div\"),!this.document.isEmpty()){for(s=e.ObjectGroup.groupObjects(this.document.getBlocks(),{asTree:!0}),a=[],t=0,i=s.length;i>t;t++)r=s[t],u=this.findOrCreateCachedChildView(e.BlockView,r),a.push(function(){var t,e,n,i;for(n=u.getNodes(),i=[],t=0,e=n.length;e>t;t++)o=n[t],i.push(this.shadowElement.appendChild(o));return i}.call(this));return a}},r.prototype.isSynced=function(){return s(this.shadowElement,this.element)},r.prototype.sync=function(){var t;for(t=this.createDocumentFragmentForSync();this.element.lastChild;)this.element.removeChild(this.element.lastChild);return this.element.appendChild(t),this.didSync()},r.prototype.didSync=function(){return this.elementStore.reset(a(this.element)),t(function(t){return function(){return t.garbageCollectCachedViews()}}(this))},r.prototype.createDocumentFragmentForSync=function(){var t,e,n,i,o,r,s,u,c,l;for(e=document.createDocumentFragment(),u=this.shadowElement.childNodes,n=0,o=u.length;o>n;n++)s=u[n],e.appendChild(s.cloneNode(!0));for(c=a(e),i=0,r=c.length;r>i;i++)t=c[i],(l=this.elementStore.remove(t))&&t.parentNode.replaceChild(l,t);return e},a=function(t){return t.querySelectorAll(\"[data-trix-store-key]\")},s=function(t,e){return u(t.innerHTML)===u(e.innerHTML)},u=function(t){return t.replace(/ /g,\" \")},r}(e.ObjectView)}.call(this),function(){var t,n,i,o,r,s=function(t,e){return function(){return t.apply(e,arguments)}},a=function(t,e){function n(){this.constructor=t}for(var i in e)u.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},u={}.hasOwnProperty;i=e.findClosestElementFromNode,o=e.handleEvent,r=e.innerElementIsActive,n=e.defer,t=e.AttachmentView.attachmentSelector,e.CompositionController=function(u){function c(n,i){this.element=n,this.composition=i,this.didClickAttachment=s(this.didClickAttachment,this),this.didBlur=s(this.didBlur,this),this.didFocus=s(this.didFocus,this),this.documentView=new e.DocumentView(this.composition.document,{element:this.element}),o(\"focus\",{onElement:this.element,withCallback:this.didFocus}),o(\"blur\",{onElement:this.element,withCallback:this.didBlur}),o(\"click\",{onElement:this.element,matchingSelector:\"a[contenteditable=false]\",preventDefault:!0}),o(\"mousedown\",{onElement:this.element,matchingSelector:t,withCallback:this.didClickAttachment}),o(\"click\",{onElement:this.element,matchingSelector:\"a\"+t,preventDefault:!0})}return a(c,u),c.prototype.didFocus=function(){var t,e,n;return t=function(t){return function(){var e;return t.focused?void 0:(t.focused=!0,null!=(e=t.delegate)&&\"function\"==typeof e.compositionControllerDidFocus?e.compositionControllerDidFocus():void 0)}}(this),null!=(e=null!=(n=this.blurPromise)?n.then(t):void 0)?e:t()},c.prototype.didBlur=function(){return this.blurPromise=new Promise(function(t){return function(e){return n(function(){var n;return r(t.element)||(t.focused=null,null!=(n=t.delegate)&&\"function\"==typeof n.compositionControllerDidBlur&&n.compositionControllerDidBlur()),t.blurPromise=null,e()})}}(this))},c.prototype.didClickAttachment=function(t,e){var n,o,r;return n=this.findAttachmentForElement(e),o=null!=i(t.target,{matchingSelector:\"figcaption\"}),null!=(r=this.delegate)&&\"function\"==typeof r.compositionControllerDidSelectAttachment?r.compositionControllerDidSelectAttachment(n,{editCaption:o}):void 0},c.prototype.getSerializableElement=function(){return this.isEditingAttachment()?this.documentView.shadowElement:this.element},c.prototype.render=function(){var t,e,n;return this.revision!==this.composition.revision&&(this.documentView.setDocument(this.composition.document),this.documentView.render(),this.revision=this.composition.revision),this.canSyncDocumentView()&&!this.documentView.isSynced()&&(null!=(t=this.delegate)&&\"function\"==typeof t.compositionControllerWillSyncDocumentView&&t.compositionControllerWillSyncDocumentView(),this.documentView.sync(),null!=(e=this.delegate)&&\"function\"==typeof e.compositionControllerDidSyncDocumentView&&e.compositionControllerDidSyncDocumentView()),null!=(n=this.delegate)&&\"function\"==typeof n.compositionControllerDidRender?n.compositionControllerDidRender():void 0},c.prototype.rerenderViewForObject=function(t){return this.invalidateViewForObject(t),this.render()},c.prototype.invalidateViewForObject=function(t){return this.documentView.invalidateViewForObject(t)},c.prototype.isViewCachingEnabled=function(){return this.documentView.isViewCachingEnabled()},c.prototype.enableViewCaching=function(){return this.documentView.enableViewCaching()},c.prototype.disableViewCaching=function(){return this.documentView.disableViewCaching()},c.prototype.refreshViewCache=function(){return this.documentView.garbageCollectCachedViews()},c.prototype.isEditingAttachment=function(){return null!=this.attachmentEditor},c.prototype.installAttachmentEditorForAttachment=function(t,n){var i,o,r;if((null!=(r=this.attachmentEditor)?r.attachment:void 0)!==t&&(o=this.documentView.findElementForObject(t)))return this.uninstallAttachmentEditor(),i=this.composition.document.getAttachmentPieceForAttachment(t),this.attachmentEditor=new e.AttachmentEditorController(i,o,this.element,n),this.attachmentEditor.delegate=this},c.prototype.uninstallAttachmentEditor=function(){var t;return null!=(t=this.attachmentEditor)?t.uninstall():void 0},c.prototype.didUninstallAttachmentEditor=function(){return this.attachmentEditor=null,this.render()},c.prototype.attachmentEditorDidRequestUpdatingAttributesForAttachment=function(t,e){var n;return null!=(n=this.delegate)&&\"function\"==typeof n.compositionControllerWillUpdateAttachment&&n.compositionControllerWillUpdateAttachment(e),this.composition.updateAttributesForAttachment(t,e)},c.prototype.attachmentEditorDidRequestRemovingAttributeForAttachment=function(t,e){var n;return null!=(n=this.delegate)&&\"function\"==typeof n.compositionControllerWillUpdateAttachment&&n.compositionControllerWillUpdateAttachment(e),this.composition.removeAttributeForAttachment(t,e)},c.prototype.attachmentEditorDidRequestRemovalOfAttachment=function(t){var e;return null!=(e=this.delegate)&&\"function\"==typeof e.compositionControllerDidRequestRemovalOfAttachment?e.compositionControllerDidRequestRemovalOfAttachment(t):void 0},c.prototype.attachmentEditorDidRequestDeselectingAttachment=function(t){var e;return null!=(e=this.delegate)&&\"function\"==typeof e.compositionControllerDidRequestDeselectingAttachment?e.compositionControllerDidRequestDeselectingAttachment(t):void 0},c.prototype.canSyncDocumentView=function(){return!this.isEditingAttachment()},c.prototype.findAttachmentForElement=function(t){return this.composition.document.getAttachmentById(parseInt(t.dataset.trixId,10))},c}(e.BasicObject)}.call(this),function(){var t,n,i,o=function(t,e){return function(){return t.apply(e,arguments)}},r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty;n=e.handleEvent,i=e.triggerEvent,t=e.findClosestElementFromNode,e.ToolbarController=function(e){function s(t){this.element=t,this.didKeyDownDialogInput=o(this.didKeyDownDialogInput,this),this.didClickDialogButton=o(this.didClickDialogButton,this),this.didClickAttributeButton=o(this.didClickAttributeButton,this),this.didClickActionButton=o(this.didClickActionButton,this),this.attributes={},this.actions={},this.resetDialogInputs(),n(\"mousedown\",{onElement:this.element,matchingSelector:a,withCallback:this.didClickActionButton}),n(\"mousedown\",{onElement:this.element,matchingSelector:c,withCallback:this.didClickAttributeButton}),n(\"click\",{onElement:this.element,matchingSelector:v,preventDefault:!0}),n(\"click\",{onElement:this.element,matchingSelector:l,withCallback:this.didClickDialogButton}),n(\"keydown\",{onElement:this.element,matchingSelector:h,withCallback:this.didKeyDownDialogInput})}var a,u,c,l,h,p,d,f,g,m,v;return r(s,e),c=\"[data-trix-attribute]\",a=\"[data-trix-action]\",v=c+\", \"+a,p=\"[data-trix-dialog]\",u=p+\"[data-trix-active]\",l=p+\" [data-trix-method]\",h=p+\" [data-trix-input]\",s.prototype.didClickActionButton=function(t,e){var n,i,o;return null!=(i=this.delegate)&&i.toolbarDidClickButton(),t.preventDefault(),n=d(e),this.getDialog(n)?this.toggleDialog(n):null!=(o=this.delegate)?o.toolbarDidInvokeAction(n):void 0},s.prototype.didClickAttributeButton=function(t,e){var n,i,o;return null!=(i=this.delegate)&&i.toolbarDidClickButton(),t.preventDefault(),n=f(e),this.getDialog(n)?this.toggleDialog(n):null!=(o=this.delegate)&&o.toolbarDidToggleAttribute(n),this.refreshAttributeButtons()},s.prototype.didClickDialogButton=function(e,n){var i,o;return i=t(n,{matchingSelector:p}),o=n.getAttribute(\"data-trix-method\"),this[o].call(this,i)},s.prototype.didKeyDownDialogInput=function(t,e){var n,i;return 13===t.keyCode&&(t.preventDefault(),n=e.getAttribute(\"name\"),i=this.getDialog(n),this.setAttribute(i)),27===t.keyCode?(t.preventDefault(),this.hideDialog()):void 0},s.prototype.updateActions=function(t){return this.actions=t,this.refreshActionButtons()},s.prototype.refreshActionButtons=function(){return this.eachActionButton(function(t){return function(e,n){return e.disabled=t.actions[n]===!1}}(this))},s.prototype.eachActionButton=function(t){var e,n,i,o,r;for(o=this.element.querySelectorAll(a),r=[],n=0,i=o.length;i>n;n++)e=o[n],r.push(t(e,d(e)));return r},s.prototype.updateAttributes=function(t){return this.attributes=t,this.refreshAttributeButtons()},s.prototype.refreshAttributeButtons=function(){return this.eachAttributeButton(function(t){return function(e,n){return e.disabled=t.attributes[n]===!1,t.attributes[n]||t.dialogIsVisible(n)?(e.setAttribute(\"data-trix-active\",\"\"),e.classList.add(\"trix-active\")):(e.removeAttribute(\"data-trix-active\"),e.classList.remove(\"trix-active\"))}}(this))},s.prototype.eachAttributeButton=function(t){var e,n,i,o,r;for(o=this.element.querySelectorAll(c),r=[],n=0,i=o.length;i>n;n++)e=o[n],r.push(t(e,f(e)));return r},s.prototype.applyKeyboardCommand=function(t){var e,n,o,r,s,a,u;for(s=JSON.stringify(t.sort()),u=this.element.querySelectorAll(\"[data-trix-key]\"),r=0,a=u.length;a>r;r++)if(e=u[r],o=e.getAttribute(\"data-trix-key\").split(\"+\"),n=JSON.stringify(o.sort()),n===s)return i(\"mousedown\",{onElement:e}),!0;return!1},s.prototype.dialogIsVisible=function(t){var e;return(e=this.getDialog(t))?e.hasAttribute(\"data-trix-active\"):void 0},s.prototype.toggleDialog=function(t){return this.dialogIsVisible(t)?this.hideDialog():this.showDialog(t)},s.prototype.showDialog=function(t){var e,n,i,o,r,s,a,u,c,l;for(this.hideDialog(),null!=(a=this.delegate)&&a.toolbarWillShowDialog(),i=this.getDialog(t),i.setAttribute(\"data-trix-active\",\"\"),i.classList.add(\"trix-active\"),u=i.querySelectorAll(\"input[disabled]\"),o=0,s=u.length;s>o;o++)n=u[o],n.removeAttribute(\"disabled\");return(e=f(i))&&(r=m(i,t))&&(r.value=null!=(c=this.attributes[e])?c:\"\",r.select()),null!=(l=this.delegate)?l.toolbarDidShowDialog(t):void 0},s.prototype.setAttribute=function(t){var e,n,i;return e=f(t),n=m(t,e),n.willValidate&&!n.checkValidity()?(n.setAttribute(\"data-trix-validate\",\"\"),n.classList.add(\"trix-validate\"),n.focus()):(null!=(i=this.delegate)&&i.toolbarDidUpdateAttribute(e,n.value),this.hideDialog())},s.prototype.removeAttribute=function(t){var e,n;return e=f(t),null!=(n=this.delegate)&&n.toolbarDidRemoveAttribute(e),this.hideDialog()},s.prototype.hideDialog=function(){var t,e;return(t=this.element.querySelector(u))?(t.removeAttribute(\"data-trix-active\"),t.classList.remove(\"trix-active\"),this.resetDialogInputs(),null!=(e=this.delegate)?e.toolbarDidHideDialog(g(t)):void 0):void 0},s.prototype.resetDialogInputs=function(){var t,e,n,i,o;for(i=this.element.querySelectorAll(h),o=[],t=0,n=i.length;n>t;t++)e=i[t],e.setAttribute(\"disabled\",\"disabled\"),e.removeAttribute(\"data-trix-validate\"),o.push(e.classList.remove(\"trix-validate\"));return o},s.prototype.getDialog=function(t){return this.element.querySelector(\"[data-trix-dialog=\"+t+\"]\")},m=function(t,e){return null==e&&(e=f(t)),t.querySelector(\"[data-trix-input][name='\"+e+\"']\")},d=function(t){return t.getAttribute(\"data-trix-action\")},f=function(t){var e;return null!=(e=t.getAttribute(\"data-trix-attribute\"))?e:t.getAttribute(\"data-trix-dialog-attribute\")},g=function(t){return t.getAttribute(\"data-trix-dialog\")},s}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ImagePreloadOperation=function(e){function n(t){this.url=t}return t(n,e),n.prototype.perform=function(t){var e;return e=new Image,e.onload=function(n){return function(){return e.width=n.width=e.naturalWidth,e.height=n.height=e.naturalHeight,t(!0,e)}}(this),e.onerror=function(){return t(!1)},e.src=this.url},n}(e.Operation)}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}},n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;e.Attachment=function(i){function o(n){null==n&&(n={}),this.releaseFile=t(this.releaseFile,this),o.__super__.constructor.apply(this,arguments),this.attributes=e.Hash.box(n),this.didChangeAttributes()}return n(o,i),o.previewablePattern=/^image(\\/(gif|png|jpe?g)|$)/,o.attachmentForFile=function(t){var e,n;return n=this.attributesForFile(t),e=new this(n),e.setFile(t),e},o.attributesForFile=function(t){return new e.Hash({filename:t.name,filesize:t.size,contentType:t.type})},o.fromJSON=function(t){return new this(t)},o.prototype.getAttribute=function(t){return this.attributes.get(t)},o.prototype.hasAttribute=function(t){return this.attributes.has(t)},o.prototype.getAttributes=function(){return this.attributes.toObject()},o.prototype.setAttributes=function(t){var e,n,i;return null==t&&(t={}),e=this.attributes.merge(t),this.attributes.isEqualTo(e)?void 0:(this.attributes=e,this.didChangeAttributes(),null!=(n=this.previewDelegate)&&\"function\"==typeof n.attachmentDidChangeAttributes&&n.attachmentDidChangeAttributes(this),null!=(i=this.delegate)&&\"function\"==typeof i.attachmentDidChangeAttributes?i.attachmentDidChangeAttributes(this):void 0)},o.prototype.didChangeAttributes=function(){return this.isPreviewable()?this.preloadURL():void 0},o.prototype.isPending=function(){return null!=this.file&&!(this.getURL()||this.getHref())},o.prototype.isPreviewable=function(){return this.attributes.has(\"previewable\")?this.attributes.get(\"previewable\"):this.constructor.previewablePattern.test(this.getContentType())},o.prototype.getType=function(){return this.hasContent()?\"content\":this.isPreviewable()?\"preview\":\"file\"},o.prototype.getURL=function(){return this.attributes.get(\"url\")},o.prototype.getHref=function(){return this.attributes.get(\"href\")},o.prototype.getFilename=function(){var t;return null!=(t=this.attributes.get(\"filename\"))?t:\"\"},o.prototype.getFilesize=function(){return this.attributes.get(\"filesize\")},o.prototype.getFormattedFilesize=function(){var t;return t=this.attributes.get(\"filesize\"),\"number\"==typeof t?e.config.fileSize.formatter(t):\"\"},o.prototype.getExtension=function(){var t;return null!=(t=this.getFilename().match(/\\.(\\w+)$/))?t[1].toLowerCase():void 0},o.prototype.getContentType=function(){return this.attributes.get(\"contentType\")},o.prototype.hasContent=function(){return this.attributes.has(\"content\")},o.prototype.getContent=function(){return this.attributes.get(\"content\")},o.prototype.getWidth=function(){return this.attributes.get(\"width\")},o.prototype.getHeight=function(){return this.attributes.get(\"height\")},o.prototype.getFile=function(){return this.file},o.prototype.setFile=function(t){return this.file=t,this.isPreviewable()?this.preloadFile():void 0},o.prototype.releaseFile=function(){return this.releasePreloadedFile(),this.file=null},o.prototype.getUploadProgress=function(){var t;return null!=(t=this.uploadProgress)?t:0},o.prototype.setUploadProgress=function(t){var e;return this.uploadProgress!==t?(this.uploadProgress=t,null!=(e=this.uploadProgressDelegate)&&\"function\"==typeof e.attachmentDidChangeUploadProgress?e.attachmentDidChangeUploadProgress(this):void 0):void 0},o.prototype.toJSON=function(){return this.getAttributes()},o.prototype.getCacheKey=function(){return[o.__super__.getCacheKey.apply(this,arguments),this.attributes.getCacheKey(),this.getPreviewURL()].join(\"/\")},o.prototype.getPreviewURL=function(){return this.previewURL||this.preloadingURL},o.prototype.setPreviewURL=function(t){var e,n;return t!==this.getPreviewURL()?(this.previewURL=t,null!=(e=this.previewDelegate)&&\"function\"==typeof e.attachmentDidChangeAttributes&&e.attachmentDidChangeAttributes(this),null!=(n=this.delegate)&&\"function\"==typeof n.attachmentDidChangePreviewURL?n.attachmentDidChangePreviewURL(this):void 0):void 0},o.prototype.preloadURL=function(){return this.preload(this.getURL(),this.releaseFile)},o.prototype.preloadFile=function(){return this.file?(this.fileObjectURL=URL.createObjectURL(this.file),this.preload(this.fileObjectURL)):void 0},o.prototype.releasePreloadedFile=function(){return this.fileObjectURL?(URL.revokeObjectURL(this.fileObjectURL),this.fileObjectURL=null):void 0},o.prototype.preload=function(t,n){var i;return t&&t!==this.getPreviewURL()?(this.preloadingURL=t,i=new e.ImagePreloadOperation(t),i.then(function(e){return function(i){var o,r;return r=i.width,o=i.height,e.getWidth()&&e.getHeight()||e.setAttributes({width:r,height:o}),e.preloadingURL=null,e.setPreviewURL(t),\"function\"==typeof n?n():void 0}}(this))[\"catch\"](function(t){return function(){return t.preloadingURL=null,\"function\"==typeof n?n():void 0}}(this))):void 0},o}(e.Object)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Piece=function(n){function i(t,n){null==n&&(n={}),i.__super__.constructor.apply(this,arguments),this.attributes=e.Hash.box(n)}return t(i,n),i.types={},i.registerType=function(t,e){return e.type=t,this.types[t]=e},i.fromJSON=function(t){var e;return(e=this.types[t.type])?e.fromJSON(t):void 0},i.prototype.copyWithAttributes=function(t){return new this.constructor(this.getValue(),t)},i.prototype.copyWithAdditionalAttributes=function(t){return this.copyWithAttributes(this.attributes.merge(t))},i.prototype.copyWithoutAttribute=function(t){return this.copyWithAttributes(this.attributes.remove(t))},i.prototype.copy=function(){return this.copyWithAttributes(this.attributes)},i.prototype.getAttribute=function(t){return this.attributes.get(t)},i.prototype.getAttributesHash=function(){return this.attributes},i.prototype.getAttributes=function(){return this.attributes.toObject()},i.prototype.getCommonAttributes=function(){var t,e,n;return(n=pieceList.getPieceAtIndex(0))?(t=n.attributes,e=t.getKeys(),pieceList.eachPiece(function(n){return e=t.getKeysCommonToHash(n.attributes),t=t.slice(e)}),t.toObject()):{}},i.prototype.hasAttribute=function(t){return this.attributes.has(t)},i.prototype.hasSameStringValueAsPiece=function(t){return null!=t&&this.toString()===t.toString()},i.prototype.hasSameAttributesAsPiece=function(t){return null!=t&&(this.attributes===t.attributes||this.attributes.isEqualTo(t.attributes))},i.prototype.isBlockBreak=function(){return!1},i.prototype.isEqualTo=function(t){return i.__super__.isEqualTo.apply(this,arguments)||this.hasSameConstructorAs(t)&&this.hasSameStringValueAsPiece(t)&&this.hasSameAttributesAsPiece(t)},i.prototype.isEmpty=function(){return 0===this.length},i.prototype.isSerializable=function(){return!0},i.prototype.toJSON=function(){return{type:this.constructor.type,attributes:this.getAttributes()}},i.prototype.contentsForInspection=function(){return{type:this.constructor.type,attributes:this.attributes.inspect()}},i.prototype.canBeGrouped=function(){return this.hasAttribute(\"href\")},i.prototype.canBeGroupedWith=function(t){return this.getAttribute(\"href\")===t.getAttribute(\"href\")},i.prototype.getLength=function(){return this.length},i.prototype.canBeConsolidatedWith=function(){return!1},i}(e.Object)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Piece.registerType(\"attachment\",e.AttachmentPiece=function(n){function i(t){this.attachment=t,i.__super__.constructor.apply(this,arguments),this.length=1,this.ensureAttachmentExclusivelyHasAttribute(\"href\"),this.attachment.hasContent()||this.removeProhibitedAttributes()}return t(i,n),i.fromJSON=function(t){return new this(e.Attachment.fromJSON(t.attachment),t.attributes)},i.permittedAttributes=[\"caption\",\"presentation\"],i.prototype.ensureAttachmentExclusivelyHasAttribute=function(t){return this.hasAttribute(t)?(this.attachment.hasAttribute(t)||this.attachment.setAttributes(this.attributes.slice(t)),this.attributes=this.attributes.remove(t)):void 0},i.prototype.removeProhibitedAttributes=function(){var t;return t=this.attributes.slice(this.constructor.permittedAttributes),t.isEqualTo(this.attributes)?void 0:this.attributes=t},i.prototype.getValue=function(){return this.attachment},i.prototype.isSerializable=function(){return!this.attachment.isPending()},i.prototype.getCaption=function(){var t;return null!=(t=this.attributes.get(\"caption\"))?t:\"\"},i.prototype.isEqualTo=function(t){var e;return i.__super__.isEqualTo.apply(this,arguments)&&this.attachment.id===(null!=t&&null!=(e=t.attachment)?e.id:void 0)},i.prototype.toString=function(){return e.OBJECT_REPLACEMENT_CHARACTER},i.prototype.toJSON=function(){var t;return t=i.__super__.toJSON.apply(this,arguments),t.attachment=this.attachment,t},i.prototype.getCacheKey=function(){return[i.__super__.getCacheKey.apply(this,arguments),this.attachment.getCacheKey()].join(\"/\")},i.prototype.toConsole=function(){return JSON.stringify(this.toString())},i}(e.Piece))}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;t=e.normalizeNewlines,e.Piece.registerType(\"string\",e.StringPiece=function(e){function i(e){i.__super__.constructor.apply(this,arguments),this.string=t(e),this.length=this.string.length}return n(i,e),i.fromJSON=function(t){return new this(t.string,t.attributes)},i.prototype.getValue=function(){return this.string},i.prototype.toString=function(){return this.string.toString()},i.prototype.isBlockBreak=function(){return\"\\n\"===this.toString()&&this.getAttribute(\"blockBreak\")===!0},i.prototype.toJSON=function(){var t;return t=i.__super__.toJSON.apply(this,arguments),t.string=this.string,t},i.prototype.canBeConsolidatedWith=function(t){return null!=t&&this.hasSameConstructorAs(t)&&this.hasSameAttributesAsPiece(t)},i.prototype.consolidateWith=function(t){return new this.constructor(this.toString()+t.toString(),this.attributes)},i.prototype.splitAtOffset=function(t){var e,n;return 0===t?(e=null,n=this):t===this.length?(e=this,n=null):(e=new this.constructor(this.string.slice(0,t),this.attributes),n=new this.constructor(this.string.slice(t),this.attributes)),[e,n]},i.prototype.toConsole=function(){var t;return t=this.string,t.length>15&&(t=t.slice(0,14)+\"\\u2026\"),JSON.stringify(t.toString())},i}(e.Piece))}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty,o=[].slice;t=e.spliceArray,e.SplittableList=function(e){function i(t){null==t&&(t=[]),i.__super__.constructor.apply(this,arguments),this.objects=t.slice(0),this.length=this.objects.length}var r,s,a;return n(i,e),i.box=function(t){return t instanceof this?t:new this(t)},i.prototype.indexOf=function(t){return this.objects.indexOf(t)},i.prototype.splice=function(){var e;return e=1<=arguments.length?o.call(arguments,0):[],new this.constructor(t.apply(null,[this.objects].concat(o.call(e))))},i.prototype.eachObject=function(t){var e,n,i,o,r,s;for(r=this.objects,s=[],n=e=0,i=r.length;i>e;n=++e)o=r[n],s.push(t(o,n));return s},i.prototype.insertObjectAtIndex=function(t,e){return this.splice(e,0,t)},i.prototype.insertSplittableListAtIndex=function(t,e){return this.splice.apply(this,[e,0].concat(o.call(t.objects)))},i.prototype.insertSplittableListAtPosition=function(t,e){var n,i,o;return o=this.splitObjectAtPosition(e),i=o[0],n=o[1],new this.constructor(i).insertSplittableListAtIndex(t,n)},i.prototype.editObjectAtIndex=function(t,e){return this.replaceObjectAtIndex(e(this.objects[t]),t)},i.prototype.replaceObjectAtIndex=function(t,e){return this.splice(e,1,t)},i.prototype.removeObjectAtIndex=function(t){return this.splice(t,1)},i.prototype.getObjectAtIndex=function(t){return this.objects[t]},i.prototype.getSplittableListInRange=function(t){var e,n,i,o;return i=this.splitObjectsAtRange(t),n=i[0],e=i[1],o=i[2],new this.constructor(n.slice(e,o+1))},i.prototype.selectSplittableList=function(t){var e,n;return n=function(){var n,i,o,r;for(o=this.objects,r=[],n=0,i=o.length;i>n;n++)e=o[n],t(e)&&r.push(e);return r}.call(this),new this.constructor(n)},i.prototype.removeObjectsInRange=function(t){var e,n,i,o;return i=this.splitObjectsAtRange(t),n=i[0],e=i[1],o=i[2],new this.constructor(n).splice(e,o-e+1)},i.prototype.transformObjectsInRange=function(t,e){var n,i,o,r,s,a,u;return s=this.splitObjectsAtRange(t),r=s[0],i=s[1],a=s[2],u=function(){var t,s,u;for(u=[],n=t=0,s=r.length;s>t;n=++t)o=r[n],u.push(n>=i&&a>=n?e(o):o);return u}(),new this.constructor(u)},i.prototype.splitObjectsAtRange=function(t){var e,n,i,o,s,u;return o=this.splitObjectAtPosition(a(t)),n=o[0],e=o[1],i=o[2],s=new this.constructor(n).splitObjectAtPosition(r(t)+i),n=s[0],u=s[1],[n,e,u-1]},i.prototype.getObjectAtPosition=function(t){var e,n,i;return i=this.findIndexAndOffsetAtPosition(t),e=i.index,n=i.offset,this.objects[e]},i.prototype.splitObjectAtPosition=function(t){var e,n,i,o,r,s,a,u,c,l;return s=this.findIndexAndOffsetAtPosition(t),e=s.index,r=s.offset,o=this.objects.slice(0),null!=e?0===r?(c=e,l=0):(i=this.getObjectAtIndex(e),a=i.splitAtOffset(r),n=a[0],u=a[1],o.splice(e,1,n,u),c=e+1,l=n.getLength()-r):(c=o.length,l=0),[o,c,l]},i.prototype.consolidate=function(){var t,e,n,i,o,r;for(i=[],o=this.objects[0],r=this.objects.slice(1),t=0,e=r.length;e>t;t++)n=r[t],(\"function\"==typeof o.canBeConsolidatedWith?o.canBeConsolidatedWith(n):void 0)?o=o.consolidateWith(n):(i.push(o),o=n);return null!=o&&i.push(o),new this.constructor(i)},i.prototype.consolidateFromIndexToIndex=function(t,e){var n,i,r;return i=this.objects.slice(0),r=i.slice(t,e+1),n=new this.constructor(r).consolidate().toArray(),this.splice.apply(this,[t,r.length].concat(o.call(n)))},i.prototype.findIndexAndOffsetAtPosition=function(t){var e,n,i,o,r,s,a;for(e=0,a=this.objects,i=n=0,o=a.length;o>n;i=++n){if(s=a[i],r=e+s.getLength(),t>=e&&r>t)return{index:i,offset:t-e};e=r}return{index:null,offset:null}},i.prototype.findPositionAtIndexAndOffset=function(t,e){var n,i,o,r,s,a;for(s=0,a=this.objects,n=i=0,o=a.length;o>i;n=++i)if(r=a[n],t>n)s+=r.getLength();else if(n===t){s+=e;break}return s},i.prototype.getEndPosition=function(){var t,e;return null!=this.endPosition?this.endPosition:this.endPosition=function(){var n,i,o;for(e=0,o=this.objects,n=0,i=o.length;i>n;n++)t=o[n],e+=t.getLength();return e}.call(this)},i.prototype.toString=function(){return this.objects.join(\"\")},i.prototype.toArray=function(){return this.objects.slice(0)},i.prototype.toJSON=function(){return this.toArray()},i.prototype.isEqualTo=function(t){return i.__super__.isEqualTo.apply(this,arguments)||s(this.objects,null!=t?t.objects:void 0)},s=function(t,e){var n,i,o,r,s;if(null==e&&(e=[]),t.length!==e.length)return!1;for(s=!0,i=n=0,o=t.length;o>n;i=++n)r=t[i],s&&!r.isEqualTo(e[i])&&(s=!1);return s},i.prototype.contentsForInspection=function(){var t;return{objects:\"[\"+function(){var e,n,i,o;for(i=this.objects,o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(t.inspect());return o}.call(this).join(\", \")+\"]\"}},a=function(t){return t[0]},r=function(t){return t[1]},i}(e.Object)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Text=function(n){function i(t){var n;null==t&&(t=[]),i.__super__.constructor.apply(this,arguments),this.pieceList=new e.SplittableList(function(){var e,i,o;for(o=[],e=0,i=t.length;i>e;e++)n=t[e],n.isEmpty()||o.push(n);return o}())}return t(i,n),i.textForAttachmentWithAttributes=function(t,n){var i;return i=new e.AttachmentPiece(t,n),new this([i])},i.textForStringWithAttributes=function(t,n){var i;return i=new e.StringPiece(t,n),new this([i])},i.fromJSON=function(t){var n,i;return i=function(){var i,o,r;for(r=[],i=0,o=t.length;o>i;i++)n=t[i],r.push(e.Piece.fromJSON(n));return r}(),new this(i)},i.prototype.copy=function(){return this.copyWithPieceList(this.pieceList)},i.prototype.copyWithPieceList=function(t){return new this.constructor(t.consolidate().toArray())},i.prototype.copyUsingObjectMap=function(t){var e,n;return n=function(){var n,i,o,r,s;for(o=this.getPieces(),s=[],n=0,i=o.length;i>n;n++)e=o[n],s.push(null!=(r=t.find(e))?r:e);return s}.call(this),new this.constructor(n)},i.prototype.appendText=function(t){return this.insertTextAtPosition(t,this.getLength())},i.prototype.insertTextAtPosition=function(t,e){return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(t.pieceList,e))\n},i.prototype.removeTextAtRange=function(t){return this.copyWithPieceList(this.pieceList.removeObjectsInRange(t))},i.prototype.replaceTextAtRange=function(t,e){return this.removeTextAtRange(e).insertTextAtPosition(t,e[0])},i.prototype.moveTextFromRangeToPosition=function(t,e){var n,i;if(!(t[0]<=e&&e<=t[1]))return i=this.getTextAtRange(t),n=i.getLength(),t[0]<e&&(e-=n),this.removeTextAtRange(t).insertTextAtPosition(i,e)},i.prototype.addAttributeAtRange=function(t,e,n){var i;return i={},i[t]=e,this.addAttributesAtRange(i,n)},i.prototype.addAttributesAtRange=function(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,function(e){return e.copyWithAdditionalAttributes(t)}))},i.prototype.removeAttributeAtRange=function(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,function(e){return e.copyWithoutAttribute(t)}))},i.prototype.setAttributesAtRange=function(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,function(e){return e.copyWithAttributes(t)}))},i.prototype.getAttributesAtPosition=function(t){var e,n;return null!=(e=null!=(n=this.pieceList.getObjectAtPosition(t))?n.getAttributes():void 0)?e:{}},i.prototype.getCommonAttributes=function(){var t,n;return t=function(){var t,e,i,o;for(i=this.pieceList.toArray(),o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.getAttributes());return o}.call(this),e.Hash.fromCommonAttributesOfObjects(t).toObject()},i.prototype.getCommonAttributesAtRange=function(t){var e;return null!=(e=this.getTextAtRange(t).getCommonAttributes())?e:{}},i.prototype.getExpandedRangeForAttributeAtOffset=function(t,e){var n,i,o;for(n=o=e,i=this.getLength();n>0&&this.getCommonAttributesAtRange([n-1,o])[t];)n--;for(;i>o&&this.getCommonAttributesAtRange([e,o+1])[t];)o++;return[n,o]},i.prototype.getTextAtRange=function(t){return this.copyWithPieceList(this.pieceList.getSplittableListInRange(t))},i.prototype.getStringAtRange=function(t){return this.pieceList.getSplittableListInRange(t).toString()},i.prototype.getStringAtPosition=function(t){return this.getStringAtRange([t,t+1])},i.prototype.startsWithString=function(t){return this.getStringAtRange([0,t.length])===t},i.prototype.endsWithString=function(t){var e;return e=this.getLength(),this.getStringAtRange([e-t.length,e])===t},i.prototype.getAttachmentPieces=function(){var t,e,n,i,o;for(i=this.pieceList.toArray(),o=[],t=0,e=i.length;e>t;t++)n=i[t],null!=n.attachment&&o.push(n);return o},i.prototype.getAttachments=function(){var t,e,n,i,o;for(i=this.getAttachmentPieces(),o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.attachment);return o},i.prototype.getAttachmentAndPositionById=function(t){var e,n,i,o,r,s;for(o=0,r=this.pieceList.toArray(),e=0,n=r.length;n>e;e++){if(i=r[e],(null!=(s=i.attachment)?s.id:void 0)===t)return{attachment:i.attachment,position:o};o+=i.length}return{attachment:null,position:null}},i.prototype.getAttachmentById=function(t){var e,n,i;return i=this.getAttachmentAndPositionById(t),e=i.attachment,n=i.position,e},i.prototype.getRangeOfAttachment=function(t){var e,n;return n=this.getAttachmentAndPositionById(t.id),t=n.attachment,e=n.position,null!=t?[e,e+1]:void 0},i.prototype.updateAttributesForAttachment=function(t,e){var n;return(n=this.getRangeOfAttachment(e))?this.addAttributesAtRange(t,n):this},i.prototype.getLength=function(){return this.pieceList.getEndPosition()},i.prototype.isEmpty=function(){return 0===this.getLength()},i.prototype.isEqualTo=function(t){var e;return i.__super__.isEqualTo.apply(this,arguments)||(null!=t&&null!=(e=t.pieceList)?e.isEqualTo(this.pieceList):void 0)},i.prototype.isBlockBreak=function(){return 1===this.getLength()&&this.pieceList.getObjectAtIndex(0).isBlockBreak()},i.prototype.eachPiece=function(t){return this.pieceList.eachObject(t)},i.prototype.getPieces=function(){return this.pieceList.toArray()},i.prototype.getPieceAtPosition=function(t){return this.pieceList.getObjectAtPosition(t)},i.prototype.contentsForInspection=function(){return{pieceList:this.pieceList.inspect()}},i.prototype.toSerializableText=function(){var t;return t=this.pieceList.selectSplittableList(function(t){return t.isSerializable()}),this.copyWithPieceList(t)},i.prototype.toString=function(){return this.pieceList.toString()},i.prototype.toJSON=function(){return this.pieceList.toJSON()},i.prototype.toConsole=function(){var t;return JSON.stringify(function(){var e,n,i,o;for(i=this.pieceList.toArray(),o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(JSON.parse(t.toConsole()));return o}.call(this))},i.prototype.getDirection=function(){return e.getDirection(this.toString())},i.prototype.isRTL=function(){return\"rtl\"===this.getDirection()},i}(e.Object)}.call(this),function(){var t,n,i,o,r,s=function(t,e){function n(){this.constructor=t}for(var i in e)a.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},a={}.hasOwnProperty,u=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},c=[].slice;t=e.arraysAreEqual,r=e.spliceArray,i=e.getBlockConfig,n=e.getBlockAttributeNames,o=e.getListAttributeNames,e.Block=function(n){function a(t,n){null==t&&(t=new e.Text),null==n&&(n=[]),a.__super__.constructor.apply(this,arguments),this.text=h(t),this.attributes=n}var l,h,p,d,f,g,m,v,y;return s(a,n),a.fromJSON=function(t){var n;return n=e.Text.fromJSON(t.text),new this(n,t.attributes)},a.prototype.isEmpty=function(){return this.text.isBlockBreak()},a.prototype.isEqualTo=function(e){return a.__super__.isEqualTo.apply(this,arguments)||this.text.isEqualTo(null!=e?e.text:void 0)&&t(this.attributes,null!=e?e.attributes:void 0)},a.prototype.copyWithText=function(t){return new this.constructor(t,this.attributes)},a.prototype.copyWithoutText=function(){return this.copyWithText(null)},a.prototype.copyWithAttributes=function(t){return new this.constructor(this.text,t)},a.prototype.copyWithoutAttributes=function(){return this.copyWithAttributes(null)},a.prototype.copyUsingObjectMap=function(t){var e;return this.copyWithText((e=t.find(this.text))?e:this.text.copyUsingObjectMap(t))},a.prototype.addAttribute=function(t){var e;return e=this.attributes.concat(d(t)),this.copyWithAttributes(e)},a.prototype.removeAttribute=function(t){var e,n;return n=i(t).listAttribute,e=g(g(this.attributes,t),n),this.copyWithAttributes(e)},a.prototype.removeLastAttribute=function(){return this.removeAttribute(this.getLastAttribute())},a.prototype.getLastAttribute=function(){return f(this.attributes)},a.prototype.getAttributes=function(){return this.attributes.slice(0)},a.prototype.getAttributeLevel=function(){return this.attributes.length},a.prototype.getAttributeAtLevel=function(t){return this.attributes[t-1]},a.prototype.hasAttribute=function(t){return u.call(this.attributes,t)>=0},a.prototype.hasAttributes=function(){return this.getAttributeLevel()>0},a.prototype.getLastNestableAttribute=function(){return f(this.getNestableAttributes())},a.prototype.getNestableAttributes=function(){var t,e,n,o,r;for(o=this.attributes,r=[],e=0,n=o.length;n>e;e++)t=o[e],i(t).nestable&&r.push(t);return r},a.prototype.getNestingLevel=function(){return this.getNestableAttributes().length},a.prototype.decreaseNestingLevel=function(){var t;return(t=this.getLastNestableAttribute())?this.removeAttribute(t):this},a.prototype.increaseNestingLevel=function(){var t,e,n;return(t=this.getLastNestableAttribute())?(n=this.attributes.lastIndexOf(t),e=r.apply(null,[this.attributes,n+1,0].concat(c.call(d(t)))),this.copyWithAttributes(e)):this},a.prototype.getListItemAttributes=function(){var t,e,n,o,r;for(o=this.attributes,r=[],e=0,n=o.length;n>e;e++)t=o[e],i(t).listAttribute&&r.push(t);return r},a.prototype.isListItem=function(){var t;return null!=(t=i(this.getLastAttribute()))?t.listAttribute:void 0},a.prototype.isTerminalBlock=function(){var t;return null!=(t=i(this.getLastAttribute()))?t.terminal:void 0},a.prototype.breaksOnReturn=function(){var t;return null!=(t=i(this.getLastAttribute()))?t.breakOnReturn:void 0},a.prototype.findLineBreakInDirectionFromPosition=function(t,e){var n,i;return i=this.toString(),n=function(){switch(t){case\"forward\":return i.indexOf(\"\\n\",e);case\"backward\":return i.slice(0,e).lastIndexOf(\"\\n\")}}(),-1!==n?n:void 0},a.prototype.contentsForInspection=function(){return{text:this.text.inspect(),attributes:this.attributes}},a.prototype.toString=function(){return this.text.toString()},a.prototype.toJSON=function(){return{text:this.text,attributes:this.attributes}},a.prototype.getDirection=function(){return this.text.getDirection()},a.prototype.isRTL=function(){return this.text.isRTL()},a.prototype.getLength=function(){return this.text.getLength()},a.prototype.canBeConsolidatedWith=function(t){return!this.hasAttributes()&&!t.hasAttributes()&&this.getDirection()===t.getDirection()},a.prototype.consolidateWith=function(t){var n,i;return n=e.Text.textForStringWithAttributes(\"\\n\"),i=this.getTextWithoutBlockBreak().appendText(n),this.copyWithText(i.appendText(t.text))},a.prototype.splitAtOffset=function(t){var e,n;return 0===t?(e=null,n=this):t===this.getLength()?(e=this,n=null):(e=this.copyWithText(this.text.getTextAtRange([0,t])),n=this.copyWithText(this.text.getTextAtRange([t,this.getLength()]))),[e,n]},a.prototype.getBlockBreakPosition=function(){return this.text.getLength()-1},a.prototype.getTextWithoutBlockBreak=function(){return m(this.text)?this.text.getTextAtRange([0,this.getBlockBreakPosition()]):this.text.copy()},a.prototype.canBeGrouped=function(t){return this.attributes[t]},a.prototype.canBeGroupedWith=function(t,e){var n,r,s,a;return s=t.getAttributes(),r=s[e],n=this.attributes[e],!(n!==r||i(n).group===!1&&(a=s[e+1],u.call(o(),a)<0)||this.getDirection()!==t.getDirection()&&!t.isEmpty())},h=function(t){return t=y(t),t=l(t)},y=function(t){var n,i,o,r,s,a;return r=!1,a=t.getPieces(),i=2<=a.length?c.call(a,0,n=a.length-1):(n=0,[]),o=a[n++],null==o?t:(i=function(){var t,e,n;for(n=[],t=0,e=i.length;e>t;t++)s=i[t],s.isBlockBreak()?(r=!0,n.push(v(s))):n.push(s);return n}(),r?new e.Text(c.call(i).concat([o])):t)},p=e.Text.textForStringWithAttributes(\"\\n\",{blockBreak:!0}),l=function(t){return m(t)?t:t.appendText(p)},m=function(t){var e,n;return n=t.getLength(),0===n?!1:(e=t.getTextAtRange([n-1,n]),e.isBlockBreak())},v=function(t){return t.copyWithoutAttribute(\"blockBreak\")},d=function(t){var e;return e=i(t).listAttribute,null!=e?[e,t]:[t]},f=function(t){return t.slice(-1)[0]},g=function(t,e){var n;return n=t.lastIndexOf(e),-1===n?t:r(t,n,1)},a}(e.Object)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty,s=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},a=[].slice;n=e.tagName,i=e.walkTree,t=e.nodeIsAttachmentElement,e.HTMLSanitizer=function(r){function u(t,e){var n;n=null!=e?e:{},this.allowedAttributes=n.allowedAttributes,this.forbiddenProtocols=n.forbiddenProtocols,this.forbiddenElements=n.forbiddenElements,null==this.allowedAttributes&&(this.allowedAttributes=c),null==this.forbiddenProtocols&&(this.forbiddenProtocols=h),null==this.forbiddenElements&&(this.forbiddenElements=l),this.body=p(t)}var c,l,h,p;return o(u,r),c=\"style href src width height class\".split(\" \"),h=\"javascript:\".split(\" \"),l=\"script iframe\".split(\" \"),u.sanitize=function(t,e){var n;return n=new this(t,e),n.sanitize(),n},u.prototype.sanitize=function(){return this.sanitizeElements(),this.normalizeListElementNesting()},u.prototype.getHTML=function(){return this.body.innerHTML},u.prototype.getBody=function(){return this.body},u.prototype.sanitizeElements=function(){var t,n,o,r,s;for(s=i(this.body),r=[];s.nextNode();)switch(o=s.currentNode,o.nodeType){case Node.ELEMENT_NODE:this.elementIsRemovable(o)?r.push(o):this.sanitizeElement(o);break;case Node.COMMENT_NODE:r.push(o)}for(t=0,n=r.length;n>t;t++)o=r[t],e.removeNode(o);return this.body},u.prototype.sanitizeElement=function(t){var e,n,i,o,r;for(t.hasAttribute(\"href\")&&(o=t.protocol,s.call(this.forbiddenProtocols,o)>=0&&t.removeAttribute(\"href\")),r=a.call(t.attributes),e=0,n=r.length;n>e;e++)i=r[e].name,s.call(this.allowedAttributes,i)>=0||0===i.indexOf(\"data-trix\")||t.removeAttribute(i);return t},u.prototype.normalizeListElementNesting=function(){var t,e,i,o,r;for(r=a.call(this.body.querySelectorAll(\"ul,ol\")),t=0,e=r.length;e>t;t++)i=r[t],(o=i.previousElementSibling)&&\"li\"===n(o)&&o.appendChild(i);return this.body},u.prototype.elementIsRemovable=function(t){return(null!=t?t.nodeType:void 0)===Node.ELEMENT_NODE?this.elementIsForbidden(t)||this.elementIsntSerializable(t):void 0},u.prototype.elementIsForbidden=function(t){var e;return e=n(t),s.call(this.forbiddenElements,e)>=0},u.prototype.elementIsntSerializable=function(e){return\"false\"===e.getAttribute(\"data-trix-serialize\")&&!t(e)},p=function(t){var e,n,i,o,r;for(null==t&&(t=\"\"),t=t.replace(/<\\/html[^>]*>[^]*$/i,\"</html>\"),e=document.implementation.createHTMLDocument(\"\"),e.documentElement.innerHTML=t,r=e.head.querySelectorAll(\"style\"),i=0,o=r.length;o>i;i++)n=r[i],e.body.appendChild(n);return e.body},u}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h,p=function(t,e){function n(){this.constructor=t}for(var i in e)d.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},d={}.hasOwnProperty,f=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.arraysAreEqual,s=e.makeElement,l=e.tagName,r=e.getBlockTagNames,h=e.walkTree,o=e.findClosestElementFromNode,i=e.elementContainsNode,a=e.nodeIsAttachmentElement,u=e.normalizeSpaces,n=e.breakableWhitespacePattern,c=e.squishBreakableWhitespace,e.HTMLParser=function(d){function g(t,e){this.html=t,this.referenceElement=(null!=e?e:{}).referenceElement,this.blocks=[],this.blockElements=[],this.processedElements=[]}var m,v,y,b,A,C,x,w,E,S,R,k;return p(g,d),g.parse=function(t,e){var n;return n=new this(t,e),n.parse(),n},g.prototype.getDocument=function(){return e.Document.fromJSON(this.blocks)},g.prototype.parse=function(){var t,n;try{for(this.createHiddenContainer(),t=e.HTMLSanitizer.sanitize(this.html).getHTML(),this.containerElement.innerHTML=t,n=h(this.containerElement,{usingFilter:x});n.nextNode();)this.processNode(n.currentNode);return this.translateBlockElementMarginsToNewlines()}finally{this.removeHiddenContainer()}},g.prototype.createHiddenContainer=function(){return this.referenceElement?(this.containerElement=this.referenceElement.cloneNode(!1),this.containerElement.removeAttribute(\"id\"),this.containerElement.setAttribute(\"data-trix-internal\",\"\"),this.containerElement.style.display=\"none\",this.referenceElement.parentNode.insertBefore(this.containerElement,this.referenceElement.nextSibling)):(this.containerElement=s({tagName:\"div\",style:{display:\"none\"}}),document.body.appendChild(this.containerElement))},g.prototype.removeHiddenContainer=function(){return e.removeNode(this.containerElement)},x=function(t){return\"style\"===l(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},g.prototype.processNode=function(t){switch(t.nodeType){case Node.TEXT_NODE:if(!this.isInsignificantTextNode(t))return this.appendBlockForTextNode(t),this.processTextNode(t);break;case Node.ELEMENT_NODE:return this.appendBlockForElement(t),this.processElement(t)}},g.prototype.appendBlockForTextNode=function(e){var n,i,o;return i=e.parentNode,i===this.currentBlockElement&&this.isBlockElement(e.previousSibling)?this.appendStringWithAttributes(\"\\n\"):i!==this.containerElement&&!this.isBlockElement(i)||(n=this.getBlockAttributes(i),t(n,null!=(o=this.currentBlock)?o.attributes:void 0))?void 0:(this.currentBlock=this.appendBlockForAttributesWithElement(n,i),this.currentBlockElement=i)},g.prototype.appendBlockForElement=function(e){var n,o,r,s;if(r=this.isBlockElement(e),o=i(this.currentBlockElement,e),r&&!this.isBlockElement(e.firstChild)){if((!this.isInsignificantTextNode(e.firstChild)||!this.isBlockElement(e.firstElementChild))&&(n=this.getBlockAttributes(e),e.firstChild))return o&&t(n,this.currentBlock.attributes)?this.appendStringWithAttributes(\"\\n\"):(this.currentBlock=this.appendBlockForAttributesWithElement(n,e),this.currentBlockElement=e)}else if(this.currentBlockElement&&!o&&!r)return(s=this.findParentBlockElement(e))?this.appendBlockForElement(s):(this.currentBlock=this.appendEmptyBlock(),this.currentBlockElement=null)},g.prototype.findParentBlockElement=function(t){var e;for(e=t.parentElement;e&&e!==this.containerElement;){if(this.isBlockElement(e)&&f.call(this.blockElements,e)>=0)return e;e=e.parentElement}return null},g.prototype.processTextNode=function(t){var e,n;return n=t.data,v(t.parentNode)||(n=c(n),R(null!=(e=t.previousSibling)?e.textContent:void 0)&&(n=A(n))),this.appendStringWithAttributes(n,this.getTextAttributes(t.parentNode))},g.prototype.processElement=function(t){var e,n,i,o,r;if(a(t))return e=w(t,\"attachment\"),Object.keys(e).length&&(o=this.getTextAttributes(t),this.appendAttachmentWithAttributes(e,o),t.innerHTML=\"\"),this.processedElements.push(t);switch(l(t)){case\"br\":return this.isExtraBR(t)||this.isBlockElement(t.nextSibling)||this.appendStringWithAttributes(\"\\n\",this.getTextAttributes(t)),this.processedElements.push(t);case\"img\":e={url:t.getAttribute(\"src\"),contentType:\"image\"},i=b(t);for(n in i)r=i[n],e[n]=r;return this.appendAttachmentWithAttributes(e,this.getTextAttributes(t)),this.processedElements.push(t);case\"tr\":if(t.parentNode.firstChild!==t)return this.appendStringWithAttributes(\"\\n\");break;case\"td\":if(t.parentNode.firstChild!==t)return this.appendStringWithAttributes(\" | \")}},g.prototype.appendBlockForAttributesWithElement=function(t,e){var n;return this.blockElements.push(e),n=m(t),this.blocks.push(n),n},g.prototype.appendEmptyBlock=function(){return this.appendBlockForAttributesWithElement([],null)},g.prototype.appendStringWithAttributes=function(t,e){return this.appendPiece(S(t,e))},g.prototype.appendAttachmentWithAttributes=function(t,e){return this.appendPiece(E(t,e))},g.prototype.appendPiece=function(t){return 0===this.blocks.length&&this.appendEmptyBlock(),this.blocks[this.blocks.length-1].text.push(t)},g.prototype.appendStringToTextAtIndex=function(t,e){var n,i;return i=this.blocks[e].text,n=i[i.length-1],\"string\"===(null!=n?n.type:void 0)?n.string+=t:i.push(S(t))},g.prototype.prependStringToTextAtIndex=function(t,e){var n,i;return i=this.blocks[e].text,n=i[0],\"string\"===(null!=n?n.type:void 0)?n.string=t+n.string:i.unshift(S(t))},S=function(t,e){var n;return null==e&&(e={}),n=\"string\",t=u(t),{string:t,attributes:e,type:n}},E=function(t,e){var n;return null==e&&(e={}),n=\"attachment\",{attachment:t,attributes:e,type:n}},m=function(t){var e;return null==t&&(t={}),e=[],{text:e,attributes:t}},g.prototype.getTextAttributes=function(t){var n,i,r,s,u,c,l,h,p,d,f,g;r={},p=e.config.textAttributes;for(n in p)if(u=p[n],u.tagName&&o(t,{matchingSelector:u.tagName,untilNode:this.containerElement}))r[n]=!0;else if(u.parser){if(g=u.parser(t)){for(i=!1,d=this.findBlockElementAncestors(t),c=0,h=d.length;h>c;c++)if(s=d[c],u.parser(s)===g){i=!0;break}i||(r[n]=g)}}else u.styleProperty&&(g=t.style[u.styleProperty])&&(r[n]=g);if(a(t)){f=w(t,\"attributes\");for(l in f)g=f[l],r[l]=g}return r},g.prototype.getBlockAttributes=function(t){var n,i,o,r;for(i=[];t&&t!==this.containerElement;){r=e.config.blockAttributes;for(n in r)o=r[n],o.parse!==!1&&l(t)===o.tagName&&((\"function\"==typeof o.test?o.test(t):void 0)||!o.test)&&(i.push(n),o.listAttribute&&i.push(o.listAttribute));t=t.parentNode}return i.reverse()},g.prototype.findBlockElementAncestors=function(t){var e,n;for(e=[];t&&t!==this.containerElement;)n=l(t),f.call(r(),n)>=0&&e.push(t),t=t.parentNode;return e},w=function(t,e){try{return JSON.parse(t.getAttribute(\"data-trix-\"+e))}catch(n){return{}}},b=function(t){var e,n,i;return i=t.getAttribute(\"width\"),n=t.getAttribute(\"height\"),e={},i&&(e.width=parseInt(i,10)),n&&(e.height=parseInt(n,10)),e},g.prototype.isBlockElement=function(t){var e;if((null!=t?t.nodeType:void 0)===Node.ELEMENT_NODE&&!a(t)&&!o(t,{matchingSelector:\"td\",untilNode:this.containerElement}))return e=l(t),f.call(r(),e)>=0||\"block\"===window.getComputedStyle(t).display},g.prototype.isInsignificantTextNode=function(t){var e,n,i;if((null!=t?t.nodeType:void 0)===Node.TEXT_NODE&&k(t.data)&&(n=t.parentNode,i=t.previousSibling,e=t.nextSibling,(!C(n.previousSibling)||this.isBlockElement(n.previousSibling))&&!v(n)))return!i||this.isBlockElement(i)||!e||this.isBlockElement(e)},g.prototype.isExtraBR=function(t){return\"br\"===l(t)&&this.isBlockElement(t.parentNode)&&t.parentNode.lastChild===t},v=function(t){var e;return e=window.getComputedStyle(t).whiteSpace,\"pre\"===e||\"pre-wrap\"===e||\"pre-line\"===e},C=function(t){return t&&!R(t.textContent)},g.prototype.translateBlockElementMarginsToNewlines=function(){var t,e,n,i,o,r,s,a;for(e=this.getMarginOfDefaultBlockElement(),s=this.blocks,a=[],i=n=0,o=s.length;o>n;i=++n)t=s[i],(r=this.getMarginOfBlockElementAtIndex(i))&&(r.top>2*e.top&&this.prependStringToTextAtIndex(\"\\n\",i),a.push(r.bottom>2*e.bottom?this.appendStringToTextAtIndex(\"\\n\",i):void 0));return a},g.prototype.getMarginOfBlockElementAtIndex=function(t){var e,n;return!(e=this.blockElements[t])||!e.textContent||(n=l(e),f.call(r(),n)>=0||f.call(this.processedElements,e)>=0)?void 0:y(e)},g.prototype.getMarginOfDefaultBlockElement=function(){var t;return t=s(e.config.blockAttributes[\"default\"].tagName),this.containerElement.appendChild(t),y(t)},y=function(t){var e;return e=window.getComputedStyle(t),\"block\"===e.display?{top:parseInt(e.marginTop),bottom:parseInt(e.marginBottom)}:void 0},A=function(t){return t.replace(RegExp(\"^\"+n.source+\"+\"),\"\")},k=function(t){return RegExp(\"^\"+n.source+\"*$\").test(t)},R=function(t){return/\\s$/.test(t)},g}(e.BasicObject)}.call(this),function(){var t,n,i,o,r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty,a=[].slice,u=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.arraysAreEqual,i=e.normalizeRange,o=e.rangeIsCollapsed,n=e.getBlockConfig,e.Document=function(s){function c(t){null==t&&(t=[]),c.__super__.constructor.apply(this,arguments),0===t.length&&(t=[new e.Block]),this.blockList=e.SplittableList.box(t)}var l;return r(c,s),c.fromJSON=function(t){var n,i;return i=function(){var i,o,r;for(r=[],i=0,o=t.length;o>i;i++)n=t[i],r.push(e.Block.fromJSON(n));return r}(),new this(i)},c.fromHTML=function(t,n){return e.HTMLParser.parse(t,n).getDocument()},c.fromString=function(t,n){var i;return i=e.Text.textForStringWithAttributes(t,n),new this([new e.Block(i)])},c.prototype.isEmpty=function(){var t;return 1===this.blockList.length&&(t=this.getBlockAtIndex(0),t.isEmpty()&&!t.hasAttributes())},c.prototype.copy=function(t){var e;return null==t&&(t={}),e=t.consolidateBlocks?this.blockList.consolidate().toArray():this.blockList.toArray(),new this.constructor(e)},c.prototype.copyUsingObjectsFromDocument=function(t){var n;return n=new e.ObjectMap(t.getObjects()),this.copyUsingObjectMap(n)},c.prototype.copyUsingObjectMap=function(t){var e,n,i;return n=function(){var n,o,r,s;for(r=this.getBlocks(),s=[],n=0,o=r.length;o>n;n++)e=r[n],s.push((i=t.find(e))?i:e.copyUsingObjectMap(t));return s}.call(this),new this.constructor(n)},c.prototype.copyWithBaseBlockAttributes=function(t){var e,n,i;return null==t&&(t=[]),i=function(){var i,o,r,s;for(r=this.getBlocks(),s=[],i=0,o=r.length;o>i;i++)n=r[i],e=t.concat(n.getAttributes()),s.push(n.copyWithAttributes(e));return s}.call(this),new this.constructor(i)},c.prototype.replaceBlock=function(t,e){var n;return n=this.blockList.indexOf(t),-1===n?this:new this.constructor(this.blockList.replaceObjectAtIndex(e,n))},c.prototype.insertDocumentAtRange=function(t,e){var n,r,s,a,u,c,l;return r=t.blockList,u=(e=i(e))[0],c=this.locationFromPosition(u),s=c.index,a=c.offset,l=this,n=this.getBlockAtPosition(u),o(e)&&n.isEmpty()&&!n.hasAttributes()?l=new this.constructor(l.blockList.removeObjectAtIndex(s)):n.getBlockBreakPosition()===a&&u++,l=l.removeTextAtRange(e),new this.constructor(l.blockList.insertSplittableListAtPosition(r,u))},c.prototype.mergeDocumentAtRange=function(e,n){var o,r,s,a,u,c,l,h,p,d,f,g;return f=(n=i(n))[0],d=this.locationFromPosition(f),r=this.getBlockAtIndex(d.index).getAttributes(),o=e.getBaseBlockAttributes(),g=r.slice(-o.length),t(o,g)?(l=r.slice(0,-o.length),c=e.copyWithBaseBlockAttributes(l)):c=e.copy({consolidateBlocks:!0}).copyWithBaseBlockAttributes(r),s=c.getBlockCount(),a=c.getBlockAtIndex(0),t(r,a.getAttributes())?(u=a.getTextWithoutBlockBreak(),p=this.insertTextAtRange(u,n),s>1&&(c=new this.constructor(c.getBlocks().slice(1)),h=f+u.getLength(),p=p.insertDocumentAtRange(c,h))):p=this.insertDocumentAtRange(c,n),p},c.prototype.insertTextAtRange=function(t,e){var n,o,r,s,a;return a=(e=i(e))[0],s=this.locationFromPosition(a),o=s.index,r=s.offset,n=this.removeTextAtRange(e),new this.constructor(n.blockList.editObjectAtIndex(o,function(e){return e.copyWithText(e.text.insertTextAtPosition(t,r))}))},c.prototype.removeTextAtRange=function(t){var e,n,r,s,a,u,c,l,h,p,d,f,g,m,v,y,b,A,C,x,w;return p=t=i(t),l=p[0],A=p[1],o(t)?this:(d=this.locationRangeFromRange(t),u=d[0],y=d[1],a=u.index,c=u.offset,s=this.getBlockAtIndex(a),v=y.index,b=y.offset,m=this.getBlockAtIndex(v),f=A-l===1&&s.getBlockBreakPosition()===c&&m.getBlockBreakPosition()!==b&&\"\\n\"===m.text.getStringAtPosition(b),f?r=this.blockList.editObjectAtIndex(v,function(t){return t.copyWithText(t.text.removeTextAtRange([b,b+1]))}):(h=s.text.getTextAtRange([0,c]),C=m.text.getTextAtRange([b,m.getLength()]),x=h.appendText(C),g=a!==v&&0===c,w=g&&s.getAttributeLevel()>=m.getAttributeLevel(),n=w?m.copyWithText(x):s.copyWithText(x),e=v+1-a,r=this.blockList.splice(a,e,n)),new this.constructor(r))},c.prototype.moveTextFromRangeToPosition=function(t,e){var n,o,r,s,u,c,l,h,p,d;return c=t=i(t),p=c[0],r=c[1],e>=p&&r>=e?this:(o=this.getDocumentAtRange(t),h=this.removeTextAtRange(t),u=e>p,u&&(e-=o.getLength()),l=o.getBlocks(),s=l[0],n=2<=l.length?a.call(l,1):[],0===n.length?(d=s.getTextWithoutBlockBreak(),u&&(e+=1)):d=s.text,h=h.insertTextAtRange(d,e),0===n.length?h:(o=new this.constructor(n),e+=d.getLength(),h.insertDocumentAtRange(o,e)))},c.prototype.addAttributeAtRange=function(t,e,i){var o;return o=this.blockList,this.eachBlockAtRange(i,function(i,r,s){return o=o.editObjectAtIndex(s,function(){return n(t)?i.addAttribute(t,e):r[0]===r[1]?i:i.copyWithText(i.text.addAttributeAtRange(t,e,r))})}),new this.constructor(o)},c.prototype.addAttribute=function(t,e){var n;return n=this.blockList,this.eachBlock(function(i,o){return n=n.editObjectAtIndex(o,function(){return i.addAttribute(t,e)})}),new this.constructor(n)},c.prototype.removeAttributeAtRange=function(t,e){var i;return i=this.blockList,this.eachBlockAtRange(e,function(e,o,r){return n(t)?i=i.editObjectAtIndex(r,function(){return e.removeAttribute(t)}):o[0]!==o[1]?i=i.editObjectAtIndex(r,function(){return e.copyWithText(e.text.removeAttributeAtRange(t,o))}):void 0}),new this.constructor(i)},c.prototype.updateAttributesForAttachment=function(t,e){var n,i,o,r;return o=(i=this.getRangeOfAttachment(e))[0],n=this.locationFromPosition(o).index,r=this.getTextAtIndex(n),new this.constructor(this.blockList.editObjectAtIndex(n,function(n){return n.copyWithText(r.updateAttributesForAttachment(t,e))}))},c.prototype.removeAttributeForAttachment=function(t,e){var n;return n=this.getRangeOfAttachment(e),this.removeAttributeAtRange(t,n)},c.prototype.insertBlockBreakAtRange=function(t){var n,o,r,s;return s=(t=i(t))[0],r=this.locationFromPosition(s).offset,o=this.removeTextAtRange(t),0===r&&(n=[new e.Block]),new this.constructor(o.blockList.insertSplittableListAtPosition(new e.SplittableList(n),s))},c.prototype.applyBlockAttributeAtRange=function(t,e,i){var o,r,s,a;return s=this.expandRangeToLineBreaksAndSplitBlocks(i),r=s.document,i=s.range,o=n(t),o.listAttribute?(r=r.removeLastListAttributeAtRange(i,{exceptAttributeName:t}),a=r.convertLineBreaksToBlockBreaksInRange(i),r=a.document,i=a.range):r=o.exclusive?r.removeBlockAttributesAtRange(i):o.terminal?r.removeLastTerminalAttributeAtRange(i):r.consolidateBlocksAtRange(i),r.addAttributeAtRange(t,e,i)},c.prototype.removeLastListAttributeAtRange=function(t,e){var i;return null==e&&(e={}),i=this.blockList,this.eachBlockAtRange(t,function(t,o,r){var s;if((s=t.getLastAttribute())&&n(s).listAttribute&&s!==e.exceptAttributeName)return i=i.editObjectAtIndex(r,function(){return t.removeAttribute(s)})}),new this.constructor(i)},c.prototype.removeLastTerminalAttributeAtRange=function(t){var e;return e=this.blockList,this.eachBlockAtRange(t,function(t,i,o){var r;if((r=t.getLastAttribute())&&n(r).terminal)return e=e.editObjectAtIndex(o,function(){return t.removeAttribute(r)})}),new this.constructor(e)},c.prototype.removeBlockAttributesAtRange=function(t){var e;return e=this.blockList,this.eachBlockAtRange(t,function(t,n,i){return t.hasAttributes()?e=e.editObjectAtIndex(i,function(){return t.copyWithoutAttributes()}):void 0}),new this.constructor(e)},c.prototype.expandRangeToLineBreaksAndSplitBlocks=function(t){var e,n,o,r,s,a,u,c,l;return a=t=i(t),l=a[0],r=a[1],c=this.locationFromPosition(l),o=this.locationFromPosition(r),e=this,u=e.getBlockAtIndex(c.index),null!=(c.offset=u.findLineBreakInDirectionFromPosition(\"backward\",c.offset))&&(s=e.positionFromLocation(c),e=e.insertBlockBreakAtRange([s,s+1]),o.index+=1,o.offset-=e.getBlockAtIndex(c.index).getLength(),c.index+=1),c.offset=0,0===o.offset&&o.index>c.index?(o.index-=1,o.offset=e.getBlockAtIndex(o.index).getBlockBreakPosition()):(n=e.getBlockAtIndex(o.index),\"\\n\"===n.text.getStringAtRange([o.offset-1,o.offset])?o.offset-=1:o.offset=n.findLineBreakInDirectionFromPosition(\"forward\",o.offset),o.offset!==n.getBlockBreakPosition()&&(s=e.positionFromLocation(o),e=e.insertBlockBreakAtRange([s,s+1]))),l=e.positionFromLocation(c),r=e.positionFromLocation(o),t=i([l,r]),{document:e,range:t}},c.prototype.convertLineBreaksToBlockBreaksInRange=function(t){var e,n,o;return n=(t=i(t))[0],o=this.getStringAtRange(t).slice(0,-1),e=this,o.replace(/.*?\\n/g,function(t){return n+=t.length,e=e.insertBlockBreakAtRange([n-1,n])}),{document:e,range:t}},c.prototype.consolidateBlocksAtRange=function(t){var e,n,o,r,s;return o=t=i(t),s=o[0],n=o[1],r=this.locationFromPosition(s).index,e=this.locationFromPosition(n).index,new this.constructor(this.blockList.consolidateFromIndexToIndex(r,e))},c.prototype.getDocumentAtRange=function(t){var e;return t=i(t),e=this.blockList.getSplittableListInRange(t).toArray(),new this.constructor(e)},c.prototype.getStringAtRange=function(t){var e,n,o;return o=t=i(t),n=o[o.length-1],n!==this.getLength()&&(e=-1),this.getDocumentAtRange(t).toString().slice(0,e)},c.prototype.getBlockAtIndex=function(t){return this.blockList.getObjectAtIndex(t)},c.prototype.getBlockAtPosition=function(t){var e;return e=this.locationFromPosition(t).index,this.getBlockAtIndex(e)},c.prototype.getTextAtIndex=function(t){var e;return null!=(e=this.getBlockAtIndex(t))?e.text:void 0},c.prototype.getTextAtPosition=function(t){var e;return e=this.locationFromPosition(t).index,this.getTextAtIndex(e)},c.prototype.getPieceAtPosition=function(t){var e,n,i;return i=this.locationFromPosition(t),e=i.index,n=i.offset,this.getTextAtIndex(e).getPieceAtPosition(n)},c.prototype.getCharacterAtPosition=function(t){var e,n,i;return i=this.locationFromPosition(t),e=i.index,n=i.offset,this.getTextAtIndex(e).getStringAtRange([n,n+1])},c.prototype.getLength=function(){return this.blockList.getEndPosition()},c.prototype.getBlocks=function(){return this.blockList.toArray()},c.prototype.getBlockCount=function(){return this.blockList.length},c.prototype.getEditCount=function(){return this.editCount},c.prototype.eachBlock=function(t){return this.blockList.eachObject(t)},c.prototype.eachBlockAtRange=function(t,e){var n,o,r,s,a,u,c,l,h,p,d,f;if(u=t=i(t),d=u[0],r=u[1],p=this.locationFromPosition(d),o=this.locationFromPosition(r),p.index===o.index)return n=this.getBlockAtIndex(p.index),f=[p.offset,o.offset],e(n,f,p.index);for(h=[],a=s=c=p.index,l=o.index;l>=c?l>=s:s>=l;a=l>=c?++s:--s)(n=this.getBlockAtIndex(a))?(f=function(){switch(a){case p.index:return[p.offset,n.text.getLength()];case o.index:return[0,o.offset];default:return[0,n.text.getLength()]}}(),h.push(e(n,f,a))):h.push(void 0);return h},c.prototype.getCommonAttributesAtRange=function(t){var n,r,s;return r=(t=i(t))[0],o(t)?this.getCommonAttributesAtPosition(r):(s=[],n=[],this.eachBlockAtRange(t,function(t,e){return e[0]!==e[1]?(s.push(t.text.getCommonAttributesAtRange(e)),n.push(l(t))):void 0\n}),e.Hash.fromCommonAttributesOfObjects(s).merge(e.Hash.fromCommonAttributesOfObjects(n)).toObject())},c.prototype.getCommonAttributesAtPosition=function(t){var n,i,o,r,s,a,c,h,p,d;if(p=this.locationFromPosition(t),s=p.index,h=p.offset,o=this.getBlockAtIndex(s),!o)return{};r=l(o),n=o.text.getAttributesAtPosition(h),i=o.text.getAttributesAtPosition(h-1),a=function(){var t,n;t=e.config.textAttributes,n=[];for(c in t)d=t[c],d.inheritable&&n.push(c);return n}();for(c in i)d=i[c],(d===n[c]||u.call(a,c)>=0)&&(r[c]=d);return r},c.prototype.getRangeOfCommonAttributeAtPosition=function(t,e){var n,o,r,s,a,u,c,l,h;return a=this.locationFromPosition(e),r=a.index,s=a.offset,h=this.getTextAtIndex(r),u=h.getExpandedRangeForAttributeAtOffset(t,s),l=u[0],o=u[1],c=this.positionFromLocation({index:r,offset:l}),n=this.positionFromLocation({index:r,offset:o}),i([c,n])},c.prototype.getBaseBlockAttributes=function(){var t,e,n,i,o,r,s;for(t=this.getBlockAtIndex(0).getAttributes(),n=i=1,s=this.getBlockCount();s>=1?s>i:i>s;n=s>=1?++i:--i)e=this.getBlockAtIndex(n).getAttributes(),r=Math.min(t.length,e.length),t=function(){var n,i,s;for(s=[],o=n=0,i=r;(i>=0?i>n:n>i)&&e[o]===t[o];o=i>=0?++n:--n)s.push(e[o]);return s}();return t},l=function(t){var e,n;return n={},(e=t.getLastAttribute())&&(n[e]=!0),n},c.prototype.getAttachmentById=function(t){var e,n,i,o;for(o=this.getAttachments(),n=0,i=o.length;i>n;n++)if(e=o[n],e.id===t)return e},c.prototype.getAttachmentPieces=function(){var t;return t=[],this.blockList.eachObject(function(e){var n;return n=e.text,t=t.concat(n.getAttachmentPieces())}),t},c.prototype.getAttachments=function(){var t,e,n,i,o;for(i=this.getAttachmentPieces(),o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.attachment);return o},c.prototype.getRangeOfAttachment=function(t){var e,n,o,r,s,a,u;for(r=0,s=this.blockList.toArray(),n=e=0,o=s.length;o>e;n=++e){if(a=s[n].text,u=a.getRangeOfAttachment(t))return i([r+u[0],r+u[1]]);r+=a.getLength()}},c.prototype.getLocationRangeOfAttachment=function(t){var e;return e=this.getRangeOfAttachment(t),this.locationRangeFromRange(e)},c.prototype.getAttachmentPieceForAttachment=function(t){var e,n,i,o;for(o=this.getAttachmentPieces(),e=0,n=o.length;n>e;e++)if(i=o[e],i.attachment===t)return i},c.prototype.findRangesForBlockAttribute=function(t){var e,n,i,o,r,s,a;for(r=0,s=[],a=this.getBlocks(),n=0,i=a.length;i>n;n++)e=a[n],o=e.getLength(),e.hasAttribute(t)&&s.push([r,r+o]),r+=o;return s},c.prototype.findRangesForTextAttribute=function(t,e){var n,i,o,r,s,a,u,c,l,h;for(h=(null!=e?e:{}).withValue,a=0,u=[],c=[],r=function(e){return null!=h?e.getAttribute(t)===h:e.hasAttribute(t)},l=this.getPieces(),n=0,i=l.length;i>n;n++)s=l[n],o=s.getLength(),r(s)&&(u[1]===a?u[1]=a+o:c.push(u=[a,a+o])),a+=o;return c},c.prototype.locationFromPosition=function(t){var e,n;return n=this.blockList.findIndexAndOffsetAtPosition(Math.max(0,t)),null!=n.index?n:(e=this.getBlocks(),{index:e.length-1,offset:e[e.length-1].getLength()})},c.prototype.positionFromLocation=function(t){return this.blockList.findPositionAtIndexAndOffset(t.index,t.offset)},c.prototype.locationRangeFromPosition=function(t){return i(this.locationFromPosition(t))},c.prototype.locationRangeFromRange=function(t){var e,n,o,r;if(t=i(t))return r=t[0],n=t[1],o=this.locationFromPosition(r),e=this.locationFromPosition(n),i([o,e])},c.prototype.rangeFromLocationRange=function(t){var e,n;return t=i(t),e=this.positionFromLocation(t[0]),o(t)||(n=this.positionFromLocation(t[1])),i([e,n])},c.prototype.isEqualTo=function(t){return this.blockList.isEqualTo(null!=t?t.blockList:void 0)},c.prototype.getTexts=function(){var t,e,n,i,o;for(i=this.getBlocks(),o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(t.text);return o},c.prototype.getPieces=function(){var t,e,n,i,o;for(n=[],i=this.getTexts(),t=0,e=i.length;e>t;t++)o=i[t],n.push.apply(n,o.getPieces());return n},c.prototype.getObjects=function(){return this.getBlocks().concat(this.getTexts()).concat(this.getPieces())},c.prototype.toSerializableDocument=function(){var t;return t=[],this.blockList.eachObject(function(e){return t.push(e.copyWithText(e.text.toSerializableText()))}),new this.constructor(t)},c.prototype.toString=function(){return this.blockList.toString()},c.prototype.toJSON=function(){return this.blockList.toJSON()},c.prototype.toConsole=function(){var t;return JSON.stringify(function(){var e,n,i,o;for(i=this.blockList.toArray(),o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(JSON.parse(t.text.toConsole()));return o}.call(this))},c}(e.Object)}.call(this),function(){e.LineBreakInsertion=function(){function t(t){var e;this.composition=t,this.document=this.composition.document,e=this.composition.getSelectedRange(),this.startPosition=e[0],this.endPosition=e[1],this.startLocation=this.document.locationFromPosition(this.startPosition),this.endLocation=this.document.locationFromPosition(this.endPosition),this.block=this.document.getBlockAtIndex(this.endLocation.index),this.breaksOnReturn=this.block.breaksOnReturn(),this.previousCharacter=this.block.text.getStringAtPosition(this.endLocation.offset-1),this.nextCharacter=this.block.text.getStringAtPosition(this.endLocation.offset)}return t.prototype.shouldInsertBlockBreak=function(){return this.block.hasAttributes()&&this.block.isListItem()&&!this.block.isEmpty()?0!==this.startLocation.offset:this.breaksOnReturn&&\"\\n\"!==this.nextCharacter},t.prototype.shouldBreakFormattedBlock=function(){return this.block.hasAttributes()&&!this.block.isListItem()&&(this.breaksOnReturn&&\"\\n\"===this.nextCharacter||\"\\n\"===this.previousCharacter)},t.prototype.shouldDecreaseListLevel=function(){return this.block.hasAttributes()&&this.block.isListItem()&&this.block.isEmpty()},t.prototype.shouldPrependListItem=function(){return this.block.isListItem()&&0===this.startLocation.offset&&!this.block.isEmpty()},t.prototype.shouldRemoveLastBlockAttribute=function(){return this.block.hasAttributes()&&!this.block.isListItem()&&this.block.isEmpty()},t}()}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h=function(t,e){function n(){this.constructor=t}for(var i in e)p.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},p={}.hasOwnProperty;s=e.normalizeRange,c=e.rangesAreEqual,u=e.rangeIsCollapsed,a=e.objectsAreEqual,t=e.arrayStartsWith,l=e.summarizeArrayChange,i=e.getAllAttributeNames,o=e.getBlockConfig,r=e.getTextConfig,n=e.extend,e.Composition=function(p){function d(){this.document=new e.Document,this.attachments=[],this.currentAttributes={},this.revision=0}var f;return h(d,p),d.prototype.setDocument=function(t){var e;return t.isEqualTo(this.document)?void 0:(this.document=t,this.refreshAttachments(),this.revision++,null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidChangeDocument?e.compositionDidChangeDocument(t):void 0)},d.prototype.getSnapshot=function(){return{document:this.document,selectedRange:this.getSelectedRange()}},d.prototype.loadSnapshot=function(t){var n,i,o,r;return n=t.document,r=t.selectedRange,null!=(i=this.delegate)&&\"function\"==typeof i.compositionWillLoadSnapshot&&i.compositionWillLoadSnapshot(),this.setDocument(null!=n?n:new e.Document),this.setSelection(null!=r?r:[0,0]),null!=(o=this.delegate)&&\"function\"==typeof o.compositionDidLoadSnapshot?o.compositionDidLoadSnapshot():void 0},d.prototype.insertText=function(t,e){var n,i,o,r;return r=(null!=e?e:{updatePosition:!0}).updatePosition,i=this.getSelectedRange(),this.setDocument(this.document.insertTextAtRange(t,i)),o=i[0],n=o+t.getLength(),r&&this.setSelection(n),this.notifyDelegateOfInsertionAtRange([o,n])},d.prototype.insertBlock=function(t){var n;return null==t&&(t=new e.Block),n=new e.Document([t]),this.insertDocument(n)},d.prototype.insertDocument=function(t){var n,i,o;return null==t&&(t=new e.Document),i=this.getSelectedRange(),this.setDocument(this.document.insertDocumentAtRange(t,i)),o=i[0],n=o+t.getLength(),this.setSelection(n),this.notifyDelegateOfInsertionAtRange([o,n])},d.prototype.insertString=function(t,n){var i,o;return i=this.getCurrentTextAttributes(),o=e.Text.textForStringWithAttributes(t,i),this.insertText(o,n)},d.prototype.insertBlockBreak=function(){var t,e,n;return e=this.getSelectedRange(),this.setDocument(this.document.insertBlockBreakAtRange(e)),n=e[0],t=n+1,this.setSelection(t),this.notifyDelegateOfInsertionAtRange([n,t])},d.prototype.insertLineBreak=function(){var t,n;return n=new e.LineBreakInsertion(this),n.shouldDecreaseListLevel()?(this.decreaseListLevel(),this.setSelection(n.startPosition)):n.shouldPrependListItem()?(t=new e.Document([n.block.copyWithoutText()]),this.insertDocument(t)):n.shouldInsertBlockBreak()?this.insertBlockBreak():n.shouldRemoveLastBlockAttribute()?this.removeLastBlockAttribute():n.shouldBreakFormattedBlock()?this.breakFormattedBlock(n):this.insertString(\"\\n\")},d.prototype.insertHTML=function(t){var n,i,o,r;return n=e.Document.fromHTML(t),o=this.getSelectedRange(),this.setDocument(this.document.mergeDocumentAtRange(n,o)),r=o[0],i=r+n.getLength()-1,this.setSelection(i),this.notifyDelegateOfInsertionAtRange([r,i])},d.prototype.replaceHTML=function(t){var n,i,o;return n=e.Document.fromHTML(t).copyUsingObjectsFromDocument(this.document),i=this.getLocationRange({strict:!1}),o=this.document.rangeFromLocationRange(i),this.setDocument(n),this.setSelection(o)},d.prototype.insertFile=function(t){return this.insertFiles([t])},d.prototype.insertFiles=function(t){var n,i,o,r,s,a;for(i=[],r=0,s=t.length;s>r;r++)o=t[r],(null!=(a=this.delegate)?a.compositionShouldAcceptFile(o):void 0)&&(n=e.Attachment.attachmentForFile(o),i.push(n));return this.insertAttachments(i)},d.prototype.insertAttachment=function(t){return this.insertAttachments([t])},d.prototype.insertAttachments=function(t){var n,i,o,r,s,a,u,c,l;for(c=new e.Text,r=0,s=t.length;s>r;r++)n=t[r],l=n.getType(),a=null!=(u=e.config.attachments[l])?u.presentation:void 0,o=this.getCurrentTextAttributes(),a&&(o.presentation=a),i=e.Text.textForAttachmentWithAttributes(n,o),c=c.appendText(i);return this.insertText(c)},d.prototype.shouldManageDeletingInDirection=function(t){var e;if(e=this.getLocationRange(),u(e)){if(\"backward\"===t&&0===e[0].offset)return!0;if(this.shouldManageMovingCursorInDirection(t))return!0}else if(e[0].index!==e[1].index)return!0;return!1},d.prototype.deleteInDirection=function(t,e){var n,i,o,r,s,a,c,l;return r=(null!=e?e:{}).length,s=this.getLocationRange(),a=this.getSelectedRange(),c=u(a),c?o=\"backward\"===t&&0===s[0].offset:l=s[0].index!==s[1].index,o&&this.canDecreaseBlockAttributeLevel()&&(i=this.getBlock(),i.isListItem()?this.decreaseListLevel():this.decreaseBlockAttributeLevel(),this.setSelection(a[0]),i.isEmpty())?!1:(c&&(a=this.getExpandedRangeInDirection(t,{length:r}),\"backward\"===t&&(n=this.getAttachmentAtRange(a))),n?(this.editAttachment(n),!1):(this.setDocument(this.document.removeTextAtRange(a)),this.setSelection(a[0]),o||l?!1:void 0))},d.prototype.moveTextFromRange=function(t){var e;return e=this.getSelectedRange()[0],this.setDocument(this.document.moveTextFromRangeToPosition(t,e)),this.setSelection(e)},d.prototype.removeAttachment=function(t){var e;return(e=this.document.getRangeOfAttachment(t))?(this.stopEditingAttachment(),this.setDocument(this.document.removeTextAtRange(e)),this.setSelection(e[0])):void 0},d.prototype.removeLastBlockAttribute=function(){var t,e,n,i;return n=this.getSelectedRange(),i=n[0],e=n[1],t=this.document.getBlockAtPosition(e),this.removeCurrentAttribute(t.getLastAttribute()),this.setSelection(i)},f=\" \",d.prototype.insertPlaceholder=function(){return this.placeholderPosition=this.getPosition(),this.insertString(f)},d.prototype.selectPlaceholder=function(){return null!=this.placeholderPosition?(this.setSelectedRange([this.placeholderPosition,this.placeholderPosition+f.length]),this.getSelectedRange()):void 0},d.prototype.forgetPlaceholder=function(){return this.placeholderPosition=null},d.prototype.hasCurrentAttribute=function(t){var e;return e=this.currentAttributes[t],null!=e&&e!==!1},d.prototype.toggleCurrentAttribute=function(t){var e;return(e=!this.currentAttributes[t])?this.setCurrentAttribute(t,e):this.removeCurrentAttribute(t)},d.prototype.canSetCurrentAttribute=function(t){return o(t)?this.canSetCurrentBlockAttribute(t):this.canSetCurrentTextAttribute(t)},d.prototype.canSetCurrentTextAttribute=function(){var t,e,n,i,o;if(e=this.getSelectedDocument()){for(o=e.getAttachments(),n=0,i=o.length;i>n;n++)if(t=o[n],!t.hasContent())return!1;return!0}},d.prototype.canSetCurrentBlockAttribute=function(){var t;if(t=this.getBlock())return!t.isTerminalBlock()},d.prototype.setCurrentAttribute=function(t,e){return o(t)?this.setBlockAttribute(t,e):(this.setTextAttribute(t,e),this.currentAttributes[t]=e,this.notifyDelegateOfCurrentAttributesChange())},d.prototype.setTextAttribute=function(t,n){var i,o,r,s;if(o=this.getSelectedRange())return r=o[0],i=o[1],r!==i?this.setDocument(this.document.addAttributeAtRange(t,n,o)):\"href\"===t?(s=e.Text.textForStringWithAttributes(n,{href:n}),this.insertText(s)):void 0},d.prototype.setBlockAttribute=function(t,e){var n,i;if(i=this.getSelectedRange())return this.canSetCurrentAttribute(t)?(n=this.getBlock(),this.setDocument(this.document.applyBlockAttributeAtRange(t,e,i)),this.setSelection(i)):void 0},d.prototype.removeCurrentAttribute=function(t){return o(t)?(this.removeBlockAttribute(t),this.updateCurrentAttributes()):(this.removeTextAttribute(t),delete this.currentAttributes[t],this.notifyDelegateOfCurrentAttributesChange())},d.prototype.removeTextAttribute=function(t){var e;if(e=this.getSelectedRange())return this.setDocument(this.document.removeAttributeAtRange(t,e))},d.prototype.removeBlockAttribute=function(t){var e;if(e=this.getSelectedRange())return this.setDocument(this.document.removeAttributeAtRange(t,e))},d.prototype.canDecreaseNestingLevel=function(){var t;return(null!=(t=this.getBlock())?t.getNestingLevel():void 0)>0},d.prototype.canIncreaseNestingLevel=function(){var e,n,i;if(e=this.getBlock())return(null!=(i=o(e.getLastNestableAttribute()))?i.listAttribute:0)?(n=this.getPreviousBlock())?t(n.getListItemAttributes(),e.getListItemAttributes()):void 0:e.getNestingLevel()>0},d.prototype.decreaseNestingLevel=function(){var t;if(t=this.getBlock())return this.setDocument(this.document.replaceBlock(t,t.decreaseNestingLevel()))},d.prototype.increaseNestingLevel=function(){var t;if(t=this.getBlock())return this.setDocument(this.document.replaceBlock(t,t.increaseNestingLevel()))},d.prototype.canDecreaseBlockAttributeLevel=function(){var t;return(null!=(t=this.getBlock())?t.getAttributeLevel():void 0)>0},d.prototype.decreaseBlockAttributeLevel=function(){var t,e;return(t=null!=(e=this.getBlock())?e.getLastAttribute():void 0)?this.removeCurrentAttribute(t):void 0},d.prototype.decreaseListLevel=function(){var t,e,n,i,o,r;for(r=this.getSelectedRange()[0],o=this.document.locationFromPosition(r).index,n=o,t=this.getBlock().getAttributeLevel();(e=this.document.getBlockAtIndex(n+1))&&e.isListItem()&&e.getAttributeLevel()>t;)n++;return r=this.document.positionFromLocation({index:o,offset:0}),i=this.document.positionFromLocation({index:n,offset:0}),this.setDocument(this.document.removeLastListAttributeAtRange([r,i]))},d.prototype.updateCurrentAttributes=function(){var t,e,n,o,r,s;if(s=this.getSelectedRange({ignoreLock:!0})){for(e=this.document.getCommonAttributesAtRange(s),r=i(),n=0,o=r.length;o>n;n++)t=r[n],e[t]||this.canSetCurrentAttribute(t)||(e[t]=!1);if(!a(e,this.currentAttributes))return this.currentAttributes=e,this.notifyDelegateOfCurrentAttributesChange()}},d.prototype.getCurrentAttributes=function(){return n.call({},this.currentAttributes)},d.prototype.getCurrentTextAttributes=function(){var t,e,n,i;t={},n=this.currentAttributes;for(e in n)i=n[e],i!==!1&&r(e)&&(t[e]=i);return t},d.prototype.freezeSelection=function(){return this.setCurrentAttribute(\"frozen\",!0)},d.prototype.thawSelection=function(){return this.removeCurrentAttribute(\"frozen\")},d.prototype.hasFrozenSelection=function(){return this.hasCurrentAttribute(\"frozen\")},d.proxyMethod(\"getSelectionManager().getPointRange\"),d.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\"),d.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\"),d.proxyMethod(\"getSelectionManager().locationIsCursorTarget\"),d.proxyMethod(\"getSelectionManager().selectionIsExpanded\"),d.proxyMethod(\"delegate?.getSelectionManager\"),d.prototype.setSelection=function(t){var e,n;return e=this.document.locationRangeFromRange(t),null!=(n=this.delegate)?n.compositionDidRequestChangingSelectionToLocationRange(e):void 0},d.prototype.getSelectedRange=function(){var t;return(t=this.getLocationRange())?this.document.rangeFromLocationRange(t):void 0},d.prototype.setSelectedRange=function(t){var e;return e=this.document.locationRangeFromRange(t),this.getSelectionManager().setLocationRange(e)},d.prototype.getPosition=function(){var t;return(t=this.getLocationRange())?this.document.positionFromLocation(t[0]):void 0},d.prototype.getLocationRange=function(t){var e,n;return null!=(e=null!=(n=this.targetLocationRange)?n:this.getSelectionManager().getLocationRange(t))?e:s({index:0,offset:0})},d.prototype.withTargetLocationRange=function(t,e){var n;this.targetLocationRange=t;try{n=e()}finally{this.targetLocationRange=null}return n},d.prototype.withTargetRange=function(t,e){var n;return n=this.document.locationRangeFromRange(t),this.withTargetLocationRange(n,e)},d.prototype.withTargetDOMRange=function(t,e){var n;return n=this.createLocationRangeFromDOMRange(t,{strict:!1}),this.withTargetLocationRange(n,e)},d.prototype.getExpandedRangeInDirection=function(t,e){var n,i,o,r;return i=(null!=e?e:{}).length,o=this.getSelectedRange(),r=o[0],n=o[1],\"backward\"===t?i?r-=i:r=this.translateUTF16PositionFromOffset(r,-1):i?n+=i:n=this.translateUTF16PositionFromOffset(n,1),s([r,n])},d.prototype.shouldManageMovingCursorInDirection=function(t){var e;return this.editingAttachment?!0:(e=this.getExpandedRangeInDirection(t),null!=this.getAttachmentAtRange(e))},d.prototype.moveCursorInDirection=function(t){var e,n,i,o;return this.editingAttachment?i=this.document.getRangeOfAttachment(this.editingAttachment):(o=this.getSelectedRange(),i=this.getExpandedRangeInDirection(t),n=!c(o,i)),this.setSelectedRange(\"backward\"===t?i[0]:i[1]),n&&(e=this.getAttachmentAtRange(i))?this.editAttachment(e):void 0},d.prototype.expandSelectionInDirection=function(t,e){var n,i;return n=(null!=e?e:{}).length,i=this.getExpandedRangeInDirection(t,{length:n}),this.setSelectedRange(i)},d.prototype.expandSelectionForEditing=function(){return this.hasCurrentAttribute(\"href\")?this.expandSelectionAroundCommonAttribute(\"href\"):void 0},d.prototype.expandSelectionAroundCommonAttribute=function(t){var e,n;return e=this.getPosition(),n=this.document.getRangeOfCommonAttributeAtPosition(t,e),this.setSelectedRange(n)},d.prototype.selectionContainsAttachments=function(){var t;return(null!=(t=this.getSelectedAttachments())?t.length:void 0)>0},d.prototype.selectionIsInCursorTarget=function(){return this.editingAttachment||this.positionIsCursorTarget(this.getPosition())},d.prototype.positionIsCursorTarget=function(t){var e;return(e=this.document.locationFromPosition(t))?this.locationIsCursorTarget(e):void 0},d.prototype.positionIsBlockBreak=function(t){var e;return null!=(e=this.document.getPieceAtPosition(t))?e.isBlockBreak():void 0},d.prototype.getSelectedDocument=function(){var t;return(t=this.getSelectedRange())?this.document.getDocumentAtRange(t):void 0},d.prototype.getSelectedAttachments=function(){var t;return null!=(t=this.getSelectedDocument())?t.getAttachments():void 0},d.prototype.getAttachments=function(){return this.attachments.slice(0)},d.prototype.refreshAttachments=function(){var t,e,n,i,o,r,s,a,u,c,h,p;for(n=this.document.getAttachments(),a=l(this.attachments,n),t=a.added,h=a.removed,this.attachments=n,i=0,r=h.length;r>i;i++)e=h[i],e.delegate=null,null!=(u=this.delegate)&&\"function\"==typeof u.compositionDidRemoveAttachment&&u.compositionDidRemoveAttachment(e);for(p=[],o=0,s=t.length;s>o;o++)e=t[o],e.delegate=this,p.push(null!=(c=this.delegate)&&\"function\"==typeof c.compositionDidAddAttachment?c.compositionDidAddAttachment(e):void 0);return p},d.prototype.attachmentDidChangeAttributes=function(t){var e;return this.revision++,null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidEditAttachment?e.compositionDidEditAttachment(t):void 0},d.prototype.attachmentDidChangePreviewURL=function(t){var e;return this.revision++,null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidChangeAttachmentPreviewURL?e.compositionDidChangeAttachmentPreviewURL(t):void 0},d.prototype.editAttachment=function(t,e){var n;if(t!==this.editingAttachment)return this.stopEditingAttachment(),this.editingAttachment=t,null!=(n=this.delegate)&&\"function\"==typeof n.compositionDidStartEditingAttachment?n.compositionDidStartEditingAttachment(this.editingAttachment,e):void 0},d.prototype.stopEditingAttachment=function(){var t;if(this.editingAttachment)return null!=(t=this.delegate)&&\"function\"==typeof t.compositionDidStopEditingAttachment&&t.compositionDidStopEditingAttachment(this.editingAttachment),this.editingAttachment=null},d.prototype.updateAttributesForAttachment=function(t,e){return this.setDocument(this.document.updateAttributesForAttachment(t,e))},d.prototype.removeAttributeForAttachment=function(t,e){return this.setDocument(this.document.removeAttributeForAttachment(t,e))},d.prototype.breakFormattedBlock=function(t){var n,i,o,r,s;return i=t.document,n=t.block,r=t.startPosition,s=[r-1,r],n.getBlockBreakPosition()===t.startLocation.offset?(n.breaksOnReturn()&&\"\\n\"===t.nextCharacter?r+=1:i=i.removeTextAtRange(s),s=[r,r]):\"\\n\"===t.nextCharacter?\"\\n\"===t.previousCharacter?s=[r-1,r+1]:(s=[r,r+1],r+=1):t.startLocation.offset-1!==0&&(r+=1),o=new e.Document([n.removeLastAttribute().copyWithoutText()]),this.setDocument(i.insertDocumentAtRange(o,s)),this.setSelection(r)},d.prototype.getPreviousBlock=function(){var t,e;return(e=this.getLocationRange())&&(t=e[0].index,t>0)?this.document.getBlockAtIndex(t-1):void 0},d.prototype.getBlock=function(){var t;return(t=this.getLocationRange())?this.document.getBlockAtIndex(t[0].index):void 0},d.prototype.getAttachmentAtRange=function(t){var n;return n=this.document.getDocumentAtRange(t),n.toString()===e.OBJECT_REPLACEMENT_CHARACTER+\"\\n\"?n.getAttachments()[0]:void 0},d.prototype.notifyDelegateOfCurrentAttributesChange=function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.compositionDidChangeCurrentAttributes?t.compositionDidChangeCurrentAttributes(this.currentAttributes):void 0},d.prototype.notifyDelegateOfInsertionAtRange=function(t){var e;return null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidPerformInsertionAtRange?e.compositionDidPerformInsertionAtRange(t):void 0},d.prototype.translateUTF16PositionFromOffset=function(t,e){var n,i;return i=this.document.toUTF16String(),n=i.offsetFromUCS2Offset(t),i.offsetToUCS2Offset(n+e)},d}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.UndoManager=function(e){function n(t){this.composition=t,this.undoEntries=[],this.redoEntries=[]}var i;return t(n,e),n.prototype.recordUndoEntry=function(t,e){var n,o,r,s,a;return s=null!=e?e:{},o=s.context,n=s.consolidatable,r=this.undoEntries.slice(-1)[0],n&&i(r,t,o)?void 0:(a=this.createEntry({description:t,context:o}),this.undoEntries.push(a),this.redoEntries=[])},n.prototype.undo=function(){var t,e;return(e=this.undoEntries.pop())?(t=this.createEntry(e),this.redoEntries.push(t),this.composition.loadSnapshot(e.snapshot)):void 0},n.prototype.redo=function(){var t,e;return(t=this.redoEntries.pop())?(e=this.createEntry(t),this.undoEntries.push(e),this.composition.loadSnapshot(t.snapshot)):void 0},n.prototype.canUndo=function(){return this.undoEntries.length>0},n.prototype.canRedo=function(){return this.redoEntries.length>0},n.prototype.createEntry=function(t){var e,n,i;return i=null!=t?t:{},n=i.description,e=i.context,{description:null!=n?n.toString():void 0,context:JSON.stringify(e),snapshot:this.composition.getSnapshot()}},i=function(t,e,n){return(null!=t?t.description:void 0)===(null!=e?e.toString():void 0)&&(null!=t?t.context:void 0)===JSON.stringify(n)},n}(e.BasicObject)}.call(this),function(){var t;e.attachmentGalleryFilter=function(e){var n;return n=new t(e),n.perform(),n.getSnapshot()},t=function(){function t(t){this.document=t.document,this.selectedRange=t.selectedRange}var e,n,i;return e=\"attachmentGallery\",n=\"presentation\",i=\"gallery\",t.prototype.perform=function(){return this.removeBlockAttribute(),this.applyBlockAttribute()},t.prototype.getSnapshot=function(){return{document:this.document,selectedRange:this.selectedRange}},t.prototype.removeBlockAttribute=function(){var t,n,i,o,r;for(o=this.findRangesOfBlocks(),r=[],t=0,n=o.length;n>t;t++)i=o[t],r.push(this.document=this.document.removeAttributeAtRange(e,i));return r},t.prototype.applyBlockAttribute=function(){var t,n,i,o,r,s;for(i=0,r=this.findRangesOfPieces(),s=[],t=0,n=r.length;n>t;t++)o=r[t],o[1]-o[0]>1&&(o[0]+=i,o[1]+=i,\"\\n\"!==this.document.getCharacterAtPosition(o[1])&&(this.document=this.document.insertBlockBreakAtRange(o[1]),o[1]<this.selectedRange[1]&&this.moveSelectedRangeForward(),o[1]++,i++),0!==o[0]&&\"\\n\"!==this.document.getCharacterAtPosition(o[0]-1)&&(this.document=this.document.insertBlockBreakAtRange(o[0]),o[0]<this.selectedRange[0]&&this.moveSelectedRangeForward(),o[0]++,i++),s.push(this.document=this.document.applyBlockAttributeAtRange(e,!0,o)));return s},t.prototype.findRangesOfBlocks=function(){return this.document.findRangesForBlockAttribute(e)},t.prototype.findRangesOfPieces=function(){return this.document.findRangesForTextAttribute(n,{withValue:i})},t.prototype.moveSelectedRangeForward=function(){return this.selectedRange[0]+=1,this.selectedRange[1]+=1},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.Editor=function(){function n(n,o,r){this.composition=n,this.selectionManager=o,this.element=r,this.insertFiles=t(this.insertFiles,this),this.undoManager=new e.UndoManager(this.composition),this.filters=i.slice(0)}var i;return i=[e.attachmentGalleryFilter],n.prototype.loadDocument=function(t){return this.loadSnapshot({document:t,selectedRange:[0,0]})},n.prototype.loadHTML=function(t){return null==t&&(t=\"\"),this.loadDocument(e.Document.fromHTML(t,{referenceElement:this.element}))},n.prototype.loadJSON=function(t){var n,i;return n=t.document,i=t.selectedRange,n=e.Document.fromJSON(n),this.loadSnapshot({document:n,selectedRange:i})},n.prototype.loadSnapshot=function(t){return this.undoManager=new e.UndoManager(this.composition),this.composition.loadSnapshot(t)},n.prototype.getDocument=function(){return this.composition.document},n.prototype.getSelectedDocument=function(){return this.composition.getSelectedDocument()},n.prototype.getSnapshot=function(){return this.composition.getSnapshot()},n.prototype.toJSON=function(){return this.getSnapshot()},n.prototype.deleteInDirection=function(t){return this.composition.deleteInDirection(t)},n.prototype.insertAttachment=function(t){return this.composition.insertAttachment(t)},n.prototype.insertAttachments=function(t){return this.composition.insertAttachments(t)},n.prototype.insertDocument=function(t){return this.composition.insertDocument(t)},n.prototype.insertFile=function(t){return this.composition.insertFile(t)},n.prototype.insertFiles=function(t){return this.composition.insertFiles(t)},n.prototype.insertHTML=function(t){return this.composition.insertHTML(t)},n.prototype.insertString=function(t){return this.composition.insertString(t)},n.prototype.insertText=function(t){return this.composition.insertText(t)},n.prototype.insertLineBreak=function(){return this.composition.insertLineBreak()},n.prototype.getSelectedRange=function(){return this.composition.getSelectedRange()},n.prototype.getPosition=function(){return this.composition.getPosition()},n.prototype.getClientRectAtPosition=function(t){var e;return e=this.getDocument().locationRangeFromRange([t,t+1]),this.selectionManager.getClientRectAtLocationRange(e)},n.prototype.expandSelectionInDirection=function(t){return this.composition.expandSelectionInDirection(t)},n.prototype.moveCursorInDirection=function(t){return this.composition.moveCursorInDirection(t)},n.prototype.setSelectedRange=function(t){return this.composition.setSelectedRange(t)},n.prototype.activateAttribute=function(t,e){return null==e&&(e=!0),this.composition.setCurrentAttribute(t,e)},n.prototype.attributeIsActive=function(t){return this.composition.hasCurrentAttribute(t)},n.prototype.canActivateAttribute=function(t){return this.composition.canSetCurrentAttribute(t)},n.prototype.deactivateAttribute=function(t){return this.composition.removeCurrentAttribute(t)},n.prototype.canDecreaseNestingLevel=function(){return this.composition.canDecreaseNestingLevel()},n.prototype.canIncreaseNestingLevel=function(){return this.composition.canIncreaseNestingLevel()},n.prototype.decreaseNestingLevel=function(){return this.canDecreaseNestingLevel()?this.composition.decreaseNestingLevel():void 0},n.prototype.increaseNestingLevel=function(){return this.canIncreaseNestingLevel()?this.composition.increaseNestingLevel():void 0},n.prototype.canRedo=function(){return this.undoManager.canRedo()},n.prototype.canUndo=function(){return this.undoManager.canUndo()},n.prototype.recordUndoEntry=function(t,e){var n,i,o;return o=null!=e?e:{},i=o.context,n=o.consolidatable,this.undoManager.recordUndoEntry(t,{context:i,consolidatable:n})},n.prototype.redo=function(){return this.canRedo()?this.undoManager.redo():void 0},n.prototype.undo=function(){return this.canUndo()?this.undoManager.undo():void 0},n}()}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ManagedAttachment=function(e){function n(t,e){var n;this.attachmentManager=t,this.attachment=e,n=this.attachment,this.id=n.id,this.file=n.file}return t(n,e),n.prototype.remove=function(){return this.attachmentManager.requestRemovalOfAttachment(this.attachment)},n.proxyMethod(\"attachment.getAttribute\"),n.proxyMethod(\"attachment.hasAttribute\"),n.proxyMethod(\"attachment.setAttribute\"),n.proxyMethod(\"attachment.getAttributes\"),n.proxyMethod(\"attachment.setAttributes\"),n.proxyMethod(\"attachment.isPending\"),n.proxyMethod(\"attachment.isPreviewable\"),n.proxyMethod(\"attachment.getURL\"),n.proxyMethod(\"attachment.getHref\"),n.proxyMethod(\"attachment.getFilename\"),n.proxyMethod(\"attachment.getFilesize\"),n.proxyMethod(\"attachment.getFormattedFilesize\"),n.proxyMethod(\"attachment.getExtension\"),n.proxyMethod(\"attachment.getContentType\"),n.proxyMethod(\"attachment.getFile\"),n.proxyMethod(\"attachment.setFile\"),n.proxyMethod(\"attachment.releaseFile\"),n.proxyMethod(\"attachment.getUploadProgress\"),n.proxyMethod(\"attachment.setUploadProgress\"),n}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.AttachmentManager=function(n){function i(t){var e,n,i;for(null==t&&(t=[]),this.managedAttachments={},n=0,i=t.length;i>n;n++)e=t[n],this.manageAttachment(e)}return t(i,n),i.prototype.getAttachments=function(){var t,e,n,i;n=this.managedAttachments,i=[];for(e in n)t=n[e],i.push(t);return i},i.prototype.manageAttachment=function(t){var n,i;return null!=(n=this.managedAttachments)[i=t.id]?n[i]:n[i]=new e.ManagedAttachment(this,t)},i.prototype.attachmentIsManaged=function(t){return t.id in this.managedAttachments},i.prototype.requestRemovalOfAttachment=function(t){var e;return this.attachmentIsManaged(t)&&null!=(e=this.delegate)&&\"function\"==typeof e.attachmentManagerDidRequestRemovalOfAttachment?e.attachmentManagerDidRequestRemovalOfAttachment(t):void 0},i.prototype.unmanageAttachment=function(t){var e;return e=this.managedAttachments[t.id],delete this.managedAttachments[t.id],e},i}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h;t=e.elementContainsNode,n=e.findChildIndexOfNode,r=e.nodeIsBlockStart,s=e.nodeIsBlockStartComment,o=e.nodeIsBlockContainer,a=e.nodeIsCursorTarget,u=e.nodeIsEmptyTextNode,c=e.nodeIsTextNode,i=e.nodeIsAttachmentElement,l=e.tagName,h=e.walkTree,e.LocationMapper=function(){function e(t){this.element=t}var p,d,f,g;return e.prototype.findLocationFromContainerAndOffset=function(e,i,o){var s,u,l,p,g,m,v;for(m=(null!=o?o:{strict:!0}).strict,u=0,l=!1,p={index:0,offset:0},(s=this.findAttachmentElementParentForNode(e))&&(e=s.parentNode,i=n(s)),v=h(this.element,{usingFilter:f});v.nextNode();){if(g=v.currentNode,g===e&&c(e)){a(g)||(p.offset+=i);\nbreak}if(g.parentNode===e){if(u++===i)break}else if(!t(e,g)&&u>0)break;r(g,{strict:m})?(l&&p.index++,p.offset=0,l=!0):p.offset+=d(g)}return p},e.prototype.findContainerAndOffsetFromLocation=function(t){var e,i,s,u,l;if(0===t.index&&0===t.offset){for(e=this.element,u=0;e.firstChild;)if(e=e.firstChild,o(e)){u=1;break}return[e,u]}if(l=this.findNodeAndOffsetFromLocation(t),i=l[0],s=l[1],i){if(c(i))0===d(i)?(e=i.parentNode.parentNode,u=n(i.parentNode),a(i,{name:\"right\"})&&u++):(e=i,u=t.offset-s);else{if(e=i.parentNode,!r(i.previousSibling)&&!o(e))for(;i===e.lastChild&&(i=e,e=e.parentNode,!o(e)););u=n(i),0!==t.offset&&u++}return[e,u]}},e.prototype.findNodeAndOffsetFromLocation=function(t){var e,n,i,o,r,s,u,l;for(u=0,l=this.getSignificantNodesForIndex(t.index),n=0,i=l.length;i>n;n++){if(e=l[n],o=d(e),t.offset<=u+o)if(c(e)){if(r=e,s=u,t.offset===s&&a(r))break}else r||(r=e,s=u);if(u+=o,u>t.offset)break}return[r,s]},e.prototype.findAttachmentElementParentForNode=function(t){for(;t&&t!==this.element;){if(i(t))return t;t=t.parentNode}},e.prototype.getSignificantNodesForIndex=function(t){var e,n,i,o,r;for(i=[],r=h(this.element,{usingFilter:p}),o=!1;r.nextNode();)if(n=r.currentNode,s(n)){if(\"undefined\"!=typeof e&&null!==e?e++:e=0,e===t)o=!0;else if(o)break}else o&&i.push(n);return i},d=function(t){var e;return t.nodeType===Node.TEXT_NODE?a(t)?0:(e=t.textContent,e.length):\"br\"===l(t)||i(t)?1:0},p=function(t){return g(t)===NodeFilter.FILTER_ACCEPT?f(t):NodeFilter.FILTER_REJECT},g=function(t){return u(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},f=function(t){return i(t.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},e}()}.call(this),function(){var t,n,i=[].slice;t=e.getDOMRange,n=e.setDOMRange,e.PointMapper=function(){function e(){}return e.prototype.createDOMRangeFromPoint=function(e){var i,o,r,s,a,u,c,l;if(c=e.x,l=e.y,document.caretPositionFromPoint)return a=document.caretPositionFromPoint(c,l),r=a.offsetNode,o=a.offset,i=document.createRange(),i.setStart(r,o),i;if(document.caretRangeFromPoint)return document.caretRangeFromPoint(c,l);if(document.body.createTextRange){s=t();try{u=document.body.createTextRange(),u.moveToPoint(c,l),u.select()}catch(h){}return i=t(),n(s),i}},e.prototype.getClientRectsForDOMRange=function(t){var e,n,o;return n=i.call(t.getClientRects()),o=n[0],e=n[n.length-1],[o,e]},e}()}.call(this),function(){var t,n=function(t,e){return function(){return t.apply(e,arguments)}},i=function(t,e){function n(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty,r=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.getDOMRange,e.SelectionChangeObserver=function(e){function o(){this.run=n(this.run,this),this.update=n(this.update,this),this.selectionManagers=[]}var s;return i(o,e),o.prototype.start=function(){return this.started?void 0:(this.started=!0,\"onselectionchange\"in document?document.addEventListener(\"selectionchange\",this.update,!0):this.run())},o.prototype.stop=function(){return this.started?(this.started=!1,document.removeEventListener(\"selectionchange\",this.update,!0)):void 0},o.prototype.registerSelectionManager=function(t){return r.call(this.selectionManagers,t)<0?(this.selectionManagers.push(t),this.start()):void 0},o.prototype.unregisterSelectionManager=function(t){var e;return this.selectionManagers=function(){var n,i,o,r;for(o=this.selectionManagers,r=[],n=0,i=o.length;i>n;n++)e=o[n],e!==t&&r.push(e);return r}.call(this),0===this.selectionManagers.length?this.stop():void 0},o.prototype.notifySelectionManagersOfSelectionChange=function(){var t,e,n,i,o;for(n=this.selectionManagers,i=[],t=0,e=n.length;e>t;t++)o=n[t],i.push(o.selectionDidChange());return i},o.prototype.update=function(){var e;return e=t(),s(e,this.domRange)?void 0:(this.domRange=e,this.notifySelectionManagersOfSelectionChange())},o.prototype.reset=function(){return this.domRange=null,this.update()},o.prototype.run=function(){return this.started?(this.update(),requestAnimationFrame(this.run)):void 0},s=function(t,e){return(null!=t?t.startContainer:void 0)===(null!=e?e.startContainer:void 0)&&(null!=t?t.startOffset:void 0)===(null!=e?e.startOffset:void 0)&&(null!=t?t.endContainer:void 0)===(null!=e?e.endContainer:void 0)&&(null!=t?t.endOffset:void 0)===(null!=e?e.endOffset:void 0)},o}(e.BasicObject),null==e.selectionChangeObserver&&(e.selectionChangeObserver=new e.SelectionChangeObserver)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h=function(t,e){return function(){return t.apply(e,arguments)}},p=function(t,e){function n(){this.constructor=t}for(var i in e)d.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},d={}.hasOwnProperty;i=e.getDOMSelection,n=e.getDOMRange,l=e.setDOMRange,t=e.elementContainsNode,s=e.nodeIsCursorTarget,r=e.innerElementIsActive,o=e.handleEvent,a=e.normalizeRange,u=e.rangeIsCollapsed,c=e.rangesAreEqual,e.SelectionManager=function(d){function f(t){this.element=t,this.selectionDidChange=h(this.selectionDidChange,this),this.didMouseDown=h(this.didMouseDown,this),this.locationMapper=new e.LocationMapper(this.element),this.pointMapper=new e.PointMapper,this.lockCount=0,o(\"mousedown\",{onElement:this.element,withCallback:this.didMouseDown})}return p(f,d),f.prototype.getLocationRange=function(t){var e,i;return null==t&&(t={}),e=t.strict===!1?this.createLocationRangeFromDOMRange(n(),{strict:!1}):t.ignoreLock?this.currentLocationRange:null!=(i=this.lockedLocationRange)?i:this.currentLocationRange},f.prototype.setLocationRange=function(t){var e;if(!this.lockedLocationRange)return t=a(t),(e=this.createDOMRangeFromLocationRange(t))?(l(e),this.updateCurrentLocationRange(t)):void 0},f.prototype.setLocationRangeFromPointRange=function(t){var e,n;return t=a(t),n=this.getLocationAtPoint(t[0]),e=this.getLocationAtPoint(t[1]),this.setLocationRange([n,e])},f.prototype.getClientRectAtLocationRange=function(t){var e;return(e=this.createDOMRangeFromLocationRange(t))?this.getClientRectsForDOMRange(e)[1]:void 0},f.prototype.locationIsCursorTarget=function(t){var e,n,i;return i=this.findNodeAndOffsetFromLocation(t),e=i[0],n=i[1],s(e)},f.prototype.lock=function(){return 0===this.lockCount++?(this.updateCurrentLocationRange(),this.lockedLocationRange=this.getLocationRange()):void 0},f.prototype.unlock=function(){var t;return 0===--this.lockCount&&(t=this.lockedLocationRange,this.lockedLocationRange=null,null!=t)?this.setLocationRange(t):void 0},f.prototype.clearSelection=function(){var t;return null!=(t=i())?t.removeAllRanges():void 0},f.prototype.selectionIsCollapsed=function(){var t;return(null!=(t=n())?t.collapsed:void 0)===!0},f.prototype.selectionIsExpanded=function(){return!this.selectionIsCollapsed()},f.prototype.createLocationRangeFromDOMRange=function(t,e){var n,i;if(null!=t&&this.domRangeWithinElement(t)&&(i=this.findLocationFromContainerAndOffset(t.startContainer,t.startOffset,e)))return t.collapsed||(n=this.findLocationFromContainerAndOffset(t.endContainer,t.endOffset,e)),a([i,n])},f.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\"),f.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\"),f.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\"),f.proxyMethod(\"pointMapper.createDOMRangeFromPoint\"),f.proxyMethod(\"pointMapper.getClientRectsForDOMRange\"),f.prototype.didMouseDown=function(){return this.pauseTemporarily()},f.prototype.pauseTemporarily=function(){var e,n,i,r;return this.paused=!0,n=function(e){return function(){var n,o,s;for(e.paused=!1,clearTimeout(r),o=0,s=i.length;s>o;o++)n=i[o],n.destroy();return t(document,e.element)?e.selectionDidChange():void 0}}(this),r=setTimeout(n,200),i=function(){var t,i,r,s;for(r=[\"mousemove\",\"keydown\"],s=[],t=0,i=r.length;i>t;t++)e=r[t],s.push(o(e,{onElement:document,withCallback:n}));return s}()},f.prototype.selectionDidChange=function(){return this.paused||r(this.element)?void 0:this.updateCurrentLocationRange()},f.prototype.updateCurrentLocationRange=function(t){var e;return(null!=t?t:t=this.createLocationRangeFromDOMRange(n()))&&!c(t,this.currentLocationRange)?(this.currentLocationRange=t,null!=(e=this.delegate)&&\"function\"==typeof e.locationRangeDidChange?e.locationRangeDidChange(this.currentLocationRange.slice(0)):void 0):void 0},f.prototype.createDOMRangeFromLocationRange=function(t){var e,n,i,o;return i=this.findContainerAndOffsetFromLocation(t[0]),n=u(t)?i:null!=(o=this.findContainerAndOffsetFromLocation(t[1]))?o:i,null!=i&&null!=n?(e=document.createRange(),e.setStart.apply(e,i),e.setEnd.apply(e,n),e):void 0},f.prototype.getLocationAtPoint=function(t){var e,n;return(e=this.createDOMRangeFromPoint(t))&&null!=(n=this.createLocationRangeFromDOMRange(e))?n[0]:void 0},f.prototype.domRangeWithinElement=function(e){return e.collapsed?t(this.element,e.startContainer):t(this.element,e.startContainer)&&t(this.element,e.endContainer)},f}(e.BasicObject)}.call(this),function(){var t,n,i,o,r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty,a=[].slice;i=e.rangeIsCollapsed,o=e.rangesAreEqual,n=e.objectsAreEqual,t=e.getBlockConfig,e.EditorController=function(s){function u(t){var n,i;this.editorElement=t.editorElement,n=t.document,i=t.html,this.selectionManager=new e.SelectionManager(this.editorElement),this.selectionManager.delegate=this,this.composition=new e.Composition,this.composition.delegate=this,this.attachmentManager=new e.AttachmentManager(this.composition.getAttachments()),this.attachmentManager.delegate=this,this.inputController=new(e[\"Level\"+e.config.input.getLevel()+\"InputController\"])(this.editorElement),this.inputController.delegate=this,this.inputController.responder=this.composition,this.compositionController=new e.CompositionController(this.editorElement,this.composition),this.compositionController.delegate=this,this.toolbarController=new e.ToolbarController(this.editorElement.toolbarElement),this.toolbarController.delegate=this,this.editor=new e.Editor(this.composition,this.selectionManager,this.editorElement),null!=n?this.editor.loadDocument(n):this.editor.loadHTML(i)}var c;return r(u,s),u.prototype.registerSelectionManager=function(){return e.selectionChangeObserver.registerSelectionManager(this.selectionManager)},u.prototype.unregisterSelectionManager=function(){return e.selectionChangeObserver.unregisterSelectionManager(this.selectionManager)},u.prototype.render=function(){return this.compositionController.render()},u.prototype.reparse=function(){return this.composition.replaceHTML(this.editorElement.innerHTML)},u.prototype.compositionDidChangeDocument=function(){return this.notifyEditorElement(\"document-change\"),this.handlingInput?void 0:this.render()},u.prototype.compositionDidChangeCurrentAttributes=function(t){return this.currentAttributes=t,this.toolbarController.updateAttributes(this.currentAttributes),this.updateCurrentActions(),this.notifyEditorElement(\"attributes-change\",{attributes:this.currentAttributes})},u.prototype.compositionDidPerformInsertionAtRange=function(t){return this.pasting?this.pastedRange=t:void 0},u.prototype.compositionShouldAcceptFile=function(t){return this.notifyEditorElement(\"file-accept\",{file:t})},u.prototype.compositionDidAddAttachment=function(t){var e;return e=this.attachmentManager.manageAttachment(t),this.notifyEditorElement(\"attachment-add\",{attachment:e})},u.prototype.compositionDidEditAttachment=function(t){var e;return this.compositionController.rerenderViewForObject(t),e=this.attachmentManager.manageAttachment(t),this.notifyEditorElement(\"attachment-edit\",{attachment:e}),this.notifyEditorElement(\"change\")},u.prototype.compositionDidChangeAttachmentPreviewURL=function(t){return this.compositionController.invalidateViewForObject(t),this.notifyEditorElement(\"change\")},u.prototype.compositionDidRemoveAttachment=function(t){var e;return e=this.attachmentManager.unmanageAttachment(t),this.notifyEditorElement(\"attachment-remove\",{attachment:e})},u.prototype.compositionDidStartEditingAttachment=function(t,e){return this.attachmentLocationRange=this.composition.document.getLocationRangeOfAttachment(t),this.compositionController.installAttachmentEditorForAttachment(t,e),this.selectionManager.setLocationRange(this.attachmentLocationRange)},u.prototype.compositionDidStopEditingAttachment=function(){return this.compositionController.uninstallAttachmentEditor(),this.attachmentLocationRange=null},u.prototype.compositionDidRequestChangingSelectionToLocationRange=function(t){return!this.loadingSnapshot||this.isFocused()?(this.requestedLocationRange=t,this.compositionRevisionWhenLocationRangeRequested=this.composition.revision,this.handlingInput?void 0:this.render()):void 0},u.prototype.compositionWillLoadSnapshot=function(){return this.loadingSnapshot=!0},u.prototype.compositionDidLoadSnapshot=function(){return this.compositionController.refreshViewCache(),this.render(),this.loadingSnapshot=!1},u.prototype.getSelectionManager=function(){return this.selectionManager},u.proxyMethod(\"getSelectionManager().setLocationRange\"),u.proxyMethod(\"getSelectionManager().getLocationRange\"),u.prototype.attachmentManagerDidRequestRemovalOfAttachment=function(t){return this.removeAttachment(t)},u.prototype.compositionControllerWillSyncDocumentView=function(){return this.inputController.editorWillSyncDocumentView(),this.selectionManager.lock(),this.selectionManager.clearSelection()},u.prototype.compositionControllerDidSyncDocumentView=function(){return this.inputController.editorDidSyncDocumentView(),this.selectionManager.unlock(),this.updateCurrentActions(),this.notifyEditorElement(\"sync\")},u.prototype.compositionControllerDidRender=function(){return null!=this.requestedLocationRange&&(this.compositionRevisionWhenLocationRangeRequested===this.composition.revision&&this.selectionManager.setLocationRange(this.requestedLocationRange),this.requestedLocationRange=null,this.compositionRevisionWhenLocationRangeRequested=null),this.renderedCompositionRevision!==this.composition.revision&&(this.runEditorFilters(),this.composition.updateCurrentAttributes(),this.notifyEditorElement(\"render\")),this.renderedCompositionRevision=this.composition.revision},u.prototype.compositionControllerDidFocus=function(){return this.isFocusedInvisibly()&&this.setLocationRange({index:0,offset:0}),this.toolbarController.hideDialog(),this.notifyEditorElement(\"focus\")},u.prototype.compositionControllerDidBlur=function(){return this.notifyEditorElement(\"blur\")},u.prototype.compositionControllerDidSelectAttachment=function(t,e){return this.toolbarController.hideDialog(),this.composition.editAttachment(t,e)},u.prototype.compositionControllerDidRequestDeselectingAttachment=function(t){var e,n;return e=null!=(n=this.attachmentLocationRange)?n:this.composition.document.getLocationRangeOfAttachment(t),this.selectionManager.setLocationRange(e[1])},u.prototype.compositionControllerWillUpdateAttachment=function(t){return this.editor.recordUndoEntry(\"Edit Attachment\",{context:t.id,consolidatable:!0})},u.prototype.compositionControllerDidRequestRemovalOfAttachment=function(t){return this.removeAttachment(t)},u.prototype.inputControllerWillHandleInput=function(){return this.handlingInput=!0,this.requestedRender=!1},u.prototype.inputControllerDidRequestRender=function(){return this.requestedRender=!0},u.prototype.inputControllerDidHandleInput=function(){return this.handlingInput=!1,this.requestedRender?(this.requestedRender=!1,this.render()):void 0},u.prototype.inputControllerDidAllowUnhandledInput=function(){return this.notifyEditorElement(\"change\")},u.prototype.inputControllerDidRequestReparse=function(){return this.reparse()},u.prototype.inputControllerWillPerformTyping=function(){return this.recordTypingUndoEntry()},u.prototype.inputControllerWillPerformFormatting=function(t){return this.recordFormattingUndoEntry(t)},u.prototype.inputControllerWillCutText=function(){return this.editor.recordUndoEntry(\"Cut\")},u.prototype.inputControllerWillPaste=function(t){return this.editor.recordUndoEntry(\"Paste\"),this.pasting=!0,this.notifyEditorElement(\"before-paste\",{paste:t})},u.prototype.inputControllerDidPaste=function(t){return t.range=this.pastedRange,this.pastedRange=null,this.pasting=null,this.notifyEditorElement(\"paste\",{paste:t})},u.prototype.inputControllerWillMoveText=function(){return this.editor.recordUndoEntry(\"Move\")},u.prototype.inputControllerWillAttachFiles=function(){return this.editor.recordUndoEntry(\"Drop Files\")},u.prototype.inputControllerWillPerformUndo=function(){return this.editor.undo()},u.prototype.inputControllerWillPerformRedo=function(){return this.editor.redo()},u.prototype.inputControllerDidReceiveKeyboardCommand=function(t){return this.toolbarController.applyKeyboardCommand(t)},u.prototype.inputControllerDidStartDrag=function(){return this.locationRangeBeforeDrag=this.selectionManager.getLocationRange()},u.prototype.inputControllerDidReceiveDragOverPoint=function(t){return this.selectionManager.setLocationRangeFromPointRange(t)},u.prototype.inputControllerDidCancelDrag=function(){return this.selectionManager.setLocationRange(this.locationRangeBeforeDrag),this.locationRangeBeforeDrag=null},u.prototype.locationRangeDidChange=function(t){return this.composition.updateCurrentAttributes(),this.updateCurrentActions(),this.attachmentLocationRange&&!o(this.attachmentLocationRange,t)&&this.composition.stopEditingAttachment(),this.notifyEditorElement(\"selection-change\")},u.prototype.toolbarDidClickButton=function(){return this.getLocationRange()?void 0:this.setLocationRange({index:0,offset:0})},u.prototype.toolbarDidInvokeAction=function(t){return this.invokeAction(t)},u.prototype.toolbarDidToggleAttribute=function(t){return this.recordFormattingUndoEntry(t),this.composition.toggleCurrentAttribute(t),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},u.prototype.toolbarDidUpdateAttribute=function(t,e){return this.recordFormattingUndoEntry(t),this.composition.setCurrentAttribute(t,e),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},u.prototype.toolbarDidRemoveAttribute=function(t){return this.recordFormattingUndoEntry(t),this.composition.removeCurrentAttribute(t),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},u.prototype.toolbarWillShowDialog=function(){return this.composition.expandSelectionForEditing(),this.freezeSelection()},u.prototype.toolbarDidShowDialog=function(t){return this.notifyEditorElement(\"toolbar-dialog-show\",{dialogName:t})},u.prototype.toolbarDidHideDialog=function(t){return this.thawSelection(),this.editorElement.focus(),this.notifyEditorElement(\"toolbar-dialog-hide\",{dialogName:t})},u.prototype.freezeSelection=function(){return this.selectionFrozen?void 0:(this.selectionManager.lock(),this.composition.freezeSelection(),this.selectionFrozen=!0,this.render())},u.prototype.thawSelection=function(){return this.selectionFrozen?(this.composition.thawSelection(),this.selectionManager.unlock(),this.selectionFrozen=!1,this.render()):void 0},u.prototype.actions={undo:{test:function(){return this.editor.canUndo()},perform:function(){return this.editor.undo()}},redo:{test:function(){return this.editor.canRedo()},perform:function(){return this.editor.redo()}},link:{test:function(){return this.editor.canActivateAttribute(\"href\")}},increaseNestingLevel:{test:function(){return this.editor.canIncreaseNestingLevel()},perform:function(){return this.editor.increaseNestingLevel()&&this.render()}},decreaseNestingLevel:{test:function(){return this.editor.canDecreaseNestingLevel()},perform:function(){return this.editor.decreaseNestingLevel()&&this.render()}},attachFiles:{test:function(){return!0},perform:function(){return e.config.input.pickFiles(this.editor.insertFiles)}}},u.prototype.canInvokeAction=function(t){var e,n;return this.actionIsExternal(t)?!0:!!(null!=(e=this.actions[t])&&null!=(n=e.test)?n.call(this):void 0)},u.prototype.invokeAction=function(t){var e,n;return this.actionIsExternal(t)?this.notifyEditorElement(\"action-invoke\",{actionName:t}):null!=(e=this.actions[t])&&null!=(n=e.perform)?n.call(this):void 0},u.prototype.actionIsExternal=function(t){return/^x-./.test(t)},u.prototype.getCurrentActions=function(){var t,e;e={};for(t in this.actions)e[t]=this.canInvokeAction(t);return e},u.prototype.updateCurrentActions=function(){var t;return t=this.getCurrentActions(),n(t,this.currentActions)?void 0:(this.currentActions=t,this.toolbarController.updateActions(this.currentActions),this.notifyEditorElement(\"actions-change\",{actions:this.currentActions}))},u.prototype.runEditorFilters=function(){var t,e,n,i,o,r,s,a;for(a=this.composition.getSnapshot(),o=this.editor.filters,n=0,i=o.length;i>n;n++)e=o[n],t=a.document,s=a.selectedRange,a=null!=(r=e.call(this.editor,a))?r:{},null==a.document&&(a.document=t),null==a.selectedRange&&(a.selectedRange=s);return c(a,this.composition.getSnapshot())?void 0:this.composition.loadSnapshot(a)},c=function(t,e){return o(t.selectedRange,e.selectedRange)&&t.document.isEqualTo(e.document)},u.prototype.updateInputElement=function(){var t,n;return t=this.compositionController.getSerializableElement(),n=e.serializeToContentType(t,\"text/html\"),this.editorElement.setInputElementValue(n)},u.prototype.notifyEditorElement=function(t,e){switch(t){case\"document-change\":this.documentChangedSinceLastRender=!0;break;case\"render\":this.documentChangedSinceLastRender&&(this.documentChangedSinceLastRender=!1,this.notifyEditorElement(\"change\"));break;case\"change\":case\"attachment-add\":case\"attachment-edit\":case\"attachment-remove\":this.updateInputElement()}return this.editorElement.notify(t,e)},u.prototype.removeAttachment=function(t){return this.editor.recordUndoEntry(\"Delete Attachment\"),this.composition.removeAttachment(t),this.render()},u.prototype.recordFormattingUndoEntry=function(e){var n,o;return n=t(e),o=this.selectionManager.getLocationRange(),n||!i(o)?this.editor.recordUndoEntry(\"Formatting\",{context:this.getUndoContext(),consolidatable:!0}):void 0},u.prototype.recordTypingUndoEntry=function(){return this.editor.recordUndoEntry(\"Typing\",{context:this.getUndoContext(this.currentAttributes),consolidatable:!0})},u.prototype.getUndoContext=function(){var t;return t=1<=arguments.length?a.call(arguments,0):[],[this.getLocationContext(),this.getTimeContext()].concat(a.call(t))},u.prototype.getLocationContext=function(){var t;return t=this.selectionManager.getLocationRange(),i(t)?t[0].index:t},u.prototype.getTimeContext=function(){return e.config.undoInterval>0?Math.floor((new Date).getTime()/e.config.undoInterval):0},u.prototype.isFocused=function(){var t;return this.editorElement===(null!=(t=this.editorElement.ownerDocument)?t.activeElement:void 0)},u.prototype.isFocusedInvisibly=function(){return this.isFocused()&&!this.getLocationRange()},u}(e.Controller)}.call(this),function(){var t,n,i,o,r,s,a,u=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};n=e.browser,s=e.makeElement,a=e.triggerEvent,o=e.handleEvent,r=e.handleEventOnce,i=e.findClosestElementFromNode,t=e.AttachmentView.attachmentSelector,e.registerElement(\"trix-editor\",function(){var c,l,h,p,d,f,g,m,v;return g=0,l=function(t){return!document.querySelector(\":focus\")&&t.hasAttribute(\"autofocus\")&&document.querySelector(\"[autofocus]\")===t?t.focus():void 0},m=function(t){return t.hasAttribute(\"contenteditable\")?void 0:(t.setAttribute(\"contenteditable\",\"\"),r(\"focus\",{onElement:t,withCallback:function(){return h(t)}}))},h=function(t){return d(t),v(t)},d=function(t){return(\"function\"==typeof document.queryCommandSupported?document.queryCommandSupported(\"enableObjectResizing\"):void 0)?(document.execCommand(\"enableObjectResizing\",!1,!1),o(\"mscontrolselect\",{onElement:t,preventDefault:!0})):void 0},v=function(){var t;return(\"function\"==typeof document.queryCommandSupported?document.queryCommandSupported(\"DefaultParagraphSeparator\"):void 0)&&(t=e.config.blockAttributes[\"default\"].tagName,\"div\"===t||\"p\"===t)?document.execCommand(\"DefaultParagraphSeparator\",!1,t):void 0},c=function(t){return t.hasAttribute(\"role\")?void 0:t.setAttribute(\"role\",\"textbox\")},f=function(t){var e;if(!t.hasAttribute(\"aria-label\")&&!t.hasAttribute(\"aria-labelledby\"))return(e=function(){var e,n,i;return i=function(){var n,i,o,r;for(o=t.labels,r=[],n=0,i=o.length;i>n;n++)e=o[n],e.contains(t)||r.push(e.textContent);return r}(),(n=i.join(\" \"))?t.setAttribute(\"aria-label\",n):t.removeAttribute(\"aria-label\")})(),o(\"focus\",{onElement:t,withCallback:e})},p=function(){return n.forcesObjectResizing?{display:\"inline\",width:\"auto\"}:{display:\"inline-block\",width:\"1px\"}}(),{defaultCSS:\"%t {\\n display: block;\\n}\\n\\n%t:empty:not(:focus)::before {\\n content: attr(placeholder);\\n color: graytext;\\n cursor: text;\\n pointer-events: none;\\n}\\n\\n%t a[contenteditable=false] {\\n cursor: text;\\n}\\n\\n%t img {\\n max-width: 100%;\\n height: auto;\\n}\\n\\n%t \"+t+\" figcaption textarea {\\n resize: none;\\n}\\n\\n%t \"+t+\" figcaption textarea.trix-autoresize-clone {\\n position: absolute;\\n left: -9999px;\\n max-height: 0px;\\n}\\n\\n%t \"+t+\" figcaption[data-trix-placeholder]:empty::before {\\n content: attr(data-trix-placeholder);\\n color: graytext;\\n}\\n\\n%t [data-trix-cursor-target] {\\n display: \"+p.display+\" !important;\\n width: \"+p.width+\" !important;\\n padding: 0 !important;\\n margin: 0 !important;\\n border: none !important;\\n}\\n\\n%t [data-trix-cursor-target=left] {\\n vertical-align: top !important;\\n margin-left: -1px !important;\\n}\\n\\n%t [data-trix-cursor-target=right] {\\n vertical-align: bottom !important;\\n margin-right: -1px !important;\\n}\",trixId:{get:function(){return this.hasAttribute(\"trix-id\")?this.getAttribute(\"trix-id\"):(this.setAttribute(\"trix-id\",++g),this.trixId)}},labels:{get:function(){var t,e,n;return e=[],this.id&&this.ownerDocument&&e.push.apply(e,this.ownerDocument.querySelectorAll(\"label[for='\"+this.id+\"']\")),(t=i(this,{matchingSelector:\"label\"}))&&((n=t.control)===this||null===n)&&e.push(t),e}},toolbarElement:{get:function(){var t,e,n;return this.hasAttribute(\"toolbar\")?null!=(e=this.ownerDocument)?e.getElementById(this.getAttribute(\"toolbar\")):void 0:this.parentNode?(n=\"trix-toolbar-\"+this.trixId,this.setAttribute(\"toolbar\",n),t=s(\"trix-toolbar\",{id:n}),this.parentNode.insertBefore(t,this),t):void 0}},inputElement:{get:function(){var t,e,n;return this.hasAttribute(\"input\")?null!=(n=this.ownerDocument)?n.getElementById(this.getAttribute(\"input\")):void 0:this.parentNode?(e=\"trix-input-\"+this.trixId,this.setAttribute(\"input\",e),t=s(\"input\",{type:\"hidden\",id:e}),this.parentNode.insertBefore(t,this.nextElementSibling),t):void 0}},editor:{get:function(){var t;return null!=(t=this.editorController)?t.editor:void 0}},name:{get:function(){var t;return null!=(t=this.inputElement)?t.name:void 0}},value:{get:function(){var t;return null!=(t=this.inputElement)?t.value:void 0},set:function(t){var e;return this.defaultValue=t,null!=(e=this.editor)?e.loadHTML(this.defaultValue):void 0}},notify:function(t,e){return this.editorController?a(\"trix-\"+t,{onElement:this,attributes:e}):void 0},setInputElementValue:function(t){var e;return null!=(e=this.inputElement)?e.value=t:void 0},initialize:function(){return this.hasAttribute(\"data-trix-internal\")?void 0:(m(this),c(this),f(this))},connect:function(){return this.hasAttribute(\"data-trix-internal\")?void 0:(this.editorController||(a(\"trix-before-initialize\",{onElement:this}),this.editorController=new e.EditorController({editorElement:this,html:this.defaultValue=this.value}),requestAnimationFrame(function(t){return function(){return a(\"trix-initialize\",{onElement:t})}}(this))),this.editorController.registerSelectionManager(),this.registerResetListener(),this.registerClickListener(),l(this))},disconnect:function(){var t;return null!=(t=this.editorController)&&t.unregisterSelectionManager(),this.unregisterResetListener(),this.unregisterClickListener()},registerResetListener:function(){return this.resetListener=this.resetBubbled.bind(this),window.addEventListener(\"reset\",this.resetListener,!1)},unregisterResetListener:function(){return window.removeEventListener(\"reset\",this.resetListener,!1)},registerClickListener:function(){return this.clickListener=this.clickBubbled.bind(this),window.addEventListener(\"click\",this.clickListener,!1)},unregisterClickListener:function(){return window.removeEventListener(\"click\",this.clickListener,!1)},resetBubbled:function(t){var e;if(!t.defaultPrevented&&t.target===(null!=(e=this.inputElement)?e.form:void 0))return this.reset()},clickBubbled:function(t){var e;if(!(t.defaultPrevented||this.contains(t.target)||!(e=i(t.target,{matchingSelector:\"label\"}))||u.call(this.labels,e)<0))return this.focus()},reset:function(){return this.value=this.defaultValue}}}())}.call(this),function(){}.call(this)}).call(this),\"object\"==typeof module&&module.exports?module.exports=e:\"function\"==typeof define&&define.amd&&define(e)}.call(this);", "//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n", "/*!\nFullCalendar v5.3.0\nDocs & License: https://fullcalendar.io/\n(c) 2020 Adam Shaw\n*/\nexport var FullCalendar=function(e){\"use strict\";var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,n)};function n(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}var r=function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function o(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),o=0;for(t=0;t<n;t++)for(var i=arguments[t],a=0,s=i.length;a<s;a++,o++)r[o]=i[a];return r}var i,a,s,l,u,c,d,p={},f=[],h=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;function v(e,t){for(var n in t)e[n]=t[n];return e}function g(e){var t=e.parentNode;t&&t.removeChild(e)}function m(e,t,n){var r,o=arguments,i={};for(r in t)\"key\"!==r&&\"ref\"!==r&&(i[r]=t[r]);if(arguments.length>3)for(n=[n],r=3;r<arguments.length;r++)n.push(o[r]);if(null!=n&&(i.children=n),\"function\"==typeof e&&null!=e.defaultProps)for(r in e.defaultProps)void 0===i[r]&&(i[r]=e.defaultProps[r]);return y(e,i,t&&t.key,t&&t.ref,null)}function y(e,t,n,r,o){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:o};return null==o&&(a.__v=a),i.vnode&&i.vnode(a),a}function E(e){return e.children}function S(e,t){this.props=e,this.context=t}function D(e,t){if(null==t)return e.__?D(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return\"function\"==typeof e.type?D(e):null}function b(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return b(e)}}function C(e){(!e.__d&&(e.__d=!0)&&a.push(e)&&!s++||u!==i.debounceRendering)&&((u=i.debounceRendering)||l)(w)}function w(){for(var e;s=a.length;)e=a.sort((function(e,t){return e.__v.__b-t.__v.__b})),a=[],e.some((function(e){var t,n,r,o,i,a,s;e.__d&&(a=(i=(t=e).__v).__e,(s=t.__P)&&(n=[],(r=v({},i)).__v=r,o=_(s,i,r,t.__n,void 0!==s.ownerSVGElement,null,n,null==a?D(i):a),I(n,i),o!=a&&b(i)))}))}function R(e,t,n,r,o,i,a,s,l){var u,c,d,h,v,m,y,E=n&&n.__k||f,S=E.length;if(s==p&&(s=null!=i?i[0]:S?D(n,0):null),u=0,t.__k=T(t.__k,(function(n){if(null!=n){if(n.__=t,n.__b=t.__b+1,null===(d=E[u])||d&&n.key==d.key&&n.type===d.type)E[u]=void 0;else for(c=0;c<S;c++){if((d=E[c])&&n.key==d.key&&n.type===d.type){E[c]=void 0;break}d=null}if(h=_(e,n,d=d||p,r,o,i,a,s,l),(c=n.ref)&&d.ref!=c&&(y||(y=[]),d.ref&&y.push(d.ref,null,n),y.push(c,n.__c||h,n)),null!=h){var f;if(null==m&&(m=h),void 0!==n.__d)f=n.__d,n.__d=void 0;else if(i==d||h!=s||null==h.parentNode){e:if(null==s||s.parentNode!==e)e.appendChild(h),f=null;else{for(v=s,c=0;(v=v.nextSibling)&&c<S;c+=2)if(v==h)break e;e.insertBefore(h,s),f=s}\"option\"==t.type&&(e.value=\"\")}s=void 0!==f?f:h.nextSibling,\"function\"==typeof t.type&&(t.__d=s)}else s&&d.__e==s&&s.parentNode!=e&&(s=D(d))}return u++,n})),t.__e=m,null!=i&&\"function\"!=typeof t.type)for(u=i.length;u--;)null!=i[u]&&g(i[u]);for(u=S;u--;)null!=E[u]&&H(E[u],E[u]);if(y)for(u=0;u<y.length;u++)N(y[u],y[++u],y[++u])}function T(e,t,n){if(null==n&&(n=[]),null==e||\"boolean\"==typeof e)t&&n.push(t(null));else if(Array.isArray(e))for(var r=0;r<e.length;r++)T(e[r],t,n);else n.push(t?t(\"string\"==typeof e||\"number\"==typeof e?y(null,e,null,null,e):null!=e.__e||null!=e.__c?y(e.type,e.props,e.key,null,e.__v):e):e);return n}function k(e,t,n){\"-\"===t[0]?e.setProperty(t,n):e[t]=\"number\"==typeof n&&!1===h.test(t)?n+\"px\":null==n?\"\":n}function M(e,t,n,r,o){var i,a,s,l,u;if(o?\"className\"===t&&(t=\"class\"):\"class\"===t&&(t=\"className\"),\"style\"===t)if(i=e.style,\"string\"==typeof n)i.cssText=n;else{if(\"string\"==typeof r&&(i.cssText=\"\",r=null),r)for(l in r)n&&l in n||k(i,l,\"\");if(n)for(u in n)r&&n[u]===r[u]||k(i,u,n[u])}else\"o\"===t[0]&&\"n\"===t[1]?(a=t!==(t=t.replace(/Capture$/,\"\")),s=t.toLowerCase(),t=(s in e?s:t).slice(2),n?(r||e.addEventListener(t,x,a),(e.l||(e.l={}))[t]=n):e.removeEventListener(t,x,a)):\"list\"!==t&&\"tagName\"!==t&&\"form\"!==t&&\"type\"!==t&&\"size\"!==t&&!o&&t in e?e[t]=null==n?\"\":n:\"function\"!=typeof n&&\"dangerouslySetInnerHTML\"!==t&&(t!==(t=t.replace(/^xlink:?/,\"\"))?null==n||!1===n?e.removeAttributeNS(\"http://www.w3.org/1999/xlink\",t.toLowerCase()):e.setAttributeNS(\"http://www.w3.org/1999/xlink\",t.toLowerCase(),n):null==n||!1===n&&!/^ar/.test(t)?e.removeAttribute(t):e.setAttribute(t,n))}function x(e){this.l[e.type](i.event?i.event(e):e)}function _(e,t,n,r,o,a,s,l,u){var c,d,p,f,h,g,m,y,D,b,C=t.type;if(void 0!==t.constructor)return null;(c=i.__b)&&c(t);try{e:if(\"function\"==typeof C){if(y=t.props,D=(c=C.contextType)&&r[c.__c],b=c?D?D.props.value:c.__:r,n.__c?m=(d=t.__c=n.__c).__=d.__E:(\"prototype\"in C&&C.prototype.render?t.__c=d=new C(y,b):(t.__c=d=new S(y,b),d.constructor=C,d.render=O),D&&D.sub(d),d.props=y,d.state||(d.state={}),d.context=b,d.__n=r,p=d.__d=!0,d.__h=[]),null==d.__s&&(d.__s=d.state),null!=C.getDerivedStateFromProps&&(d.__s==d.state&&(d.__s=v({},d.__s)),v(d.__s,C.getDerivedStateFromProps(y,d.__s))),f=d.props,h=d.state,p)null==C.getDerivedStateFromProps&&null!=d.componentWillMount&&d.componentWillMount(),null!=d.componentDidMount&&d.__h.push(d.componentDidMount);else{if(null==C.getDerivedStateFromProps&&y!==f&&null!=d.componentWillReceiveProps&&d.componentWillReceiveProps(y,b),!d.__e&&null!=d.shouldComponentUpdate&&!1===d.shouldComponentUpdate(y,d.__s,b)||t.__v===n.__v&&!d.__){for(d.props=y,d.state=d.__s,t.__v!==n.__v&&(d.__d=!1),d.__v=t,t.__e=n.__e,t.__k=n.__k,d.__h.length&&s.push(d),c=0;c<t.__k.length;c++)t.__k[c]&&(t.__k[c].__=t);break e}null!=d.componentWillUpdate&&d.componentWillUpdate(y,d.__s,b),null!=d.componentDidUpdate&&d.__h.push((function(){d.componentDidUpdate(f,h,g)}))}d.context=b,d.props=y,d.state=d.__s,(c=i.__r)&&c(t),d.__d=!1,d.__v=t,d.__P=e,c=d.render(d.props,d.state,d.context),t.__k=null!=c&&c.type==E&&null==c.key?c.props.children:Array.isArray(c)?c:[c],null!=d.getChildContext&&(r=v(v({},r),d.getChildContext())),p||null==d.getSnapshotBeforeUpdate||(g=d.getSnapshotBeforeUpdate(f,h)),R(e,t,n,r,o,a,s,l,u),d.base=t.__e,d.__h.length&&s.push(d),m&&(d.__E=d.__=null),d.__e=!1}else null==a&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=P(n.__e,t,n,r,o,a,s,u);(c=i.diffed)&&c(t)}catch(e){t.__v=null,i.__e(e,t,n)}return t.__e}function I(e,t){i.__c&&i.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){i.__e(e,t.__v)}}))}function P(e,t,n,r,o,i,a,s){var l,u,c,d,h,v=n.props,g=t.props;if(o=\"svg\"===t.type||o,null!=i)for(l=0;l<i.length;l++)if(null!=(u=i[l])&&((null===t.type?3===u.nodeType:u.localName===t.type)||e==u)){e=u,i[l]=null;break}if(null==e){if(null===t.type)return document.createTextNode(g);e=o?document.createElementNS(\"http://www.w3.org/2000/svg\",t.type):document.createElement(t.type,g.is&&{is:g.is}),i=null,s=!1}if(null===t.type)v!==g&&e.data!=g&&(e.data=g);else{if(null!=i&&(i=f.slice.call(e.childNodes)),c=(v=n.props||p).dangerouslySetInnerHTML,d=g.dangerouslySetInnerHTML,!s){if(v===p)for(v={},h=0;h<e.attributes.length;h++)v[e.attributes[h].name]=e.attributes[h].value;(d||c)&&(d&&c&&d.__html==c.__html||(e.innerHTML=d&&d.__html||\"\"))}(function(e,t,n,r,o){var i;for(i in n)\"children\"===i||\"key\"===i||i in t||M(e,i,null,n[i],r);for(i in t)o&&\"function\"!=typeof t[i]||\"children\"===i||\"key\"===i||\"value\"===i||\"checked\"===i||n[i]===t[i]||M(e,i,t[i],n[i],r)})(e,g,v,o,s),d?t.__k=[]:(t.__k=t.props.children,R(e,t,n,r,\"foreignObject\"!==t.type&&o,i,a,p,s)),s||(\"value\"in g&&void 0!==(l=g.value)&&l!==e.value&&M(e,\"value\",l,v.value,!1),\"checked\"in g&&void 0!==(l=g.checked)&&l!==e.checked&&M(e,\"checked\",l,v.checked,!1))}return e}function N(e,t,n){try{\"function\"==typeof e?e(t):e.current=t}catch(e){i.__e(e,n)}}function H(e,t,n){var r,o,a;if(i.unmount&&i.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||N(r,null,t)),n||\"function\"==typeof e.type||(n=null!=(o=e.__e)),e.__e=e.__d=void 0,null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){i.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&H(r[a],t,n);null!=o&&g(o)}function O(e,t,n){return this.constructor(e,n)}function A(e,t,n){var r,o,a;i.__&&i.__(e,t),o=(r=n===c)?null:n&&n.__k||t.__k,e=m(E,null,[e]),a=[],_(t,(r?t:n||t).__k=e,o||p,p,void 0!==t.ownerSVGElement,n&&!r?[n]:o?null:f.slice.call(t.childNodes),a,n||p,r),I(a,e)}i={__e:function(e,t){for(var n,r;t=t.__;)if((n=t.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(r=!0,n.setState(n.constructor.getDerivedStateFromError(e))),null!=n.componentDidCatch&&(r=!0,n.componentDidCatch(e)),r)return C(n.__E=n)}catch(t){e=t}throw e}},S.prototype.setState=function(e,t){var n;n=this.__s!==this.state?this.__s:this.__s=v({},this.state),\"function\"==typeof e&&(e=e(n,this.props)),e&&v(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),C(this))},S.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),C(this))},S.prototype.render=E,a=[],s=0,l=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,c=p,d=0,(\"undefined\"!=typeof globalThis?globalThis:window).FullCalendarVDom={Component:S,createElement:m,render:A,createRef:function(){return{}},Fragment:E,createContext:function(e){var t=function(e){var t={},n={__c:\"__cC\"+d++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var r,o=this;return this.getChildContext||(r=[],this.getChildContext=function(){return t[n.__c]=o,t},this.shouldComponentUpdate=function(e){o.props.value!==e.value&&r.some((function(t){t.context=e.value,C(t)}))},this.sub=function(e){r.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){r.splice(r.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Consumer.contextType=n,n.Provider.__=n,n}(e),n=t.Provider;return t.Provider=function(){var e=this,t=!this.getChildContext,r=n.apply(this,arguments);if(t){var o=[];this.shouldComponentUpdate=function(t){e.props.value!==t.value&&o.some((function(e){e.context=t.value,e.forceUpdate()}))},this.sub=function(e){o.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){o.splice(o.indexOf(e),1),t&&t.call(e)}}}return r},t},flushToDom:function(){var e=i.debounceRendering,t=[];i.debounceRendering=function(e){t.push(e)},A(m(U,{}),document.createElement(\"div\"));for(;t.length;)t.shift()();i.debounceRendering=e}};var U=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){return m(\"div\",{})},t.prototype.componentDidMount=function(){this.setState({})},t}(S);var L=function(){function e(e,t){this.context=e,this.internalEventSource=t}return e.prototype.remove=function(){this.context.dispatch({type:\"REMOVE_EVENT_SOURCE\",sourceId:this.internalEventSource.sourceId})},e.prototype.refetch=function(){this.context.dispatch({type:\"FETCH_EVENT_SOURCES\",sourceIds:[this.internalEventSource.sourceId]})},Object.defineProperty(e.prototype,\"id\",{get:function(){return this.internalEventSource.publicId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"url\",{get:function(){return this.internalEventSource.meta.url},enumerable:!1,configurable:!0}),e}();function W(e){e.parentNode&&e.parentNode.removeChild(e)}function V(e,t){if(e.closest)return e.closest(t);if(!document.documentElement.contains(e))return null;do{if(z(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}function z(e,t){return(e.matches||e.matchesSelector||e.msMatchesSelector).call(e,t)}function F(e,t){for(var n=e instanceof HTMLElement?[e]:e,r=[],o=0;o<n.length;o++)for(var i=n[o].querySelectorAll(t),a=0;a<i.length;a++)r.push(i[a]);return r}var B=/(top|left|right|bottom|width|height)$/i;function j(e,t){for(var n in t)G(e,n,t[n])}function G(e,t,n){null==n?e.style[t]=\"\":\"number\"==typeof n&&B.test(t)?e.style[t]=n+\"px\":e.style[t]=n}function q(e){e.preventDefault()}function Y(e,t){return function(n){var r=V(n.target,e);r&&t.call(r,n,r)}}function Z(e,t,n,r){var o=Y(n,r);return e.addEventListener(t,o),function(){e.removeEventListener(t,o)}}var X=[\"webkitTransitionEnd\",\"otransitionend\",\"oTransitionEnd\",\"msTransitionEnd\",\"transitionend\"];function K(e,t){var n=function(r){t(r),X.forEach((function(t){e.removeEventListener(t,n)}))};X.forEach((function(t){e.addEventListener(t,n)}))}var J=0;function $(){return String(J++)}function Q(){document.body.classList.add(\"fc-not-allowed\")}function ee(){document.body.classList.remove(\"fc-not-allowed\")}function te(e){e.classList.add(\"fc-unselectable\"),e.addEventListener(\"selectstart\",q)}function ne(e){e.classList.remove(\"fc-unselectable\"),e.removeEventListener(\"selectstart\",q)}function re(e){e.addEventListener(\"contextmenu\",q)}function oe(e){e.removeEventListener(\"contextmenu\",q)}function ie(e){var t,n,r=[],o=[];for(\"string\"==typeof e?o=e.split(/\\s*,\\s*/):\"function\"==typeof e?o=[e]:Array.isArray(e)&&(o=e),t=0;t<o.length;t++)\"string\"==typeof(n=o[t])?r.push(\"-\"===n.charAt(0)?{field:n.substring(1),order:-1}:{field:n,order:1}):\"function\"==typeof n&&r.push({func:n});return r}function ae(e,t,n){var r,o;for(r=0;r<n.length;r++)if(o=se(e,t,n[r]))return o;return 0}function se(e,t,n){return n.func?n.func(e,t):le(e[n.field],t[n.field])*(n.order||1)}function le(e,t){return e||t?null==t?-1:null==e?1:\"string\"==typeof e||\"string\"==typeof t?String(e).localeCompare(String(t)):e-t:0}function ue(e,t){var n=String(e);return\"000\".substr(0,t-n.length)+n}function ce(e,t){return e-t}function de(e){return e%1==0}function pe(e){var t=e.querySelector(\".fc-scrollgrid-shrink-frame\"),n=e.querySelector(\".fc-scrollgrid-shrink-cushion\");if(!t)throw new Error(\"needs fc-scrollgrid-shrink-frame className\");if(!n)throw new Error(\"needs fc-scrollgrid-shrink-cushion className\");return e.getBoundingClientRect().width-t.getBoundingClientRect().width+n.getBoundingClientRect().width}var fe=[\"sun\",\"mon\",\"tue\",\"wed\",\"thu\",\"fri\",\"sat\"];function he(e,t){var n=ke(e);return n[2]+=7*t,Me(n)}function ve(e,t){var n=ke(e);return n[2]+=t,Me(n)}function ge(e,t){var n=ke(e);return n[6]+=t,Me(n)}function me(e,t){return ye(e,t)/7}function ye(e,t){return(t.valueOf()-e.valueOf())/864e5}function Ee(e,t){var n=be(e),r=be(t);return{years:0,months:0,days:Math.round(ye(n,r)),milliseconds:t.valueOf()-r.valueOf()-(e.valueOf()-n.valueOf())}}function Se(e,t){var n=De(e,t);return null!==n&&n%7==0?n/7:null}function De(e,t){return _e(e)===_e(t)?Math.round(ye(e,t)):null}function be(e){return Me([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()])}function Ce(e,t,n,r){var o=Me([t,0,1+we(t,n,r)]),i=be(e),a=Math.round(ye(o,i));return Math.floor(a/7)+1}function we(e,t,n){var r=7+t-n;return-((7+Me([e,0,r]).getUTCDay()-t)%7)+r-1}function Re(e){return[e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()]}function Te(e){return new Date(e[0],e[1]||0,null==e[2]?1:e[2],e[3]||0,e[4]||0,e[5]||0)}function ke(e){return[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}function Me(e){return 1===e.length&&(e=e.concat([0])),new Date(Date.UTC.apply(Date,e))}function xe(e){return!isNaN(e.valueOf())}function _e(e){return 1e3*e.getUTCHours()*60*60+1e3*e.getUTCMinutes()*60+1e3*e.getUTCSeconds()+e.getUTCMilliseconds()}function Ie(e,t,n,r){return{instanceId:$(),defId:e,range:t,forcedStartTzo:null==n?null:n,forcedEndTzo:null==r?null:r}}var Pe=Object.prototype.hasOwnProperty;function Ne(e,t){var n={};if(t)for(var r in t){for(var o=[],i=e.length-1;i>=0;i--){var a=e[i][r];if(\"object\"==typeof a&&a)o.unshift(a);else if(void 0!==a){n[r]=a;break}}o.length&&(n[r]=Ne(o))}for(i=e.length-1;i>=0;i--){var s=e[i];for(var l in s)l in n||(n[l]=s[l])}return n}function He(e,t){var n={};for(var r in e)t(e[r],r)&&(n[r]=e[r]);return n}function Oe(e,t){var n={};for(var r in e)n[r]=t(e[r],r);return n}function Ae(e){for(var t={},n=0,r=e;n<r.length;n++){t[r[n]]=!0}return t}function Ue(e){var t=[];for(var n in e)t.push(e[n]);return t}function Le(e,t){if(e===t)return!0;for(var n in e)if(Pe.call(e,n)&&!(n in t))return!1;for(var n in t)if(Pe.call(t,n)&&e[n]!==t[n])return!1;return!0}function We(e,t){var n=[];for(var r in e)Pe.call(e,r)&&(r in t||n.push(r));for(var r in t)Pe.call(t,r)&&e[r]!==t[r]&&n.push(r);return n}function Ve(e,t,n){if(void 0===n&&(n={}),e===t)return!0;for(var r in t)if(!(r in e)||!ze(e[r],t[r],n[r]))return!1;for(var r in e)if(!(r in t))return!1;return!0}function ze(e,t,n){return e===t||!0===n||!!n&&n(e,t)}function Fe(e,t,n,r){void 0===t&&(t=0),void 0===r&&(r=1);var o=[];null==n&&(n=Object.keys(e).length);for(var i=t;i<n;i+=r){var a=e[i];void 0!==a&&o.push(a)}return o}function Be(e,t,n){var r=n.dateEnv,o=n.pluginHooks,i=n.options,a=e.defs,s=e.instances;for(var l in s=He(s,(function(e){return!a[e.defId].recurringDef})),a){var u=a[l];if(u.recurringDef){var c=u.recurringDef.duration;c||(c=u.allDay?i.defaultAllDayEventDuration:i.defaultTimedEventDuration);for(var d=0,p=je(u,c,t,r,o.recurringTypes);d<p.length;d++){var f=p[d],h=Ie(l,{start:f,end:r.add(f,c)});s[h.instanceId]=h}}}return{defs:a,instances:s}}function je(e,t,n,r,o){var i=o[e.recurringDef.typeId].expand(e.recurringDef.typeData,{start:r.subtract(n.start,t),end:n.end},r);return e.allDay&&(i=i.map(be)),i}var Ge=[\"years\",\"months\",\"days\",\"milliseconds\"],qe=/^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/;function Ye(e,t){var n;return\"string\"==typeof e?function(e){var t=qe.exec(e);if(t){var n=t[1]?-1:1;return{years:0,months:0,days:n*(t[2]?parseInt(t[2],10):0),milliseconds:n*(60*(t[3]?parseInt(t[3],10):0)*60*1e3+60*(t[4]?parseInt(t[4],10):0)*1e3+1e3*(t[5]?parseInt(t[5],10):0)+(t[6]?parseInt(t[6],10):0))}}return null}(e):\"object\"==typeof e&&e?Ze(e):\"number\"==typeof e?Ze(((n={})[t||\"milliseconds\"]=e,n)):null}function Ze(e){var t={years:e.years||e.year||0,months:e.months||e.month||0,days:e.days||e.day||0,milliseconds:60*(e.hours||e.hour||0)*60*1e3+60*(e.minutes||e.minute||0)*1e3+1e3*(e.seconds||e.second||0)+(e.milliseconds||e.millisecond||e.ms||0)},n=e.weeks||e.week;return n&&(t.days+=7*n,t.specifiedWeeks=!0),t}function Xe(e,t){return{years:e.years+t.years,months:e.months+t.months,days:e.days+t.days,milliseconds:e.milliseconds+t.milliseconds}}function Ke(e,t){return{years:e.years*t,months:e.months*t,days:e.days*t,milliseconds:e.milliseconds*t}}function Je(e){return $e(e)/864e5}function $e(e){return 31536e6*e.years+2592e6*e.months+864e5*e.days+e.milliseconds}function Qe(e,t){for(var n=null,r=0;r<Ge.length;r++){var o=Ge[r];if(t[o]){var i=e[o]/t[o];if(!de(i)||null!==n&&n!==i)return null;n=i}else if(e[o])return null}return n}function et(e){var t=e.milliseconds;if(t){if(t%1e3!=0)return{unit:\"millisecond\",value:t};if(t%6e4!=0)return{unit:\"second\",value:t/1e3};if(t%36e5!=0)return{unit:\"minute\",value:t/6e4};if(t)return{unit:\"hour\",value:t/36e5}}return e.days?e.specifiedWeeks&&e.days%7==0?{unit:\"week\",value:e.days/7}:{unit:\"day\",value:e.days}:e.months?{unit:\"month\",value:e.months}:e.years?{unit:\"year\",value:e.years}:{unit:\"millisecond\",value:0}}function tt(e){return e.toISOString().replace(/T.*$/,\"\")}function nt(e){return ue(e.getUTCHours(),2)+\":\"+ue(e.getUTCMinutes(),2)+\":\"+ue(e.getUTCSeconds(),2)}function rt(e,t){void 0===t&&(t=!1);var n=e<0?\"-\":\"+\",r=Math.abs(e),o=Math.floor(r/60),i=Math.round(r%60);return t?n+ue(o,2)+\":\"+ue(i,2):\"GMT\"+n+o+(i?\":\"+ue(i,2):\"\")}function ot(e,t,n){if(e===t)return!0;var r,o=e.length;if(o!==t.length)return!1;for(r=0;r<o;r++)if(!(n?n(e[r],t[r]):e[r]===t[r]))return!1;return!0}function it(e,t,n){var r,o;return function(){for(var i=[],a=0;a<arguments.length;a++)i[a]=arguments[a];if(r){if(!ot(r,i)){n&&n(o);var s=e.apply(this,i);t&&t(s,o)||(o=s)}}else o=e.apply(this,i);return r=i,o}}function at(e,t,n){var r,o;return function(i){if(r){if(!Le(r,i)){n&&n(o);var a=e.call(this,i);t&&t(a,o)||(o=a)}}else o=e.call(this,i);return r=i,o}}var st={week:3,separator:0,omitZeroMinute:0,meridiem:0,omitCommas:0},lt={timeZoneName:7,era:6,year:5,month:4,day:2,weekday:2,hour:1,minute:1,second:1},ut=/\\s*([ap])\\.?m\\.?/i,ct=/,/g,dt=/\\s+/g,pt=/\\u200e/g,ft=/UTC|GMT/,ht=function(){function e(e){var t={},n={},r=0;for(var o in e)o in st?(n[o]=e[o],r=Math.max(st[o],r)):(t[o]=e[o],o in lt&&(r=Math.max(lt[o],r)));this.standardDateProps=t,this.extendedSettings=n,this.severity=r,this.buildFormattingFunc=it(vt)}return e.prototype.format=function(e,t){return this.buildFormattingFunc(this.standardDateProps,this.extendedSettings,t)(e)},e.prototype.formatRange=function(e,t,n,r){var o=this.standardDateProps,i=this.extendedSettings,a=function(e,t,n){if(n.getMarkerYear(e)!==n.getMarkerYear(t))return 5;if(n.getMarkerMonth(e)!==n.getMarkerMonth(t))return 4;if(n.getMarkerDay(e)!==n.getMarkerDay(t))return 2;if(_e(e)!==_e(t))return 1;return 0}(e.marker,t.marker,n.calendarSystem);if(!a)return this.format(e,n);var s=a;!(s>1)||\"numeric\"!==o.year&&\"2-digit\"!==o.year||\"numeric\"!==o.month&&\"2-digit\"!==o.month||\"numeric\"!==o.day&&\"2-digit\"!==o.day||(s=1);var l=this.format(e,n),u=this.format(t,n);if(l===u)return l;var c=vt(function(e,t){var n={};for(var r in e)(!(r in lt)||lt[r]<=t)&&(n[r]=e[r]);return n}(o,s),i,n),d=c(e),p=c(t),f=function(e,t,n,r){var o=0;for(;o<e.length;){var i=e.indexOf(t,o);if(-1===i)break;var a=e.substr(0,i);o=i+t.length;for(var s=e.substr(o),l=0;l<n.length;){var u=n.indexOf(r,l);if(-1===u)break;var c=n.substr(0,u);l=u+r.length;var d=n.substr(l);if(a===c&&s===d)return{before:a,after:s}}}return null}(l,d,u,p),h=i.separator||r||n.defaultSeparator||\"\";return f?f.before+d+h+p+f.after:l+h+u},e.prototype.getLargestUnit=function(){switch(this.severity){case 7:case 6:case 5:return\"year\";case 4:return\"month\";case 3:return\"week\";case 2:return\"day\";default:return\"time\"}},e}();function vt(e,t,n){var o=Object.keys(e).length;return 1===o&&\"short\"===e.timeZoneName?function(e){return rt(e.timeZoneOffset)}:0===o&&t.week?function(e){return function(e,t,n,r){var o=[];\"narrow\"===r?o.push(t):\"short\"===r&&o.push(t,\" \");o.push(n.simpleNumberFormat.format(e)),\"rtl\"===n.options.direction&&o.reverse();return o.join(\"\")}(n.computeWeekNumber(e.marker),n.weekText,n.locale,t.week)}:function(e,t,n){e=r({},e),t=r({},t),function(e,t){e.timeZoneName&&(e.hour||(e.hour=\"2-digit\"),e.minute||(e.minute=\"2-digit\"));\"long\"===e.timeZoneName&&(e.timeZoneName=\"short\");t.omitZeroMinute&&(e.second||e.millisecond)&&delete t.omitZeroMinute}(e,t),e.timeZone=\"UTC\";var o,i=new Intl.DateTimeFormat(n.locale.codes,e);if(t.omitZeroMinute){var a=r({},e);delete a.minute,o=new Intl.DateTimeFormat(n.locale.codes,a)}return function(r){var a=r.marker;return function(e,t,n,r,o){e=e.replace(pt,\"\"),\"short\"===n.timeZoneName&&(e=function(e,t){var n=!1;e=e.replace(ft,(function(){return n=!0,t})),n||(e+=\" \"+t);return e}(e,\"UTC\"===o.timeZone||null==t.timeZoneOffset?\"UTC\":rt(t.timeZoneOffset)));r.omitCommas&&(e=e.replace(ct,\"\").trim());r.omitZeroMinute&&(e=e.replace(\":00\",\"\"));!1===r.meridiem?e=e.replace(ut,\"\").trim():\"narrow\"===r.meridiem?e=e.replace(ut,(function(e,t){return t.toLocaleLowerCase()})):\"short\"===r.meridiem?e=e.replace(ut,(function(e,t){return t.toLocaleLowerCase()+\"m\"})):\"lowercase\"===r.meridiem&&(e=e.replace(ut,(function(e){return e.toLocaleLowerCase()})));return e=(e=e.replace(dt,\" \")).trim()}((o&&!a.getUTCMinutes()?o:i).format(a),r,e,t,n)}}(e,t,n)}function gt(e,t){var n=t.markerToArray(e.marker);return{marker:e.marker,timeZoneOffset:e.timeZoneOffset,array:n,year:n[0],month:n[1],day:n[2],hour:n[3],minute:n[4],second:n[5],millisecond:n[6]}}function mt(e,t,n,r){var o=gt(e,n.calendarSystem);return{date:o,start:o,end:t?gt(t,n.calendarSystem):null,timeZone:n.timeZone,localeCodes:n.locale.codes,defaultSeparator:r||n.defaultSeparator}}var yt=function(){function e(e){this.cmdStr=e}return e.prototype.format=function(e,t,n){return t.cmdFormatter(this.cmdStr,mt(e,null,t,n))},e.prototype.formatRange=function(e,t,n,r){return n.cmdFormatter(this.cmdStr,mt(e,t,n,r))},e}(),Et=function(){function e(e){this.func=e}return e.prototype.format=function(e,t,n){return this.func(mt(e,null,t,n))},e.prototype.formatRange=function(e,t,n,r){return this.func(mt(e,t,n,r))},e}();function St(e){return\"object\"==typeof e&&e?new ht(e):\"string\"==typeof e?new yt(e):\"function\"==typeof e?new Et(e):void 0}var Dt={navLinkDayClick:_t,navLinkWeekClick:_t,duration:Ye,bootstrapFontAwesome:_t,buttonIcons:_t,customButtons:_t,defaultAllDayEventDuration:Ye,defaultTimedEventDuration:Ye,nextDayThreshold:Ye,scrollTime:Ye,slotMinTime:Ye,slotMaxTime:Ye,dayPopoverFormat:St,slotDuration:Ye,snapDuration:Ye,headerToolbar:_t,footerToolbar:_t,defaultRangeSeparator:String,titleRangeSeparator:String,forceEventDuration:Boolean,dayHeaders:Boolean,dayHeaderFormat:St,dayHeaderClassNames:_t,dayHeaderContent:_t,dayHeaderDidMount:_t,dayHeaderWillUnmount:_t,dayCellClassNames:_t,dayCellContent:_t,dayCellDidMount:_t,dayCellWillUnmount:_t,initialView:String,aspectRatio:Number,weekends:Boolean,weekNumberCalculation:_t,weekNumbers:Boolean,weekNumberClassNames:_t,weekNumberContent:_t,weekNumberDidMount:_t,weekNumberWillUnmount:_t,editable:Boolean,viewClassNames:_t,viewDidMount:_t,viewWillUnmount:_t,nowIndicator:Boolean,nowIndicatorClassNames:_t,nowIndicatorContent:_t,nowIndicatorDidMount:_t,nowIndicatorWillUnmount:_t,showNonCurrentDates:Boolean,lazyFetching:Boolean,startParam:String,endParam:String,timeZoneParam:String,timeZone:String,locales:_t,locale:_t,themeSystem:String,dragRevertDuration:Number,dragScroll:Boolean,allDayMaintainDuration:Boolean,unselectAuto:Boolean,dropAccept:_t,eventOrder:ie,handleWindowResize:Boolean,windowResizeDelay:Number,longPressDelay:Number,eventDragMinDistance:Number,expandRows:Boolean,height:_t,contentHeight:_t,direction:String,weekNumberFormat:St,eventResizableFromStart:Boolean,displayEventTime:Boolean,displayEventEnd:Boolean,weekText:String,progressiveEventRendering:Boolean,businessHours:_t,initialDate:_t,now:_t,eventDataTransform:_t,stickyHeaderDates:_t,stickyFooterScrollbar:_t,viewHeight:_t,defaultAllDay:Boolean,eventSourceFailure:_t,eventSourceSuccess:_t,eventDisplay:String,eventStartEditable:Boolean,eventDurationEditable:Boolean,eventOverlap:_t,eventConstraint:_t,eventAllow:_t,eventBackgroundColor:String,eventBorderColor:String,eventTextColor:String,eventColor:String,eventClassNames:_t,eventContent:_t,eventDidMount:_t,eventWillUnmount:_t,selectConstraint:_t,selectOverlap:_t,selectAllow:_t,droppable:Boolean,unselectCancel:String,slotLabelFormat:_t,slotLaneClassNames:_t,slotLaneContent:_t,slotLaneDidMount:_t,slotLaneWillUnmount:_t,slotLabelClassNames:_t,slotLabelContent:_t,slotLabelDidMount:_t,slotLabelWillUnmount:_t,dayMaxEvents:_t,dayMaxEventRows:_t,dayMinWidth:Number,slotLabelInterval:Ye,allDayText:String,allDayClassNames:_t,allDayContent:_t,allDayDidMount:_t,allDayWillUnmount:_t,slotMinWidth:Number,navLinks:Boolean,eventTimeFormat:St,rerenderDelay:Number,moreLinkText:_t,selectMinDistance:Number,selectable:Boolean,selectLongPressDelay:Number,eventLongPressDelay:Number,selectMirror:Boolean,eventMinHeight:Number,slotEventOverlap:Boolean,plugins:_t,firstDay:Number,dayCount:Number,dateAlignment:String,dateIncrement:Ye,hiddenDays:_t,monthMode:Boolean,fixedWeekCount:Boolean,validRange:_t,visibleRange:_t,titleFormat:_t,noEventsText:String},bt={eventDisplay:\"auto\",defaultRangeSeparator:\" - \",titleRangeSeparator:\" \u2013 \",defaultTimedEventDuration:\"01:00:00\",defaultAllDayEventDuration:{day:1},forceEventDuration:!1,nextDayThreshold:\"00:00:00\",dayHeaders:!0,initialView:\"\",aspectRatio:1.35,headerToolbar:{start:\"title\",center:\"\",end:\"today prev,next\"},weekends:!0,weekNumbers:!1,weekNumberCalculation:\"local\",editable:!1,nowIndicator:!1,scrollTime:\"06:00:00\",slotMinTime:\"00:00:00\",slotMaxTime:\"24:00:00\",showNonCurrentDates:!0,lazyFetching:!0,startParam:\"start\",endParam:\"end\",timeZoneParam:\"timeZone\",timeZone:\"local\",locales:[],locale:\"\",themeSystem:\"standard\",dragRevertDuration:500,dragScroll:!0,allDayMaintainDuration:!1,unselectAuto:!0,dropAccept:\"*\",eventOrder:\"start,-duration,allDay,title\",dayPopoverFormat:{month:\"long\",day:\"numeric\",year:\"numeric\"},handleWindowResize:!0,windowResizeDelay:100,longPressDelay:1e3,eventDragMinDistance:5,expandRows:!1,navLinks:!1,selectable:!1},Ct={datesSet:_t,eventsSet:_t,eventAdd:_t,eventChange:_t,eventRemove:_t,windowResize:_t,eventClick:_t,eventMouseEnter:_t,eventMouseLeave:_t,select:_t,unselect:_t,loading:_t,_unmount:_t,_beforeprint:_t,_afterprint:_t,_noEventDrop:_t,_noEventResize:_t,_resize:_t,_scrollRequest:_t},wt={buttonText:_t,views:_t,plugins:_t,initialEvents:_t,events:_t,eventSources:_t},Rt={headerToolbar:Tt,footerToolbar:Tt,buttonText:Tt,buttonIcons:Tt};function Tt(e,t){return\"object\"==typeof e&&\"object\"==typeof t&&e&&t?Le(e,t):e===t}var kt={type:String,component:_t,buttonText:String,buttonTextKey:String,dateProfileGeneratorClass:_t,usesMinMaxTime:Boolean,classNames:_t,content:_t,didMount:_t,willUnmount:_t};function Mt(e){return Ne(e,Rt)}function xt(e,t){var n={},r={};for(var o in t)o in e&&(n[o]=t[o](e[o]));for(var o in e)o in t||(r[o]=e[o]);return{refined:n,extra:r}}function _t(e){return e}function It(e,t,n,r){for(var o={defs:{},instances:{}},i=Zt(n),a=0,s=e;a<s.length;a++){var l=qt(s[a],t,n,r,i);l&&Pt(l,o)}return o}function Pt(e,t){return void 0===t&&(t={defs:{},instances:{}}),t.defs[e.def.defId]=e.def,e.instance&&(t.instances[e.instance.instanceId]=e.instance),t}function Nt(e,t){var n=e.instances[t];if(n){var r=e.defs[n.defId],o=At(e,(function(e){return t=r,n=e,Boolean(t.groupId&&t.groupId===n.groupId);var t,n}));return o.defs[r.defId]=r,o.instances[n.instanceId]=n,o}return{defs:{},instances:{}}}function Ht(){return{defs:{},instances:{}}}function Ot(e,t){return{defs:r(r({},e.defs),t.defs),instances:r(r({},e.instances),t.instances)}}function At(e,t){var n=He(e.defs,t),r=He(e.instances,(function(e){return n[e.defId]}));return{defs:n,instances:r}}function Ut(e){return Array.isArray(e)?e:\"string\"==typeof e?e.split(/\\s+/):[]}var Lt={display:String,editable:Boolean,startEditable:Boolean,durationEditable:Boolean,constraint:_t,overlap:_t,allow:_t,className:Ut,classNames:Ut,color:String,backgroundColor:String,borderColor:String,textColor:String};function Wt(e,t){var n=function(e,t){return Array.isArray(e)?It(e,null,t,!0):\"object\"==typeof e&&e?It([e],null,t,!0):null!=e?String(e):null}(e.constraint,t);return{display:e.display||null,startEditable:null!=e.startEditable?e.startEditable:e.editable,durationEditable:null!=e.durationEditable?e.durationEditable:e.editable,constraints:null!=n?[n]:[],overlap:null!=e.overlap?e.overlap:null,allows:null!=e.allow?[e.allow]:[],backgroundColor:e.backgroundColor||e.color||\"\",borderColor:e.borderColor||e.color||\"\",textColor:e.textColor||\"\",classNames:(e.className||[]).concat(e.classNames||[])}}function Vt(e){return e.reduce(zt,Ft)}function zt(e,t){return{display:null!=t.display?t.display:e.display,startEditable:null!=t.startEditable?t.startEditable:e.startEditable,durationEditable:null!=t.durationEditable?t.durationEditable:e.durationEditable,constraints:e.constraints.concat(t.constraints),overlap:\"boolean\"==typeof t.overlap?t.overlap:e.overlap,allows:e.allows.concat(t.allows),backgroundColor:t.backgroundColor||e.backgroundColor,borderColor:t.borderColor||e.borderColor,textColor:t.textColor||e.textColor,classNames:e.classNames.concat(t.classNames)}}var Ft={display:null,startEditable:null,durationEditable:null,constraints:[],overlap:null,allows:[],backgroundColor:\"\",borderColor:\"\",textColor:\"\",classNames:[]},Bt={id:String,groupId:String,title:String,url:String},jt={start:_t,end:_t,date:_t,allDay:Boolean},Gt=r(r(r({},Bt),jt),{extendedProps:_t});function qt(e,t,n,r,o){void 0===o&&(o=Zt(n));var i=Yt(e,n,o),a=i.refined,s=i.extra,l=function(e,t){var n=null;e&&(n=e.defaultAllDay);null==n&&(n=t.options.defaultAllDay);return n}(t,n),u=function(e,t,n,r){for(var o=0;o<r.length;o++){var i=r[o].parse(e,n);if(i){var a=e.allDay;return null==a&&null==(a=t)&&null==(a=i.allDayGuess)&&(a=!1),{allDay:a,duration:i.duration,typeData:i.typeData,typeId:o}}}return null}(a,l,n.dateEnv,n.pluginHooks.recurringTypes);if(u)return(c=Xt(a,s,t?t.sourceId:\"\",u.allDay,Boolean(u.duration),n)).recurringDef={typeId:u.typeId,typeData:u.typeData,duration:u.duration},{def:c,instance:null};var c,d=function(e,t,n,r){var o,i,a=e.allDay,s=null,l=!1,u=null,c=null!=e.start?e.start:e.date;if(o=n.dateEnv.createMarkerMeta(c))s=o.marker;else if(!r)return null;null!=e.end&&(i=n.dateEnv.createMarkerMeta(e.end));null==a&&(a=null!=t?t:(!o||o.isTimeUnspecified)&&(!i||i.isTimeUnspecified));a&&s&&(s=be(s));i&&(u=i.marker,a&&(u=be(u)),s&&u<=s&&(u=null));u?l=!0:r||(l=n.options.forceEventDuration||!1,u=n.dateEnv.add(s,a?n.options.defaultAllDayEventDuration:n.options.defaultTimedEventDuration));return{allDay:a,hasEnd:l,range:{start:s,end:u},forcedStartTzo:o?o.forcedTzo:null,forcedEndTzo:i?i.forcedTzo:null}}(a,l,n,r);return d?{def:c=Xt(a,s,t?t.sourceId:\"\",d.allDay,d.hasEnd,n),instance:Ie(c.defId,d.range,d.forcedStartTzo,d.forcedEndTzo)}:null}function Yt(e,t,n){return void 0===n&&(n=Zt(t)),xt(e,n)}function Zt(e){return r(r(r({},Lt),Gt),e.pluginHooks.eventRefiners)}function Xt(e,t,n,o,i,a){for(var s={title:e.title||\"\",groupId:e.groupId||\"\",publicId:e.id||\"\",url:e.url||\"\",recurringDef:null,defId:$(),sourceId:n,allDay:o,hasEnd:i,ui:Wt(e,a),extendedProps:r(r({},e.extendedProps||{}),t)},l=0,u=a.pluginHooks.eventDefMemberAdders;l<u.length;l++){var c=u[l];r(s,c(e))}return Object.freeze(s.ui.classNames),Object.freeze(s.extendedProps),s}function Kt(e){var t=Math.floor(ye(e.start,e.end))||1,n=be(e.start);return{start:n,end:ve(n,t)}}function Jt(e,t){void 0===t&&(t=Ye(0));var n=null,r=null;if(e.end){r=be(e.end);var o=e.end.valueOf()-r.valueOf();o&&o>=$e(t)&&(r=ve(r,1))}return e.start&&(n=be(e.start),r&&r<=n&&(r=ve(n,1))),{start:n,end:r}}function $t(e){var t=Jt(e);return ye(t.start,t.end)>1}function Qt(e,t,n,r){return\"year\"===r?Ye(n.diffWholeYears(e,t),\"year\"):\"month\"===r?Ye(n.diffWholeMonths(e,t),\"month\"):Ee(e,t)}function en(e,t){var n,r,o=[],i=t.start;for(e.sort(tn),n=0;n<e.length;n++)(r=e[n]).start>i&&o.push({start:i,end:r.start}),r.end>i&&(i=r.end);return i<t.end&&o.push({start:i,end:t.end}),o}function tn(e,t){return e.start.valueOf()-t.start.valueOf()}function nn(e,t){var n=e.start,r=e.end,o=null;return null!==t.start&&(n=null===n?t.start:new Date(Math.max(n.valueOf(),t.start.valueOf()))),null!=t.end&&(r=null===r?t.end:new Date(Math.min(r.valueOf(),t.end.valueOf()))),(null===n||null===r||n<r)&&(o={start:n,end:r}),o}function rn(e,t){return(null===e.start?null:e.start.valueOf())===(null===t.start?null:t.start.valueOf())&&(null===e.end?null:e.end.valueOf())===(null===t.end?null:t.end.valueOf())}function on(e,t){return(null===e.end||null===t.start||e.end>t.start)&&(null===e.start||null===t.end||e.start<t.end)}function an(e,t){return(null===e.start||null!==t.start&&t.start>=e.start)&&(null===e.end||null!==t.end&&t.end<=e.end)}function sn(e,t){return(null===e.start||t>=e.start)&&(null===e.end||t<e.end)}function ln(e,t,n,r){var o={},i={},a={},s=[],l=[],u=pn(e.defs,t);for(var c in e.defs){\"inverse-background\"===(f=u[(S=e.defs[c]).defId]).display&&(S.groupId?(o[S.groupId]=[],a[S.groupId]||(a[S.groupId]=S)):i[c]=[])}for(var d in e.instances){var p=e.instances[d],f=u[(S=e.defs[p.defId]).defId],h=p.range,v=!S.allDay&&r?Jt(h,r):h,g=nn(v,n);g&&(\"inverse-background\"===f.display?S.groupId?o[S.groupId].push(g):i[p.defId].push(g):\"none\"!==f.display&&(\"background\"===f.display?s:l).push({def:S,ui:f,instance:p,range:g,isStart:v.start&&v.start.valueOf()===g.start.valueOf(),isEnd:v.end&&v.end.valueOf()===g.end.valueOf()}))}for(var m in o)for(var y=0,E=en(o[m],n);y<E.length;y++){var S,D=E[y];f=u[(S=a[m]).defId];s.push({def:S,ui:f,instance:null,range:D,isStart:!1,isEnd:!1})}for(var c in i)for(var b=0,C=en(i[c],n);b<C.length;b++){D=C[b];s.push({def:e.defs[c],ui:u[c],instance:null,range:D,isStart:!1,isEnd:!1})}return{bg:s,fg:l}}function un(e){return\"background\"===e.ui.display||\"inverse-background\"===e.ui.display}function cn(e,t){e.fcSeg=t}function dn(e){return e.fcSeg||e.parentNode.fcSeg||null}function pn(e,t){return Oe(e,(function(e){return fn(e,t)}))}function fn(e,t){var n=[];return t[\"\"]&&n.push(t[\"\"]),t[e.defId]&&n.push(t[e.defId]),n.push(e.ui),Vt(n)}function hn(e,t){var n=e.map(vn);return n.sort((function(e,n){return ae(e,n,t)})),n.map((function(e){return e._seg}))}function vn(e){var t=e.eventRange,n=t.def,o=t.instance?t.instance.range:t.range,i=o.start?o.start.valueOf():0,a=o.end?o.end.valueOf():0;return r(r(r({},n.extendedProps),n),{id:n.publicId,start:i,end:a,duration:a-i,allDay:Number(n.allDay),_seg:e})}function gn(e,t){for(var n=t.pluginHooks.isDraggableTransformers,r=e.eventRange,o=r.def,i=r.ui,a=i.startEditable,s=0,l=n;s<l.length;s++){a=(0,l[s])(a,o,i,t)}return a}function mn(e,t){return e.isStart&&e.eventRange.ui.durationEditable&&t.options.eventResizableFromStart}function yn(e,t){return e.isEnd&&e.eventRange.ui.durationEditable}function En(e,t,n,r,o,i,a){var s=n.dateEnv,l=n.options,u=l.displayEventTime,c=l.displayEventEnd,d=e.eventRange.def,p=e.eventRange.instance;if(null==u&&(u=!1!==r),null==c&&(c=!1!==o),u&&!d.allDay&&(e.isStart||e.isEnd)){var f=i||(e.isStart?p.range.start:e.start||e.eventRange.range.start),h=a||(e.isEnd?p.range.end:e.end||e.eventRange.range.end);return c&&d.hasEnd?s.formatRange(f,h,t,{forcedStartTzo:i?null:p.forcedStartTzo,forcedEndTzo:a?null:p.forcedEndTzo}):s.format(f,t,{forcedTzo:i?null:p.forcedStartTzo})}return\"\"}function Sn(e,t,n){var r=e.eventRange.range;return{isPast:r.end<(n||t.start),isFuture:r.start>=(n||t.end),isToday:t&&sn(t,r.start)}}function Dn(e){var t=[\"fc-event\"];return e.isMirror&&t.push(\"fc-event-mirror\"),e.isDraggable&&t.push(\"fc-event-draggable\"),(e.isStartResizable||e.isEndResizable)&&t.push(\"fc-event-resizable\"),e.isDragging&&t.push(\"fc-event-dragging\"),e.isResizing&&t.push(\"fc-event-resizing\"),e.isSelected&&t.push(\"fc-event-selected\"),e.isStart&&t.push(\"fc-event-start\"),e.isEnd&&t.push(\"fc-event-end\"),e.isPast&&t.push(\"fc-event-past\"),e.isToday&&t.push(\"fc-event-today\"),e.isFuture&&t.push(\"fc-event-future\"),t}function bn(e){return e.instance?e.instance.instanceId:e.def.defId+\":\"+e.range.start.toISOString()}var Cn={start:_t,end:_t,allDay:Boolean};function wn(e,t,n){var o=function(e,t){var n=xt(e,Cn),o=n.refined,i=n.extra,a=o.start?t.createMarkerMeta(o.start):null,s=o.end?t.createMarkerMeta(o.end):null,l=o.allDay;null==l&&(l=a&&a.isTimeUnspecified&&(!s||s.isTimeUnspecified));return r({range:{start:a?a.marker:null,end:s?s.marker:null},allDay:l},i)}(e,t),i=o.range;if(!i.start)return null;if(!i.end){if(null==n)return null;i.end=t.add(i.start,n)}return o}function Rn(e,t){return rn(e.range,t.range)&&e.allDay===t.allDay&&function(e,t){for(var n in t)if(\"range\"!==n&&\"allDay\"!==n&&e[n]!==t[n])return!1;for(var n in e)if(!(n in t))return!1;return!0}(e,t)}function Tn(e,t,n){return r(r({},kn(e,t,n)),{timeZone:t.timeZone})}function kn(e,t,n){return{start:t.toDate(e.start),end:t.toDate(e.end),startStr:t.formatIso(e.start,{omitTime:n}),endStr:t.formatIso(e.end,{omitTime:n})}}function Mn(e,t,n){var r=Yt({editable:!1},n),o=Xt(r.refined,r.extra,\"\",e.allDay,!0,n);return{def:o,ui:fn(o,t),instance:Ie(o.defId,e.range),range:e.range,isStart:!0,isEnd:!0}}function xn(e,t,n){n.emitter.trigger(\"select\",r(r({},_n(e,n)),{jsEvent:t?t.origEvent:null,view:n.viewApi||n.calendarApi.view}))}function _n(e,t){for(var n,o,i={},a=0,s=t.pluginHooks.dateSpanTransforms;a<s.length;a++){var l=s[a];r(i,l(e,t))}return r(i,(n=e,o=t.dateEnv,r(r({},kn(n.range,o,n.allDay)),{allDay:n.allDay}))),i}function In(e,t,n){var r=n.dateEnv,o=n.options,i=t;return e?(i=be(i),i=r.add(i,o.defaultAllDayEventDuration)):i=r.add(i,o.defaultTimedEventDuration),i}function Pn(e,t,n,r){var o=pn(e.defs,t),i={defs:{},instances:{}};for(var a in e.defs){var s=e.defs[a];i.defs[a]=Nn(s,o[a],n,r)}for(var l in e.instances){var u=e.instances[l];s=i.defs[u.defId];i.instances[l]=Hn(u,s,o[u.defId],n,r)}return i}function Nn(e,t,n,o){var i=n.standardProps||{};null==i.hasEnd&&t.durationEditable&&(n.startDelta||n.endDelta)&&(i.hasEnd=!0);var a=r(r(r({},e),i),{ui:r(r({},e.ui),i.ui)});n.extendedProps&&(a.extendedProps=r(r({},a.extendedProps),n.extendedProps));for(var s=0,l=o.pluginHooks.eventDefMutationAppliers;s<l.length;s++){(0,l[s])(a,n,o)}return!a.hasEnd&&o.options.forceEventDuration&&(a.hasEnd=!0),a}function Hn(e,t,n,o,i){var a=i.dateEnv,s=o.standardProps&&!0===o.standardProps.allDay,l=o.standardProps&&!1===o.standardProps.hasEnd,u=r({},e);return s&&(u.range=Kt(u.range)),o.datesDelta&&n.startEditable&&(u.range={start:a.add(u.range.start,o.datesDelta),end:a.add(u.range.end,o.datesDelta)}),o.startDelta&&n.durationEditable&&(u.range={start:a.add(u.range.start,o.startDelta),end:u.range.end}),o.endDelta&&n.durationEditable&&(u.range={start:u.range.start,end:a.add(u.range.end,o.endDelta)}),l&&(u.range={start:u.range.start,end:In(t.allDay,u.range.start,i)}),t.allDay&&(u.range={start:be(u.range.start),end:be(u.range.end)}),u.range.end<u.range.start&&(u.range.end=In(t.allDay,u.range.start,i)),u}var On=function(){function e(e,t,n){this.type=e,this.getCurrentData=t,this.dateEnv=n}return Object.defineProperty(e.prototype,\"calendar\",{get:function(){return this.getCurrentData().calendarApi},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"title\",{get:function(){return this.getCurrentData().viewTitle},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"activeStart\",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"activeEnd\",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"currentStart\",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"currentEnd\",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end)},enumerable:!1,configurable:!0}),e.prototype.getOption=function(e){return this.getCurrentData().options[e]},e}(),An={id:String,defaultAllDay:Boolean,url:String,events:_t,eventDataTransform:_t,success:_t,failure:_t};function Un(e,t,n){var r;if(void 0===n&&(n=Ln(t)),\"string\"==typeof e?r={url:e}:\"function\"==typeof e||Array.isArray(e)?r={events:e}:\"object\"==typeof e&&e&&(r=e),r){var o=xt(r,n),i=o.refined,a=o.extra,s=function(e,t){for(var n=t.pluginHooks.eventSourceDefs,r=n.length-1;r>=0;r--){var o=n[r].parseMeta(e);if(o)return{sourceDefId:r,meta:o}}return null}(i,t);if(s)return{_raw:e,isFetching:!1,latestFetchId:\"\",fetchRange:null,defaultAllDay:i.defaultAllDay,eventDataTransform:i.eventDataTransform,success:i.success,failure:i.failure,publicId:i.id||\"\",sourceId:$(),sourceDefId:s.sourceDefId,meta:s.meta,ui:Wt(i,t),extendedProps:a}}return null}function Ln(e){return r(r(r({},Lt),An),e.pluginHooks.eventSourceRefiners)}function Wn(e,t){return\"function\"==typeof e&&(e=e()),null==e?t.createNowMarker():t.createMarker(e)}var Vn=function(){function e(){}return e.prototype.getCurrentData=function(){return this.currentDataManager.getCurrentData()},e.prototype.dispatch=function(e){return this.currentDataManager.dispatch(e)},Object.defineProperty(e.prototype,\"view\",{get:function(){return this.getCurrentData().viewApi},enumerable:!1,configurable:!0}),e.prototype.batchRendering=function(e){e()},e.prototype.updateSize=function(){this.trigger(\"_resize\",!0)},e.prototype.setOption=function(e,t){this.dispatch({type:\"SET_OPTION\",optionName:e,rawOptionValue:t})},e.prototype.getOption=function(e){return this.currentDataManager.currentCalendarOptionsInput[e]},e.prototype.getAvailableLocaleCodes=function(){return Object.keys(this.getCurrentData().availableRawLocales)},e.prototype.on=function(e,t){var n=this.currentDataManager;n.currentCalendarOptionsRefiners[e]?n.emitter.on(e,t):console.warn(\"Unknown listener name '\"+e+\"'\")},e.prototype.off=function(e,t){this.currentDataManager.emitter.off(e,t)},e.prototype.trigger=function(e){for(var t,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];(t=this.currentDataManager.emitter).trigger.apply(t,o([e],n))},e.prototype.changeView=function(e,t){var n=this;this.batchRendering((function(){if(n.unselect(),t)if(t.start&&t.end)n.dispatch({type:\"CHANGE_VIEW_TYPE\",viewType:e}),n.dispatch({type:\"SET_OPTION\",optionName:\"visibleRange\",rawOptionValue:t});else{var r=n.getCurrentData().dateEnv;n.dispatch({type:\"CHANGE_VIEW_TYPE\",viewType:e,dateMarker:r.createMarker(t)})}else n.dispatch({type:\"CHANGE_VIEW_TYPE\",viewType:e})}))},e.prototype.zoomTo=function(e,t){var n;t=t||\"day\",n=this.getCurrentData().viewSpecs[t]||this.getUnitViewSpec(t),this.unselect(),n?this.dispatch({type:\"CHANGE_VIEW_TYPE\",viewType:n.type,dateMarker:e}):this.dispatch({type:\"CHANGE_DATE\",dateMarker:e})},e.prototype.getUnitViewSpec=function(e){var t,n,r=this.getCurrentData(),o=r.viewSpecs,i=r.toolbarConfig,a=[].concat(i.viewsWithButtons);for(var s in o)a.push(s);for(t=0;t<a.length;t++)if((n=o[a[t]])&&n.singleUnit===e)return n},e.prototype.prev=function(){this.unselect(),this.dispatch({type:\"PREV\"})},e.prototype.next=function(){this.unselect(),this.dispatch({type:\"NEXT\"})},e.prototype.prevYear=function(){var e=this.getCurrentData();this.unselect(),this.dispatch({type:\"CHANGE_DATE\",dateMarker:e.dateEnv.addYears(e.currentDate,-1)})},e.prototype.nextYear=function(){var e=this.getCurrentData();this.unselect(),this.dispatch({type:\"CHANGE_DATE\",dateMarker:e.dateEnv.addYears(e.currentDate,1)})},e.prototype.today=function(){var e=this.getCurrentData();this.unselect(),this.dispatch({type:\"CHANGE_DATE\",dateMarker:Wn(e.calendarOptions.now,e.dateEnv)})},e.prototype.gotoDate=function(e){var t=this.getCurrentData();this.unselect(),this.dispatch({type:\"CHANGE_DATE\",dateMarker:t.dateEnv.createMarker(e)})},e.prototype.incrementDate=function(e){var t=this.getCurrentData(),n=Ye(e);n&&(this.unselect(),this.dispatch({type:\"CHANGE_DATE\",dateMarker:t.dateEnv.add(t.currentDate,n)}))},e.prototype.getDate=function(){var e=this.getCurrentData();return e.dateEnv.toDate(e.currentDate)},e.prototype.formatDate=function(e,t){var n=this.getCurrentData().dateEnv;return n.format(n.createMarker(e),St(t))},e.prototype.formatRange=function(e,t,n){var r=this.getCurrentData().dateEnv;return r.formatRange(r.createMarker(e),r.createMarker(t),St(n),n)},e.prototype.formatIso=function(e,t){var n=this.getCurrentData().dateEnv;return n.formatIso(n.createMarker(e),{omitTime:t})},e.prototype.select=function(e,t){var n;n=null==t?null!=e.start?e:{start:e,end:null}:{start:e,end:t};var r=this.getCurrentData(),o=wn(n,r.dateEnv,Ye({days:1}));o&&(this.dispatch({type:\"SELECT_DATES\",selection:o}),xn(o,null,r))},e.prototype.unselect=function(e){var t=this.getCurrentData();t.dateSelection&&(this.dispatch({type:\"UNSELECT_DATES\"}),function(e,t){t.emitter.trigger(\"unselect\",{jsEvent:e?e.origEvent:null,view:t.viewApi||t.calendarApi.view})}(e,t))},e.prototype.addEvent=function(e,t){if(e instanceof zn){var n=e._def,r=e._instance;return this.getCurrentData().eventStore.defs[n.defId]||(this.dispatch({type:\"ADD_EVENTS\",eventStore:Pt({def:n,instance:r})}),this.triggerEventAdd(e)),e}var o,i=this.getCurrentData();if(t instanceof L)o=t.internalEventSource;else if(\"boolean\"==typeof t)t&&(o=Ue(i.eventSources)[0]);else if(null!=t){var a=this.getEventSourceById(t);if(!a)return console.warn('Could not find an event source with ID \"'+t+'\"'),null;o=a.internalEventSource}var s=qt(e,o,i,!1);if(s){var l=new zn(i,s.def,s.def.recurringDef?null:s.instance);return this.dispatch({type:\"ADD_EVENTS\",eventStore:Pt(s)}),this.triggerEventAdd(l),l}return null},e.prototype.triggerEventAdd=function(e){var t=this;this.getCurrentData().emitter.trigger(\"eventAdd\",{event:e,relatedEvents:[],revert:function(){t.dispatch({type:\"REMOVE_EVENTS\",eventStore:Fn(e)})}})},e.prototype.getEventById=function(e){var t=this.getCurrentData(),n=t.eventStore,r=n.defs,o=n.instances;for(var i in e=String(e),r){var a=r[i];if(a.publicId===e){if(a.recurringDef)return new zn(t,a,null);for(var s in o){var l=o[s];if(l.defId===a.defId)return new zn(t,a,l)}}}return null},e.prototype.getEvents=function(){var e=this.getCurrentData();return Bn(e.eventStore,e)},e.prototype.removeAllEvents=function(){this.dispatch({type:\"REMOVE_ALL_EVENTS\"})},e.prototype.getEventSources=function(){var e=this.getCurrentData(),t=e.eventSources,n=[];for(var r in t)n.push(new L(e,t[r]));return n},e.prototype.getEventSourceById=function(e){var t=this.getCurrentData(),n=t.eventSources;for(var r in e=String(e),n)if(n[r].publicId===e)return new L(t,n[r]);return null},e.prototype.addEventSource=function(e){var t=this.getCurrentData();if(e instanceof L)return t.eventSources[e.internalEventSource.sourceId]||this.dispatch({type:\"ADD_EVENT_SOURCES\",sources:[e.internalEventSource]}),e;var n=Un(e,t);return n?(this.dispatch({type:\"ADD_EVENT_SOURCES\",sources:[n]}),new L(t,n)):null},e.prototype.removeAllEventSources=function(){this.dispatch({type:\"REMOVE_ALL_EVENT_SOURCES\"})},e.prototype.refetchEvents=function(){this.dispatch({type:\"FETCH_EVENT_SOURCES\"})},e.prototype.scrollToTime=function(e){var t=Ye(e);t&&this.trigger(\"_scrollRequest\",{time:t})},e}(),zn=function(){function e(e,t,n){this._context=e,this._def=t,this._instance=n||null}return e.prototype.setProp=function(e,t){var n,r;if(e in jt)console.warn(\"Could not set date-related prop 'name'. Use one of the date-related methods instead.\");else if(e in Bt)t=Bt[e](t),this.mutate({standardProps:(n={},n[e]=t,n)});else if(e in Lt){var o=Lt[e](t);\"color\"===e?o={backgroundColor:t,borderColor:t}:\"editable\"===e?o={startEditable:t,durationEditable:t}:((r={})[e]=t,o=r),this.mutate({standardProps:{ui:o}})}else console.warn(\"Could not set prop '\"+e+\"'. Use setExtendedProp instead.\")},e.prototype.setExtendedProp=function(e,t){var n;this.mutate({extendedProps:(n={},n[e]=t,n)})},e.prototype.setStart=function(e,t){void 0===t&&(t={});var n=this._context.dateEnv,r=n.createMarker(e);if(r&&this._instance){var o=Qt(this._instance.range.start,r,n,t.granularity);t.maintainDuration?this.mutate({datesDelta:o}):this.mutate({startDelta:o})}},e.prototype.setEnd=function(e,t){void 0===t&&(t={});var n,r=this._context.dateEnv;if((null==e||(n=r.createMarker(e)))&&this._instance)if(n){var o=Qt(this._instance.range.end,n,r,t.granularity);this.mutate({endDelta:o})}else this.mutate({standardProps:{hasEnd:!1}})},e.prototype.setDates=function(e,t,n){void 0===n&&(n={});var r,o,i,a=this._context.dateEnv,s={allDay:n.allDay},l=a.createMarker(e);if(l&&((null==t||(r=a.createMarker(t)))&&this._instance)){var u=this._instance.range;!0===n.allDay&&(u=Kt(u));var c=Qt(u.start,l,a,n.granularity);if(r){var d=Qt(u.end,r,a,n.granularity);i=d,(o=c).years===i.years&&o.months===i.months&&o.days===i.days&&o.milliseconds===i.milliseconds?this.mutate({datesDelta:c,standardProps:s}):this.mutate({startDelta:c,endDelta:d,standardProps:s})}else s.hasEnd=!1,this.mutate({datesDelta:c,standardProps:s})}},e.prototype.moveStart=function(e){var t=Ye(e);t&&this.mutate({startDelta:t})},e.prototype.moveEnd=function(e){var t=Ye(e);t&&this.mutate({endDelta:t})},e.prototype.moveDates=function(e){var t=Ye(e);t&&this.mutate({datesDelta:t})},e.prototype.setAllDay=function(e,t){void 0===t&&(t={});var n={allDay:e},r=t.maintainDuration;null==r&&(r=this._context.options.allDayMaintainDuration),this._def.allDay!==e&&(n.hasEnd=r),this.mutate({standardProps:n})},e.prototype.formatRange=function(e){var t=this._context.dateEnv,n=this._instance,r=St(e);return this._def.hasEnd?t.formatRange(n.range.start,n.range.end,r,{forcedStartTzo:n.forcedStartTzo,forcedEndTzo:n.forcedEndTzo}):t.format(n.range.start,r,{forcedTzo:n.forcedStartTzo})},e.prototype.mutate=function(t){var n=this._instance;if(n){var r=this._def,o=this._context,i=Nt(o.getCurrentData().eventStore,n.instanceId);i=Pn(i,{\"\":{display:\"\",startEditable:!0,durationEditable:!0,constraints:[],overlap:null,allows:[],backgroundColor:\"\",borderColor:\"\",textColor:\"\",classNames:[]}},t,o);var a=new e(o,r,n);this._def=i.defs[r.defId],this._instance=i.instances[n.instanceId],o.dispatch({type:\"MERGE_EVENTS\",eventStore:i}),o.emitter.trigger(\"eventChange\",{oldEvent:a,event:this,relatedEvents:Bn(i,o,n),revert:function(){o.dispatch({type:\"REMOVE_EVENTS\",eventStore:i})}})}},e.prototype.remove=function(){var e=this._context,t=Fn(this);e.dispatch({type:\"REMOVE_EVENTS\",eventStore:t}),e.emitter.trigger(\"eventRemove\",{event:this,relatedEvents:[],revert:function(){e.dispatch({type:\"MERGE_EVENTS\",eventStore:t})}})},Object.defineProperty(e.prototype,\"source\",{get:function(){var e=this._def.sourceId;return e?new L(this._context,this._context.getCurrentData().eventSources[e]):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"start\",{get:function(){return this._instance?this._context.dateEnv.toDate(this._instance.range.start):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"end\",{get:function(){return this._instance&&this._def.hasEnd?this._context.dateEnv.toDate(this._instance.range.end):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"startStr\",{get:function(){var e=this._instance;return e?this._context.dateEnv.formatIso(e.range.start,{omitTime:this._def.allDay,forcedTzo:e.forcedStartTzo}):\"\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"endStr\",{get:function(){var e=this._instance;return e&&this._def.hasEnd?this._context.dateEnv.formatIso(e.range.end,{omitTime:this._def.allDay,forcedTzo:e.forcedEndTzo}):\"\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"id\",{get:function(){return this._def.publicId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"groupId\",{get:function(){return this._def.groupId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"allDay\",{get:function(){return this._def.allDay},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"title\",{get:function(){return this._def.title},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"url\",{get:function(){return this._def.url},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"display\",{get:function(){return this._def.ui.display||\"auto\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"startEditable\",{get:function(){return this._def.ui.startEditable},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"durationEditable\",{get:function(){return this._def.ui.durationEditable},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"constraint\",{get:function(){return this._def.ui.constraints[0]||null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"overlap\",{get:function(){return this._def.ui.overlap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"allow\",{get:function(){return this._def.ui.allows[0]||null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"backgroundColor\",{get:function(){return this._def.ui.backgroundColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"borderColor\",{get:function(){return this._def.ui.borderColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"textColor\",{get:function(){return this._def.ui.textColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"classNames\",{get:function(){return this._def.ui.classNames},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"extendedProps\",{get:function(){return this._def.extendedProps},enumerable:!1,configurable:!0}),e.prototype.toPlainObject=function(e){void 0===e&&(e={});var t=this._def,n=t.ui,o=this.startStr,i=this.endStr,a={};return t.title&&(a.title=t.title),o&&(a.start=o),i&&(a.end=i),t.publicId&&(a.id=t.publicId),t.groupId&&(a.groupId=t.groupId),t.url&&(a.url=t.url),n.display&&\"auto\"!==n.display&&(a.display=n.display),e.collapseColor&&n.backgroundColor&&n.backgroundColor===n.borderColor?a.color=n.backgroundColor:(n.backgroundColor&&(a.backgroundColor=n.backgroundColor),n.borderColor&&(a.borderColor=n.borderColor)),n.textColor&&(a.textColor=n.textColor),n.classNames.length&&(a.classNames=n.classNames),Object.keys(t.extendedProps).length&&(e.collapseExtendedProps?r(a,t.extendedProps):a.extendedProps=t.extendedProps),a},e.prototype.toJSON=function(){return this.toPlainObject()},e}();function Fn(e){var t,n,r=e._def,o=e._instance;return{defs:(t={},t[r.defId]=r,t),instances:o?(n={},n[o.instanceId]=o,n):{}}}function Bn(e,t,n){var r=e.defs,o=e.instances,i=[],a=n?n.instanceId:\"\";for(var s in o){var l=o[s],u=r[l.defId];l.instanceId!==a&&i.push(new zn(t,u,l))}return i}var jn={};var Gn,qn=function(){function e(){}return e.prototype.getMarkerYear=function(e){return e.getUTCFullYear()},e.prototype.getMarkerMonth=function(e){return e.getUTCMonth()},e.prototype.getMarkerDay=function(e){return e.getUTCDate()},e.prototype.arrayToMarker=function(e){return Me(e)},e.prototype.markerToArray=function(e){return ke(e)},e}();Gn=qn,jn[\"gregory\"]=Gn;var Yn=/^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;function Zn(e){var t=Yn.exec(e);if(t){var n=new Date(Date.UTC(Number(t[1]),t[3]?Number(t[3])-1:0,Number(t[5]||1),Number(t[7]||0),Number(t[8]||0),Number(t[10]||0),t[12]?1e3*Number(\"0.\"+t[12]):0));if(xe(n)){var r=null;return t[13]&&(r=(\"-\"===t[15]?-1:1)*(60*Number(t[16]||0)+Number(t[18]||0))),{marker:n,isTimeUnspecified:!t[6],timeZoneOffset:r}}}return null}var Xn=function(){function e(e){var t=this.timeZone=e.timeZone,n=\"local\"!==t&&\"UTC\"!==t;e.namedTimeZoneImpl&&n&&(this.namedTimeZoneImpl=new e.namedTimeZoneImpl(t)),this.canComputeOffset=Boolean(!n||this.namedTimeZoneImpl),this.calendarSystem=function(e){return new jn[e]}(e.calendarSystem),this.locale=e.locale,this.weekDow=e.locale.week.dow,this.weekDoy=e.locale.week.doy,\"ISO\"===e.weekNumberCalculation&&(this.weekDow=1,this.weekDoy=4),\"number\"==typeof e.firstDay&&(this.weekDow=e.firstDay),\"function\"==typeof e.weekNumberCalculation&&(this.weekNumberFunc=e.weekNumberCalculation),this.weekText=null!=e.weekText?e.weekText:e.locale.options.weekText,this.cmdFormatter=e.cmdFormatter,this.defaultSeparator=e.defaultSeparator}return e.prototype.createMarker=function(e){var t=this.createMarkerMeta(e);return null===t?null:t.marker},e.prototype.createNowMarker=function(){return this.canComputeOffset?this.timestampToMarker((new Date).valueOf()):Me(Re(new Date))},e.prototype.createMarkerMeta=function(e){if(\"string\"==typeof e)return this.parse(e);var t=null;return\"number\"==typeof e?t=this.timestampToMarker(e):e instanceof Date?(e=e.valueOf(),isNaN(e)||(t=this.timestampToMarker(e))):Array.isArray(e)&&(t=Me(e)),null!==t&&xe(t)?{marker:t,isTimeUnspecified:!1,forcedTzo:null}:null},e.prototype.parse=function(e){var t=Zn(e);if(null===t)return null;var n=t.marker,r=null;return null!==t.timeZoneOffset&&(this.canComputeOffset?n=this.timestampToMarker(n.valueOf()-60*t.timeZoneOffset*1e3):r=t.timeZoneOffset),{marker:n,isTimeUnspecified:t.isTimeUnspecified,forcedTzo:r}},e.prototype.getYear=function(e){return this.calendarSystem.getMarkerYear(e)},e.prototype.getMonth=function(e){return this.calendarSystem.getMarkerMonth(e)},e.prototype.add=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[0]+=t.years,n[1]+=t.months,n[2]+=t.days,n[6]+=t.milliseconds,this.calendarSystem.arrayToMarker(n)},e.prototype.subtract=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[0]-=t.years,n[1]-=t.months,n[2]-=t.days,n[6]-=t.milliseconds,this.calendarSystem.arrayToMarker(n)},e.prototype.addYears=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[0]+=t,this.calendarSystem.arrayToMarker(n)},e.prototype.addMonths=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[1]+=t,this.calendarSystem.arrayToMarker(n)},e.prototype.diffWholeYears=function(e,t){var n=this.calendarSystem;return _e(e)===_e(t)&&n.getMarkerDay(e)===n.getMarkerDay(t)&&n.getMarkerMonth(e)===n.getMarkerMonth(t)?n.getMarkerYear(t)-n.getMarkerYear(e):null},e.prototype.diffWholeMonths=function(e,t){var n=this.calendarSystem;return _e(e)===_e(t)&&n.getMarkerDay(e)===n.getMarkerDay(t)?n.getMarkerMonth(t)-n.getMarkerMonth(e)+12*(n.getMarkerYear(t)-n.getMarkerYear(e)):null},e.prototype.greatestWholeUnit=function(e,t){var n=this.diffWholeYears(e,t);return null!==n?{unit:\"year\",value:n}:null!==(n=this.diffWholeMonths(e,t))?{unit:\"month\",value:n}:null!==(n=Se(e,t))?{unit:\"week\",value:n}:null!==(n=De(e,t))?{unit:\"day\",value:n}:de(n=function(e,t){return(t.valueOf()-e.valueOf())/36e5}(e,t))?{unit:\"hour\",value:n}:de(n=function(e,t){return(t.valueOf()-e.valueOf())/6e4}(e,t))?{unit:\"minute\",value:n}:de(n=function(e,t){return(t.valueOf()-e.valueOf())/1e3}(e,t))?{unit:\"second\",value:n}:{unit:\"millisecond\",value:t.valueOf()-e.valueOf()}},e.prototype.countDurationsBetween=function(e,t,n){var r;return n.years&&null!==(r=this.diffWholeYears(e,t))?r/(Je(n)/365):n.months&&null!==(r=this.diffWholeMonths(e,t))?r/function(e){return Je(e)/30}(n):n.days&&null!==(r=De(e,t))?r/Je(n):(t.valueOf()-e.valueOf())/$e(n)},e.prototype.startOf=function(e,t){return\"year\"===t?this.startOfYear(e):\"month\"===t?this.startOfMonth(e):\"week\"===t?this.startOfWeek(e):\"day\"===t?be(e):\"hour\"===t?function(e){return Me([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours()])}(e):\"minute\"===t?function(e){return Me([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes()])}(e):\"second\"===t?function(e){return Me([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()])}(e):void 0},e.prototype.startOfYear=function(e){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(e)])},e.prototype.startOfMonth=function(e){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(e),this.calendarSystem.getMarkerMonth(e)])},e.prototype.startOfWeek=function(e){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(e),this.calendarSystem.getMarkerMonth(e),e.getUTCDate()-(e.getUTCDay()-this.weekDow+7)%7])},e.prototype.computeWeekNumber=function(e){return this.weekNumberFunc?this.weekNumberFunc(this.toDate(e)):function(e,t,n){var r=e.getUTCFullYear(),o=Ce(e,r,t,n);if(o<1)return Ce(e,r-1,t,n);var i=Ce(e,r+1,t,n);return i>=1?Math.min(o,i):o}(e,this.weekDow,this.weekDoy)},e.prototype.format=function(e,t,n){return void 0===n&&(n={}),t.format({marker:e,timeZoneOffset:null!=n.forcedTzo?n.forcedTzo:this.offsetForMarker(e)},this)},e.prototype.formatRange=function(e,t,n,r){return void 0===r&&(r={}),r.isEndExclusive&&(t=ge(t,-1)),n.formatRange({marker:e,timeZoneOffset:null!=r.forcedStartTzo?r.forcedStartTzo:this.offsetForMarker(e)},{marker:t,timeZoneOffset:null!=r.forcedEndTzo?r.forcedEndTzo:this.offsetForMarker(t)},this,r.defaultSeparator)},e.prototype.formatIso=function(e,t){void 0===t&&(t={});var n=null;return t.omitTimeZoneOffset||(n=null!=t.forcedTzo?t.forcedTzo:this.offsetForMarker(e)),function(e,t,n){void 0===n&&(n=!1);var r=e.toISOString();return r=r.replace(\".000\",\"\"),n&&(r=r.replace(\"T00:00:00Z\",\"\")),r.length>10&&(null==t?r=r.replace(\"Z\",\"\"):0!==t&&(r=r.replace(\"Z\",rt(t,!0)))),r}(e,n,t.omitTime)},e.prototype.timestampToMarker=function(e){return\"local\"===this.timeZone?Me(Re(new Date(e))):\"UTC\"!==this.timeZone&&this.namedTimeZoneImpl?Me(this.namedTimeZoneImpl.timestampToArray(e)):new Date(e)},e.prototype.offsetForMarker=function(e){return\"local\"===this.timeZone?-Te(ke(e)).getTimezoneOffset():\"UTC\"===this.timeZone?0:this.namedTimeZoneImpl?this.namedTimeZoneImpl.offsetForArray(ke(e)):null},e.prototype.toDate=function(e,t){return\"local\"===this.timeZone?Te(ke(e)):\"UTC\"===this.timeZone?new Date(e.valueOf()):this.namedTimeZoneImpl?new Date(e.valueOf()-1e3*this.namedTimeZoneImpl.offsetForArray(ke(e))*60):new Date(e.valueOf()-(t||0))},e}(),Kn=[],Jn={code:\"en\",week:{dow:0,doy:4},direction:\"ltr\",buttonText:{prev:\"prev\",next:\"next\",prevYear:\"prev year\",nextYear:\"next year\",year:\"year\",today:\"today\",month:\"month\",week:\"week\",day:\"day\",list:\"list\"},weekText:\"W\",allDayText:\"all-day\",moreLinkText:\"more\",noEventsText:\"No events to display\"};function $n(e){for(var t=e.length>0?e[0].code:\"en\",n=Kn.concat(e),r={en:Jn},o=0,i=n;o<i.length;o++){var a=i[o];r[a.code]=a}return{map:r,defaultCode:t}}function Qn(e,t){return\"object\"!=typeof e||Array.isArray(e)?function(e,t){var n=[].concat(e||[]),r=function(e,t){for(var n=0;n<e.length;n++)for(var r=e[n].toLocaleLowerCase().split(\"-\"),o=r.length;o>0;o--){var i=r.slice(0,o).join(\"-\");if(t[i])return t[i]}return null}(n,t)||Jn;return er(e,n,r)}(e,t):er(e.code,[e.code],e)}function er(e,t,n){var r=Ne([Jn,n],[\"buttonText\"]);delete r.code;var o=r.week;return delete r.week,{codeArg:e,codes:t,week:o,simpleNumberFormat:new Intl.NumberFormat(e),options:r}}function tr(e){var t=Qn(e.locale||\"en\",$n([]).map);return new Xn(r(r({timeZone:bt.timeZone,calendarSystem:\"gregory\"},e),{locale:t}))}var nr,rr={startTime:\"09:00\",endTime:\"17:00\",daysOfWeek:[1,2,3,4,5],display:\"inverse-background\",classNames:\"fc-non-business\",groupId:\"_businessHours\"};function or(e,t){return It(function(e){var t;t=!0===e?[{}]:Array.isArray(e)?e.filter((function(e){return e.daysOfWeek})):\"object\"==typeof e&&e?[e]:[];return t=t.map((function(e){return r(r({},rr),e)}))}(e),null,t)}function ir(e,t){return e.left>=t.left&&e.left<t.right&&e.top>=t.top&&e.top<t.bottom}function ar(e,t){var n={left:Math.max(e.left,t.left),right:Math.min(e.right,t.right),top:Math.max(e.top,t.top),bottom:Math.min(e.bottom,t.bottom)};return n.left<n.right&&n.top<n.bottom&&n}function sr(e,t){return{left:Math.min(Math.max(e.left,t.left),t.right),top:Math.min(Math.max(e.top,t.top),t.bottom)}}function lr(e){return{left:(e.left+e.right)/2,top:(e.top+e.bottom)/2}}function ur(e,t){return{left:e.left-t.left,top:e.top-t.top}}function cr(){return null==nr&&(nr=function(){if(\"undefined\"==typeof document)return!0;var e=document.createElement(\"div\");e.style.position=\"absolute\",e.style.top=\"0px\",e.style.left=\"0px\",e.innerHTML=\"<table><tr><td><div></div></td></tr></table>\",e.querySelector(\"table\").style.height=\"100px\",e.querySelector(\"div\").style.height=\"100%\",document.body.appendChild(e);var t=e.querySelector(\"div\").offsetHeight>0;return document.body.removeChild(e),t}()),nr}var dr={defs:{},instances:{}},pr=function(){function e(){this.getKeysForEventDefs=it(this._getKeysForEventDefs),this.splitDateSelection=it(this._splitDateSpan),this.splitEventStore=it(this._splitEventStore),this.splitIndividualUi=it(this._splitIndividualUi),this.splitEventDrag=it(this._splitInteraction),this.splitEventResize=it(this._splitInteraction),this.eventUiBuilders={}}return e.prototype.splitProps=function(e){var t=this,n=this.getKeyInfo(e),r=this.getKeysForEventDefs(e.eventStore),o=this.splitDateSelection(e.dateSelection),i=this.splitIndividualUi(e.eventUiBases,r),a=this.splitEventStore(e.eventStore,r),s=this.splitEventDrag(e.eventDrag),l=this.splitEventResize(e.eventResize),u={};for(var c in this.eventUiBuilders=Oe(n,(function(e,n){return t.eventUiBuilders[n]||it(fr)})),n){var d=n[c],p=a[c]||dr,f=this.eventUiBuilders[c];u[c]={businessHours:d.businessHours||e.businessHours,dateSelection:o[c]||null,eventStore:p,eventUiBases:f(e.eventUiBases[\"\"],d.ui,i[c]),eventSelection:p.instances[e.eventSelection]?e.eventSelection:\"\",eventDrag:s[c]||null,eventResize:l[c]||null}}return u},e.prototype._splitDateSpan=function(e){var t={};if(e)for(var n=0,r=this.getKeysForDateSpan(e);n<r.length;n++){t[r[n]]=e}return t},e.prototype._getKeysForEventDefs=function(e){var t=this;return Oe(e.defs,(function(e){return t.getKeysForEventDef(e)}))},e.prototype._splitEventStore=function(e,t){var n=e.defs,r=e.instances,o={};for(var i in n)for(var a=0,s=t[i];a<s.length;a++){o[p=s[a]]||(o[p]={defs:{},instances:{}}),o[p].defs[i]=n[i]}for(var l in r)for(var u=r[l],c=0,d=t[u.defId];c<d.length;c++){var p;o[p=d[c]]&&(o[p].instances[l]=u)}return o},e.prototype._splitIndividualUi=function(e,t){var n={};for(var r in e)if(r)for(var o=0,i=t[r];o<i.length;o++){var a=i[o];n[a]||(n[a]={}),n[a][r]=e[r]}return n},e.prototype._splitInteraction=function(e){var t={};if(e){var n=this._splitEventStore(e.affectedEvents,this._getKeysForEventDefs(e.affectedEvents)),r=this._getKeysForEventDefs(e.mutatedEvents),o=this._splitEventStore(e.mutatedEvents,r),i=function(r){t[r]||(t[r]={affectedEvents:n[r]||dr,mutatedEvents:o[r]||dr,isEvent:e.isEvent})};for(var a in n)i(a);for(var a in o)i(a)}return t},e}();function fr(e,t,n){var o=[];e&&o.push(e),t&&o.push(t);var i={\"\":Vt(o)};return n&&r(i,n),i}function hr(e,t,n,r){return{dow:e.getUTCDay(),isDisabled:Boolean(r&&!sn(r.activeRange,e)),isOther:Boolean(r&&!sn(r.currentRange,e)),isToday:Boolean(t&&sn(t,e)),isPast:Boolean(n?e<n:!!t&&e<t.start),isFuture:Boolean(n?e>n:!!t&&e>=t.end)}}function vr(e,t){var n=[\"fc-day\",\"fc-day-\"+fe[e.dow]];return e.isDisabled?n.push(\"fc-day-disabled\"):(e.isToday&&(n.push(\"fc-day-today\"),n.push(t.getClass(\"today\"))),e.isPast&&n.push(\"fc-day-past\"),e.isFuture&&n.push(\"fc-day-future\"),e.isOther&&n.push(\"fc-day-other\")),n}function gr(e,t){return void 0===t&&(t=\"day\"),JSON.stringify({date:tt(e),type:t})}var mr,yr=null;function Er(){return null===yr&&(yr=function(){var e=document.createElement(\"div\");j(e,{position:\"absolute\",top:-1e3,left:0,border:0,padding:0,overflow:\"scroll\",direction:\"rtl\"}),e.innerHTML=\"<div></div>\",document.body.appendChild(e);var t=e.firstChild.getBoundingClientRect().left>e.getBoundingClientRect().left;return W(e),t}()),yr}function Sr(){return mr||(mr=function(){var e=document.createElement(\"div\");e.style.overflow=\"scroll\",document.body.appendChild(e);var t=Dr(e);return document.body.removeChild(e),t}()),mr}function Dr(e){return{x:e.offsetHeight-e.clientHeight,y:e.offsetWidth-e.clientWidth}}function br(e,t){void 0===t&&(t=!1);var n=window.getComputedStyle(e),r=parseInt(n.borderLeftWidth,10)||0,o=parseInt(n.borderRightWidth,10)||0,i=parseInt(n.borderTopWidth,10)||0,a=parseInt(n.borderBottomWidth,10)||0,s=Dr(e),l=s.y-r-o,u={borderLeft:r,borderRight:o,borderTop:i,borderBottom:a,scrollbarBottom:s.x-i-a,scrollbarLeft:0,scrollbarRight:0};return Er()&&\"rtl\"===n.direction?u.scrollbarLeft=l:u.scrollbarRight=l,t&&(u.paddingLeft=parseInt(n.paddingLeft,10)||0,u.paddingRight=parseInt(n.paddingRight,10)||0,u.paddingTop=parseInt(n.paddingTop,10)||0,u.paddingBottom=parseInt(n.paddingBottom,10)||0),u}function Cr(e,t,n){void 0===t&&(t=!1);var r=n?e.getBoundingClientRect():wr(e),o=br(e,t),i={left:r.left+o.borderLeft+o.scrollbarLeft,right:r.right-o.borderRight-o.scrollbarRight,top:r.top+o.borderTop,bottom:r.bottom-o.borderBottom-o.scrollbarBottom};return t&&(i.left+=o.paddingLeft,i.right-=o.paddingRight,i.top+=o.paddingTop,i.bottom-=o.paddingBottom),i}function wr(e){var t=e.getBoundingClientRect();return{left:t.left+window.pageXOffset,top:t.top+window.pageYOffset,right:t.right+window.pageXOffset,bottom:t.bottom+window.pageYOffset}}function Rr(e){for(var t=[];e instanceof HTMLElement;){var n=window.getComputedStyle(e);if(\"fixed\"===n.position)break;/(auto|scroll)/.test(n.overflow+n.overflowY+n.overflowX)&&t.push(e),e=e.parentNode}return t}function Tr(e,t,n){var r=!1,o=function(){r||(r=!0,t.apply(this,arguments))},i=function(){r||(r=!0,n&&n.apply(this,arguments))},a=e(o,i);a&&\"function\"==typeof a.then&&a.then(o,i)}var kr=function(){function e(){this.handlers={},this.thisContext=null}return e.prototype.setThisContext=function(e){this.thisContext=e},e.prototype.setOptions=function(e){this.options=e},e.prototype.on=function(e,t){!function(e,t,n){(e[t]||(e[t]=[])).push(n)}(this.handlers,e,t)},e.prototype.off=function(e,t){!function(e,t,n){n?e[t]&&(e[t]=e[t].filter((function(e){return e!==n}))):delete e[t]}(this.handlers,e,t)},e.prototype.trigger=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=this.handlers[e]||[],o=this.options&&this.options[e],i=[].concat(o||[],r),a=0,s=i;a<s.length;a++){var l=s[a];l.apply(this.thisContext,t)}},e.prototype.hasHandlers=function(e){return this.handlers[e]&&this.handlers[e].length||this.options&&this.options[e]},e}();var Mr=function(){function e(e,t,n,r){this.els=t;var o=this.originClientRect=e.getBoundingClientRect();n&&this.buildElHorizontals(o.left),r&&this.buildElVerticals(o.top)}return e.prototype.buildElHorizontals=function(e){for(var t=[],n=[],r=0,o=this.els;r<o.length;r++){var i=o[r].getBoundingClientRect();t.push(i.left-e),n.push(i.right-e)}this.lefts=t,this.rights=n},e.prototype.buildElVerticals=function(e){for(var t=[],n=[],r=0,o=this.els;r<o.length;r++){var i=o[r].getBoundingClientRect();t.push(i.top-e),n.push(i.bottom-e)}this.tops=t,this.bottoms=n},e.prototype.leftToIndex=function(e){var t,n=this.lefts,r=this.rights,o=n.length;for(t=0;t<o;t++)if(e>=n[t]&&e<r[t])return t},e.prototype.topToIndex=function(e){var t,n=this.tops,r=this.bottoms,o=n.length;for(t=0;t<o;t++)if(e>=n[t]&&e<r[t])return t},e.prototype.getWidth=function(e){return this.rights[e]-this.lefts[e]},e.prototype.getHeight=function(e){return this.bottoms[e]-this.tops[e]},e}(),xr=function(){function e(){}return e.prototype.getMaxScrollTop=function(){return this.getScrollHeight()-this.getClientHeight()},e.prototype.getMaxScrollLeft=function(){return this.getScrollWidth()-this.getClientWidth()},e.prototype.canScrollVertically=function(){return this.getMaxScrollTop()>0},e.prototype.canScrollHorizontally=function(){return this.getMaxScrollLeft()>0},e.prototype.canScrollUp=function(){return this.getScrollTop()>0},e.prototype.canScrollDown=function(){return this.getScrollTop()<this.getMaxScrollTop()},e.prototype.canScrollLeft=function(){return this.getScrollLeft()>0},e.prototype.canScrollRight=function(){return this.getScrollLeft()<this.getMaxScrollLeft()},e}(),_r=function(e){function t(t){var n=e.call(this)||this;return n.el=t,n}return n(t,e),t.prototype.getScrollTop=function(){return this.el.scrollTop},t.prototype.getScrollLeft=function(){return this.el.scrollLeft},t.prototype.setScrollTop=function(e){this.el.scrollTop=e},t.prototype.setScrollLeft=function(e){this.el.scrollLeft=e},t.prototype.getScrollWidth=function(){return this.el.scrollWidth},t.prototype.getScrollHeight=function(){return this.el.scrollHeight},t.prototype.getClientHeight=function(){return this.el.clientHeight},t.prototype.getClientWidth=function(){return this.el.clientWidth},t}(xr),Ir=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.getScrollTop=function(){return window.pageYOffset},t.prototype.getScrollLeft=function(){return window.pageXOffset},t.prototype.setScrollTop=function(e){window.scroll(window.pageXOffset,e)},t.prototype.setScrollLeft=function(e){window.scroll(e,window.pageYOffset)},t.prototype.getScrollWidth=function(){return document.documentElement.scrollWidth},t.prototype.getScrollHeight=function(){return document.documentElement.scrollHeight},t.prototype.getClientHeight=function(){return document.documentElement.clientHeight},t.prototype.getClientWidth=function(){return document.documentElement.clientWidth},t}(xr),Pr=function(){function e(e){this.iconOverrideOption&&this.setIconOverride(e[this.iconOverrideOption])}return e.prototype.setIconOverride=function(e){var t,n;if(\"object\"==typeof e&&e){for(n in t=r({},this.iconClasses),e)t[n]=this.applyIconOverridePrefix(e[n]);this.iconClasses=t}else!1===e&&(this.iconClasses={})},e.prototype.applyIconOverridePrefix=function(e){var t=this.iconOverridePrefix;return t&&0!==e.indexOf(t)&&(e=t+e),e},e.prototype.getClass=function(e){return this.classes[e]||\"\"},e.prototype.getIconClass=function(e,t){var n;return(n=t&&this.rtlIconClasses&&this.rtlIconClasses[e]||this.iconClasses[e])?this.baseIconClass+\" \"+n:\"\"},e.prototype.getCustomButtonIconClass=function(e){var t;return this.iconOverrideCustomButtonOption&&(t=e[this.iconOverrideCustomButtonOption])?this.baseIconClass+\" \"+this.applyIconOverridePrefix(t):\"\"},e}();if(Pr.prototype.classes={},Pr.prototype.iconClasses={},Pr.prototype.baseIconClass=\"\",Pr.prototype.iconOverridePrefix=\"\",\"undefined\"==typeof FullCalendarVDom)throw new Error(\"Please import the top-level fullcalendar lib before attempting to import a plugin.\");var Nr=FullCalendarVDom.Component,Hr=FullCalendarVDom.createElement,Or=FullCalendarVDom.render,Ar=FullCalendarVDom.createRef,Ur=FullCalendarVDom.Fragment,Lr=FullCalendarVDom.createContext,Wr=FullCalendarVDom.flushToDom,Vr=function(){function e(e,t,n){var o=this;this.execFunc=e,this.emitter=t,this.scrollTime=n,this.handleScrollRequest=function(e){o.queuedRequest=r({},o.queuedRequest||{},e),o.drain()},t.on(\"_scrollRequest\",this.handleScrollRequest),this.fireInitialScroll()}return e.prototype.detach=function(){this.emitter.off(\"_scrollRequest\",this.handleScrollRequest)},e.prototype.update=function(e){e?this.fireInitialScroll():this.drain()},e.prototype.fireInitialScroll=function(){this.handleScrollRequest({time:this.scrollTime})},e.prototype.drain=function(){this.queuedRequest&&this.execFunc(this.queuedRequest)&&(this.queuedRequest=null)},e}(),zr=Lr({});function Fr(e,t,n,r,o,i,a,s,l,u,c,d,p){return{dateEnv:o,options:n,pluginHooks:a,emitter:u,dispatch:s,getCurrentData:l,calendarApi:c,viewSpec:e,viewApi:t,dateProfileGenerator:r,theme:i,isRtl:\"rtl\"===n.direction,addResizeHandler:function(e){u.on(\"_resize\",e)},removeResizeHandler:function(e){u.off(\"_resize\",e)},createScrollResponder:function(e){return new Vr(e,u,Ye(n.scrollTime))},registerInteractiveComponent:d,unregisterInteractiveComponent:p}}var Br=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.shouldComponentUpdate=function(e,t){return this.debug&&console.log(We(e,this.props),We(t,this.state)),!Ve(this.props,e,this.propEquality)||!Ve(this.state,t,this.stateEquality)},t.addPropsEquality=Gr,t.addStateEquality=qr,t.contextType=zr,t}(Nr);Br.prototype.propEquality={},Br.prototype.stateEquality={};var jr=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.contextType=zr,t}(Br);function Gr(e){var t=Object.create(this.prototype.propEquality);r(t,e),this.prototype.propEquality=t}function qr(e){var t=Object.create(this.prototype.stateEquality);r(t,e),this.prototype.stateEquality=t}function Yr(e,t){\"function\"==typeof e?e(t):e&&(e.current=t)}function Zr(e,t,n,r,o){switch(t.type){case\"RECEIVE_EVENTS\":return function(e,t,n,r,o,i){if(t&&n===t.latestFetchId){var a=It(function(e,t,n){var r=n.options.eventDataTransform,o=t?t.eventDataTransform:null;o&&(e=Xr(e,o));r&&(e=Xr(e,r));return e}(o,t,i),t,i);return r&&(a=Be(a,r,i)),Ot(Kr(e,t.sourceId),a)}return e}(e,n[t.sourceId],t.fetchId,t.fetchRange,t.rawEvents,o);case\"ADD_EVENTS\":return function(e,t,n,r){n&&(t=Be(t,n,r));return Ot(e,t)}(e,t.eventStore,r?r.activeRange:null,o);case\"MERGE_EVENTS\":return Ot(e,t.eventStore);case\"PREV\":case\"NEXT\":case\"CHANGE_DATE\":case\"CHANGE_VIEW_TYPE\":return r?Be(e,r.activeRange,o):e;case\"REMOVE_EVENTS\":return function(e,t){var n=e.defs,r=e.instances,o={},i={};for(var a in n)t.defs[a]||(o[a]=n[a]);for(var s in r)!t.instances[s]&&o[r[s].defId]&&(i[s]=r[s]);return{defs:o,instances:i}}(e,t.eventStore);case\"REMOVE_EVENT_SOURCE\":return Kr(e,t.sourceId);case\"REMOVE_ALL_EVENT_SOURCES\":return At(e,(function(e){return!e.sourceId}));case\"REMOVE_ALL_EVENTS\":return{defs:{},instances:{}};default:return e}}function Xr(e,t){var n;if(t){n=[];for(var r=0,o=e;r<o.length;r++){var i=o[r],a=t(i);a?n.push(a):null==a&&n.push(i)}}else n=e;return n}function Kr(e,t){return At(e,(function(e){return e.sourceId!==t}))}function Jr(e,t){return $r({eventDrag:e},t)}function $r(e,t){var n=t.getCurrentData(),o=r({businessHours:n.businessHours,dateSelection:\"\",eventStore:n.eventStore,eventUiBases:n.eventUiBases,eventSelection:\"\",eventDrag:null,eventResize:null},e);return(t.pluginHooks.isPropsValid||Qr)(o,t)}function Qr(e,t,n,o){return void 0===n&&(n={}),!(e.eventDrag&&!function(e,t,n,o){var i=t.getCurrentData(),a=e.eventDrag,s=a.mutatedEvents,l=s.defs,u=s.instances,c=pn(l,a.isEvent?e.eventUiBases:{\"\":i.selectionConfig});o&&(c=Oe(c,o));var d=(v=e.eventStore,g=a.affectedEvents.instances,{defs:v.defs,instances:He(v.instances,(function(e){return!g[e.instanceId]}))}),p=d.defs,f=d.instances,h=pn(p,e.eventUiBases);var v,g;for(var m in u){var y=u[m],E=y.range,S=c[y.defId],D=l[y.defId];if(!eo(S.constraints,E,d,e.businessHours,t))return!1;var b=t.options.eventOverlap,C=\"function\"==typeof b?b:null;for(var w in f){var R=f[w];if(on(E,R.range)){if(!1===h[R.defId].overlap&&a.isEvent)return!1;if(!1===S.overlap)return!1;if(C&&!C(new zn(t,p[R.defId],R),new zn(t,D,y)))return!1}}for(var T=i.eventStore,k=0,M=S.allows;k<M.length;k++){var x=M[k],_=r(r({},n),{range:y.range,allDay:D.allDay}),I=T.defs[D.defId],P=T.instances[m],N=void 0;if(N=I?new zn(t,I,P):new zn(t,D),!x(_n(_,t),N))return!1}}return!0}(e,t,n,o))&&!(e.dateSelection&&!function(e,t,n,o){var i=e.eventStore,a=i.defs,s=i.instances,l=e.dateSelection,u=l.range,c=t.getCurrentData().selectionConfig;o&&(c=o(c));if(!eo(c.constraints,u,i,e.businessHours,t))return!1;var d=t.options.selectOverlap,p=\"function\"==typeof d?d:null;for(var f in s){var h=s[f];if(on(u,h.range)){if(!1===c.overlap)return!1;if(p&&!p(new zn(t,a[h.defId],h),null))return!1}}for(var v=0,g=c.allows;v<g.length;v++){var m=g[v],y=r(r({},n),l);if(!m(_n(y,t),null))return!1}return!0}(e,t,n,o))}function eo(e,t,n,r,o){for(var i=0,a=e;i<a.length;i++){if(!ro(to(a[i],t,n,r,o),t))return!1}return!0}function to(e,t,n,r,o){return\"businessHours\"===e?no(Be(r,t,o)):\"string\"==typeof e?no(At(n,(function(t){return t.groupId===e}))):\"object\"==typeof e&&e?no(Be(e,t,o)):[]}function no(e){var t=e.instances,n=[];for(var r in t)n.push(t[r].range);return n}function ro(e,t){for(var n=0,r=e;n<r.length;n++){if(an(r[n],t))return!0}return!1}var oo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.uid=$(),t}return n(t,e),t.prototype.prepareHits=function(){},t.prototype.queryHit=function(e,t,n,r){return null},t.prototype.isInteractionValid=function(e){var t=this.props.dateProfile,n=e.mutatedEvents.instances;if(t)for(var r in n)if(!an(t.validRange,n[r].range))return!1;return Jr(e,this.context)},t.prototype.isDateSelectionValid=function(e){var t,n,r=this.props.dateProfile;return!(r&&!an(r.validRange,e.range))&&(t=e,n=this.context,$r({dateSelection:t},n))},t.prototype.isValidSegDownEl=function(e){return!this.props.eventDrag&&!this.props.eventResize&&!V(e,\".fc-event-mirror\")&&(this.isPopover()||!this.isInPopover(e))},t.prototype.isValidDateDownEl=function(e){return!(V(e,\".fc-event:not(.fc-bg-event)\")||V(e,\".fc-daygrid-more-link\")||V(e,\"a[data-navlink]\")||this.isInPopover(e))},t.prototype.isPopover=function(){return!1},t.prototype.isInPopover=function(e){return Boolean(V(e,\".fc-popover\"))},t}(jr);function io(e){return{id:$(),deps:e.deps||[],reducers:e.reducers||[],contextInit:[].concat(e.contextInit||[]),eventRefiners:e.eventRefiners||{},eventDefMemberAdders:e.eventDefMemberAdders||[],eventSourceRefiners:e.eventSourceRefiners||{},isDraggableTransformers:e.isDraggableTransformers||[],eventDragMutationMassagers:e.eventDragMutationMassagers||[],eventDefMutationAppliers:e.eventDefMutationAppliers||[],dateSelectionTransformers:e.dateSelectionTransformers||[],datePointTransforms:e.datePointTransforms||[],dateSpanTransforms:e.dateSpanTransforms||[],views:e.views||{},viewPropsTransformers:e.viewPropsTransformers||[],isPropsValid:e.isPropsValid||null,externalDefTransforms:e.externalDefTransforms||[],eventResizeJoinTransforms:e.eventResizeJoinTransforms||[],viewContainerAppends:e.viewContainerAppends||[],eventDropTransformers:e.eventDropTransformers||[],componentInteractions:e.componentInteractions||[],calendarInteractions:e.calendarInteractions||[],themeClasses:e.themeClasses||{},eventSourceDefs:e.eventSourceDefs||[],cmdFormatter:e.cmdFormatter,recurringTypes:e.recurringTypes||[],namedTimeZonedImpl:e.namedTimeZonedImpl,initialView:e.initialView||\"\",elementDraggingImpl:e.elementDraggingImpl,optionChangeHandlers:e.optionChangeHandlers||{},scrollGridImpl:e.scrollGridImpl||null,contentTypeHandlers:e.contentTypeHandlers||{},listenerRefiners:e.listenerRefiners||{},optionRefiners:e.optionRefiners||{},propSetHandlers:e.propSetHandlers||{}}}function ao(){var e,t=[],n=[];return function(o,i){return e&&ot(o,t)&&ot(i,n)||(e=function(e,t){var n={},o={reducers:[],contextInit:[],eventRefiners:{},eventDefMemberAdders:[],eventSourceRefiners:{},isDraggableTransformers:[],eventDragMutationMassagers:[],eventDefMutationAppliers:[],dateSelectionTransformers:[],datePointTransforms:[],dateSpanTransforms:[],views:{},viewPropsTransformers:[],isPropsValid:null,externalDefTransforms:[],eventResizeJoinTransforms:[],viewContainerAppends:[],eventDropTransformers:[],componentInteractions:[],calendarInteractions:[],themeClasses:{},eventSourceDefs:[],cmdFormatter:null,recurringTypes:[],namedTimeZonedImpl:null,initialView:\"\",elementDraggingImpl:null,optionChangeHandlers:{},scrollGridImpl:null,contentTypeHandlers:{},listenerRefiners:{},optionRefiners:{},propSetHandlers:{}};function i(e){for(var t=0,a=e;t<a.length;t++){var s=a[t];n[s.id]||(n[s.id]=!0,i(s.deps),u=s,o={reducers:(l=o).reducers.concat(u.reducers),contextInit:l.contextInit.concat(u.contextInit),eventRefiners:r(r({},l.eventRefiners),u.eventRefiners),eventDefMemberAdders:l.eventDefMemberAdders.concat(u.eventDefMemberAdders),eventSourceRefiners:r(r({},l.eventSourceRefiners),u.eventSourceRefiners),isDraggableTransformers:l.isDraggableTransformers.concat(u.isDraggableTransformers),eventDragMutationMassagers:l.eventDragMutationMassagers.concat(u.eventDragMutationMassagers),eventDefMutationAppliers:l.eventDefMutationAppliers.concat(u.eventDefMutationAppliers),dateSelectionTransformers:l.dateSelectionTransformers.concat(u.dateSelectionTransformers),datePointTransforms:l.datePointTransforms.concat(u.datePointTransforms),dateSpanTransforms:l.dateSpanTransforms.concat(u.dateSpanTransforms),views:r(r({},l.views),u.views),viewPropsTransformers:l.viewPropsTransformers.concat(u.viewPropsTransformers),isPropsValid:u.isPropsValid||l.isPropsValid,externalDefTransforms:l.externalDefTransforms.concat(u.externalDefTransforms),eventResizeJoinTransforms:l.eventResizeJoinTransforms.concat(u.eventResizeJoinTransforms),viewContainerAppends:l.viewContainerAppends.concat(u.viewContainerAppends),eventDropTransformers:l.eventDropTransformers.concat(u.eventDropTransformers),calendarInteractions:l.calendarInteractions.concat(u.calendarInteractions),componentInteractions:l.componentInteractions.concat(u.componentInteractions),themeClasses:r(r({},l.themeClasses),u.themeClasses),eventSourceDefs:l.eventSourceDefs.concat(u.eventSourceDefs),cmdFormatter:u.cmdFormatter||l.cmdFormatter,recurringTypes:l.recurringTypes.concat(u.recurringTypes),namedTimeZonedImpl:u.namedTimeZonedImpl||l.namedTimeZonedImpl,initialView:l.initialView||u.initialView,elementDraggingImpl:l.elementDraggingImpl||u.elementDraggingImpl,optionChangeHandlers:r(r({},l.optionChangeHandlers),u.optionChangeHandlers),scrollGridImpl:u.scrollGridImpl||l.scrollGridImpl,contentTypeHandlers:r(r({},l.contentTypeHandlers),u.contentTypeHandlers),listenerRefiners:r(r({},l.listenerRefiners),u.listenerRefiners),optionRefiners:r(r({},l.optionRefiners),u.optionRefiners),propSetHandlers:r(r({},l.propSetHandlers),u.propSetHandlers)})}var l,u}return e&&i(e),i(t),o}(o,i)),t=o,n=i,e}}var so=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(Pr);function lo(e,t,n,o){if(t[e])return t[e];var i=function(e,t,n,o){var i=n[e],a=o[e],s=function(e){return i&&null!==i[e]?i[e]:a&&null!==a[e]?a[e]:null},l=s(\"component\"),u=s(\"superType\"),c=null;if(u){if(u===e)throw new Error(\"Can't have a custom view type that references itself\");c=lo(u,t,n,o)}!l&&c&&(l=c.component);if(!l)return null;return{type:e,component:l,defaults:r(r({},c?c.defaults:{}),i?i.rawOptions:{}),overrides:r(r({},c?c.overrides:{}),a?a.rawOptions:{})}}(e,t,n,o);return i&&(t[e]=i),i}so.prototype.classes={root:\"fc-theme-standard\",tableCellShaded:\"fc-cell-shaded\",buttonGroup:\"fc-button-group\",button:\"fc-button fc-button-primary\",buttonActive:\"fc-button-active\"},so.prototype.baseIconClass=\"fc-icon\",so.prototype.iconClasses={close:\"fc-icon-x\",prev:\"fc-icon-chevron-left\",next:\"fc-icon-chevron-right\",prevYear:\"fc-icon-chevrons-left\",nextYear:\"fc-icon-chevrons-right\"},so.prototype.rtlIconClasses={prev:\"fc-icon-chevron-right\",next:\"fc-icon-chevron-left\",prevYear:\"fc-icon-chevrons-right\",nextYear:\"fc-icon-chevrons-left\"},so.prototype.iconOverrideOption=\"buttonIcons\",so.prototype.iconOverrideCustomButtonOption=\"icon\",so.prototype.iconOverridePrefix=\"fc-icon-\";var uo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Ar(),t.handleRootEl=function(e){Yr(t.rootElRef,e),t.props.elRef&&Yr(t.props.elRef,e)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=t.hookProps;return Hr(ho,{hookProps:n,didMount:t.didMount,willUnmount:t.willUnmount,elRef:this.handleRootEl},(function(r){return Hr(po,{hookProps:n,content:t.content,defaultContent:t.defaultContent,backupElRef:e.rootElRef},(function(e,o){return t.children(r,go(t.classNames,n),e,o)}))}))},t}(jr),co=Lr(0);function po(e){return Hr(co.Consumer,null,(function(t){return Hr(fo,r({renderId:t},e))}))}var fo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.innerElRef=Ar(),t}return n(t,e),t.prototype.render=function(){return this.props.children(this.innerElRef,this.renderInnerContent())},t.prototype.componentDidMount=function(){this.updateCustomContent()},t.prototype.componentDidUpdate=function(){this.updateCustomContent()},t.prototype.renderInnerContent=function(){var e=this.context.pluginHooks.contentTypeHandlers,t=this.props,n=this.customContentInfo,r=mo(t.content,t.hookProps),o=null;if(void 0===r&&(r=mo(t.defaultContent,t.hookProps)),void 0!==r){if(n)n.contentVal=r[n.contentKey];else if(\"object\"==typeof r)for(var i in e)if(void 0!==r[i]){n=this.customContentInfo={contentKey:i,contentVal:r[i],handler:e[i]()};break}o=n?[]:r}return o},t.prototype.updateCustomContent=function(){this.customContentInfo&&this.customContentInfo.handler(this.innerElRef.current||this.props.backupElRef.current,this.customContentInfo.contentVal)},t}(jr),ho=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleRootEl=function(e){t.rootEl=e,t.props.elRef&&Yr(t.props.elRef,e)},t}return n(t,e),t.prototype.render=function(){return this.props.children(this.handleRootEl)},t.prototype.componentDidMount=function(){var e=this.props.didMount;e&&e(r(r({},this.props.hookProps),{el:this.rootEl}))},t.prototype.componentWillUnmount=function(){var e=this.props.willUnmount;e&&e(r(r({},this.props.hookProps),{el:this.rootEl}))},t}(jr);function vo(){var e,t,n=[];return function(r,o){return t&&Le(t,o)&&r===e||(e=r,t=o,n=go(r,o)),n}}function go(e,t){return\"function\"==typeof e&&(e=e(t)),Ut(e)}function mo(e,t){return\"function\"==typeof e?e(t,Hr):e}var yo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.normalizeClassNames=vo(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r={view:t.viewApi},o=this.normalizeClassNames(n.viewClassNames,r);return Hr(ho,{hookProps:r,didMount:n.viewDidMount,willUnmount:n.viewWillUnmount,elRef:e.elRef},(function(t){return e.children(t,[\"fc-\"+e.viewSpec.type+\"-view\",\"fc-view\"].concat(o))}))},t}(jr);function Eo(e){return Oe(e,So)}function So(e){var t,n=\"function\"==typeof e?{component:e}:e,o=n.component;return n.content&&(t=n,o=function(e){return Hr(zr.Consumer,null,(function(n){return Hr(yo,{viewSpec:n.viewSpec},(function(o,i){var a=r(r({},e),{nextDayThreshold:n.options.nextDayThreshold});return Hr(uo,{hookProps:a,classNames:t.classNames,content:t.content,didMount:t.didMount,willUnmount:t.willUnmount,elRef:o},(function(e,t,n,r){return Hr(\"div\",{className:i.concat(t).join(\" \"),ref:e},r)}))}))}))}),{superType:n.type,component:o,rawOptions:n}}function Do(e,t,n,o){var i=Eo(e),a=Eo(t.views);return Oe(function(e,t){var n,r={};for(n in e)lo(n,r,e,t);for(n in t)lo(n,r,e,t);return r}(i,a),(function(e){return function(e,t,n,o,i){var a=e.overrides.duration||e.defaults.duration||o.duration||n.duration,s=null,l=\"\",u=\"\",c={};if(a&&(s=function(e){var t=JSON.stringify(e),n=bo[t];void 0===n&&(n=Ye(e),bo[t]=n);return n}(a))){var d=et(s);l=d.unit,1===d.value&&(u=l,c=t[l]?t[l].rawOptions:{})}var p=function(t){var n=t.buttonText||{},r=e.defaults.buttonTextKey;return null!=r&&null!=n[r]?n[r]:null!=n[e.type]?n[e.type]:null!=n[u]?n[u]:void 0};return{type:e.type,component:e.component,duration:s,durationUnit:l,singleUnit:u,optionDefaults:e.defaults,optionOverrides:r(r({},c),e.overrides),buttonTextOverride:p(o)||p(n)||e.overrides.buttonText,buttonTextDefault:p(i)||e.defaults.buttonText||p(bt)||e.type}}(e,a,t,n,o)}))}var bo={};var Co=function(){function e(e){this.props=e,this.nowDate=Wn(e.nowInput,e.dateEnv),this.initHiddenDays()}return e.prototype.buildPrev=function(e,t,n){var r=this.props.dateEnv,o=r.subtract(r.startOf(t,e.currentRangeUnit),e.dateIncrement);return this.build(o,-1,n)},e.prototype.buildNext=function(e,t,n){var r=this.props.dateEnv,o=r.add(r.startOf(t,e.currentRangeUnit),e.dateIncrement);return this.build(o,1,n)},e.prototype.build=function(e,t,n){void 0===n&&(n=!0);var r,o,i,a,s,l,u,c,d=this.props;return r=this.buildValidRange(),r=this.trimHiddenDays(r),n&&(u=e,e=null!=(c=r).start&&u<c.start?c.start:null!=c.end&&u>=c.end?new Date(c.end.valueOf()-1):u),o=this.buildCurrentRangeInfo(e,t),i=/^(year|month|week|day)$/.test(o.unit),a=this.buildRenderRange(this.trimHiddenDays(o.range),o.unit,i),s=a=this.trimHiddenDays(a),d.showNonCurrentDates||(s=nn(s,o.range)),s=nn(s=this.adjustActiveRange(s),r),l=on(o.range,r),{validRange:r,currentRange:o.range,currentRangeUnit:o.unit,isRangeAllDay:i,activeRange:s,renderRange:a,slotMinTime:d.slotMinTime,slotMaxTime:d.slotMaxTime,isValid:l,dateIncrement:this.buildDateIncrement(o.duration)}},e.prototype.buildValidRange=function(){var e=this.props.validRangeInput,t=\"function\"==typeof e?e.call(this.props.calendarApi,this.nowDate):e;return this.refineRange(t)||{start:null,end:null}},e.prototype.buildCurrentRangeInfo=function(e,t){var n,r=this.props,o=null,i=null,a=null;return r.duration?(o=r.duration,i=r.durationUnit,a=this.buildRangeFromDuration(e,t,o,i)):(n=this.props.dayCount)?(i=\"day\",a=this.buildRangeFromDayCount(e,t,n)):(a=this.buildCustomVisibleRange(e))?i=r.dateEnv.greatestWholeUnit(a.start,a.end).unit:(i=et(o=this.getFallbackDuration()).unit,a=this.buildRangeFromDuration(e,t,o,i)),{duration:o,unit:i,range:a}},e.prototype.getFallbackDuration=function(){return Ye({day:1})},e.prototype.adjustActiveRange=function(e){var t=this.props,n=t.dateEnv,r=t.usesMinMaxTime,o=t.slotMinTime,i=t.slotMaxTime,a=e.start,s=e.end;return r&&(Je(o)<0&&(a=be(a),a=n.add(a,o)),Je(i)>1&&(s=ve(s=be(s),-1),s=n.add(s,i))),{start:a,end:s}},e.prototype.buildRangeFromDuration=function(e,t,n,r){var o,i,a,s=this.props,l=s.dateEnv,u=s.dateAlignment;if(!u){var c=this.props.dateIncrement;u=c&&$e(c)<$e(n)?et(c).unit:r}function d(){o=l.startOf(e,u),i=l.add(o,n),a={start:o,end:i}}return Je(n)<=1&&this.isHiddenDay(o)&&(o=be(o=this.skipHiddenDays(o,t))),d(),this.trimHiddenDays(a)||(e=this.skipHiddenDays(e,t),d()),a},e.prototype.buildRangeFromDayCount=function(e,t,n){var r,o=this.props,i=o.dateEnv,a=o.dateAlignment,s=0,l=e;a&&(l=i.startOf(l,a)),l=be(l),r=l=this.skipHiddenDays(l,t);do{r=ve(r,1),this.isHiddenDay(r)||s++}while(s<n);return{start:l,end:r}},e.prototype.buildCustomVisibleRange=function(e){var t=this.props,n=t.visibleRangeInput,r=\"function\"==typeof n?n.call(t.calendarApi,t.dateEnv.toDate(e)):n,o=this.refineRange(r);return!o||null!=o.start&&null!=o.end?o:null},e.prototype.buildRenderRange=function(e,t,n){return e},e.prototype.buildDateIncrement=function(e){var t,n=this.props.dateIncrement;return n||((t=this.props.dateAlignment)?Ye(1,t):e||Ye({days:1}))},e.prototype.refineRange=function(e){if(e){var t=(n=e,r=this.props.dateEnv,o=null,i=null,n.start&&(o=r.createMarker(n.start)),n.end&&(i=r.createMarker(n.end)),o||i?o&&i&&i<o?null:{start:o,end:i}:null);return t&&(t=Jt(t)),t}var n,r,o,i;return null},e.prototype.initHiddenDays=function(){var e,t=this.props.hiddenDays||[],n=[],r=0;for(!1===this.props.weekends&&t.push(0,6),e=0;e<7;e++)(n[e]=-1!==t.indexOf(e))||r++;if(!r)throw new Error(\"invalid hiddenDays\");this.isHiddenDayHash=n},e.prototype.trimHiddenDays=function(e){var t=e.start,n=e.end;return t&&(t=this.skipHiddenDays(t)),n&&(n=this.skipHiddenDays(n,-1,!0)),null==t||null==n||t<n?{start:t,end:n}:null},e.prototype.isHiddenDay=function(e){return e instanceof Date&&(e=e.getUTCDay()),this.isHiddenDayHash[e]},e.prototype.skipHiddenDays=function(e,t,n){for(void 0===t&&(t=1),void 0===n&&(n=!1);this.isHiddenDayHash[(e.getUTCDay()+(n?t:0)+7)%7];)e=ve(e,t);return e},e}();function wo(e,t,n){var r=t?t.activeRange:null;return ko({},function(e,t){var n=Ln(t),r=[].concat(e.eventSources||[]),o=[];e.initialEvents&&r.unshift(e.initialEvents);e.events&&r.unshift(e.events);for(var i=0,a=r;i<a.length;i++){var s=Un(a[i],t,n);s&&o.push(s)}return o}(e,n),r,n)}function Ro(e,t,n,o){var i,a,s=n?n.activeRange:null;switch(t.type){case\"ADD_EVENT_SOURCES\":return ko(e,t.sources,s,o);case\"REMOVE_EVENT_SOURCE\":return i=e,a=t.sourceId,He(i,(function(e){return e.sourceId!==a}));case\"PREV\":case\"NEXT\":case\"CHANGE_DATE\":case\"CHANGE_VIEW_TYPE\":return n?Mo(e,s,o):e;case\"FETCH_EVENT_SOURCES\":return xo(e,t.sourceIds?Ae(t.sourceIds):Io(e,o),s,o);case\"RECEIVE_EVENTS\":case\"RECEIVE_EVENT_ERROR\":return function(e,t,n,o){var i,a=e[t];if(a&&n===a.latestFetchId)return r(r({},e),((i={})[t]=r(r({},a),{isFetching:!1,fetchRange:o}),i));return e}(e,t.sourceId,t.fetchId,t.fetchRange);case\"REMOVE_ALL_EVENT_SOURCES\":return{};default:return e}}function To(e){var t=0;for(var n in e)e[n].isFetching&&t++;return t}function ko(e,t,n,o){for(var i={},a=0,s=t;a<s.length;a++){var l=s[a];i[l.sourceId]=l}return n&&(i=Mo(i,n,o)),r(r({},e),i)}function Mo(e,t,n){return xo(e,He(e,(function(e){return function(e,t,n){return Po(e,n)?!n.options.lazyFetching||!e.fetchRange||e.isFetching||t.start<e.fetchRange.start||t.end>e.fetchRange.end:!e.latestFetchId}(e,t,n)})),t,n)}function xo(e,t,n,r){var o={};for(var i in e){var a=e[i];t[i]?o[i]=_o(a,n,r):o[i]=a}return o}function _o(e,t,n){var o=n.options,i=n.calendarApi,a=n.pluginHooks.eventSourceDefs[e.sourceDefId],s=$();return a.fetch({eventSource:e,range:t,context:n},(function(r){var a=r.rawEvents;o.eventSourceSuccess&&(a=o.eventSourceSuccess.call(i,a,r.xhr)||a),e.success&&(a=e.success.call(i,a,r.xhr)||a),n.dispatch({type:\"RECEIVE_EVENTS\",sourceId:e.sourceId,fetchId:s,fetchRange:t,rawEvents:a})}),(function(r){console.warn(r.message,r),o.eventSourceFailure&&o.eventSourceFailure.call(i,r),e.failure&&e.failure(r),n.dispatch({type:\"RECEIVE_EVENT_ERROR\",sourceId:e.sourceId,fetchId:s,fetchRange:t,error:r})})),r(r({},e),{isFetching:!0,latestFetchId:s})}function Io(e,t){return He(e,(function(e){return Po(e,t)}))}function Po(e,t){return!t.pluginHooks.eventSourceDefs[e.sourceDefId].ignoreRange}function No(e,t){switch(t.type){case\"UNSELECT_DATES\":return null;case\"SELECT_DATES\":return t.selection;default:return e}}function Ho(e,t){switch(t.type){case\"UNSELECT_EVENT\":return\"\";case\"SELECT_EVENT\":return t.eventInstanceId;default:return e}}function Oo(e,t){var n;switch(t.type){case\"UNSET_EVENT_DRAG\":return null;case\"SET_EVENT_DRAG\":return{affectedEvents:(n=t.state).affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return e}}function Ao(e,t){var n;switch(t.type){case\"UNSET_EVENT_RESIZE\":return null;case\"SET_EVENT_RESIZE\":return{affectedEvents:(n=t.state).affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return e}}function Uo(e,t,n,r,o){var i=[];return{headerToolbar:e.headerToolbar?Lo(e.headerToolbar,e,t,n,r,o,i):null,footerToolbar:e.footerToolbar?Lo(e.footerToolbar,e,t,n,r,o,i):null,viewsWithButtons:i}}function Lo(e,t,n,r,o,i,a){return Oe(e,(function(e){return function(e,t,n,r,o,i,a){var s=\"rtl\"===t.direction,l=t.customButtons||{},u=n.buttonText||{},c=t.buttonText||{};return(e?e.split(\" \"):[]).map((function(e){return e.split(\",\").map((function(e){if(\"title\"===e)return{buttonName:e};var t,n=void 0,d=void 0,p=void 0,f=void 0;return(t=l[e])?(d=function(e){t.click&&t.click.call(e.target,e,e.target)},(p=r.getCustomButtonIconClass(t))||(p=r.getIconClass(e,s))||(f=t.text)):(n=o[e])?(a.push(e),d=function(){i.changeView(e)},(f=n.buttonTextOverride)||(p=r.getIconClass(e,s))||(f=n.buttonTextDefault)):i[e]&&(d=function(){i[e]()},(f=u[e])||(p=r.getIconClass(e,s))||(f=c[e])),{buttonName:e,buttonClick:d,buttonIcon:p,buttonText:f}}))}))}(e,t,n,r,o,i,a)}))}function Wo(e,t,n,r,o){var i=null;\"GET\"===(e=e.toUpperCase())?t=function(e,t){return e+(-1===e.indexOf(\"?\")?\"?\":\"&\")+Vo(t)}(t,n):i=Vo(n);var a=new XMLHttpRequest;a.open(e,t,!0),\"GET\"!==e&&a.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),a.onload=function(){if(a.status>=200&&a.status<400){var e=!1,t=void 0;try{t=JSON.parse(a.responseText),e=!0}catch(e){}e?r(t,a):o(\"Failure parsing JSON\",a)}else o(\"Request failed\",a)},a.onerror=function(){o(\"Request failed\",a)},a.send(i)}function Vo(e){var t=[];for(var n in e)t.push(encodeURIComponent(n)+\"=\"+encodeURIComponent(e[n]));return t.join(\"&\")}function zo(e,t){for(var n=Ue(t.getCurrentData().eventSources),r=[],o=0,i=e;o<i.length;o++){for(var a=i[o],s=!1,l=0;l<n.length;l++)if(n[l]._raw===a){n.splice(l,1),s=!0;break}s||r.push(a)}for(var u=0,c=n;u<c.length;u++){var d=c[u];t.dispatch({type:\"REMOVE_EVENT_SOURCE\",sourceId:d.sourceId})}for(var p=0,f=r;p<f.length;p++){var h=f[p];t.calendarApi.addEventSource(h)}}var Fo=[io({eventSourceDefs:[{ignoreRange:!0,parseMeta:function(e){return Array.isArray(e.events)?e.events:null},fetch:function(e,t){t({rawEvents:e.eventSource.meta})}}]}),io({eventSourceDefs:[{parseMeta:function(e){return\"function\"==typeof e.events?e.events:null},fetch:function(e,t,n){var r=e.context.dateEnv;Tr(e.eventSource.meta.bind(null,Tn(e.range,r)),(function(e){t({rawEvents:e})}),n)}}]}),io({eventSourceRefiners:{method:String,extraParams:_t,startParam:String,endParam:String,timeZoneParam:String},eventSourceDefs:[{parseMeta:function(e){return e.url?{url:e.url,method:(e.method||\"GET\").toUpperCase(),extraParams:e.extraParams,startParam:e.startParam,endParam:e.endParam,timeZoneParam:e.timeZoneParam}:null},fetch:function(e,t,n){var o=e.eventSource.meta,i=function(e,t,n){var o,i,a,s,l=n.dateEnv,u=n.options,c={};null==(o=e.startParam)&&(o=u.startParam);null==(i=e.endParam)&&(i=u.endParam);null==(a=e.timeZoneParam)&&(a=u.timeZoneParam);s=\"function\"==typeof e.extraParams?e.extraParams():e.extraParams||{};r(c,s),c[o]=l.formatIso(t.start),c[i]=l.formatIso(t.end),\"local\"!==l.timeZone&&(c[a]=l.timeZone);return c}(o,e.range,e.context);Wo(o.method,o.url,i,(function(e,n){t({rawEvents:e,xhr:n})}),(function(e,t){n({message:e,xhr:t})}))}}]}),io({recurringTypes:[{parse:function(e,t){if(e.daysOfWeek||e.startTime||e.endTime||e.startRecur||e.endRecur){var n={daysOfWeek:e.daysOfWeek||null,startTime:e.startTime||null,endTime:e.endTime||null,startRecur:e.startRecur?t.createMarker(e.startRecur):null,endRecur:e.endRecur?t.createMarker(e.endRecur):null},r=void 0;return e.duration&&(r=e.duration),!r&&e.startTime&&e.endTime&&(o=e.endTime,i=e.startTime,r={years:o.years-i.years,months:o.months-i.months,days:o.days-i.days,milliseconds:o.milliseconds-i.milliseconds}),{allDayGuess:Boolean(!e.startTime&&!e.endTime),duration:r,typeData:n}}var o,i;return null},expand:function(e,t,n){var r=nn(t,{start:e.startRecur,end:e.endRecur});return r?function(e,t,n,r){var o=e?Ae(e):null,i=be(n.start),a=n.end,s=[];for(;i<a;){var l=void 0;o&&!o[i.getUTCDay()]||(l=t?r.add(i,t):i,s.push(l)),i=ve(i,1)}return s}(e.daysOfWeek,e.startTime,r,n):[]}}],eventRefiners:{daysOfWeek:_t,startTime:Ye,endTime:Ye,duration:Ye,startRecur:_t,endRecur:_t}}),io({optionChangeHandlers:{events:function(e,t){zo([e],t)},eventSources:zo}}),io({contentTypeHandlers:{html:function(){return Bo},domNodes:function(){return jo}},propSetHandlers:{dateProfile:function(e,t){t.emitter.trigger(\"datesSet\",r(r({},Tn(e.activeRange,t.dateEnv)),{view:t.viewApi}))},eventStore:function(e,t){var n=t.emitter;n.hasHandlers(\"eventsSet\")&&n.trigger(\"eventsSet\",Bn(e,t))}}})];function Bo(e,t){e.innerHTML=t}function jo(e,t){var n=Array.prototype.slice.call(e.childNodes),r=Array.prototype.slice.call(t);if(!ot(n,r)){for(var o=0,i=r;o<i.length;o++){var a=i[o];e.appendChild(a)}n.forEach(W)}}var Go=function(){function e(e){this.drainedOption=e,this.isRunning=!1,this.isDirty=!1,this.pauseDepths={},this.timeoutId=0}return e.prototype.request=function(e){this.isDirty=!0,this.isPaused()||(this.clearTimeout(),null==e?this.tryDrain():this.timeoutId=setTimeout(this.tryDrain.bind(this),e))},e.prototype.pause=function(e){void 0===e&&(e=\"\");var t=this.pauseDepths;t[e]=(t[e]||0)+1,this.clearTimeout()},e.prototype.resume=function(e,t){void 0===e&&(e=\"\");var n=this.pauseDepths;if(e in n){if(t)delete n[e];else--n[e]<=0&&delete n[e];this.tryDrain()}},e.prototype.isPaused=function(){return Object.keys(this.pauseDepths).length},e.prototype.tryDrain=function(){if(!this.isRunning&&!this.isPaused()){for(this.isRunning=!0;this.isDirty;)this.isDirty=!1,this.drained();this.isRunning=!1}},e.prototype.clear=function(){this.clearTimeout(),this.isDirty=!1,this.pauseDepths={}},e.prototype.clearTimeout=function(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=0)},e.prototype.drained=function(){this.drainedOption&&this.drainedOption()},e}(),qo=function(){function e(e,t){this.runTaskOption=e,this.drainedOption=t,this.queue=[],this.delayedRunner=new Go(this.drain.bind(this))}return e.prototype.request=function(e,t){this.queue.push(e),this.delayedRunner.request(t)},e.prototype.pause=function(e){this.delayedRunner.pause(e)},e.prototype.resume=function(e,t){this.delayedRunner.resume(e,t)},e.prototype.drain=function(){for(var e=this.queue;e.length;){for(var t=[],n=void 0;n=e.shift();)this.runTask(n),t.push(n);this.drained(t)}},e.prototype.runTask=function(e){this.runTaskOption&&this.runTaskOption(e)},e.prototype.drained=function(e){this.drainedOption&&this.drainedOption(e)},e}();function Yo(e,t,n){var r;return r=/^(year|month)$/.test(e.currentRangeUnit)?e.currentRange:e.activeRange,n.formatRange(r.start,r.end,St(t.titleFormat||function(e){var t=e.currentRangeUnit;if(\"year\"===t)return{year:\"numeric\"};if(\"month\"===t)return{year:\"numeric\",month:\"long\"};var n=De(e.currentRange.start,e.currentRange.end);return null!==n&&n>1?{year:\"numeric\",month:\"short\",day:\"numeric\"}:{year:\"numeric\",month:\"long\",day:\"numeric\"}}(e)),{isEndExclusive:e.isRangeAllDay,defaultSeparator:t.titleRangeSeparator})}var Zo=function(){function e(e){var t=this;this.computeOptionsData=it(this._computeOptionsData),this.computeCurrentViewData=it(this._computeCurrentViewData),this.organizeRawLocales=it($n),this.buildLocale=it(Qn),this.buildPluginHooks=ao(),this.buildDateEnv=it(Xo),this.buildTheme=it(Ko),this.parseToolbars=it(Uo),this.buildViewSpecs=it(Do),this.buildDateProfileGenerator=at(Jo),this.buildViewApi=it($o),this.buildViewUiProps=at(ti),this.buildEventUiBySource=it(Qo,Le),this.buildEventUiBases=it(ei),this.parseContextBusinessHours=at(ni),this.buildTitle=it(Yo),this.emitter=new kr,this.actionRunner=new qo(this._handleAction.bind(this),this.updateData.bind(this)),this.currentCalendarOptionsInput={},this.currentCalendarOptionsRefined={},this.currentViewOptionsInput={},this.currentViewOptionsRefined={},this.currentCalendarOptionsRefiners={},this.getCurrentData=function(){return t.data},this.dispatch=function(e){t.actionRunner.request(e)},this.props=e,this.actionRunner.pause();var n={},o=this.computeOptionsData(e.optionOverrides,n,e.calendarApi),i=o.calendarOptions.initialView||o.pluginHooks.initialView,a=this.computeCurrentViewData(i,o,e.optionOverrides,n);e.calendarApi.currentDataManager=this,this.emitter.setThisContext(e.calendarApi),this.emitter.setOptions(a.options);var s,l,u,c=(s=o.calendarOptions,l=o.dateEnv,null!=(u=s.initialDate)?l.createMarker(u):Wn(s.now,l)),d=a.dateProfileGenerator.build(c);sn(d.activeRange,c)||(c=d.currentRange.start);for(var p={dateEnv:o.dateEnv,options:o.calendarOptions,pluginHooks:o.pluginHooks,calendarApi:e.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},f=0,h=o.pluginHooks.contextInit;f<h.length;f++){(0,h[f])(p)}for(var v=wo(o.calendarOptions,d,p),g={dynamicOptionOverrides:n,currentViewType:i,currentDate:c,dateProfile:d,businessHours:this.parseContextBusinessHours(p),eventSources:v,eventUiBases:{},loadingLevel:To(v),eventStore:{defs:{},instances:{}},renderableEventStore:{defs:{},instances:{}},dateSelection:null,eventSelection:\"\",eventDrag:null,eventResize:null,selectionConfig:this.buildViewUiProps(p).selectionConfig},m=r(r({},p),g),y=0,E=o.pluginHooks.reducers;y<E.length;y++){var S=E[y];r(g,S(null,null,m))}g.loadingLevel&&this.emitter.trigger(\"loading\",!0),this.state=g,this.updateData(),this.actionRunner.resume()}return e.prototype.resetOptions=function(e,t){var n=this.props;n.optionOverrides=t?r(r({},n.optionOverrides),e):e,this.actionRunner.request({type:\"NOTHING\"})},e.prototype._handleAction=function(e){var t=this.props,n=this.state,o=this.emitter,i=function(e,t){var n;switch(t.type){case\"SET_OPTION\":return r(r({},e),((n={})[t.optionName]=t.rawOptionValue,n));default:return e}}(n.dynamicOptionOverrides,e),a=this.computeOptionsData(t.optionOverrides,i,t.calendarApi),s=function(e,t){switch(t.type){case\"CHANGE_VIEW_TYPE\":return t.viewType}return e}(n.currentViewType,e),l=this.computeCurrentViewData(s,a,t.optionOverrides,i);t.calendarApi.currentDataManager=this,o.setThisContext(t.calendarApi),o.setOptions(l.options);var u={dateEnv:a.dateEnv,options:a.calendarOptions,pluginHooks:a.pluginHooks,calendarApi:t.calendarApi,dispatch:this.dispatch,emitter:o,getCurrentData:this.getCurrentData},c=n.currentDate,d=n.dateProfile;this.data&&this.data.dateProfileGenerator!==l.dateProfileGenerator&&(d=l.dateProfileGenerator.build(c)),d=function(e,t,n,r){var o;switch(t.type){case\"CHANGE_VIEW_TYPE\":return r.build(t.dateMarker||n);case\"CHANGE_DATE\":if(!e.activeRange||!sn(e.currentRange,t.dateMarker))return r.build(t.dateMarker);break;case\"PREV\":if((o=r.buildPrev(e,n)).isValid)return o;break;case\"NEXT\":if((o=r.buildNext(e,n)).isValid)return o}return e}(d,e,c=function(e,t){switch(t.type){case\"CHANGE_DATE\":return t.dateMarker;default:return e}}(c,e),l.dateProfileGenerator),sn(d.currentRange,c)||(c=d.currentRange.start);for(var p=Ro(n.eventSources,e,d,u),f=To(p),h=Zr(n.eventStore,e,p,d,u),v=f&&!l.options.progressiveEventRendering&&n.renderableEventStore||h,g=this.buildViewUiProps(u),m=g.eventUiSingleBase,y=g.selectionConfig,E=this.buildEventUiBySource(p),S=this.buildEventUiBases(v.defs,m,E),D=n.loadingLevel||0,b=f,C={dynamicOptionOverrides:i,currentViewType:s,currentDate:c,dateProfile:d,eventSources:p,eventStore:h,renderableEventStore:v,selectionConfig:y,eventUiBases:S,loadingLevel:b,businessHours:this.parseContextBusinessHours(u),dateSelection:No(n.dateSelection,e),eventSelection:Ho(n.eventSelection,e),eventDrag:Oo(n.eventDrag,e),eventResize:Ao(n.eventResize,e)},w=r(r({},u),C),R=0,T=a.pluginHooks.reducers;R<T.length;R++){var k=T[R];r(C,k(n,e,w))}!D&&b?o.trigger(\"loading\",!0):D&&!b&&o.trigger(\"loading\",!1),this.state=C,t.onAction&&t.onAction(e)},e.prototype.updateData=function(){var e,t,n,o,i,a,s,l,u,c=this.props,d=this.state,p=this.data,f=this.computeOptionsData(c.optionOverrides,d.dynamicOptionOverrides,c.calendarApi),h=this.computeCurrentViewData(d.currentViewType,f,c.optionOverrides,d.dynamicOptionOverrides),v=this.data=r(r(r({viewTitle:this.buildTitle(d.dateProfile,h.options,f.dateEnv),calendarApi:c.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},f),h),d),g=f.pluginHooks.optionChangeHandlers,m=p&&p.calendarOptions,y=f.calendarOptions;if(m&&m!==y)for(var E in m.timeZone!==y.timeZone&&(d.eventSources=v.eventSources=(a=v.eventSources,s=d.dateProfile,l=v,u=s?s.activeRange:null,xo(a,Io(a,l),u,l)),d.eventStore=v.eventStore=(e=v.eventStore,t=p.dateEnv,n=v.dateEnv,o=e.defs,i=Oe(e.instances,(function(e){var i=o[e.defId];return i.allDay||i.recurringDef?e:r(r({},e),{range:{start:n.createMarker(t.toDate(e.range.start,e.forcedStartTzo)),end:n.createMarker(t.toDate(e.range.end,e.forcedEndTzo))},forcedStartTzo:n.canComputeOffset?null:e.forcedStartTzo,forcedEndTzo:n.canComputeOffset?null:e.forcedEndTzo})})),{defs:o,instances:i})),g)m[E]!==y[E]&&g[E](y[E],v);c.onData&&c.onData(v)},e.prototype._computeOptionsData=function(e,t,n){var r=this.processRawCalendarOptions(e,t),o=r.refinedOptions,i=r.pluginHooks,a=r.localeDefaults,s=r.availableLocaleData;ri(r.extra);var l=this.buildDateEnv(o.timeZone,o.locale,o.weekNumberCalculation,o.firstDay,o.weekText,i,s,o.defaultRangeSeparator),u=this.buildViewSpecs(i.views,e,t,a),c=this.buildTheme(o,i);return{calendarOptions:o,pluginHooks:i,dateEnv:l,viewSpecs:u,theme:c,toolbarConfig:this.parseToolbars(o,e,c,u,n),localeDefaults:a,availableRawLocales:s.map}},e.prototype.processRawCalendarOptions=function(e,t){var n=Mt([bt,e,t]),o=n.locales,i=n.locale,a=this.organizeRawLocales(o),s=a.map,l=this.buildLocale(i||a.defaultCode,s).options,u=this.buildPluginHooks(e.plugins||[],Fo),c=this.currentCalendarOptionsRefiners=r(r(r(r(r({},Dt),Ct),wt),u.listenerRefiners),u.optionRefiners),d={},p=Mt([bt,l,e,t]),f={},h=this.currentCalendarOptionsInput,v=this.currentCalendarOptionsRefined,g=!1;for(var m in p)\"plugins\"!==m&&(p[m]===h[m]||Rt[m]&&m in h&&Rt[m](h[m],p[m])?f[m]=v[m]:c[m]?(f[m]=c[m](p[m]),g=!0):d[m]=h[m]);return g&&(this.currentCalendarOptionsInput=p,this.currentCalendarOptionsRefined=f),{rawOptions:this.currentCalendarOptionsInput,refinedOptions:this.currentCalendarOptionsRefined,pluginHooks:u,availableLocaleData:a,localeDefaults:l,extra:d}},e.prototype._computeCurrentViewData=function(e,t,n,r){var o=t.viewSpecs[e];if(!o)throw new Error('viewType \"'+e+\"\\\" is not available. Please make sure you've loaded all neccessary plugins\");var i=this.processRawViewOptions(o,t.pluginHooks,t.localeDefaults,n,r),a=i.refinedOptions;return ri(i.extra),{viewSpec:o,options:a,dateProfileGenerator:this.buildDateProfileGenerator({dateProfileGeneratorClass:o.optionDefaults.dateProfileGeneratorClass,duration:o.duration,durationUnit:o.durationUnit,usesMinMaxTime:o.optionDefaults.usesMinMaxTime,dateEnv:t.dateEnv,calendarApi:this.props.calendarApi,slotMinTime:a.slotMinTime,slotMaxTime:a.slotMaxTime,showNonCurrentDates:a.showNonCurrentDates,dayCount:a.dayCount,dateAlignment:a.dateAlignment,dateIncrement:a.dateIncrement,hiddenDays:a.hiddenDays,weekends:a.weekends,nowInput:a.now,validRangeInput:a.validRange,visibleRangeInput:a.visibleRange,monthMode:a.monthMode,fixedWeekCount:a.fixedWeekCount}),viewApi:this.buildViewApi(e,this.getCurrentData,t.dateEnv)}},e.prototype.processRawViewOptions=function(e,t,n,o,i){var a=Mt([bt,e.optionDefaults,n,o,e.optionOverrides,i]),s=r(r(r(r(r(r({},Dt),Ct),wt),kt),t.listenerRefiners),t.optionRefiners),l={},u=this.currentViewOptionsInput,c=this.currentViewOptionsRefined,d=!1,p={};for(var f in a)a[f]===u[f]?l[f]=c[f]:(a[f]===this.currentCalendarOptionsInput[f]?f in this.currentCalendarOptionsRefined&&(l[f]=this.currentCalendarOptionsRefined[f]):s[f]?l[f]=s[f](a[f]):p[f]=a[f],d=!0);return d&&(this.currentViewOptionsInput=a,this.currentViewOptionsRefined=l),{rawOptions:this.currentViewOptionsInput,refinedOptions:this.currentViewOptionsRefined,extra:p}},e}();function Xo(e,t,n,r,o,i,a,s){var l=Qn(t||a.defaultCode,a.map);return new Xn({calendarSystem:\"gregory\",timeZone:e,namedTimeZoneImpl:i.namedTimeZonedImpl,locale:l,weekNumberCalculation:n,firstDay:r,weekText:o,cmdFormatter:i.cmdFormatter,defaultSeparator:s})}function Ko(e,t){return new(t.themeClasses[e.themeSystem]||so)(e)}function Jo(e){return new(e.dateProfileGeneratorClass||Co)(e)}function $o(e,t,n){return new On(e,t,n)}function Qo(e){return Oe(e,(function(e){return e.ui}))}function ei(e,t,n){var r={\"\":t};for(var o in e){var i=e[o];i.sourceId&&n[i.sourceId]&&(r[o]=n[i.sourceId])}return r}function ti(e){var t=e.options;return{eventUiSingleBase:Wt({display:t.eventDisplay,editable:t.editable,startEditable:t.eventStartEditable,durationEditable:t.eventDurationEditable,constraint:t.eventConstraint,overlap:\"boolean\"==typeof t.eventOverlap?t.eventOverlap:void 0,allow:t.eventAllow,backgroundColor:t.eventBackgroundColor,borderColor:t.eventBorderColor,textColor:t.eventTextColor,color:t.eventColor},e),selectionConfig:Wt({constraint:t.selectConstraint,overlap:\"boolean\"==typeof t.selectOverlap?t.selectOverlap:void 0,allow:t.selectAllow},e)}}function ni(e){return or(e.options.businessHours,e)}function ri(e,t){for(var n in e)console.warn(\"Unknown option '\"+n+\"'\"+(t?\" for view '\"+t+\"'\":\"\"))}var oi=function(e){function t(t){var n=e.call(this,t)||this;return n.handleData=function(e){n.dataManager?n.setState(e):n.state=e},n.dataManager=new Zo({optionOverrides:t.optionOverrides,calendarApi:t.calendarApi,onData:n.handleData}),n}return n(t,e),t.prototype.render=function(){return this.props.children(this.state)},t.prototype.componentDidUpdate=function(e){var t=this.props.optionOverrides;t!==e.optionOverrides&&this.dataManager.resetOptions(t)},t}(Nr);var ii=function(e){this.timeZoneName=e},ai=function(){function e(e){this.component=e.component}return e.prototype.destroy=function(){},e}();function si(e,t){return{component:e,el:t.el,useEventCenter:null==t.useEventCenter||t.useEventCenter}}function li(e){var t;return(t={})[e.component.uid]=e,t}var ui={},ci=function(){function e(e,t){this.emitter=new kr}return e.prototype.destroy=function(){},e.prototype.setMirrorIsVisible=function(e){},e.prototype.setMirrorNeedsRevert=function(e){},e.prototype.setAutoScrollEnabled=function(e){},e}(),di={},pi={startTime:Ye,duration:Ye,create:Boolean,sourceId:String};function fi(e){var t=xt(e,pi),n=t.refined,r=t.extra;return{startTime:n.startTime||null,duration:n.duration||null,create:null==n.create||n.create,sourceId:n.sourceId,leftoverProps:r}}var hi=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e,t,n=this.props,r=n.model,o=n.extraClassName,i=!1,a=r.center;return r.left?(i=!0,e=r.left):e=r.start,r.right?(i=!0,t=r.right):t=r.end,Hr(\"div\",{className:[o||\"\",\"fc-toolbar\",i?\"fc-toolbar-ltr\":\"\"].join(\" \")},this.renderSection(\"start\",e||[]),this.renderSection(\"center\",a||[]),this.renderSection(\"end\",t||[]))},t.prototype.renderSection=function(e,t){var n=this.props;return Hr(vi,{key:e,widgetGroups:t,title:n.title,activeButton:n.activeButton,isTodayEnabled:n.isTodayEnabled,isPrevEnabled:n.isPrevEnabled,isNextEnabled:n.isNextEnabled})},t}(jr),vi=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this,t=this.props.widgetGroups.map((function(t){return e.renderWidgetGroup(t)}));return Hr.apply(void 0,o([\"div\",{className:\"fc-toolbar-chunk\"}],t))},t.prototype.renderWidgetGroup=function(e){for(var t=this.props,n=this.context.theme,i=[],a=!0,s=0,l=e;s<l.length;s++){var u=l[s],c=u.buttonName,d=u.buttonClick,p=u.buttonText,f=u.buttonIcon;if(\"title\"===c)a=!1,i.push(Hr(\"h2\",{className:\"fc-toolbar-title\"},t.title));else{var h=f?{\"aria-label\":c}:{},v=[\"fc-\"+c+\"-button\",n.getClass(\"button\")];c===t.activeButton&&v.push(n.getClass(\"buttonActive\"));var g=!t.isTodayEnabled&&\"today\"===c||!t.isPrevEnabled&&\"prev\"===c||!t.isNextEnabled&&\"next\"===c;i.push(Hr(\"button\",r({disabled:g,className:v.join(\" \"),onClick:d,type:\"button\"},h),p||(f?Hr(\"span\",{className:f}):\"\")))}}if(i.length>1){var m=a&&n.getClass(\"buttonGroup\")||\"\";return Hr.apply(void 0,o([\"div\",{className:m}],i))}return i[0]},t}(jr),gi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={availableWidth:null},t.handleEl=function(e){t.el=e,Yr(t.props.elRef,e),t.updateAvailableWidth()},t.handleResize=function(){t.updateAvailableWidth()},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state,n=e.aspectRatio,r=[\"fc-view-harness\",n||e.liquid||e.height?\"fc-view-harness-active\":\"fc-view-harness-passive\"],o=\"\",i=\"\";return n?null!==t.availableWidth?o=t.availableWidth/n:i=1/n*100+\"%\":o=e.height||\"\",Hr(\"div\",{ref:this.handleEl,onClick:e.onClick,className:r.join(\" \"),style:{height:o,paddingBottom:i}},e.children)},t.prototype.componentDidMount=function(){this.context.addResizeHandler(this.handleResize)},t.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleResize)},t.prototype.updateAvailableWidth=function(){this.el&&this.props.aspectRatio&&this.setState({availableWidth:this.el.offsetWidth})},t}(jr),mi=function(e){function t(t){var n=e.call(this,t)||this;return n.handleSegClick=function(e,t){var r=n.component,o=r.context,i=dn(t);if(i&&r.isValidSegDownEl(e.target)){var a=V(e.target,\".fc-event-forced-url\"),s=a?a.querySelector(\"a[href]\").href:\"\";o.emitter.trigger(\"eventClick\",{el:t,event:new zn(r.context,i.eventRange.def,i.eventRange.instance),jsEvent:e,view:o.viewApi}),s&&!e.defaultPrevented&&(window.location.href=s)}},n.destroy=Z(t.el,\"click\",\".fc-event\",n.handleSegClick),n}return n(t,e),t}(ai),yi=function(e){function t(t){var n,r,o,i,a,s=e.call(this,t)||this;return s.handleEventElRemove=function(e){e===s.currentSegEl&&s.handleSegLeave(null,s.currentSegEl)},s.handleSegEnter=function(e,t){dn(t)&&(s.currentSegEl=t,s.triggerEvent(\"eventMouseEnter\",e,t))},s.handleSegLeave=function(e,t){s.currentSegEl&&(s.currentSegEl=null,s.triggerEvent(\"eventMouseLeave\",e,t))},s.removeHoverListeners=(n=t.el,r=\".fc-event\",o=s.handleSegEnter,i=s.handleSegLeave,Z(n,\"mouseover\",r,(function(e,t){if(t!==a){a=t,o(e,t);var n=function(e){a=null,i(e,t),t.removeEventListener(\"mouseleave\",n)};t.addEventListener(\"mouseleave\",n)}}))),s}return n(t,e),t.prototype.destroy=function(){this.removeHoverListeners()},t.prototype.triggerEvent=function(e,t,n){var r=this.component,o=r.context,i=dn(n);t&&!r.isValidSegDownEl(t.target)||o.emitter.trigger(e,{el:n,event:new zn(o,i.eventRange.def,i.eventRange.instance),jsEvent:t,view:o.viewApi})},t}(ai),Ei=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildViewContext=it(Fr),t.buildViewPropTransformers=it(Di),t.buildToolbarProps=it(Si),t.handleNavLinkClick=Y(\"a[data-navlink]\",t._handleNavLinkClick.bind(t)),t.headerRef=Ar(),t.footerRef=Ar(),t.interactionsStore={},t.registerInteractiveComponent=function(e,n){var r=si(e,n),o=[mi,yi].concat(t.props.pluginHooks.componentInteractions).map((function(e){return new e(r)}));t.interactionsStore[e.uid]=o,ui[e.uid]=r},t.unregisterInteractiveComponent=function(e){for(var n=0,r=t.interactionsStore[e.uid];n<r.length;n++){r[n].destroy()}delete t.interactionsStore[e.uid],delete ui[e.uid]},t.resizeRunner=new Go((function(){t.props.emitter.trigger(\"_resize\",!0),t.props.emitter.trigger(\"windowResize\",{view:t.props.viewApi})})),t.handleWindowResize=function(e){var n=t.props.options;n.handleWindowResize&&e.target===window&&t.resizeRunner.request(n.windowResizeDelay)},t}return n(t,e),t.prototype.render=function(){var e,t=this.props,n=t.toolbarConfig,o=t.options,i=this.buildToolbarProps(t.viewSpec,t.dateProfile,t.dateProfileGenerator,t.currentDate,Wn(t.options.now,t.dateEnv),t.viewTitle),a=!1,s=\"\";t.isHeightAuto||t.forPrint?s=\"\":null!=o.height?a=!0:null!=o.contentHeight?s=o.contentHeight:e=Math.max(o.aspectRatio,.5);var l=this.buildViewContext(t.viewSpec,t.viewApi,t.options,t.dateProfileGenerator,t.dateEnv,t.theme,t.pluginHooks,t.dispatch,t.getCurrentData,t.emitter,t.calendarApi,this.registerInteractiveComponent,this.unregisterInteractiveComponent);return Hr(zr.Provider,{value:l},n.headerToolbar&&Hr(hi,r({ref:this.headerRef,extraClassName:\"fc-header-toolbar\",model:n.headerToolbar},i)),Hr(gi,{liquid:a,height:s,aspectRatio:e,onClick:this.handleNavLinkClick},this.renderView(t),this.buildAppendContent()),n.footerToolbar&&Hr(hi,r({ref:this.footerRef,extraClassName:\"fc-footer-toolbar\",model:n.footerToolbar},i)))},t.prototype.componentDidMount=function(){var e=this.props;this.calendarInteractions=e.pluginHooks.calendarInteractions.map((function(t){return new t(e)})),window.addEventListener(\"resize\",this.handleWindowResize);var t=e.pluginHooks.propSetHandlers;for(var n in t)t[n](e[n],e)},t.prototype.componentDidUpdate=function(e){var t=this.props,n=t.pluginHooks.propSetHandlers;for(var r in n)t[r]!==e[r]&&n[r](t[r],t)},t.prototype.componentWillUnmount=function(){window.removeEventListener(\"resize\",this.handleWindowResize),this.resizeRunner.clear();for(var e=0,t=this.calendarInteractions;e<t.length;e++){t[e].destroy()}this.props.emitter.trigger(\"_unmount\")},t.prototype._handleNavLinkClick=function(e,t){var n=this.props,r=n.dateEnv,o=n.options,i=n.calendarApi,a=t.getAttribute(\"data-navlink\");a=a?JSON.parse(a):{};var s=r.createMarker(a.date),l=a.type,u=\"day\"===l?o.navLinkDayClick:\"week\"===l?o.navLinkWeekClick:null;\"function\"==typeof u?u.call(i,r.toDate(s),e):(\"string\"==typeof u&&(l=u),i.zoomTo(s,l))},t.prototype.buildAppendContent=function(){var e=this.props,t=e.pluginHooks.viewContainerAppends.map((function(t){return t(e)}));return Hr.apply(void 0,o([Ur,{}],t))},t.prototype.renderView=function(e){for(var t=e.pluginHooks,n=e.viewSpec,o={dateProfile:e.dateProfile,businessHours:e.businessHours,eventStore:e.renderableEventStore,eventUiBases:e.eventUiBases,dateSelection:e.dateSelection,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,isHeightAuto:e.isHeightAuto,forPrint:e.forPrint},i=0,a=this.buildViewPropTransformers(t.viewPropsTransformers);i<a.length;i++){var s=a[i];r(o,s.transform(o,e))}var l=n.component;return Hr(l,r({},o))},t}(Br);function Si(e,t,n,r,o,i){var a=n.build(o,void 0,!1),s=n.buildPrev(t,r,!1),l=n.buildNext(t,r,!1);return{title:i,activeButton:e.type,isTodayEnabled:a.isValid&&!sn(t.currentRange,o),isPrevEnabled:s.isValid,isNextEnabled:l.isValid}}function Di(e){return e.map((function(e){return new e}))}var bi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={forPrint:!1},t.handleBeforePrint=function(){t.setState({forPrint:!0})},t.handleAfterPrint=function(){t.setState({forPrint:!1})},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.options,n=this.state.forPrint,r=n||\"auto\"===t.height||\"auto\"===t.contentHeight,o=r||null==t.height?\"\":t.height,i=[\"fc\",n?\"fc-media-print\":\"fc-media-screen\",\"fc-direction-\"+t.direction,e.theme.getClass(\"root\")];return cr()||i.push(\"fc-liquid-hack\"),e.children(i,o,r,n)},t.prototype.componentDidMount=function(){var e=this.props.emitter;e.on(\"_beforeprint\",this.handleBeforePrint),e.on(\"_afterprint\",this.handleAfterPrint)},t.prototype.componentWillUnmount=function(){var e=this.props.emitter;e.off(\"_beforeprint\",this.handleBeforePrint),e.off(\"_afterprint\",this.handleAfterPrint)},t}(jr);function Ci(e,t){return St(!e||t>10?{weekday:\"short\"}:t>1?{weekday:\"short\",month:\"numeric\",day:\"numeric\",omitCommas:!0}:{weekday:\"long\"})}var wi=\"fc-col-header-cell\",Ri=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.context,t=e.dateEnv,n=e.options,o=e.theme,i=e.viewApi,a=this.props,s=a.date,l=a.dateProfile,u=hr(s,a.todayRange,null,l),c=[wi].concat(vr(u,o)),d=t.format(s,a.dayHeaderFormat),p=n.navLinks&&!u.isDisabled&&a.colCnt>1?{\"data-navlink\":gr(s),tabIndex:0}:{},f=r(r(r({date:t.toDate(s),view:i},a.extraHookProps),{text:d}),u);return Hr(uo,{hookProps:f,classNames:n.dayHeaderClassNames,content:n.dayHeaderContent,defaultContent:ki,didMount:n.dayHeaderDidMount,willUnmount:n.dayHeaderWillUnmount},(function(e,t,n,o){return Hr(\"th\",r({ref:e,className:c.concat(t).join(\" \"),\"data-date\":u.isDisabled?void 0:tt(s),colSpan:a.colSpan},a.extraDataAttrs),Hr(\"div\",{className:\"fc-scrollgrid-sync-inner\"},!u.isDisabled&&Hr(\"a\",r({ref:n,className:[\"fc-col-header-cell-cushion\",a.isSticky?\"fc-sticky\":\"\"].join(\" \")},p),o)))}))},t}(jr),Ti=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.dateEnv,o=t.theme,i=t.viewApi,a=t.options,s=ve(new Date(2592e5),e.dow),l={dow:e.dow,isDisabled:!1,isFuture:!1,isPast:!1,isToday:!1,isOther:!1},u=[wi].concat(vr(l,o),e.extraClassNames||[]),c=n.format(s,e.dayHeaderFormat),d=r(r(r(r({date:s},l),{view:i}),e.extraHookProps),{text:c});return Hr(uo,{hookProps:d,classNames:a.dayHeaderClassNames,content:a.dayHeaderContent,defaultContent:ki,didMount:a.dayHeaderDidMount,willUnmount:a.dayHeaderWillUnmount},(function(t,n,o,i){return Hr(\"th\",r({ref:t,className:u.concat(n).join(\" \"),colSpan:e.colSpan},e.extraDataAttrs),Hr(\"div\",{className:\"fc-scrollgrid-sync-inner\"},Hr(\"a\",{className:[\"fc-col-header-cell-cushion\",e.isSticky?\"fc-sticky\":\"\"].join(\" \"),ref:o},i)))}))},t}(jr);function ki(e){return e.text}var Mi=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.initialNowDate=Wn(n.options.now,n.dateEnv),r.initialNowQueriedMs=(new Date).valueOf(),r.state=r.computeTiming().currentState,r}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state;return e.children(t.nowDate,t.todayRange)},t.prototype.componentDidMount=function(){this.setTimeout()},t.prototype.componentDidUpdate=function(e){e.unit!==this.props.unit&&(this.clearTimeout(),this.setTimeout())},t.prototype.componentWillUnmount=function(){this.clearTimeout()},t.prototype.computeTiming=function(){var e=this.props,t=this.context,n=ge(this.initialNowDate,(new Date).valueOf()-this.initialNowQueriedMs),r=t.dateEnv.startOf(n,e.unit),o=t.dateEnv.add(r,Ye(1,e.unit)),i=o.valueOf()-n.valueOf();return{currentState:{nowDate:r,todayRange:xi(r)},nextState:{nowDate:o,todayRange:xi(o)},waitMs:i}},t.prototype.setTimeout=function(){var e=this,t=this.computeTiming(),n=t.nextState,r=t.waitMs;this.timeoutId=setTimeout((function(){e.setState(n,(function(){e.setTimeout()}))}),r)},t.prototype.clearTimeout=function(){this.timeoutId&&clearTimeout(this.timeoutId)},t.contextType=zr,t}(Nr);function xi(e){var t=be(e);return{start:t,end:ve(t,1)}}var _i=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.createDayHeaderFormatter=it(Ii),t}return n(t,e),t.prototype.render=function(){var e=this.context,t=this.props,n=t.dates,r=t.dateProfile,o=t.datesRepDistinctDays,i=t.renderIntro,a=this.createDayHeaderFormatter(e.options.dayHeaderFormat,o,n.length);return Hr(Mi,{unit:\"day\"},(function(e,t){return Hr(\"tr\",null,i&&i(),n.map((function(e){return o?Hr(Ri,{key:e.toISOString(),date:e,dateProfile:r,todayRange:t,colCnt:n.length,dayHeaderFormat:a}):Hr(Ti,{key:e.getUTCDay(),dow:e.getUTCDay(),dayHeaderFormat:a})})))}))},t}(jr);function Ii(e,t,n){return e||Ci(t,n)}var Pi=function(){function e(e,t){for(var n=e.start,r=e.end,o=[],i=[],a=-1;n<r;)t.isHiddenDay(n)?o.push(a+.5):(a++,o.push(a),i.push(n)),n=ve(n,1);this.dates=i,this.indices=o,this.cnt=i.length}return e.prototype.sliceRange=function(e){var t=this.getDateDayIndex(e.start),n=this.getDateDayIndex(ve(e.end,-1)),r=Math.max(0,t),o=Math.min(this.cnt-1,n);return(r=Math.ceil(r))<=(o=Math.floor(o))?{firstIndex:r,lastIndex:o,isStart:t===r,isEnd:n===o}:null},e.prototype.getDateDayIndex=function(e){var t=this.indices,n=Math.floor(ye(this.dates[0],e));return n<0?t[0]-1:n>=t.length?t[t.length-1]+1:t[n]},e}(),Ni=function(){function e(e,t){var n,r,o,i=e.dates;if(t){for(r=i[0].getUTCDay(),n=1;n<i.length&&i[n].getUTCDay()!==r;n++);o=Math.ceil(i.length/n)}else o=1,n=i.length;this.rowCnt=o,this.colCnt=n,this.daySeries=e,this.cells=this.buildCells(),this.headerDates=this.buildHeaderDates()}return e.prototype.buildCells=function(){for(var e=[],t=0;t<this.rowCnt;t++){for(var n=[],r=0;r<this.colCnt;r++)n.push(this.buildCell(t,r));e.push(n)}return e},e.prototype.buildCell=function(e,t){var n=this.daySeries.dates[e*this.colCnt+t];return{key:n.toISOString(),date:n}},e.prototype.buildHeaderDates=function(){for(var e=[],t=0;t<this.colCnt;t++)e.push(this.cells[0][t].date);return e},e.prototype.sliceRange=function(e){var t=this.colCnt,n=this.daySeries.sliceRange(e),r=[];if(n)for(var o=n.firstIndex,i=n.lastIndex,a=o;a<=i;){var s=Math.floor(a/t),l=Math.min((s+1)*t,i+1);r.push({row:s,firstCol:a%t,lastCol:(l-1)%t,isStart:n.isStart&&a===o,isEnd:n.isEnd&&l-1===i}),a=l}return r},e}(),Hi=function(){function e(){this.sliceBusinessHours=it(this._sliceBusinessHours),this.sliceDateSelection=it(this._sliceDateSpan),this.sliceEventStore=it(this._sliceEventStore),this.sliceEventDrag=it(this._sliceInteraction),this.sliceEventResize=it(this._sliceInteraction),this.forceDayIfListItem=!1}return e.prototype.sliceProps=function(e,t,n,r){for(var i=[],a=4;a<arguments.length;a++)i[a-4]=arguments[a];var s=e.eventUiBases,l=this.sliceEventStore.apply(this,o([e.eventStore,s,t,n],i));return{dateSelectionSegs:this.sliceDateSelection.apply(this,o([e.dateSelection,s,r],i)),businessHourSegs:this.sliceBusinessHours.apply(this,o([e.businessHours,t,n,r],i)),fgEventSegs:l.fg,bgEventSegs:l.bg,eventDrag:this.sliceEventDrag.apply(this,o([e.eventDrag,s,t,n],i)),eventResize:this.sliceEventResize.apply(this,o([e.eventResize,s,t,n],i)),eventSelection:e.eventSelection}},e.prototype.sliceNowDate=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];return this._sliceDateSpan.apply(this,o([{range:{start:e,end:ge(e,1)},allDay:!1},{},t],n))},e.prototype._sliceBusinessHours=function(e,t,n,r){for(var i=[],a=4;a<arguments.length;a++)i[a-4]=arguments[a];return e?this._sliceEventStore.apply(this,o([Be(e,Oi(t,Boolean(n)),r),{},t,n],i)).bg:[]},e.prototype._sliceEventStore=function(e,t,n,r){for(var o=[],i=4;i<arguments.length;i++)o[i-4]=arguments[i];if(e){var a=ln(e,t,Oi(n,Boolean(r)),r);return{bg:this.sliceEventRanges(a.bg,o),fg:this.sliceEventRanges(a.fg,o)}}return{bg:[],fg:[]}},e.prototype._sliceInteraction=function(e,t,n,r){for(var o=[],i=4;i<arguments.length;i++)o[i-4]=arguments[i];if(!e)return null;var a=ln(e.mutatedEvents,t,Oi(n,Boolean(r)),r);return{segs:this.sliceEventRanges(a.fg,o),affectedInstances:e.affectedEvents.instances,isEvent:e.isEvent}},e.prototype._sliceDateSpan=function(e,t,n){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];if(!e)return[];for(var a=Mn(e,t,n),s=this.sliceRange.apply(this,o([e.range],r)),l=0,u=s;l<u.length;l++){var c=u[l];c.eventRange=a}return s},e.prototype.sliceEventRanges=function(e,t){for(var n=[],r=0,o=e;r<o.length;r++){var i=o[r];n.push.apply(n,this.sliceEventRange(i,t))}return n},e.prototype.sliceEventRange=function(e,t){var n=e.range;this.forceDayIfListItem&&\"list-item\"===e.ui.display&&(n={start:n.start,end:ve(n.start,1)});for(var r=this.sliceRange.apply(this,o([n],t)),i=0,a=r;i<a.length;i++){var s=a[i];s.eventRange=e,s.isStart=e.isStart&&s.isStart,s.isEnd=e.isEnd&&s.isEnd}return r},e}();function Oi(e,t){var n=e.activeRange;return t?n:{start:ge(n.start,e.slotMinTime.milliseconds),end:ge(n.end,e.slotMaxTime.milliseconds-864e5)}}var Ai=/^(visible|hidden)$/,Ui=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleEl=function(e){t.el=e,Yr(t.props.elRef,e)},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.liquid,n=e.liquidIsAbsolute,r=t&&n,o=[\"fc-scroller\"];return t&&(n?o.push(\"fc-scroller-liquid-absolute\"):o.push(\"fc-scroller-liquid\")),Hr(\"div\",{ref:this.handleEl,className:o.join(\" \"),style:{overflowX:e.overflowX,overflowY:e.overflowY,left:r&&-(e.overcomeLeft||0)||\"\",right:r&&-(e.overcomeRight||0)||\"\",bottom:r&&-(e.overcomeBottom||0)||\"\",marginLeft:!r&&-(e.overcomeLeft||0)||\"\",marginRight:!r&&-(e.overcomeRight||0)||\"\",marginBottom:!r&&-(e.overcomeBottom||0)||\"\",maxHeight:e.maxHeight||\"\"}},e.children)},t.prototype.needsXScrolling=function(){if(Ai.test(this.props.overflowX))return!1;for(var e=this.el,t=this.el.getBoundingClientRect().width-this.getYScrollbarWidth(),n=e.children,r=0;r<n.length;r++){if(n[r].getBoundingClientRect().width>t)return!0}return!1},t.prototype.needsYScrolling=function(){if(Ai.test(this.props.overflowY))return!1;for(var e=this.el,t=this.el.getBoundingClientRect().height-this.getXScrollbarWidth(),n=e.children,r=0;r<n.length;r++){if(n[r].getBoundingClientRect().height>t)return!0}return!1},t.prototype.getXScrollbarWidth=function(){return Ai.test(this.props.overflowX)?0:this.el.offsetHeight-this.el.clientHeight},t.prototype.getYScrollbarWidth=function(){return Ai.test(this.props.overflowY)?0:this.el.offsetWidth-this.el.clientWidth},t}(jr),Li=function(){function e(e){var t=this;this.masterCallback=e,this.currentMap={},this.depths={},this.callbackMap={},this.handleValue=function(e,n){var r=t,o=r.depths,i=r.currentMap,a=!1,s=!1;null!==e?(a=n in i,i[n]=e,o[n]=(o[n]||0)+1,s=!0):0==--o[n]&&(delete i[n],delete t.callbackMap[n],a=!0),t.masterCallback&&(a&&t.masterCallback(null,String(n)),s&&t.masterCallback(e,String(n)))}}return e.prototype.createRef=function(e){var t=this,n=this.callbackMap[e];return n||(n=this.callbackMap[e]=function(n){t.handleValue(n,String(e))}),n},e.prototype.collect=function(e,t,n){return Fe(this.currentMap,e,t,n)},e.prototype.getAll=function(){return Ue(this.currentMap)},e}();function Wi(e){for(var t=0,n=0,r=F(e,\".fc-scrollgrid-shrink\");n<r.length;n++){var o=r[n];t=Math.max(t,pe(o))}return Math.ceil(t)}function Vi(e,t){return e.liquid&&t.liquid}function zi(e,t){return null!=t.maxHeight||Vi(e,t)}function Fi(e,t,n){var r=n.expandRows;return\"function\"==typeof t.content?t.content(n):Hr(\"table\",{className:[t.tableClassName,e.syncRowHeights?\"fc-scrollgrid-sync-table\":\"\"].join(\" \"),style:{minWidth:n.tableMinWidth,width:n.clientWidth,height:r?n.clientHeight:\"\"}},n.tableColGroupNode,Hr(\"tbody\",{},\"function\"==typeof t.rowContent?t.rowContent(n):t.rowContent))}function Bi(e,t){return ot(e,t,Le)}function ji(e,t){for(var n=[],r=0,i=e;r<i.length;r++)for(var a=i[r],s=a.span||1,l=0;l<s;l++)n.push(Hr(\"col\",{style:{width:\"shrink\"===a.width?Gi(t):a.width||\"\",minWidth:a.minWidth||\"\"}}));return Hr.apply(void 0,o([\"colgroup\",{}],n))}function Gi(e){return null==e?4:e}function qi(e){for(var t=0,n=e;t<n.length;t++){if(\"shrink\"===n[t].width)return!0}return!1}function Yi(e,t){var n=[\"fc-scrollgrid\",t.theme.getClass(\"table\")];return e&&n.push(\"fc-scrollgrid-liquid\"),n}function Zi(e,t){var n=[\"fc-scrollgrid-section\",\"fc-scrollgrid-section-\"+e.type,e.className];return t&&e.liquid&&null==e.maxHeight&&n.push(\"fc-scrollgrid-section-liquid\"),e.isSticky&&n.push(\"fc-scrollgrid-section-sticky\"),n}function Xi(e){return Hr(\"div\",{className:\"fc-scrollgrid-sticky-shim\",style:{width:e.clientWidth,minWidth:e.tableMinWidth}})}function Ki(e){var t=e.stickyHeaderDates;return null!=t&&\"auto\"!==t||(t=\"auto\"===e.height||\"auto\"===e.viewHeight),t}function Ji(e){var t=e.stickyFooterScrollbar;return null!=t&&\"auto\"!==t||(t=\"auto\"===e.height||\"auto\"===e.viewHeight),t}var $i=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.processCols=it((function(e){return e}),Bi),t.renderMicroColGroup=it(ji),t.scrollerRefs=new Li,t.scrollerElRefs=new Li(t._handleScrollerEl.bind(t)),t.state={shrinkWidth:null,forceYScrollbars:!1,scrollerClientWidths:{},scrollerClientHeights:{}},t.handleSizing=function(){t.setState(r({shrinkWidth:t.computeShrinkWidth()},t.computeScrollerDims()))},t}return n(t,e),t.prototype.render=function(){for(var e,t=this.props,n=this.state,r=this.context,i=t.sections||[],a=this.processCols(t.cols),s=this.renderMicroColGroup(a,n.shrinkWidth),l=Yi(t.liquid,r),u=i.length,c=0,d=[],p=[],f=[];c<u&&\"header\"===(e=i[c]).type;)d.push(this.renderSection(e,c,s)),c++;for(;c<u&&\"body\"===(e=i[c]).type;)p.push(this.renderSection(e,c,s)),c++;for(;c<u&&\"footer\"===(e=i[c]).type;)f.push(this.renderSection(e,c,s)),c++;var h=!cr();return Hr(\"table\",{className:l.join(\" \"),style:{height:t.height}},Boolean(!h&&d.length)&&Hr.apply(void 0,o([\"thead\",{}],d)),Boolean(!h&&p.length)&&Hr.apply(void 0,o([\"tbody\",{}],p)),Boolean(!h&&f.length)&&Hr.apply(void 0,o([\"tfoot\",{}],f)),h&&Hr.apply(void 0,o([\"tbody\",{}],d,p,f)))},t.prototype.renderSection=function(e,t,n){return\"outerContent\"in e?Hr(Ur,{key:e.key},e.outerContent):Hr(\"tr\",{key:e.key,className:Zi(e,this.props.liquid).join(\" \")},this.renderChunkTd(e,t,n,e.chunk))},t.prototype.renderChunkTd=function(e,t,n,r){if(\"outerContent\"in r)return r.outerContent;var o=this.props,i=this.state,a=i.forceYScrollbars,s=i.scrollerClientWidths,l=i.scrollerClientHeights,u=zi(o,e),c=Vi(o,e),d=o.liquid?a?\"scroll\":u?\"auto\":\"hidden\":\"visible\",p=Fi(e,r,{tableColGroupNode:n,tableMinWidth:\"\",clientWidth:void 0!==s[t]?s[t]:null,clientHeight:void 0!==l[t]?l[t]:null,expandRows:e.expandRows,syncRowHeights:!1,rowSyncHeights:[],reportRowHeightChange:function(){}});return Hr(\"td\",{ref:r.elRef},Hr(\"div\",{className:\"fc-scroller-harness\"+(c?\" fc-scroller-harness-liquid\":\"\")},Hr(Ui,{ref:this.scrollerRefs.createRef(t),elRef:this.scrollerElRefs.createRef(t),overflowY:d,overflowX:o.liquid?\"hidden\":\"visible\",maxHeight:e.maxHeight,liquid:c,liquidIsAbsolute:!0},p)))},t.prototype._handleScrollerEl=function(e,t){var n=parseInt(t,10);Yr(this.props.sections[n].chunk.scrollerElRef,e)},t.prototype.componentDidMount=function(){this.handleSizing(),this.context.addResizeHandler(this.handleSizing)},t.prototype.componentDidUpdate=function(){this.handleSizing()},t.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleSizing)},t.prototype.computeShrinkWidth=function(){return qi(this.props.cols)?Wi(this.scrollerElRefs.getAll()):0},t.prototype.computeScrollerDims=function(){for(var e=Sr(),t=this.props.sections.length,n=this.scrollerRefs,r=this.scrollerElRefs,o=!1,i={},a={},s=0;s<t;s++){var l=n.currentMap[s];if(l&&l.needsYScrolling()){o=!0;break}}for(s=0;s<t;s++){var u=r.currentMap[s];if(u){var c=u.parentNode;i[s]=Math.floor(c.getBoundingClientRect().width-(o?e.y:0)),a[s]=Math.floor(c.getBoundingClientRect().height)}}return{forceYScrollbars:o,scrollerClientWidths:i,scrollerClientHeights:a}},t}(jr);$i.addStateEquality({scrollerClientWidths:Le,scrollerClientHeights:Le});var Qi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.elRef=Ar(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r=e.seg,o=r.eventRange,i=o.ui,a={event:new zn(t,o.def,o.instance),view:t.viewApi,timeText:e.timeText,textColor:i.textColor,backgroundColor:i.backgroundColor,borderColor:i.borderColor,isDraggable:!e.disableDragging&&gn(r,t),isStartResizable:!e.disableResizing&&mn(r,t),isEndResizable:!e.disableResizing&&yn(r),isMirror:Boolean(e.isDragging||e.isResizing||e.isDateSelecting),isStart:Boolean(r.isStart),isEnd:Boolean(r.isEnd),isPast:Boolean(e.isPast),isFuture:Boolean(e.isFuture),isToday:Boolean(e.isToday),isSelected:Boolean(e.isSelected),isDragging:Boolean(e.isDragging),isResizing:Boolean(e.isResizing)},s=Dn(a).concat(i.classNames);return Hr(uo,{hookProps:a,classNames:n.eventClassNames,content:n.eventContent,defaultContent:e.defaultContent,didMount:n.eventDidMount,willUnmount:n.eventWillUnmount,elRef:this.elRef},(function(t,n,r,o){return e.children(t,s.concat(n),r,o,a)}))},t.prototype.componentDidMount=function(){cn(this.elRef.current,this.props.seg)},t.prototype.componentDidUpdate=function(e){var t=this.props.seg;t!==e.seg&&cn(this.elRef.current,t)},t}(jr),ea=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.seg,o=t.options.eventTimeFormat||e.defaultTimeFormat,i=En(n,o,t,e.defaultDisplayEventTime,e.defaultDisplayEventEnd);return Hr(Qi,{seg:n,timeText:i,disableDragging:e.disableDragging,disableResizing:e.disableResizing,defaultContent:e.defaultContent||ta,isDragging:e.isDragging,isResizing:e.isResizing,isDateSelecting:e.isDateSelecting,isSelected:e.isSelected,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(t,o,i,a,s){return Hr(\"a\",r({className:e.extraClassNames.concat(o).join(\" \"),style:{borderColor:s.borderColor,backgroundColor:s.backgroundColor},ref:t},function(e){var t=e.eventRange.def.url;return t?{href:t}:{}}(n)),Hr(\"div\",{className:\"fc-event-main\",ref:i,style:{color:s.textColor}},a),s.isStartResizable&&Hr(\"div\",{className:\"fc-event-resizer fc-event-resizer-start\"}),s.isEndResizable&&Hr(\"div\",{className:\"fc-event-resizer fc-event-resizer-end\"}))}))},t}(jr);function ta(e){return Hr(\"div\",{className:\"fc-event-main-frame\"},e.timeText&&Hr(\"div\",{className:\"fc-event-time\"},e.timeText),Hr(\"div\",{className:\"fc-event-title-container\"},Hr(\"div\",{className:\"fc-event-title fc-sticky\"},e.event.title||Hr(Ur,null,\"\u00A0\"))))}var na=function(e){return Hr(zr.Consumer,null,(function(t){var n=t.options,r={isAxis:e.isAxis,date:t.dateEnv.toDate(e.date),view:t.viewApi};return Hr(uo,{hookProps:r,classNames:n.nowIndicatorClassNames,content:n.nowIndicatorContent,didMount:n.nowIndicatorDidMount,willUnmount:n.nowIndicatorWillUnmount},e.children)}))},ra=St({day:\"numeric\"}),oa=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.refineHookProps=at(aa),t.normalizeClassNames=vo(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r=this.refineHookProps({date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraProps:e.extraHookProps,viewApi:t.viewApi,dateEnv:t.dateEnv}),o=vr(r,t.theme).concat(r.isDisabled?[]:this.normalizeClassNames(n.dayCellClassNames,r)),i=r.isDisabled?{}:{\"data-date\":tt(e.date)};return Hr(ho,{hookProps:r,didMount:n.dayCellDidMount,willUnmount:n.dayCellWillUnmount,elRef:e.elRef},(function(t){return e.children(t,o,i,r.isDisabled)}))},t}(jr),ia=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r=aa({date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraProps:e.extraHookProps,viewApi:t.viewApi,dateEnv:t.dateEnv});return Hr(po,{hookProps:r,content:n.dayCellContent,defaultContent:e.defaultContent},e.children)},t}(jr);function aa(e){var t=e.date,n=e.dateEnv,o=hr(t,e.todayRange,null,e.dateProfile);return r(r(r({date:n.toDate(t),view:e.viewApi},o),{dayNumberText:e.showDayNumber?n.format(t,ra):\"\"}),e.extraProps)}function sa(e){return Hr(\"div\",{className:\"fc-\"+e})}var la=function(e){return Hr(Qi,{defaultContent:ua,seg:e.seg,timeText:\"\",disableDragging:!0,disableResizing:!0,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(e,t,n,r,o){return Hr(\"div\",{ref:e,className:[\"fc-bg-event\"].concat(t).join(\" \"),style:{backgroundColor:o.backgroundColor}},r)}))};function ua(e){return e.event.title&&Hr(\"div\",{className:\"fc-event-title\"},e.event.title)}var ca=function(e){return Hr(zr.Consumer,null,(function(t){var n=t.dateEnv,r=t.options,o=e.date,i=r.weekNumberFormat||e.defaultFormat,a=n.computeWeekNumber(o),s=n.format(o,i);return Hr(uo,{hookProps:{num:a,text:s,date:o},classNames:r.weekNumberClassNames,content:r.weekNumberContent,defaultContent:da,didMount:r.weekNumberDidMount,willUnmount:r.weekNumberWillUnmount},e.children)}))};function da(e){return e.text}var pa=function(e){function t(t,n){void 0===n&&(n={});var o=e.call(this)||this;return o.isRendering=!1,o.isRendered=!1,o.currentClassNames=[],o.customContentRenderId=0,o.handleAction=function(e){switch(e.type){case\"SET_EVENT_DRAG\":case\"SET_EVENT_RESIZE\":o.renderRunner.tryDrain()}},o.handleData=function(e){o.currentData=e,o.renderRunner.request(e.calendarOptions.rerenderDelay)},o.handleRenderRequest=function(){if(o.isRendering){o.isRendered=!0;var e=o.currentData;Or(Hr(bi,{options:e.calendarOptions,theme:e.theme,emitter:e.emitter},(function(t,n,i,a){return o.setClassNames(t),o.setHeight(n),Hr(co.Provider,{value:o.customContentRenderId},Hr(Ei,r({isHeightAuto:i,forPrint:a},e)))})),o.el)}else o.isRendered&&(o.isRendered=!1,Or(null,o.el),o.setClassNames([]),o.setHeight(\"\"));Wr()},o.el=t,o.renderRunner=new Go(o.handleRenderRequest),new Zo({optionOverrides:n,calendarApi:o,onAction:o.handleAction,onData:o.handleData}),o}return n(t,e),Object.defineProperty(t.prototype,\"view\",{get:function(){return this.currentData.viewApi},enumerable:!1,configurable:!0}),t.prototype.render=function(){var e=this.isRendering;e?this.customContentRenderId++:this.isRendering=!0,this.renderRunner.request(),e&&this.updateSize()},t.prototype.destroy=function(){this.isRendering&&(this.isRendering=!1,this.renderRunner.request())},t.prototype.updateSize=function(){e.prototype.updateSize.call(this),Wr()},t.prototype.batchRendering=function(e){this.renderRunner.pause(\"batchRendering\"),e(),this.renderRunner.resume(\"batchRendering\")},t.prototype.pauseRendering=function(){this.renderRunner.pause(\"pauseRendering\")},t.prototype.resumeRendering=function(){this.renderRunner.resume(\"pauseRendering\",!0)},t.prototype.resetOptions=function(e,t){this.currentDataManager.resetOptions(e,t)},t.prototype.setClassNames=function(e){if(!ot(e,this.currentClassNames)){for(var t=this.el.classList,n=0,r=this.currentClassNames;n<r.length;n++){var o=r[n];t.remove(o)}for(var i=0,a=e;i<a.length;i++){o=a[i];t.add(o)}this.currentClassNames=e}},t.prototype.setHeight=function(e){G(this.el,\"height\",e)},t}(Vn);di.touchMouseIgnoreWait=500;var fa=0,ha=0,va=!1,ga=function(){function e(e){var t=this;this.subjectEl=null,this.selector=\"\",this.handleSelector=\"\",this.shouldIgnoreMove=!1,this.shouldWatchScroll=!0,this.isDragging=!1,this.isTouchDragging=!1,this.wasTouchScroll=!1,this.handleMouseDown=function(e){if(!t.shouldIgnoreMouse()&&function(e){return 0===e.button&&!e.ctrlKey}(e)&&t.tryStart(e)){var n=t.createEventFromMouse(e,!0);t.emitter.trigger(\"pointerdown\",n),t.initScrollWatch(n),t.shouldIgnoreMove||document.addEventListener(\"mousemove\",t.handleMouseMove),document.addEventListener(\"mouseup\",t.handleMouseUp)}},this.handleMouseMove=function(e){var n=t.createEventFromMouse(e);t.recordCoords(n),t.emitter.trigger(\"pointermove\",n)},this.handleMouseUp=function(e){document.removeEventListener(\"mousemove\",t.handleMouseMove),document.removeEventListener(\"mouseup\",t.handleMouseUp),t.emitter.trigger(\"pointerup\",t.createEventFromMouse(e)),t.cleanup()},this.handleTouchStart=function(e){if(t.tryStart(e)){t.isTouchDragging=!0;var n=t.createEventFromTouch(e,!0);t.emitter.trigger(\"pointerdown\",n),t.initScrollWatch(n);var r=e.target;t.shouldIgnoreMove||r.addEventListener(\"touchmove\",t.handleTouchMove),r.addEventListener(\"touchend\",t.handleTouchEnd),r.addEventListener(\"touchcancel\",t.handleTouchEnd),window.addEventListener(\"scroll\",t.handleTouchScroll,!0)}},this.handleTouchMove=function(e){var n=t.createEventFromTouch(e);t.recordCoords(n),t.emitter.trigger(\"pointermove\",n)},this.handleTouchEnd=function(e){if(t.isDragging){var n=e.target;n.removeEventListener(\"touchmove\",t.handleTouchMove),n.removeEventListener(\"touchend\",t.handleTouchEnd),n.removeEventListener(\"touchcancel\",t.handleTouchEnd),window.removeEventListener(\"scroll\",t.handleTouchScroll,!0),t.emitter.trigger(\"pointerup\",t.createEventFromTouch(e)),t.cleanup(),t.isTouchDragging=!1,fa++,setTimeout((function(){fa--}),di.touchMouseIgnoreWait)}},this.handleTouchScroll=function(){t.wasTouchScroll=!0},this.handleScroll=function(e){if(!t.shouldIgnoreMove){var n=window.pageXOffset-t.prevScrollX+t.prevPageX,r=window.pageYOffset-t.prevScrollY+t.prevPageY;t.emitter.trigger(\"pointermove\",{origEvent:e,isTouch:t.isTouchDragging,subjectEl:t.subjectEl,pageX:n,pageY:r,deltaX:n-t.origPageX,deltaY:r-t.origPageY})}},this.containerEl=e,this.emitter=new kr,e.addEventListener(\"mousedown\",this.handleMouseDown),e.addEventListener(\"touchstart\",this.handleTouchStart,{passive:!0}),ha++||window.addEventListener(\"touchmove\",ma,{passive:!1})}return e.prototype.destroy=function(){this.containerEl.removeEventListener(\"mousedown\",this.handleMouseDown),this.containerEl.removeEventListener(\"touchstart\",this.handleTouchStart,{passive:!0}),--ha||window.removeEventListener(\"touchmove\",ma,{passive:!1})},e.prototype.tryStart=function(e){var t=this.querySubjectEl(e),n=e.target;return!(!t||this.handleSelector&&!V(n,this.handleSelector))&&(this.subjectEl=t,this.isDragging=!0,this.wasTouchScroll=!1,!0)},e.prototype.cleanup=function(){va=!1,this.isDragging=!1,this.subjectEl=null,this.destroyScrollWatch()},e.prototype.querySubjectEl=function(e){return this.selector?V(e.target,this.selector):this.containerEl},e.prototype.shouldIgnoreMouse=function(){return fa||this.isTouchDragging},e.prototype.cancelTouchScroll=function(){this.isDragging&&(va=!0)},e.prototype.initScrollWatch=function(e){this.shouldWatchScroll&&(this.recordCoords(e),window.addEventListener(\"scroll\",this.handleScroll,!0))},e.prototype.recordCoords=function(e){this.shouldWatchScroll&&(this.prevPageX=e.pageX,this.prevPageY=e.pageY,this.prevScrollX=window.pageXOffset,this.prevScrollY=window.pageYOffset)},e.prototype.destroyScrollWatch=function(){this.shouldWatchScroll&&window.removeEventListener(\"scroll\",this.handleScroll,!0)},e.prototype.createEventFromMouse=function(e,t){var n=0,r=0;return t?(this.origPageX=e.pageX,this.origPageY=e.pageY):(n=e.pageX-this.origPageX,r=e.pageY-this.origPageY),{origEvent:e,isTouch:!1,subjectEl:this.subjectEl,pageX:e.pageX,pageY:e.pageY,deltaX:n,deltaY:r}},e.prototype.createEventFromTouch=function(e,t){var n,r,o=e.touches,i=0,a=0;return o&&o.length?(n=o[0].pageX,r=o[0].pageY):(n=e.pageX,r=e.pageY),t?(this.origPageX=n,this.origPageY=r):(i=n-this.origPageX,a=r-this.origPageY),{origEvent:e,isTouch:!0,subjectEl:this.subjectEl,pageX:n,pageY:r,deltaX:i,deltaY:a}},e}();function ma(e){va&&e.preventDefault()}var ya=function(){function e(){this.isVisible=!1,this.sourceEl=null,this.mirrorEl=null,this.sourceElRect=null,this.parentNode=document.body,this.zIndex=9999,this.revertDuration=0}return e.prototype.start=function(e,t,n){this.sourceEl=e,this.sourceElRect=this.sourceEl.getBoundingClientRect(),this.origScreenX=t-window.pageXOffset,this.origScreenY=n-window.pageYOffset,this.deltaX=0,this.deltaY=0,this.updateElPosition()},e.prototype.handleMove=function(e,t){this.deltaX=e-window.pageXOffset-this.origScreenX,this.deltaY=t-window.pageYOffset-this.origScreenY,this.updateElPosition()},e.prototype.setIsVisible=function(e){e?this.isVisible||(this.mirrorEl&&(this.mirrorEl.style.display=\"\"),this.isVisible=e,this.updateElPosition()):this.isVisible&&(this.mirrorEl&&(this.mirrorEl.style.display=\"none\"),this.isVisible=e)},e.prototype.stop=function(e,t){var n=this,r=function(){n.cleanup(),t()};e&&this.mirrorEl&&this.isVisible&&this.revertDuration&&(this.deltaX||this.deltaY)?this.doRevertAnimation(r,this.revertDuration):setTimeout(r,0)},e.prototype.doRevertAnimation=function(e,t){var n=this.mirrorEl,r=this.sourceEl.getBoundingClientRect();n.style.transition=\"top \"+t+\"ms,left \"+t+\"ms\",j(n,{left:r.left,top:r.top}),K(n,(function(){n.style.transition=\"\",e()}))},e.prototype.cleanup=function(){this.mirrorEl&&(W(this.mirrorEl),this.mirrorEl=null),this.sourceEl=null},e.prototype.updateElPosition=function(){this.sourceEl&&this.isVisible&&j(this.getMirrorEl(),{left:this.sourceElRect.left+this.deltaX,top:this.sourceElRect.top+this.deltaY})},e.prototype.getMirrorEl=function(){var e=this.sourceElRect,t=this.mirrorEl;return t||((t=this.mirrorEl=this.sourceEl.cloneNode(!0)).classList.add(\"fc-unselectable\"),t.classList.add(\"fc-event-dragging\"),j(t,{position:\"fixed\",zIndex:this.zIndex,visibility:\"\",boxSizing:\"border-box\",width:e.right-e.left,height:e.bottom-e.top,right:\"auto\",bottom:\"auto\",margin:0}),this.parentNode.appendChild(t)),t},e}(),Ea=function(e){function t(t,n){var r=e.call(this)||this;return r.handleScroll=function(){r.scrollTop=r.scrollController.getScrollTop(),r.scrollLeft=r.scrollController.getScrollLeft(),r.handleScrollChange()},r.scrollController=t,r.doesListening=n,r.scrollTop=r.origScrollTop=t.getScrollTop(),r.scrollLeft=r.origScrollLeft=t.getScrollLeft(),r.scrollWidth=t.getScrollWidth(),r.scrollHeight=t.getScrollHeight(),r.clientWidth=t.getClientWidth(),r.clientHeight=t.getClientHeight(),r.clientRect=r.computeClientRect(),r.doesListening&&r.getEventTarget().addEventListener(\"scroll\",r.handleScroll),r}return n(t,e),t.prototype.destroy=function(){this.doesListening&&this.getEventTarget().removeEventListener(\"scroll\",this.handleScroll)},t.prototype.getScrollTop=function(){return this.scrollTop},t.prototype.getScrollLeft=function(){return this.scrollLeft},t.prototype.setScrollTop=function(e){this.scrollController.setScrollTop(e),this.doesListening||(this.scrollTop=Math.max(Math.min(e,this.getMaxScrollTop()),0),this.handleScrollChange())},t.prototype.setScrollLeft=function(e){this.scrollController.setScrollLeft(e),this.doesListening||(this.scrollLeft=Math.max(Math.min(e,this.getMaxScrollLeft()),0),this.handleScrollChange())},t.prototype.getClientWidth=function(){return this.clientWidth},t.prototype.getClientHeight=function(){return this.clientHeight},t.prototype.getScrollWidth=function(){return this.scrollWidth},t.prototype.getScrollHeight=function(){return this.scrollHeight},t.prototype.handleScrollChange=function(){},t}(xr),Sa=function(e){function t(t,n){return e.call(this,new _r(t),n)||this}return n(t,e),t.prototype.getEventTarget=function(){return this.scrollController.el},t.prototype.computeClientRect=function(){return Cr(this.scrollController.el)},t}(Ea),Da=function(e){function t(t){return e.call(this,new Ir,t)||this}return n(t,e),t.prototype.getEventTarget=function(){return window},t.prototype.computeClientRect=function(){return{left:this.scrollLeft,right:this.scrollLeft+this.clientWidth,top:this.scrollTop,bottom:this.scrollTop+this.clientHeight}},t.prototype.handleScrollChange=function(){this.clientRect=this.computeClientRect()},t}(Ea),ba=\"function\"==typeof performance?performance.now:Date.now,Ca=function(){function e(){var e=this;this.isEnabled=!0,this.scrollQuery=[window,\".fc-scroller\"],this.edgeThreshold=50,this.maxVelocity=300,this.pointerScreenX=null,this.pointerScreenY=null,this.isAnimating=!1,this.scrollCaches=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.animate=function(){if(e.isAnimating){var t=e.computeBestEdge(e.pointerScreenX+window.pageXOffset,e.pointerScreenY+window.pageYOffset);if(t){var n=ba();e.handleSide(t,(n-e.msSinceRequest)/1e3),e.requestAnimation(n)}else e.isAnimating=!1}}}return e.prototype.start=function(e,t){this.isEnabled&&(this.scrollCaches=this.buildCaches(),this.pointerScreenX=null,this.pointerScreenY=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.handleMove(e,t))},e.prototype.handleMove=function(e,t){if(this.isEnabled){var n=e-window.pageXOffset,r=t-window.pageYOffset,o=null===this.pointerScreenY?0:r-this.pointerScreenY,i=null===this.pointerScreenX?0:n-this.pointerScreenX;o<0?this.everMovedUp=!0:o>0&&(this.everMovedDown=!0),i<0?this.everMovedLeft=!0:i>0&&(this.everMovedRight=!0),this.pointerScreenX=n,this.pointerScreenY=r,this.isAnimating||(this.isAnimating=!0,this.requestAnimation(ba()))}},e.prototype.stop=function(){if(this.isEnabled){this.isAnimating=!1;for(var e=0,t=this.scrollCaches;e<t.length;e++){t[e].destroy()}this.scrollCaches=null}},e.prototype.requestAnimation=function(e){this.msSinceRequest=e,requestAnimationFrame(this.animate)},e.prototype.handleSide=function(e,t){var n=e.scrollCache,r=this.edgeThreshold,o=r-e.distance,i=o*o/(r*r)*this.maxVelocity*t,a=1;switch(e.name){case\"left\":a=-1;case\"right\":n.setScrollLeft(n.getScrollLeft()+i*a);break;case\"top\":a=-1;case\"bottom\":n.setScrollTop(n.getScrollTop()+i*a)}},e.prototype.computeBestEdge=function(e,t){for(var n=this.edgeThreshold,r=null,o=0,i=this.scrollCaches;o<i.length;o++){var a=i[o],s=a.clientRect,l=e-s.left,u=s.right-e,c=t-s.top,d=s.bottom-t;l>=0&&u>=0&&c>=0&&d>=0&&(c<=n&&this.everMovedUp&&a.canScrollUp()&&(!r||r.distance>c)&&(r={scrollCache:a,name:\"top\",distance:c}),d<=n&&this.everMovedDown&&a.canScrollDown()&&(!r||r.distance>d)&&(r={scrollCache:a,name:\"bottom\",distance:d}),l<=n&&this.everMovedLeft&&a.canScrollLeft()&&(!r||r.distance>l)&&(r={scrollCache:a,name:\"left\",distance:l}),u<=n&&this.everMovedRight&&a.canScrollRight()&&(!r||r.distance>u)&&(r={scrollCache:a,name:\"right\",distance:u}))}return r},e.prototype.buildCaches=function(){return this.queryScrollEls().map((function(e){return e===window?new Da(!1):new Sa(e,!1)}))},e.prototype.queryScrollEls=function(){for(var e=[],t=0,n=this.scrollQuery;t<n.length;t++){var r=n[t];\"object\"==typeof r?e.push(r):e.push.apply(e,Array.prototype.slice.call(document.querySelectorAll(r)))}return e},e}(),wa=function(e){function t(t,n){var r=e.call(this,t)||this;r.delay=null,r.minDistance=0,r.touchScrollAllowed=!0,r.mirrorNeedsRevert=!1,r.isInteracting=!1,r.isDragging=!1,r.isDelayEnded=!1,r.isDistanceSurpassed=!1,r.delayTimeoutId=null,r.onPointerDown=function(e){r.isDragging||(r.isInteracting=!0,r.isDelayEnded=!1,r.isDistanceSurpassed=!1,te(document.body),re(document.body),e.isTouch||e.origEvent.preventDefault(),r.emitter.trigger(\"pointerdown\",e),r.isInteracting&&!r.pointer.shouldIgnoreMove&&(r.mirror.setIsVisible(!1),r.mirror.start(e.subjectEl,e.pageX,e.pageY),r.startDelay(e),r.minDistance||r.handleDistanceSurpassed(e)))},r.onPointerMove=function(e){if(r.isInteracting){if(r.emitter.trigger(\"pointermove\",e),!r.isDistanceSurpassed){var t=r.minDistance,n=e.deltaX,o=e.deltaY;n*n+o*o>=t*t&&r.handleDistanceSurpassed(e)}r.isDragging&&(\"scroll\"!==e.origEvent.type&&(r.mirror.handleMove(e.pageX,e.pageY),r.autoScroller.handleMove(e.pageX,e.pageY)),r.emitter.trigger(\"dragmove\",e))}},r.onPointerUp=function(e){r.isInteracting&&(r.isInteracting=!1,ne(document.body),oe(document.body),r.emitter.trigger(\"pointerup\",e),r.isDragging&&(r.autoScroller.stop(),r.tryStopDrag(e)),r.delayTimeoutId&&(clearTimeout(r.delayTimeoutId),r.delayTimeoutId=null))};var o=r.pointer=new ga(t);return o.emitter.on(\"pointerdown\",r.onPointerDown),o.emitter.on(\"pointermove\",r.onPointerMove),o.emitter.on(\"pointerup\",r.onPointerUp),n&&(o.selector=n),r.mirror=new ya,r.autoScroller=new Ca,r}return n(t,e),t.prototype.destroy=function(){this.pointer.destroy(),this.onPointerUp({})},t.prototype.startDelay=function(e){var t=this;\"number\"==typeof this.delay?this.delayTimeoutId=setTimeout((function(){t.delayTimeoutId=null,t.handleDelayEnd(e)}),this.delay):this.handleDelayEnd(e)},t.prototype.handleDelayEnd=function(e){this.isDelayEnded=!0,this.tryStartDrag(e)},t.prototype.handleDistanceSurpassed=function(e){this.isDistanceSurpassed=!0,this.tryStartDrag(e)},t.prototype.tryStartDrag=function(e){this.isDelayEnded&&this.isDistanceSurpassed&&(this.pointer.wasTouchScroll&&!this.touchScrollAllowed||(this.isDragging=!0,this.mirrorNeedsRevert=!1,this.autoScroller.start(e.pageX,e.pageY),this.emitter.trigger(\"dragstart\",e),!1===this.touchScrollAllowed&&this.pointer.cancelTouchScroll()))},t.prototype.tryStopDrag=function(e){this.mirror.stop(this.mirrorNeedsRevert,this.stopDrag.bind(this,e))},t.prototype.stopDrag=function(e){this.isDragging=!1,this.emitter.trigger(\"dragend\",e)},t.prototype.setIgnoreMove=function(e){this.pointer.shouldIgnoreMove=e},t.prototype.setMirrorIsVisible=function(e){this.mirror.setIsVisible(e)},t.prototype.setMirrorNeedsRevert=function(e){this.mirrorNeedsRevert=e},t.prototype.setAutoScrollEnabled=function(e){this.autoScroller.isEnabled=e},t}(ci),Ra=function(){function e(e){this.origRect=wr(e),this.scrollCaches=Rr(e).map((function(e){return new Sa(e,!0)}))}return e.prototype.destroy=function(){for(var e=0,t=this.scrollCaches;e<t.length;e++){t[e].destroy()}},e.prototype.computeLeft=function(){for(var e=this.origRect.left,t=0,n=this.scrollCaches;t<n.length;t++){var r=n[t];e+=r.origScrollLeft-r.getScrollLeft()}return e},e.prototype.computeTop=function(){for(var e=this.origRect.top,t=0,n=this.scrollCaches;t<n.length;t++){var r=n[t];e+=r.origScrollTop-r.getScrollTop()}return e},e.prototype.isWithinClipping=function(e,t){for(var n,r,o={left:e,top:t},i=0,a=this.scrollCaches;i<a.length;i++){var s=a[i];if(n=s.getEventTarget(),r=void 0,\"HTML\"!==(r=n.tagName)&&\"BODY\"!==r&&!ir(o,s.clientRect))return!1}return!0},e}();var Ta=function(){function e(e,t){var n=this;this.useSubjectCenter=!1,this.requireInitial=!0,this.initialHit=null,this.movingHit=null,this.finalHit=null,this.handlePointerDown=function(e){var t=n.dragging;n.initialHit=null,n.movingHit=null,n.finalHit=null,n.prepareHits(),n.processFirstCoord(e),n.initialHit||!n.requireInitial?(t.setIgnoreMove(!1),n.emitter.trigger(\"pointerdown\",e)):t.setIgnoreMove(!0)},this.handleDragStart=function(e){n.emitter.trigger(\"dragstart\",e),n.handleMove(e,!0)},this.handleDragMove=function(e){n.emitter.trigger(\"dragmove\",e),n.handleMove(e)},this.handlePointerUp=function(e){n.releaseHits(),n.emitter.trigger(\"pointerup\",e)},this.handleDragEnd=function(e){n.movingHit&&n.emitter.trigger(\"hitupdate\",null,!0,e),n.finalHit=n.movingHit,n.movingHit=null,n.emitter.trigger(\"dragend\",e)},this.droppableStore=t,e.emitter.on(\"pointerdown\",this.handlePointerDown),e.emitter.on(\"dragstart\",this.handleDragStart),e.emitter.on(\"dragmove\",this.handleDragMove),e.emitter.on(\"pointerup\",this.handlePointerUp),e.emitter.on(\"dragend\",this.handleDragEnd),this.dragging=e,this.emitter=new kr}return e.prototype.processFirstCoord=function(e){var t,n={left:e.pageX,top:e.pageY},r=n,o=e.subjectEl;o!==document&&(r=sr(r,t=wr(o)));var i=this.initialHit=this.queryHitForOffset(r.left,r.top);if(i){if(this.useSubjectCenter&&t){var a=ar(t,i.rect);a&&(r=lr(a))}this.coordAdjust=ur(r,n)}else this.coordAdjust={left:0,top:0}},e.prototype.handleMove=function(e,t){var n=this.queryHitForOffset(e.pageX+this.coordAdjust.left,e.pageY+this.coordAdjust.top);!t&&ka(this.movingHit,n)||(this.movingHit=n,this.emitter.trigger(\"hitupdate\",n,!1,e))},e.prototype.prepareHits=function(){this.offsetTrackers=Oe(this.droppableStore,(function(e){return e.component.prepareHits(),new Ra(e.el)}))},e.prototype.releaseHits=function(){var e=this.offsetTrackers;for(var t in e)e[t].destroy();this.offsetTrackers={}},e.prototype.queryHitForOffset=function(e,t){var n=this.droppableStore,r=this.offsetTrackers,o=null;for(var i in n){var a=n[i].component,s=r[i];if(s&&s.isWithinClipping(e,t)){var l=s.computeLeft(),u=s.computeTop(),c=e-l,d=t-u,p=s.origRect,f=p.right-p.left,h=p.bottom-p.top;if(c>=0&&c<f&&d>=0&&d<h){var v=a.queryHit(c,d,f,h),g=a.context.getCurrentData().dateProfile;v&&an(g.activeRange,v.dateSpan.range)&&(!o||v.layer>o.layer)&&(v.rect.left+=l,v.rect.right+=l,v.rect.top+=u,v.rect.bottom+=u,o=v)}}}return o},e}();function ka(e,t){return!e&&!t||Boolean(e)===Boolean(t)&&Rn(e.dateSpan,t.dateSpan)}function Ma(e,t){for(var n,o,i={},a=0,s=t.pluginHooks.datePointTransforms;a<s.length;a++){var l=s[a];r(i,l(e,t))}return r(i,(n=e,{date:(o=t.dateEnv).toDate(n.range.start),dateStr:o.formatIso(n.range.start,{omitTime:n.allDay}),allDay:n.allDay})),i}var xa=function(e){function t(t){var n=e.call(this,t)||this;n.handlePointerDown=function(e){var t=n.dragging,r=e.origEvent.target;t.setIgnoreMove(!n.component.isValidDateDownEl(r))},n.handleDragEnd=function(e){var t=n.component;if(!n.dragging.pointer.wasTouchScroll){var o=n.hitDragging,i=o.initialHit,a=o.finalHit;if(i&&a&&ka(i,a)){var s=t.context,l=r(r({},Ma(i.dateSpan,s)),{dayEl:i.dayEl,jsEvent:e.origEvent,view:s.viewApi||s.calendarApi.view});s.emitter.trigger(\"dateClick\",l)}}},n.dragging=new wa(t.el),n.dragging.autoScroller.isEnabled=!1;var o=n.hitDragging=new Ta(n.dragging,li(t));return o.emitter.on(\"pointerdown\",n.handlePointerDown),o.emitter.on(\"dragend\",n.handleDragEnd),n}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t}(ai),_a=function(e){function t(t){var n=e.call(this,t)||this;n.dragSelection=null,n.handlePointerDown=function(e){var t=n,r=t.component,o=t.dragging,i=r.context.options.selectable&&r.isValidDateDownEl(e.origEvent.target);o.setIgnoreMove(!i),o.delay=e.isTouch?function(e){var t=e.context.options,n=t.selectLongPressDelay;null==n&&(n=t.longPressDelay);return n}(r):null},n.handleDragStart=function(e){n.component.context.calendarApi.unselect(e)},n.handleHitUpdate=function(e,t){var o=n.component.context,i=null,a=!1;e&&((i=function(e,t,n){var o=e.dateSpan,i=t.dateSpan,a=[o.range.start,o.range.end,i.range.start,i.range.end];a.sort(ce);for(var s={},l=0,u=n;l<u.length;l++){var c=(0,u[l])(e,t);if(!1===c)return null;c&&r(s,c)}return s.range={start:a[0],end:a[3]},s.allDay=o.allDay,s}(n.hitDragging.initialHit,e,o.pluginHooks.dateSelectionTransformers))&&n.component.isDateSelectionValid(i)||(a=!0,i=null)),i?o.dispatch({type:\"SELECT_DATES\",selection:i}):t||o.dispatch({type:\"UNSELECT_DATES\"}),a?Q():ee(),t||(n.dragSelection=i)},n.handlePointerUp=function(e){n.dragSelection&&(xn(n.dragSelection,e,n.component.context),n.dragSelection=null)};var o=t.component.context.options,i=n.dragging=new wa(t.el);i.touchScrollAllowed=!1,i.minDistance=o.selectMinDistance||0,i.autoScroller.isEnabled=o.dragScroll;var a=n.hitDragging=new Ta(n.dragging,li(t));return a.emitter.on(\"pointerdown\",n.handlePointerDown),a.emitter.on(\"dragstart\",n.handleDragStart),a.emitter.on(\"hitupdate\",n.handleHitUpdate),a.emitter.on(\"pointerup\",n.handlePointerUp),n}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t}(ai);var Ia=function(e){function t(n){var o=e.call(this,n)||this;o.subjectEl=null,o.subjectSeg=null,o.isDragging=!1,o.eventRange=null,o.relevantEvents=null,o.receivingContext=null,o.validMutation=null,o.mutatedRelevantEvents=null,o.handlePointerDown=function(e){var t=e.origEvent.target,n=o,r=n.component,i=n.dragging,a=i.mirror,s=r.context.options,l=r.context;o.subjectEl=e.subjectEl;var u=o.subjectSeg=dn(e.subjectEl),c=(o.eventRange=u.eventRange).instance.instanceId;o.relevantEvents=Nt(l.getCurrentData().eventStore,c),i.minDistance=e.isTouch?0:s.eventDragMinDistance,i.delay=e.isTouch&&c!==r.props.eventSelection?function(e){var t=e.context.options,n=t.eventLongPressDelay;null==n&&(n=t.longPressDelay);return n}(r):null,a.parentNode=V(t,\".fc\"),a.revertDuration=s.dragRevertDuration;var d=r.isValidSegDownEl(t)&&!V(t,\".fc-event-resizer\");i.setIgnoreMove(!d),o.isDragging=d&&e.subjectEl.classList.contains(\"fc-event-draggable\")},o.handleDragStart=function(e){var t=o.component.context,n=o.eventRange,r=n.instance.instanceId;e.isTouch?r!==o.component.props.eventSelection&&t.dispatch({type:\"SELECT_EVENT\",eventInstanceId:r}):t.dispatch({type:\"UNSELECT_EVENT\"}),o.isDragging&&(t.calendarApi.unselect(e),t.emitter.trigger(\"eventDragStart\",{el:o.subjectEl,event:new zn(t,n.def,n.instance),jsEvent:e.origEvent,view:t.viewApi}))},o.handleHitUpdate=function(e,t){if(o.isDragging){var n=o.relevantEvents,r=o.hitDragging.initialHit,i=o.component.context,a=null,s=null,l=null,u=!1,c={affectedEvents:n,mutatedEvents:{defs:{},instances:{}},isEvent:!0};if(e){var d=e.component,p=(a=d.context).options;i===a||p.editable&&p.droppable?(s=function(e,t,n){var r=e.dateSpan,o=t.dateSpan,i=r.range.start,a=o.range.start,s={};r.allDay!==o.allDay&&(s.allDay=o.allDay,s.hasEnd=t.component.context.options.allDayMaintainDuration,o.allDay&&(i=be(i)));var l=Qt(i,a,e.component.context.dateEnv,e.component===t.component?e.component.largeUnit:null);l.milliseconds&&(s.allDay=!1);for(var u={datesDelta:l,standardProps:s},c=0,d=n;c<d.length;c++){(0,d[c])(u,e,t)}return u}(r,e,a.getCurrentData().pluginHooks.eventDragMutationMassagers))&&(l=Pn(n,a.getCurrentData().eventUiBases,s,a),c.mutatedEvents=l,d.isInteractionValid(c)||(u=!0,s=null,l=null,c.mutatedEvents={defs:{},instances:{}})):a=null}o.displayDrag(a,c),u?Q():ee(),t||(i===a&&ka(r,e)&&(s=null),o.dragging.setMirrorNeedsRevert(!s),o.dragging.setMirrorIsVisible(!e||!document.querySelector(\".fc-event-mirror\")),o.receivingContext=a,o.validMutation=s,o.mutatedRelevantEvents=l)}},o.handlePointerUp=function(){o.isDragging||o.cleanup()},o.handleDragEnd=function(e){if(o.isDragging){var t=o.component.context,n=t.viewApi,i=o,a=i.receivingContext,s=i.validMutation,l=o.eventRange.def,u=o.eventRange.instance,c=new zn(t,l,u),d=o.relevantEvents,p=o.mutatedRelevantEvents,f=o.hitDragging.finalHit;if(o.clearDrag(),t.emitter.trigger(\"eventDragStop\",{el:o.subjectEl,event:c,jsEvent:e.origEvent,view:n}),s){if(a===t){var h=new zn(t,p.defs[l.defId],u?p.instances[u.instanceId]:null);t.dispatch({type:\"MERGE_EVENTS\",eventStore:p});for(var v={oldEvent:c,event:h,relatedEvents:Bn(p,t,u),revert:function(){t.dispatch({type:\"MERGE_EVENTS\",eventStore:d})}},g={},m=0,y=t.getCurrentData().pluginHooks.eventDropTransformers;m<y.length;m++){var E=y[m];r(g,E(s,t))}t.emitter.trigger(\"eventDrop\",r(r(r({},v),g),{el:e.subjectEl,delta:s.datesDelta,jsEvent:e.origEvent,view:n})),t.emitter.trigger(\"eventChange\",v)}else if(a){var S={event:c,relatedEvents:Bn(d,t,u),revert:function(){t.dispatch({type:\"MERGE_EVENTS\",eventStore:d})}};t.emitter.trigger(\"eventLeave\",r(r({},S),{draggedEl:e.subjectEl,view:n})),t.dispatch({type:\"REMOVE_EVENTS\",eventStore:d}),t.emitter.trigger(\"eventRemove\",S);var D=p.defs[l.defId],b=p.instances[u.instanceId],C=new zn(a,D,b);a.dispatch({type:\"MERGE_EVENTS\",eventStore:p});var w={event:C,relatedEvents:Bn(p,a,b),revert:function(){a.dispatch({type:\"REMOVE_EVENTS\",eventStore:p})}};a.emitter.trigger(\"eventAdd\",w),e.isTouch&&a.dispatch({type:\"SELECT_EVENT\",eventInstanceId:u.instanceId}),a.emitter.trigger(\"drop\",r(r({},Ma(f.dateSpan,a)),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:f.component.context.viewApi})),a.emitter.trigger(\"eventReceive\",r(r({},w),{draggedEl:e.subjectEl,view:f.component.context.viewApi}))}}else t.emitter.trigger(\"_noEventDrop\")}o.cleanup()};var i=o.component.context.options,a=o.dragging=new wa(n.el);a.pointer.selector=t.SELECTOR,a.touchScrollAllowed=!1,a.autoScroller.isEnabled=i.dragScroll;var s=o.hitDragging=new Ta(o.dragging,ui);return s.useSubjectCenter=n.useEventCenter,s.emitter.on(\"pointerdown\",o.handlePointerDown),s.emitter.on(\"dragstart\",o.handleDragStart),s.emitter.on(\"hitupdate\",o.handleHitUpdate),s.emitter.on(\"pointerup\",o.handlePointerUp),s.emitter.on(\"dragend\",o.handleDragEnd),o}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t.prototype.displayDrag=function(e,t){var n=this.component.context,r=this.receivingContext;r&&r!==e&&(r===n?r.dispatch({type:\"SET_EVENT_DRAG\",state:{affectedEvents:t.affectedEvents,mutatedEvents:{defs:{},instances:{}},isEvent:!0}}):r.dispatch({type:\"UNSET_EVENT_DRAG\"})),e&&e.dispatch({type:\"SET_EVENT_DRAG\",state:t})},t.prototype.clearDrag=function(){var e=this.component.context,t=this.receivingContext;t&&t.dispatch({type:\"UNSET_EVENT_DRAG\"}),e!==t&&e.dispatch({type:\"UNSET_EVENT_DRAG\"})},t.prototype.cleanup=function(){this.subjectSeg=null,this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingContext=null,this.validMutation=null,this.mutatedRelevantEvents=null},t.SELECTOR=\".fc-event-draggable, .fc-event-resizable\",t}(ai);var Pa=function(e){function t(t){var n=e.call(this,t)||this;n.draggingSegEl=null,n.draggingSeg=null,n.eventRange=null,n.relevantEvents=null,n.validMutation=null,n.mutatedRelevantEvents=null,n.handlePointerDown=function(e){var t=n.component,r=dn(n.querySegEl(e)),o=n.eventRange=r.eventRange;n.dragging.minDistance=t.context.options.eventDragMinDistance,n.dragging.setIgnoreMove(!n.component.isValidSegDownEl(e.origEvent.target)||e.isTouch&&n.component.props.eventSelection!==o.instance.instanceId)},n.handleDragStart=function(e){var t=n.component.context,r=n.eventRange;n.relevantEvents=Nt(t.getCurrentData().eventStore,n.eventRange.instance.instanceId);var o=n.querySegEl(e);n.draggingSegEl=o,n.draggingSeg=dn(o),t.calendarApi.unselect(),t.emitter.trigger(\"eventResizeStart\",{el:o,event:new zn(t,r.def,r.instance),jsEvent:e.origEvent,view:t.viewApi})},n.handleHitUpdate=function(e,t,o){var i=n.component.context,a=n.relevantEvents,s=n.hitDragging.initialHit,l=n.eventRange.instance,u=null,c=null,d=!1,p={affectedEvents:a,mutatedEvents:{defs:{},instances:{}},isEvent:!0};e&&(u=function(e,t,n,o,i){for(var a=e.component.context.dateEnv,s=e.dateSpan.range.start,l=t.dateSpan.range.start,u=Qt(s,l,a,e.component.largeUnit),c={},d=0,p=i;d<p.length;d++){var f=(0,p[d])(e,t);if(!1===f)return null;f&&r(c,f)}if(n){if(a.add(o.start,u)<o.end)return c.startDelta=u,c}else if(a.add(o.end,u)>o.start)return c.endDelta=u,c;return null}(s,e,o.subjectEl.classList.contains(\"fc-event-resizer-start\"),l.range,i.pluginHooks.eventResizeJoinTransforms)),u&&(c=Pn(a,i.getCurrentData().eventUiBases,u,i),p.mutatedEvents=c,n.component.isInteractionValid(p)||(d=!0,u=null,c=null,p.mutatedEvents=null)),c?i.dispatch({type:\"SET_EVENT_RESIZE\",state:p}):i.dispatch({type:\"UNSET_EVENT_RESIZE\"}),d?Q():ee(),t||(u&&ka(s,e)&&(u=null),n.validMutation=u,n.mutatedRelevantEvents=c)},n.handleDragEnd=function(e){var t=n.component.context,o=n.eventRange.def,i=n.eventRange.instance,a=new zn(t,o,i),s=n.relevantEvents,l=n.mutatedRelevantEvents;if(t.emitter.trigger(\"eventResizeStop\",{el:n.draggingSegEl,event:a,jsEvent:e.origEvent,view:t.viewApi}),n.validMutation){var u=new zn(t,l.defs[o.defId],i?l.instances[i.instanceId]:null);t.dispatch({type:\"MERGE_EVENTS\",eventStore:l});var c={oldEvent:a,event:u,relatedEvents:Bn(l,t,i),revert:function(){t.dispatch({type:\"MERGE_EVENTS\",eventStore:s})}};t.emitter.trigger(\"eventResize\",r(r({},c),{el:n.draggingSegEl,startDelta:n.validMutation.startDelta||Ye(0),endDelta:n.validMutation.endDelta||Ye(0),jsEvent:e.origEvent,view:t.viewApi})),t.emitter.trigger(\"eventChange\",c)}else t.emitter.trigger(\"_noEventResize\");n.draggingSeg=null,n.relevantEvents=null,n.validMutation=null};var o=t.component,i=n.dragging=new wa(t.el);i.pointer.selector=\".fc-event-resizer\",i.touchScrollAllowed=!1,i.autoScroller.isEnabled=o.context.options.dragScroll;var a=n.hitDragging=new Ta(n.dragging,li(t));return a.emitter.on(\"pointerdown\",n.handlePointerDown),a.emitter.on(\"dragstart\",n.handleDragStart),a.emitter.on(\"hitupdate\",n.handleHitUpdate),a.emitter.on(\"dragend\",n.handleDragEnd),n}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t.prototype.querySegEl=function(e){return V(e.subjectEl,\".fc-event\")},t}(ai);var Na=function(){function e(e){var t=this;this.context=e,this.isRecentPointerDateSelect=!1,this.matchesCancel=!1,this.matchesEvent=!1,this.onSelect=function(e){e.jsEvent&&(t.isRecentPointerDateSelect=!0)},this.onDocumentPointerDown=function(e){var n=t.context.options.unselectCancel,r=e.origEvent.target;t.matchesCancel=!!V(r,n),t.matchesEvent=!!V(r,Ia.SELECTOR)},this.onDocumentPointerUp=function(e){var n=t.context,r=t.documentPointer,o=n.getCurrentData();if(!r.wasTouchScroll){if(o.dateSelection&&!t.isRecentPointerDateSelect){var i=n.options.unselectAuto;!i||i&&t.matchesCancel||n.calendarApi.unselect(e)}o.eventSelection&&!t.matchesEvent&&n.dispatch({type:\"UNSELECT_EVENT\"})}t.isRecentPointerDateSelect=!1};var n=this.documentPointer=new ga(document);n.shouldIgnoreMove=!0,n.shouldWatchScroll=!1,n.emitter.on(\"pointerdown\",this.onDocumentPointerDown),n.emitter.on(\"pointerup\",this.onDocumentPointerUp),e.emitter.on(\"select\",this.onSelect)}return e.prototype.destroy=function(){this.context.emitter.off(\"select\",this.onSelect),this.documentPointer.destroy()},e}(),Ha={dateClick:_t,eventDragStart:_t,eventDragStop:_t,eventDrop:_t,eventResizeStart:_t,eventResizeStop:_t,eventResize:_t,drop:_t,eventReceive:_t,eventLeave:_t},Oa=function(){function e(e,t){var n=this;this.receivingContext=null,this.droppableEvent=null,this.suppliedDragMeta=null,this.dragMeta=null,this.handleDragStart=function(e){n.dragMeta=n.buildDragMeta(e.subjectEl)},this.handleHitUpdate=function(e,t,o){var i=n.hitDragging.dragging,a=null,s=null,l=!1,u={affectedEvents:{defs:{},instances:{}},mutatedEvents:{defs:{},instances:{}},isEvent:n.dragMeta.create};e&&(a=e.component.context,n.canDropElOnCalendar(o.subjectEl,a)&&(s=function(e,t,n){for(var o=r({},t.leftoverProps),i=0,a=n.pluginHooks.externalDefTransforms;i<a.length;i++){var s=a[i];r(o,s(e,t))}var l=Yt(o,n),u=l.refined,c=l.extra,d=Xt(u,c,t.sourceId,e.allDay,n.options.forceEventDuration||Boolean(t.duration),n),p=e.range.start;e.allDay&&t.startTime&&(p=n.dateEnv.add(p,t.startTime));var f=t.duration?n.dateEnv.add(p,t.duration):In(e.allDay,p,n),h=Ie(d.defId,{start:p,end:f});return{def:d,instance:h}}(e.dateSpan,n.dragMeta,a),u.mutatedEvents=Pt(s),(l=!Jr(u,a))&&(u.mutatedEvents={defs:{},instances:{}},s=null))),n.displayDrag(a,u),i.setMirrorIsVisible(t||!s||!document.querySelector(\".fc-event-mirror\")),l?Q():ee(),t||(i.setMirrorNeedsRevert(!s),n.receivingContext=a,n.droppableEvent=s)},this.handleDragEnd=function(e){var t=n,o=t.receivingContext,i=t.droppableEvent;if(n.clearDrag(),o&&i){var a=n.hitDragging.finalHit,s=a.component.context.viewApi,l=n.dragMeta;if(o.emitter.trigger(\"drop\",r(r({},Ma(a.dateSpan,o)),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:s})),l.create){var u=Pt(i);o.dispatch({type:\"MERGE_EVENTS\",eventStore:u}),e.isTouch&&o.dispatch({type:\"SELECT_EVENT\",eventInstanceId:i.instance.instanceId}),o.emitter.trigger(\"eventReceive\",{event:new zn(o,i.def,i.instance),relatedEvents:[],revert:function(){o.dispatch({type:\"REMOVE_EVENTS\",eventStore:u})},draggedEl:e.subjectEl,view:s})}}n.receivingContext=null,n.droppableEvent=null};var o=this.hitDragging=new Ta(e,ui);o.requireInitial=!1,o.emitter.on(\"dragstart\",this.handleDragStart),o.emitter.on(\"hitupdate\",this.handleHitUpdate),o.emitter.on(\"dragend\",this.handleDragEnd),this.suppliedDragMeta=t}return e.prototype.buildDragMeta=function(e){return\"object\"==typeof this.suppliedDragMeta?fi(this.suppliedDragMeta):\"function\"==typeof this.suppliedDragMeta?fi(this.suppliedDragMeta(e)):fi((t=function(e,t){var n=di.dataAttrPrefix,r=(n?n+\"-\":\"\")+t;return e.getAttribute(\"data-\"+r)||\"\"}(e,\"event\"))?JSON.parse(t):{create:!1});var t},e.prototype.displayDrag=function(e,t){var n=this.receivingContext;n&&n!==e&&n.dispatch({type:\"UNSET_EVENT_DRAG\"}),e&&e.dispatch({type:\"SET_EVENT_DRAG\",state:t})},e.prototype.clearDrag=function(){this.receivingContext&&this.receivingContext.dispatch({type:\"UNSET_EVENT_DRAG\"})},e.prototype.canDropElOnCalendar=function(e,t){var n=t.options.dropAccept;return\"function\"==typeof n?n.call(t.calendarApi,e):\"string\"!=typeof n||!n||Boolean(z(e,n))},e}();di.dataAttrPrefix=\"\";var Aa=function(){function e(e,t){var n=this;void 0===t&&(t={}),this.handlePointerDown=function(e){var t=n.dragging,r=n.settings,o=r.minDistance,i=r.longPressDelay;t.minDistance=null!=o?o:e.isTouch?0:bt.eventDragMinDistance,t.delay=e.isTouch?null!=i?i:bt.longPressDelay:0},this.handleDragStart=function(e){e.isTouch&&n.dragging.delay&&e.subjectEl.classList.contains(\"fc-event\")&&n.dragging.mirror.getMirrorEl().classList.add(\"fc-event-selected\")},this.settings=t;var r=this.dragging=new wa(e);r.touchScrollAllowed=!1,null!=t.itemSelector&&(r.pointer.selector=t.itemSelector),null!=t.appendTo&&(r.mirror.parentNode=t.appendTo),r.emitter.on(\"pointerdown\",this.handlePointerDown),r.emitter.on(\"dragstart\",this.handleDragStart),new Oa(r,t.eventData)}return e.prototype.destroy=function(){this.dragging.destroy()},e}(),Ua=function(e){function t(t){var n=e.call(this,t)||this;n.shouldIgnoreMove=!1,n.mirrorSelector=\"\",n.currentMirrorEl=null,n.handlePointerDown=function(e){n.emitter.trigger(\"pointerdown\",e),n.shouldIgnoreMove||n.emitter.trigger(\"dragstart\",e)},n.handlePointerMove=function(e){n.shouldIgnoreMove||n.emitter.trigger(\"dragmove\",e)},n.handlePointerUp=function(e){n.emitter.trigger(\"pointerup\",e),n.shouldIgnoreMove||n.emitter.trigger(\"dragend\",e)};var r=n.pointer=new ga(t);return r.emitter.on(\"pointerdown\",n.handlePointerDown),r.emitter.on(\"pointermove\",n.handlePointerMove),r.emitter.on(\"pointerup\",n.handlePointerUp),n}return n(t,e),t.prototype.destroy=function(){this.pointer.destroy()},t.prototype.setIgnoreMove=function(e){this.shouldIgnoreMove=e},t.prototype.setMirrorIsVisible=function(e){if(e)this.currentMirrorEl&&(this.currentMirrorEl.style.visibility=\"\",this.currentMirrorEl=null);else{var t=this.mirrorSelector?document.querySelector(this.mirrorSelector):null;t&&(this.currentMirrorEl=t,t.style.visibility=\"hidden\")}},t}(ci),La=function(){function e(e,t){var n=document;e===document||e instanceof Element?(n=e,t=t||{}):t=e||{};var r=this.dragging=new Ua(n);\"string\"==typeof t.itemSelector?r.pointer.selector=t.itemSelector:n===document&&(r.pointer.selector=\"[data-event]\"),\"string\"==typeof t.mirrorSelector&&(r.mirrorSelector=t.mirrorSelector),new Oa(r,t.eventData)}return e.prototype.destroy=function(){this.dragging.destroy()},e}(),Wa=io({componentInteractions:[xa,_a,Ia,Pa],calendarInteractions:[Na],elementDraggingImpl:wa,listenerRefiners:Ha}),Va=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.headerElRef=Ar(),t}return n(t,e),t.prototype.renderSimpleLayout=function(e,t){var n=this.props,r=this.context,o=[],i=Ki(r.options);return e&&o.push({type:\"header\",key:\"header\",isSticky:i,chunk:{elRef:this.headerElRef,tableClassName:\"fc-col-header\",rowContent:e}}),o.push({type:\"body\",key:\"body\",liquid:!0,chunk:{content:t}}),Hr(yo,{viewSpec:r.viewSpec},(function(e,t){return Hr(\"div\",{ref:e,className:[\"fc-daygrid\"].concat(t).join(\" \")},Hr($i,{liquid:!n.isHeightAuto&&!n.forPrint,cols:[],sections:o}))}))},t.prototype.renderHScrollLayout=function(e,t,n,r){var o=this.context.pluginHooks.scrollGridImpl;if(!o)throw new Error(\"No ScrollGrid implementation\");var i=this.props,a=this.context,s=!i.forPrint&&Ki(a.options),l=!i.forPrint&&Ji(a.options),u=[];return e&&u.push({type:\"header\",key:\"header\",isSticky:s,chunks:[{key:\"main\",elRef:this.headerElRef,tableClassName:\"fc-col-header\",rowContent:e}]}),u.push({type:\"body\",key:\"body\",liquid:!0,chunks:[{key:\"main\",content:t}]}),l&&u.push({type:\"footer\",key:\"footer\",isSticky:!0,chunks:[{key:\"main\",content:Xi}]}),Hr(yo,{viewSpec:a.viewSpec},(function(e,t){return Hr(\"div\",{ref:e,className:[\"fc-daygrid\"].concat(t).join(\" \")},Hr(o,{liquid:!i.isHeightAuto&&!i.forPrint,colGroups:[{cols:[{span:n,minWidth:r}]}],sections:u}))}))},t}(oo);function za(e,t){for(var n=[],r=0;r<t;r++)n[r]=[];for(var o=0,i=e;o<i.length;o++){var a=i[o];n[a.row].push(a)}return n}function Fa(e,t){for(var n=[],r=0;r<t;r++)n[r]=[];for(var o=0,i=e;o<i.length;o++){var a=i[o];n[a.firstCol].push(a)}return n}function Ba(e,t){var n=[];if(e){for(a=0;a<t;a++)n[a]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(var r=0,o=e.segs;r<o.length;r++){var i=o[r];n[i.row].segs.push(i)}}else for(var a=0;a<t;a++)n[a]=null;return n}var ja=St({week:\"narrow\"}),Ga=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleRootEl=function(e){t.rootEl=e,Yr(t.props.elRef,e)},t.handleMoreLinkClick=function(e){var n=t.props;if(n.onMoreClick){var r=n.segsByEachCol,o=r.filter((function(e){return n.segIsHidden[e.eventRange.instance.instanceId]}));n.onMoreClick({date:n.date,allSegs:r,hiddenSegs:o,moreCnt:n.moreCnt,dayEl:t.rootEl,ev:e})}},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.context,n=t.options,o=t.viewApi,i=this.props,a=i.date,s=i.dateProfile,l={num:i.moreCnt,text:i.buildMoreLinkText(i.moreCnt),view:o},u=n.navLinks?{\"data-navlink\":gr(a,\"week\"),tabIndex:0}:{};return Hr(oa,{date:a,dateProfile:s,todayRange:i.todayRange,showDayNumber:i.showDayNumber,extraHookProps:i.extraHookProps,elRef:this.handleRootEl},(function(t,o,c,d){return Hr(\"td\",r({ref:t,className:[\"fc-daygrid-day\"].concat(o,i.extraClassNames||[]).join(\" \")},c,i.extraDataAttrs),Hr(\"div\",{className:\"fc-daygrid-day-frame fc-scrollgrid-sync-inner\",ref:i.innerElRef},i.showWeekNumber&&Hr(ca,{date:a,defaultFormat:ja},(function(e,t,n,o){return Hr(\"a\",r({ref:e,className:[\"fc-daygrid-week-number\"].concat(t).join(\" \")},u),o)})),!d&&Hr(Za,{date:a,dateProfile:s,showDayNumber:i.showDayNumber,forceDayTop:i.forceDayTop,todayRange:i.todayRange,extraHookProps:i.extraHookProps}),Hr(\"div\",{className:\"fc-daygrid-day-events\",ref:i.fgContentElRef,style:{paddingBottom:i.fgPaddingBottom}},i.fgContent,Boolean(i.moreCnt)&&Hr(\"div\",{className:\"fc-daygrid-day-bottom\",style:{marginTop:i.moreMarginTop}},Hr(uo,{hookProps:l,classNames:n.moreLinkClassNames,content:n.moreLinkContent,defaultContent:Ya,didMount:n.moreLinkDidMount,willUnmount:n.moreLinkWillUnmount},(function(t,n,r,o){return Hr(\"a\",{onClick:e.handleMoreLinkClick,ref:t,className:[\"fc-daygrid-more-link\"].concat(n).join(\" \")},o)})))),Hr(\"div\",{className:\"fc-daygrid-day-bg\"},i.bgContent)))}))},t}(oo);function qa(e){return e.dayNumberText}function Ya(e){return e.text}var Za=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context.options.navLinks?{\"data-navlink\":gr(e.date),tabIndex:0}:{};return Hr(ia,{date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraHookProps:e.extraHookProps,defaultContent:qa},(function(n,o){return(o||e.forceDayTop)&&Hr(\"div\",{className:\"fc-daygrid-day-top\",ref:n},Hr(\"a\",r({className:\"fc-daygrid-day-number\"},t),o||Hr(Ur,null,\"\u00A0\")))}))},t}(jr),Xa=St({hour:\"numeric\",minute:\"2-digit\",omitZeroMinute:!0,meridiem:\"narrow\"});function Ka(e){var t=e.eventRange.ui.display;return\"list-item\"===t||\"auto\"===t&&!e.eventRange.def.allDay&&e.firstCol===e.lastCol&&e.isStart&&e.isEnd}var Ja=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options.eventTimeFormat||Xa,o=En(e.seg,n,t,!0,e.defaultDisplayEventEnd);return Hr(Qi,{seg:e.seg,timeText:o,defaultContent:$a,isDragging:e.isDragging,isResizing:!1,isDateSelecting:!1,isSelected:e.isSelected,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(t,n,o,i){return Hr(\"a\",r({className:[\"fc-daygrid-event\",\"fc-daygrid-dot-event\"].concat(n).join(\" \"),ref:t},(a=e.seg,(s=a.eventRange.def.url)?{href:s}:{})),i);var a,s}))},t}(jr);function $a(e){return Hr(Ur,null,Hr(\"div\",{className:\"fc-daygrid-event-dot\",style:{borderColor:e.borderColor||e.backgroundColor}}),e.timeText&&Hr(\"div\",{className:\"fc-event-time\"},e.timeText),Hr(\"div\",{className:\"fc-event-title\"},e.event.title||Hr(Ur,null,\"\u00A0\")))}var Qa=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return Hr(ea,r({},e,{extraClassNames:[\"fc-daygrid-event\",\"fc-daygrid-block-event\",\"fc-h-event\"],defaultTimeFormat:Xa,defaultDisplayEventEnd:e.defaultDisplayEventEnd,disableResizing:!e.seg.eventRange.def.allDay}))},t}(jr);function es(e,t,n,o,i,a,s,l){for(var u=[],c=[],d={},p={},f={},h={},v={},g=0;g<s;g++)u.push([]),c.push(0);for(var m=0,y=t=hn(t,l);m<y.length;m++){T(w=y[m],i[w.eventRange.instance.instanceId+\":\"+w.firstCol]||0)}!0===n||!0===o?function(e,t,n,r){ns(e,t,n,!0,(function(e){return e.bottom<=r}))}(c,d,u,a):\"number\"==typeof n?function(e,t,n,r){ns(e,t,n,!1,(function(e,t){return t<r}))}(c,d,u,n):\"number\"==typeof o&&function(e,t,n,r){ns(e,t,n,!0,(function(e,t){return t<r}))}(c,d,u,o);for(var E=0;E<s;E++){for(var S=0,D=0,b=0,C=u[E];b<C.length;b++){var w,R=C[b];d[(w=R.seg).eventRange.instance.instanceId]||(p[w.eventRange.instance.instanceId]=R.top,w.firstCol===w.lastCol&&w.isStart&&w.isEnd?(f[w.eventRange.instance.instanceId]=R.top-S,D=0,S=R.bottom):D+=R.bottom-R.top)}D&&(c[E]?h[E]=D:v[E]=D)}function T(e,t){if(!k(e,t,0))for(var n=e.firstCol;n<=e.lastCol;n++)for(var r=0,o=u[n];r<o.length;r++){if(k(e,t,o[r].bottom))return}}function k(e,t,n){if(function(e,t,n){for(var r=e.firstCol;r<=e.lastCol;r++)for(var o=0,i=u[r];o<i.length;o++){var a=i[o];if(n<a.bottom&&n+t>a.top)return!1}return!0}(e,t,n)){for(var r=e.firstCol;r<=e.lastCol;r++){for(var o=u[r],i=0;i<o.length&&n>=o[i].top;)i++;o.splice(i,0,{seg:e,top:n,bottom:n+t})}return!0}return!1}for(var M in i)i[M]||(d[M.split(\":\")[0]]=!0);return{segsByFirstCol:u.map(ts),segsByEachCol:u.map((function(t,n){var o=function(e){for(var t=[],n=0,r=e;n<r.length;n++){var o=r[n];t.push(o.seg)}return t}(t);return o=function(e,t,n){for(var o=t,i=ve(o,1),a={start:o,end:i},s=[],l=0,u=e;l<u.length;l++){var c=u[l],d=c.eventRange,p=d.range,f=nn(p,a);f&&s.push(r(r({},c),{firstCol:n,lastCol:n,eventRange:{def:d.def,ui:r(r({},d.ui),{durationEditable:!1}),instance:d.instance,range:f},isStart:c.isStart&&f.start.valueOf()===p.start.valueOf(),isEnd:c.isEnd&&f.end.valueOf()===p.end.valueOf()}))}return s}(o,e[n].date,n)})),segIsHidden:d,segTops:p,segMarginTops:f,moreCnts:c,moreTops:h,paddingBottoms:v}}function ts(e,t){for(var n=[],r=0,o=e;r<o.length;r++){var i=o[r];i.seg.firstCol===t&&n.push(i.seg)}return n}function ns(e,t,n,r,o){for(var i=e.length,a={},s=[],l=0;l<i;l++)s.push([]);for(l=0;l<i;l++)for(var u=0,c=0,d=n[l];c<d.length;c++){var p=d[c];o(p,u)?f(p):h(p),p.top!==p.bottom&&u++}function f(e){var t=e.seg,n=t.eventRange.instance.instanceId;if(!a[n]){a[n]=!0;for(var r=t.firstCol;r<=t.lastCol;r++)s[r].push(e)}}function h(n){var o=n.seg,i=o.eventRange.instance.instanceId;if(!t[i]){t[i]=!0;for(var a=o.firstCol;a<=o.lastCol;a++){var l=++e[a];if(r&&1===l){var u=s[a].pop();u&&h(u)}}}}}var rs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.cellElRefs=new Li,t.frameElRefs=new Li,t.fgElRefs=new Li,t.segHarnessRefs=new Li,t.rootElRef=Ar(),t.state={framePositions:null,maxContentHeight:null,segHeights:{}},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.state,r=this.context,o=t.cells.length,i=Fa(t.businessHourSegs,o),a=Fa(t.bgEventSegs,o),s=Fa(this.getHighlightSegs(),o),l=Fa(this.getMirrorSegs(),o),u=es(t.cells,t.fgEventSegs,t.dayMaxEvents,t.dayMaxEventRows,n.segHeights,n.maxContentHeight,o,r.options.eventOrder),c=u.paddingBottoms,d=u.segsByFirstCol,p=u.segsByEachCol,f=u.segIsHidden,h=u.segTops,v=u.segMarginTops,g=u.moreCnts,m=u.moreTops,y=t.eventDrag&&t.eventDrag.affectedInstances||t.eventResize&&t.eventResize.affectedInstances||{};return Hr(\"tr\",{ref:this.rootElRef},t.renderIntro&&t.renderIntro(),t.cells.map((function(n,r){var o=e.renderFgSegs(d[r],f,h,v,y,t.todayRange),u=e.renderFgSegs(l[r],{},h,{},{},t.todayRange,Boolean(t.eventDrag),Boolean(t.eventResize),!1);return Hr(Ga,{key:n.key,elRef:e.cellElRefs.createRef(n.key),innerElRef:e.frameElRefs.createRef(n.key),dateProfile:t.dateProfile,date:n.date,showDayNumber:t.showDayNumbers,showWeekNumber:t.showWeekNumbers&&0===r,forceDayTop:t.showWeekNumbers,todayRange:t.todayRange,extraHookProps:n.extraHookProps,extraDataAttrs:n.extraDataAttrs,extraClassNames:n.extraClassNames,moreCnt:g[r],buildMoreLinkText:t.buildMoreLinkText,onMoreClick:t.onMoreClick,segIsHidden:f,moreMarginTop:m[r],segsByEachCol:p[r],fgPaddingBottom:c[r],fgContentElRef:e.fgElRefs.createRef(n.key),fgContent:Hr(Ur,null,Hr(Ur,null,o),Hr(Ur,null,u)),bgContent:Hr(Ur,null,e.renderFillSegs(s[r],\"highlight\"),e.renderFillSegs(i[r],\"non-business\"),e.renderFillSegs(a[r],\"bg-event\"))})})))},t.prototype.componentDidMount=function(){this.updateSizing(!0)},t.prototype.componentDidUpdate=function(e,t){var n=this.props;this.updateSizing(!Le(e,n))},t.prototype.getHighlightSegs=function(){var e=this.props;return e.eventDrag&&e.eventDrag.segs.length?e.eventDrag.segs:e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:e.dateSelectionSegs},t.prototype.getMirrorSegs=function(){var e=this.props;return e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:[]},t.prototype.renderFgSegs=function(e,t,n,o,i,a,s,l,u){var c=this.context,d=this.props.eventSelection,p=this.state.framePositions,f=1===this.props.cells.length,h=[];if(p)for(var v=0,g=e;v<g.length;v++){var m=g[v],y=m.eventRange.instance.instanceId,E=s||l||u,S=i[y],D=t[y]||S,b=t[y]||E||m.firstCol!==m.lastCol||!m.isStart||!m.isEnd,C=void 0,w=void 0,R=void 0,T=void 0;b?(w=n[y],c.isRtl?(T=0,R=p.lefts[m.lastCol]-p.lefts[m.firstCol]):(R=0,T=p.rights[m.firstCol]-p.rights[m.lastCol])):C=o[y],h.push(Hr(\"div\",{className:\"fc-daygrid-event-harness\"+(b?\" fc-daygrid-event-harness-abs\":\"\"),key:y,ref:E?null:this.segHarnessRefs.createRef(y+\":\"+m.firstCol),style:{visibility:D?\"hidden\":\"\",marginTop:C||\"\",top:w||\"\",left:R||\"\",right:T||\"\"}},Ka(m)?Hr(Ja,r({seg:m,isDragging:s,isSelected:y===d,defaultDisplayEventEnd:f},Sn(m,a))):Hr(Qa,r({seg:m,isDragging:s,isResizing:l,isDateSelecting:u,isSelected:y===d,defaultDisplayEventEnd:f},Sn(m,a)))))}return h},t.prototype.renderFillSegs=function(e,t){var n=this.context.isRtl,i=this.props.todayRange,a=this.state.framePositions,s=[];if(a)for(var l=0,u=e;l<u.length;l++){var c=u[l],d=n?{right:0,left:a.lefts[c.lastCol]-a.lefts[c.firstCol]}:{left:0,right:a.rights[c.firstCol]-a.rights[c.lastCol]};s.push(Hr(\"div\",{key:bn(c.eventRange),className:\"fc-daygrid-bg-harness\",style:d},\"bg-event\"===t?Hr(la,r({seg:c},Sn(c,i))):sa(t)))}return Hr.apply(void 0,o([Ur,{}],s))},t.prototype.updateSizing=function(e){var t=this.props,n=this.frameElRefs;if(null!==t.clientWidth){if(e){var r=t.cells.map((function(e){return n.currentMap[e.key]}));if(r.length){var o=this.rootElRef.current;this.setState({framePositions:new Mr(o,r,!0,!1)})}}var i=!0===t.dayMaxEvents||!0===t.dayMaxEventRows;this.setState({segHeights:this.computeSegHeights(),maxContentHeight:i?this.computeMaxContentHeight():null})}},t.prototype.computeSegHeights=function(){return Oe(this.segHarnessRefs.currentMap,(function(e){return e.getBoundingClientRect().height}))},t.prototype.computeMaxContentHeight=function(){var e=this.props.cells[0].key,t=this.cellElRefs.currentMap[e],n=this.fgElRefs.currentMap[e];return t.getBoundingClientRect().bottom-n.getBoundingClientRect().top},t.prototype.getCellEls=function(){var e=this.cellElRefs.currentMap;return this.props.cells.map((function(t){return e[t.key]}))},t}(oo);rs.addStateEquality({segHeights:Le});var os=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.repositioner=new Go(t.updateSize.bind(t)),t.handleRootEl=function(e){t.rootEl=e,t.props.elRef&&Yr(t.props.elRef,e)},t.handleDocumentMousedown=function(e){var n=t.props.onClose;n&&!t.rootEl.contains(e.target)&&n()},t.handleDocumentScroll=function(){t.repositioner.request(10)},t.handleCloseClick=function(){var e=t.props.onClose;e&&e()},t}return n(t,e),t.prototype.render=function(){var e=this.context.theme,t=this.props,n=[\"fc-popover\",e.getClass(\"popover\")].concat(t.extraClassNames||[]);return Hr(\"div\",r({className:n.join(\" \")},t.extraAttrs,{ref:this.handleRootEl}),Hr(\"div\",{className:\"fc-popover-header \"+e.getClass(\"popoverHeader\")},Hr(\"span\",{className:\"fc-popover-title\"},t.title),Hr(\"span\",{className:\"fc-popover-close \"+e.getIconClass(\"close\"),onClick:this.handleCloseClick})),Hr(\"div\",{className:\"fc-popover-body \"+e.getClass(\"popoverContent\")},t.children))},t.prototype.componentDidMount=function(){document.addEventListener(\"mousedown\",this.handleDocumentMousedown),document.addEventListener(\"scroll\",this.handleDocumentScroll),this.updateSize()},t.prototype.componentWillUnmount=function(){document.removeEventListener(\"mousedown\",this.handleDocumentMousedown),document.removeEventListener(\"scroll\",this.handleDocumentScroll)},t.prototype.updateSize=function(){var e=this.props,t=e.alignmentEl,n=e.topAlignmentEl,r=this.rootEl;if(r){var o,i=r.getBoundingClientRect(),a=t.getBoundingClientRect(),s=n?n.getBoundingClientRect().top:a.top;s=Math.min(s,window.innerHeight-i.height-10),s=Math.max(s,10),o=this.context.isRtl?a.right-i.width:a.left,o=Math.min(o,window.innerWidth-i.width-10),j(r,{top:s,left:o=Math.max(o,10)})}},t}(jr),is=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handlePopoverEl=function(e){t.popoverEl=e,e?t.context.registerInteractiveComponent(t,{el:e,useEventCenter:!1}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this.context,t=e.options,n=e.dateEnv,o=this.props,i=o.date,a=o.hiddenInstances,s=o.todayRange,l=o.dateProfile,u=o.selectedInstanceId,c=n.format(i,t.dayPopoverFormat);return Hr(oa,{date:i,dateProfile:l,todayRange:s,elRef:this.handlePopoverEl},(function(e,t,n){return Hr(os,{elRef:e,title:c,extraClassNames:[\"fc-more-popover\"].concat(t),extraAttrs:n,onClose:o.onCloseClick,alignmentEl:o.alignmentEl,topAlignmentEl:o.topAlignmentEl},Hr(ia,{date:i,dateProfile:l,todayRange:s},(function(e,t){return t&&Hr(\"div\",{className:\"fc-more-popover-misc\",ref:e},t)})),o.segs.map((function(e){var t=e.eventRange.instance.instanceId;return Hr(\"div\",{className:\"fc-daygrid-event-harness\",key:t,style:{visibility:a[t]?\"hidden\":\"\"}},Ka(e)?Hr(Ja,r({seg:e,isDragging:!1,isSelected:t===u,defaultDisplayEventEnd:!1},Sn(e,s))):Hr(Qa,r({seg:e,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:t===u,defaultDisplayEventEnd:!1},Sn(e,s))))})))}))},t.prototype.queryHit=function(e,t,n,r){var o=this.props.date;if(e<n&&t<r)return{component:this,dateSpan:{allDay:!0,range:{start:o,end:ve(o,1)}},dayEl:this.popoverEl,rect:{left:0,top:0,right:n,bottom:r},layer:1}},t.prototype.isPopover=function(){return!0},t}(oo),as=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.splitBusinessHourSegs=it(za),t.splitBgEventSegs=it(za),t.splitFgEventSegs=it(za),t.splitDateSelectionSegs=it(za),t.splitEventDrag=it(Ba),t.splitEventResize=it(Ba),t.buildBuildMoreLinkText=it(ss),t.rowRefs=new Li,t.state={morePopoverState:null},t.handleRootEl=function(e){t.rootEl=e,Yr(t.props.elRef,e)},t.handleMoreLinkClick=function(e){var n=t.context,o=n.dateEnv,i=n.options.moreLinkClick;function a(e){var t=e.eventRange,r=t.def,i=t.instance,a=t.range;return{event:new zn(n,r,i),start:o.toDate(a.start),end:o.toDate(a.end),isStart:e.isStart,isEnd:e.isEnd}}\"function\"==typeof i&&(i=i({date:o.toDate(e.date),allDay:!0,allSegs:e.allSegs.map(a),hiddenSegs:e.hiddenSegs.map(a),jsEvent:e.ev,view:n.viewApi})),i&&\"popover\"!==i?\"string\"==typeof i&&n.calendarApi.zoomTo(e.date,i):t.setState({morePopoverState:r(r({},e),{currentFgEventSegs:t.props.fgEventSegs})})},t.handleMorePopoverClose=function(){t.setState({morePopoverState:null})},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=t.dateProfile,r=t.dayMaxEventRows,o=t.dayMaxEvents,i=t.expandRows,a=this.state.morePopoverState,s=t.cells.length,l=this.splitBusinessHourSegs(t.businessHourSegs,s),u=this.splitBgEventSegs(t.bgEventSegs,s),c=this.splitFgEventSegs(t.fgEventSegs,s),d=this.splitDateSelectionSegs(t.dateSelectionSegs,s),p=this.splitEventDrag(t.eventDrag,s),f=this.splitEventResize(t.eventResize,s),h=this.buildBuildMoreLinkText(this.context.options.moreLinkText),v=!0===o||!0===r;return v&&!i&&(v=!1,r=null,o=null),Hr(\"div\",{className:[\"fc-daygrid-body\",v?\"fc-daygrid-body-balanced\":\"fc-daygrid-body-unbalanced\",i?\"\":\"fc-daygrid-body-natural\"].join(\" \"),ref:this.handleRootEl,style:{width:t.clientWidth,minWidth:t.tableMinWidth}},Hr(Mi,{unit:\"day\"},(function(v,g){return Hr(Ur,null,Hr(\"table\",{className:\"fc-scrollgrid-sync-table\",style:{width:t.clientWidth,minWidth:t.tableMinWidth,height:i?t.clientHeight:\"\"}},t.colGroupNode,Hr(\"tbody\",null,t.cells.map((function(i,a){return Hr(rs,{ref:e.rowRefs.createRef(a),key:i.length?i[0].date.toISOString():a,showDayNumbers:s>1,showWeekNumbers:t.showWeekNumbers,todayRange:g,dateProfile:n,cells:i,renderIntro:t.renderRowIntro,businessHourSegs:l[a],eventSelection:t.eventSelection,bgEventSegs:u[a].filter(ls),fgEventSegs:c[a],dateSelectionSegs:d[a],eventDrag:p[a],eventResize:f[a],dayMaxEvents:o,dayMaxEventRows:r,clientWidth:t.clientWidth,clientHeight:t.clientHeight,buildMoreLinkText:h,onMoreClick:e.handleMoreLinkClick})})))),!t.forPrint&&a&&a.currentFgEventSegs===t.fgEventSegs&&Hr(is,{date:a.date,dateProfile:n,segs:a.allSegs,alignmentEl:a.dayEl,topAlignmentEl:1===s?t.headerAlignElRef.current:null,onCloseClick:e.handleMorePopoverClose,selectedInstanceId:t.eventSelection,hiddenInstances:(t.eventDrag?t.eventDrag.affectedInstances:null)||(t.eventResize?t.eventResize.affectedInstances:null)||{},todayRange:g}))})))},t.prototype.prepareHits=function(){this.rowPositions=new Mr(this.rootEl,this.rowRefs.collect().map((function(e){return e.getCellEls()[0]})),!1,!0),this.colPositions=new Mr(this.rootEl,this.rowRefs.currentMap[0].getCellEls(),!0,!1)},t.prototype.positionToHit=function(e,t){var n=this.colPositions,r=this.rowPositions,o=n.leftToIndex(e),i=r.topToIndex(t);if(null!=i&&null!=o)return{row:i,col:o,dateSpan:{range:this.getCellRange(i,o),allDay:!0},dayEl:this.getCellEl(i,o),relativeRect:{left:n.lefts[o],right:n.rights[o],top:r.tops[i],bottom:r.bottoms[i]}}},t.prototype.getCellEl=function(e,t){return this.rowRefs.currentMap[e].getCellEls()[t]},t.prototype.getCellRange=function(e,t){var n=this.props.cells[e][t].date;return{start:n,end:ve(n,1)}},t}(oo);function ss(e){return\"function\"==typeof e?e:function(t){return\"+\"+t+\" \"+e}}function ls(e){return e.eventRange.def.allDay}var us=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.slicer=new cs,t.tableRef=Ar(),t.handleRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context;return Hr(as,r({ref:this.tableRef,elRef:this.handleRootEl},this.slicer.sliceProps(e,e.dateProfile,e.nextDayThreshold,t,e.dayTableModel),{dateProfile:e.dateProfile,cells:e.dayTableModel.cells,colGroupNode:e.colGroupNode,tableMinWidth:e.tableMinWidth,renderRowIntro:e.renderRowIntro,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,showWeekNumbers:e.showWeekNumbers,expandRows:e.expandRows,headerAlignElRef:e.headerAlignElRef,clientWidth:e.clientWidth,clientHeight:e.clientHeight,forPrint:e.forPrint}))},t.prototype.prepareHits=function(){this.tableRef.current.prepareHits()},t.prototype.queryHit=function(e,t){var n=this.tableRef.current.positionToHit(e,t);if(n)return{component:this,dateSpan:n.dateSpan,dayEl:n.dayEl,rect:{left:n.relativeRect.left,right:n.relativeRect.right,top:n.relativeRect.top,bottom:n.relativeRect.bottom},layer:0}},t}(oo),cs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.forceDayIfListItem=!0,t}return n(t,e),t.prototype.sliceRange=function(e,t){return t.sliceRange(e)},t}(Hi),ds=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildDayTableModel=it(ps),t.headerRef=Ar(),t.tableRef=Ar(),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.context,n=t.options,r=t.dateProfileGenerator,o=this.props,i=this.buildDayTableModel(o.dateProfile,r),a=n.dayHeaders&&Hr(_i,{ref:this.headerRef,dateProfile:o.dateProfile,dates:i.headerDates,datesRepDistinctDays:1===i.rowCnt}),s=function(t){return Hr(us,{ref:e.tableRef,dateProfile:o.dateProfile,dayTableModel:i,businessHours:o.businessHours,dateSelection:o.dateSelection,eventStore:o.eventStore,eventUiBases:o.eventUiBases,eventSelection:o.eventSelection,eventDrag:o.eventDrag,eventResize:o.eventResize,nextDayThreshold:n.nextDayThreshold,colGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,dayMaxEvents:n.dayMaxEvents,dayMaxEventRows:n.dayMaxEventRows,showWeekNumbers:n.weekNumbers,expandRows:!o.isHeightAuto,headerAlignElRef:e.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:o.forPrint})};return n.dayMinWidth?this.renderHScrollLayout(a,s,i.colCnt,n.dayMinWidth):this.renderSimpleLayout(a,s)},t}(Va);function ps(e,t){var n=new Pi(e.renderRange,t);return new Ni(n,/year|month|week/.test(e.currentRangeUnit))}var fs=io({initialView:\"dayGridMonth\",optionRefiners:{moreLinkClick:_t,moreLinkClassNames:_t,moreLinkContent:_t,moreLinkDidMount:_t,moreLinkWillUnmount:_t},views:{dayGrid:{component:ds,dateProfileGeneratorClass:function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.buildRenderRange=function(t,n,r){var o,i=this.props.dateEnv,a=e.prototype.buildRenderRange.call(this,t,n,r),s=a.start,l=a.end;(/^(year|month)$/.test(n)&&(s=i.startOfWeek(s),(o=i.startOfWeek(l)).valueOf()!==l.valueOf()&&(l=he(o,1))),this.props.monthMode&&this.props.fixedWeekCount)&&(l=he(l,6-Math.ceil(me(s,l))));return{start:s,end:l}},t}(Co)},dayGridDay:{type:\"dayGrid\",duration:{days:1}},dayGridWeek:{type:\"dayGrid\",duration:{weeks:1}},dayGridMonth:{type:\"dayGrid\",duration:{months:1},monthMode:!0,fixedWeekCount:!0}}}),hs=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.getKeyInfo=function(){return{allDay:{},timed:{}}},t.prototype.getKeysForDateSpan=function(e){return e.allDay?[\"allDay\"]:[\"timed\"]},t.prototype.getKeysForEventDef=function(e){return e.allDay?un(e)?[\"timed\",\"allDay\"]:[\"allDay\"]:[\"timed\"]},t}(pr),vs=function(){function e(e,t,n){this.positions=e,this.dateProfile=t,this.slatMetas=n}return e.prototype.safeComputeTop=function(e){var t=this.dateProfile;if(sn(t.currentRange,e)){var n=be(e),r=e.valueOf()-n.valueOf();if(r>=$e(t.slotMinTime)&&r<$e(t.slotMaxTime))return this.computeTimeTop(Ye(r))}},e.prototype.computeDateTop=function(e,t){return t||(t=be(e)),this.computeTimeTop(Ye(e.valueOf()-t.valueOf()))},e.prototype.computeTimeTop=function(e){var t,n,r=this.positions,o=this.dateProfile,i=this.slatMetas,a=r.els.length,s=i[1].date.valueOf()-i[0].date.valueOf(),l=(e.milliseconds-$e(o.slotMinTime))/s;return l=Math.max(0,l),l=Math.min(a,l),t=Math.floor(l),n=l-(t=Math.min(t,a-1)),r.tops[t]+r.getHeight(t)*n},e}(),gs=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}],ms=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Ar(),t.slatElRefs=new Li,t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context;return Hr(\"div\",{className:\"fc-timegrid-slots\",ref:this.rootElRef},Hr(\"table\",{className:t.theme.getClass(\"table\"),style:{minWidth:e.tableMinWidth,width:e.clientWidth,height:e.minHeight}},e.tableColGroupNode,Hr(ys,{slatElRefs:this.slatElRefs,axis:e.axis,slatMetas:e.slatMetas})))},t.prototype.componentDidMount=function(){this.updateSizing()},t.prototype.componentDidUpdate=function(){this.updateSizing()},t.prototype.componentWillUnmount=function(){this.props.onCoords&&this.props.onCoords(null)},t.prototype.updateSizing=function(){var e,t=this.props;t.onCoords&&null!==t.clientWidth&&(this.rootElRef.current.offsetHeight&&t.onCoords(new vs(new Mr(this.rootElRef.current,(e=this.slatElRefs.currentMap,t.slatMetas.map((function(t){return e[t.key]}))),!1,!0),this.props.dateProfile,t.slatMetas)))},t}(jr);var ys=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,o=e.slatElRefs;return Hr(\"tbody\",null,e.slatMetas.map((function(i,a){var s={time:i.time,date:t.dateEnv.toDate(i.date),view:t.viewApi},l=[\"fc-timegrid-slot\",\"fc-timegrid-slot-lane\",i.isLabeled?\"\":\"fc-timegrid-slot-minor\"];return Hr(\"tr\",{key:i.key,ref:o.createRef(i.key)},e.axis&&Hr(Ss,r({},i)),Hr(uo,{hookProps:s,classNames:n.slotLaneClassNames,content:n.slotLaneContent,didMount:n.slotLaneDidMount,willUnmount:n.slotLaneWillUnmount},(function(e,t,n,r){return Hr(\"td\",{ref:e,className:l.concat(t).join(\" \"),\"data-time\":i.isoTimeStr},r)})))})))},t}(jr),Es=St({hour:\"numeric\",minute:\"2-digit\",omitZeroMinute:!0,meridiem:\"short\"});function Ss(e){var t=[\"fc-timegrid-slot\",\"fc-timegrid-slot-label\",e.isLabeled?\"fc-scrollgrid-shrink\":\"fc-timegrid-slot-minor\"];return Hr(zr.Consumer,null,(function(n){if(e.isLabeled){var r=n.dateEnv,o=n.options,i=n.viewApi,a=null==o.slotLabelFormat?Es:Array.isArray(o.slotLabelFormat)?St(o.slotLabelFormat[0]):St(o.slotLabelFormat),s={level:0,time:e.time,date:r.toDate(e.date),view:i,text:r.format(e.date,a)};return Hr(uo,{hookProps:s,classNames:o.slotLabelClassNames,content:o.slotLabelContent,defaultContent:Ds,didMount:o.slotLabelDidMount,willUnmount:o.slotLabelWillUnmount},(function(n,r,o,i){return Hr(\"td\",{ref:n,className:t.concat(r).join(\" \"),\"data-time\":e.isoTimeStr},Hr(\"div\",{className:\"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame\"},Hr(\"div\",{className:\"fc-timegrid-slot-label-cushion fc-scrollgrid-shrink-cushion\",ref:o},i)))}))}return Hr(\"td\",{className:t.join(\" \"),\"data-time\":e.isoTimeStr})}))}function Ds(e){return e.text}function bs(e,t,n,r,o){for(var i=new Date(0),a=e,s=Ye(0),l=n||function(e){var t,n,r;for(t=gs.length-1;t>=0;t--)if(n=Ye(gs[t]),null!==(r=Qe(n,e))&&r>1)return n;return e}(r),u=[];$e(a)<$e(t);){var c=o.add(i,a),d=null!==Qe(s,l);u.push({date:c,time:a,key:c.toISOString(),isoTimeStr:nt(c),isLabeled:d}),a=Xe(a,r),s=Xe(s,r)}return u}var Cs=St({week:\"short\"}),ws=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.allDaySplitter=new hs,t.headerElRef=Ar(),t.rootElRef=Ar(),t.scrollerElRef=Ar(),t.state={slatCoords:null},t.handleScrollTopRequest=function(e){var n=t.scrollerElRef.current;n&&(n.scrollTop=e)},t.renderHeadAxis=function(e){void 0===e&&(e=\"\");var n=t.context.options,o=t.props.dateProfile.renderRange,i=ye(o.start,o.end),a=n.navLinks&&1===i?{\"data-navlink\":gr(o.start,\"week\"),tabIndex:0}:{};return n.weekNumbers?Hr(ca,{date:o.start,defaultFormat:Cs},(function(t,n,o,i){return Hr(\"th\",{ref:t,className:[\"fc-timegrid-axis\",\"fc-scrollgrid-shrink\"].concat(n).join(\" \")},Hr(\"div\",{className:\"fc-timegrid-axis-frame fc-scrollgrid-shrink-frame fc-timegrid-axis-frame-liquid\",style:{height:e}},Hr(\"a\",r({ref:o,className:\"fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner\"},a),i)))})):Hr(\"th\",{className:\"fc-timegrid-axis\"},Hr(\"div\",{className:\"fc-timegrid-axis-frame\",style:{height:e}}))},t.renderTableRowAxis=function(e){var n=t.context,r=n.options,o=n.viewApi,i={text:r.allDayText,view:o};return Hr(uo,{hookProps:i,classNames:r.allDayClassNames,content:r.allDayContent,defaultContent:Rs,didMount:r.allDayDidMount,willUnmount:r.allDayWillUnmount},(function(t,n,r,o){return Hr(\"td\",{ref:t,className:[\"fc-timegrid-axis\",\"fc-scrollgrid-shrink\"].concat(n).join(\" \")},Hr(\"div\",{className:\"fc-timegrid-axis-frame fc-scrollgrid-shrink-frame\"+(null==e?\" fc-timegrid-axis-frame-liquid\":\"\"),style:{height:e}},Hr(\"span\",{className:\"fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner\",ref:r},o)))}))},t.handleSlatCoords=function(e){t.setState({slatCoords:e})},t}return n(t,e),t.prototype.renderSimpleLayout=function(e,t,n){var r=this.context,o=this.props,i=[],a=Ki(r.options);return e&&i.push({type:\"header\",key:\"header\",isSticky:a,chunk:{elRef:this.headerElRef,tableClassName:\"fc-col-header\",rowContent:e}}),t&&(i.push({type:\"body\",key:\"all-day\",chunk:{content:t}}),i.push({type:\"body\",key:\"all-day-divider\",outerContent:Hr(\"tr\",{className:\"fc-scrollgrid-section\"},Hr(\"td\",{className:\"fc-timegrid-divider \"+r.theme.getClass(\"tableCellShaded\")}))})),i.push({type:\"body\",key:\"body\",liquid:!0,expandRows:Boolean(r.options.expandRows),chunk:{scrollerElRef:this.scrollerElRef,content:n}}),Hr(yo,{viewSpec:r.viewSpec,elRef:this.rootElRef},(function(e,t){return Hr(\"div\",{className:[\"fc-timegrid\"].concat(t).join(\" \"),ref:e},Hr($i,{liquid:!o.isHeightAuto&&!o.forPrint,cols:[{width:\"shrink\"}],sections:i}))}))},t.prototype.renderHScrollLayout=function(e,t,n,r,o,i,a){var s=this,l=this.context.pluginHooks.scrollGridImpl;if(!l)throw new Error(\"No ScrollGrid implementation\");var u=this.context,c=this.props,d=!c.forPrint&&Ki(u.options),p=!c.forPrint&&Ji(u.options),f=[];e&&f.push({type:\"header\",key:\"header\",isSticky:d,syncRowHeights:!0,chunks:[{key:\"axis\",rowContent:function(e){return Hr(\"tr\",null,s.renderHeadAxis(e.rowSyncHeights[0]))}},{key:\"cols\",elRef:this.headerElRef,tableClassName:\"fc-col-header\",rowContent:e}]}),t&&(f.push({type:\"body\",key:\"all-day\",syncRowHeights:!0,chunks:[{key:\"axis\",rowContent:function(e){return Hr(\"tr\",null,s.renderTableRowAxis(e.rowSyncHeights[0]))}},{key:\"cols\",content:t}]}),f.push({key:\"all-day-divider\",type:\"body\",outerContent:Hr(\"tr\",{className:\"fc-scrollgrid-section\"},Hr(\"td\",{colSpan:2,className:\"fc-timegrid-divider \"+u.theme.getClass(\"tableCellShaded\")}))}));var h=u.options.nowIndicator;return f.push({type:\"body\",key:\"body\",liquid:!0,expandRows:Boolean(u.options.expandRows),chunks:[{key:\"axis\",content:function(e){return Hr(\"div\",{className:\"fc-timegrid-axis-chunk\"},Hr(\"table\",{style:{height:e.expandRows?e.clientHeight:\"\"}},e.tableColGroupNode,Hr(\"tbody\",null,Hr(Ts,{slatMetas:i}))),Hr(\"div\",{className:\"fc-timegrid-now-indicator-container\"},Hr(Mi,{unit:h?\"minute\":\"day\"},(function(e){var t=h&&a&&a.safeComputeTop(e);return\"number\"==typeof t?Hr(na,{isAxis:!0,date:e},(function(e,n,r,o){return Hr(\"div\",{ref:e,className:[\"fc-timegrid-now-indicator-arrow\"].concat(n).join(\" \"),style:{top:t}},o)})):null}))))}},{key:\"cols\",scrollerElRef:this.scrollerElRef,content:n}]}),p&&f.push({key:\"footer\",type:\"footer\",isSticky:!0,chunks:[{key:\"axis\",content:Xi},{key:\"cols\",content:Xi}]}),Hr(yo,{viewSpec:u.viewSpec,elRef:this.rootElRef},(function(e,t){return Hr(\"div\",{className:[\"fc-timegrid\"].concat(t).join(\" \"),ref:e},Hr(l,{liquid:!c.isHeightAuto&&!c.forPrint,colGroups:[{width:\"shrink\",cols:[{width:\"shrink\"}]},{cols:[{span:r,minWidth:o}]}],sections:f}))}))},t.prototype.getAllDayMaxEventProps=function(){var e=this.context.options,t=e.dayMaxEvents,n=e.dayMaxEventRows;return!0!==t&&!0!==n||(t=void 0,n=5),{dayMaxEvents:t,dayMaxEventRows:n}},t}(oo);function Rs(e){return e.text}var Ts=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){return this.props.slatMetas.map((function(e){return Hr(\"tr\",{key:e.key},Hr(Ss,r({},e)))}))},t}(jr);function ks(e,t){var n,r=[];for(n=0;n<t;n++)r.push([]);if(e)for(n=0;n<e.length;n++)r[e[n].col].push(e[n]);return r}function Ms(e,t){var n=[];if(e){for(a=0;a<t;a++)n[a]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(var r=0,o=e.segs;r<o.length;r++){var i=o[r];n[i.col].segs.push(i)}}else for(var a=0;a<t;a++)n[a]=null;return n}function xs(e,t,n,r,o){return _s(e,t,n,r),function(e,t){for(var n=0,r=e;n<r.length;n++){(c=r[n]).level=null,c.forwardCoord=null,c.backwardCoord=null,c.forwardPressure=null}var o,i=function(e){var t,n,r,o=[];for(t=0;t<e.length;t++){for(n=e[t],r=0;r<o.length&&Is(n,o[r]).length;r++);n.level=r,(o[r]||(o[r]=[])).push(n)}return o}(e=hn(e,t));if(function(e){var t,n,r,o,i;for(t=0;t<e.length;t++)for(n=e[t],r=0;r<n.length;r++)for((o=n[r]).forwardSegs=[],i=t+1;i<e.length;i++)Is(o,e[i],o.forwardSegs)}(i),o=i[0]){for(var a=0,s=o;a<s.length;a++){Ps(c=s[a])}for(var l=0,u=o;l<u.length;l++){var c;Ns(c=u[l],0,0,t)}}return e}(e,o)}function _s(e,t,n,r){for(var o=0,i=e;o<i.length;o++){var a=i[o];a.top=n.computeDateTop(a.start,t),a.bottom=Math.max(a.top+(r||0),n.computeDateTop(a.end,t))}}function Is(e,t,n){void 0===n&&(n=[]);for(var r=0;r<t.length;r++)o=e,i=t[r],o.bottom>i.top&&o.top<i.bottom&&n.push(t[r]);var o,i;return n}function Ps(e){var t,n,r=e.forwardSegs,o=0;if(null==e.forwardPressure){for(t=0;t<r.length;t++)Ps(n=r[t]),o=Math.max(o,1+n.forwardPressure);e.forwardPressure=o}}function Ns(e,t,n,r){var o,i=e.forwardSegs;if(null==e.forwardCoord)for(i.length?(!function(e,t){var n=e.map(Hs),r=[{field:\"forwardPressure\",order:-1},{field:\"backwardCoord\",order:1}].concat(t);n.sort((function(e,t){return ae(e,t,r)})),n.map((function(e){return e._seg}))}(i,r),Ns(i[0],t+1,n,r),e.forwardCoord=i[0].backwardCoord):e.forwardCoord=1,e.backwardCoord=e.forwardCoord-(e.forwardCoord-n)/(t+1),o=0;o<i.length;o++)Ns(i[o],0,e.forwardCoord,r)}function Hs(e){var t=vn(e);return t.forwardPressure=e.forwardPressure,t.backwardCoord=e.backwardCoord,t}var Os=St({hour:\"numeric\",minute:\"2-digit\",meridiem:!1}),As=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=[\"fc-timegrid-event\",\"fc-v-event\"];return this.props.isCondensed&&e.push(\"fc-timegrid-event-condensed\"),Hr(ea,r({},this.props,{defaultTimeFormat:Os,extraClassNames:e}))},t}(jr);di.timeGridEventCondensedHeight=30;var Us=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context.options.selectMirror,o=t.eventDrag&&t.eventDrag.segs||t.eventResize&&t.eventResize.segs||n&&t.dateSelectionSegs||[],i=t.eventDrag&&t.eventDrag.affectedInstances||t.eventResize&&t.eventResize.affectedInstances||{};return Hr(oa,{elRef:t.elRef,date:t.date,dateProfile:t.dateProfile,todayRange:t.todayRange,extraHookProps:t.extraHookProps},(function(a,s,l){return Hr(\"td\",r({ref:a,className:[\"fc-timegrid-col\"].concat(s,t.extraClassNames||[]).join(\" \")},l,t.extraDataAttrs),Hr(\"div\",{className:\"fc-timegrid-col-frame\"},Hr(\"div\",{className:\"fc-timegrid-col-bg\"},e.renderFillSegs(t.businessHourSegs,\"non-business\"),e.renderFillSegs(t.bgEventSegs,\"bg-event\"),e.renderFillSegs(t.dateSelectionSegs,\"highlight\")),Hr(\"div\",{className:\"fc-timegrid-col-events\"},e.renderFgSegs(t.fgEventSegs,i)),Hr(\"div\",{className:\"fc-timegrid-col-events\"},e.renderFgSegs(o,{},Boolean(t.eventDrag),Boolean(t.eventResize),Boolean(n))),Hr(\"div\",{className:\"fc-timegrid-now-indicator-container\"},e.renderNowIndicator(t.nowIndicatorSegs)),Hr(Ls,{date:t.date,dateProfile:t.dateProfile,todayRange:t.todayRange,extraHookProps:t.extraHookProps})))}))},t.prototype.renderFgSegs=function(e,t,n,r,o){var i=this.props;return i.forPrint?this.renderPrintFgSegs(e):i.slatCoords?this.renderPositionedFgSegs(e,t,n,r,o):void 0},t.prototype.renderPrintFgSegs=function(e){var t=this.props;return(e=hn(e,this.context.options.eventOrder)).map((function(e){return Hr(\"div\",{className:\"fc-timegrid-event-harness\",key:e.eventRange.instance.instanceId},Hr(As,r({seg:e,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1,isCondensed:!1},Sn(e,t.todayRange,t.nowDate))))}))},t.prototype.renderPositionedFgSegs=function(e,t,n,o,i){var a=this,s=this.context,l=this.props;return(e=xs(e,l.date,l.slatCoords,s.options.eventMinHeight,s.options.eventOrder)).map((function(e){var s=e.eventRange.instance.instanceId,u=n||o||i?r({left:0,right:0},a.computeSegTopBottomCss(e)):a.computeFgSegPositionCss(e);return Hr(\"div\",{className:\"fc-timegrid-event-harness\"+(e.level>0?\" fc-timegrid-event-harness-inset\":\"\"),key:s,style:r({visibility:t[s]?\"hidden\":\"\"},u)},Hr(As,r({seg:e,isDragging:n,isResizing:o,isDateSelecting:i,isSelected:s===l.eventSelection,isCondensed:e.bottom-e.top<di.timeGridEventCondensedHeight},Sn(e,l.todayRange,l.nowDate))))}))},t.prototype.renderFillSegs=function(e,t){var n=this,o=this.context,i=this.props;if(i.slatCoords){_s(e,i.date,i.slatCoords,o.options.eventMinHeight);var a=e.map((function(e){return Hr(\"div\",{key:bn(e.eventRange),className:\"fc-timegrid-bg-harness\",style:n.computeSegTopBottomCss(e)},\"bg-event\"===t?Hr(la,r({seg:e},Sn(e,i.todayRange,i.nowDate))):sa(t))}));return Hr(Ur,null,a)}},t.prototype.renderNowIndicator=function(e){var t=this.props,n=t.slatCoords,r=t.date;if(n)return e.map((function(e,t){return Hr(na,{isAxis:!1,date:r,key:t},(function(t,o,i,a){return Hr(\"div\",{ref:t,className:[\"fc-timegrid-now-indicator-line\"].concat(o).join(\" \"),style:{top:n.computeDateTop(e.start,r)}},a)}))}))},t.prototype.computeFgSegPositionCss=function(e){var t,n,o=this.context,i=o.isRtl,a=o.options.slotEventOverlap,s=e.backwardCoord,l=e.forwardCoord;a&&(l=Math.min(1,s+2*(l-s))),i?(t=1-l,n=s):(t=s,n=1-l);var u={zIndex:e.level+1,left:100*t+\"%\",right:100*n+\"%\"};return a&&e.forwardPressure&&(u[i?\"marginLeft\":\"marginRight\"]=20),r(r({},u),this.computeSegTopBottomCss(e))},t.prototype.computeSegTopBottomCss=function(e){return{top:e.top,bottom:-e.bottom}},t}(jr),Ls=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return Hr(ia,{date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,extraHookProps:e.extraHookProps},(function(e,t){return t&&Hr(\"div\",{className:\"fc-timegrid-col-misc\",ref:e},t)}))},t}(jr),Ws=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.splitFgEventSegs=it(ks),t.splitBgEventSegs=it(ks),t.splitBusinessHourSegs=it(ks),t.splitNowIndicatorSegs=it(ks),t.splitDateSelectionSegs=it(ks),t.splitEventDrag=it(Ms),t.splitEventResize=it(Ms),t.rootElRef=Ar(),t.cellElRefs=new Li,t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context.options.nowIndicator&&t.slatCoords&&t.slatCoords.safeComputeTop(t.nowDate),r=t.cells.length,o=this.splitFgEventSegs(t.fgEventSegs,r),i=this.splitBgEventSegs(t.bgEventSegs,r),a=this.splitBusinessHourSegs(t.businessHourSegs,r),s=this.splitNowIndicatorSegs(t.nowIndicatorSegs,r),l=this.splitDateSelectionSegs(t.dateSelectionSegs,r),u=this.splitEventDrag(t.eventDrag,r),c=this.splitEventResize(t.eventResize,r);return Hr(\"div\",{className:\"fc-timegrid-cols\",ref:this.rootElRef},Hr(\"table\",{style:{minWidth:t.tableMinWidth,width:t.clientWidth}},t.tableColGroupNode,Hr(\"tbody\",null,Hr(\"tr\",null,t.axis&&Hr(\"td\",{className:\"fc-timegrid-col fc-timegrid-axis\"},Hr(\"div\",{className:\"fc-timegrid-col-frame\"},Hr(\"div\",{className:\"fc-timegrid-now-indicator-container\"},\"number\"==typeof n&&Hr(na,{isAxis:!0,date:t.nowDate},(function(e,t,r,o){return Hr(\"div\",{ref:e,className:[\"fc-timegrid-now-indicator-arrow\"].concat(t).join(\" \"),style:{top:n}},o)}))))),t.cells.map((function(n,r){return Hr(Us,{key:n.key,elRef:e.cellElRefs.createRef(n.key),dateProfile:t.dateProfile,date:n.date,nowDate:t.nowDate,todayRange:t.todayRange,extraHookProps:n.extraHookProps,extraDataAttrs:n.extraDataAttrs,extraClassNames:n.extraClassNames,fgEventSegs:o[r],bgEventSegs:i[r],businessHourSegs:a[r],nowIndicatorSegs:s[r],dateSelectionSegs:l[r],eventDrag:u[r],eventResize:c[r],slatCoords:t.slatCoords,eventSelection:t.eventSelection,forPrint:t.forPrint})}))))))},t.prototype.componentDidMount=function(){this.updateCoords()},t.prototype.componentDidUpdate=function(){this.updateCoords()},t.prototype.updateCoords=function(){var e,t=this.props;t.onColCoords&&null!==t.clientWidth&&t.onColCoords(new Mr(this.rootElRef.current,(e=this.cellElRefs.currentMap,t.cells.map((function(t){return e[t.key]}))),!0,!1))},t}(jr);var Vs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.processSlotOptions=it(zs),t.state={slatCoords:null},t.handleScrollRequest=function(e){var n=t.props.onScrollTopRequest,r=t.state.slatCoords;if(n&&r){if(e.time){var o=r.computeTimeTop(e.time);(o=Math.ceil(o))&&o++,n(o)}return!0}},t.handleColCoords=function(e){t.colCoords=e},t.handleSlatCoords=function(e){t.setState({slatCoords:e}),t.props.onSlatCoords&&t.props.onSlatCoords(e)},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state;return Hr(\"div\",{className:\"fc-timegrid-body\",ref:e.rootElRef,style:{width:e.clientWidth,minWidth:e.tableMinWidth}},Hr(ms,{axis:e.axis,dateProfile:e.dateProfile,slatMetas:e.slatMetas,clientWidth:e.clientWidth,minHeight:e.expandRows?e.clientHeight:\"\",tableMinWidth:e.tableMinWidth,tableColGroupNode:e.axis?e.tableColGroupNode:null,onCoords:this.handleSlatCoords}),Hr(Ws,{cells:e.cells,axis:e.axis,dateProfile:e.dateProfile,businessHourSegs:e.businessHourSegs,bgEventSegs:e.bgEventSegs,fgEventSegs:e.fgEventSegs,dateSelectionSegs:e.dateSelectionSegs,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,todayRange:e.todayRange,nowDate:e.nowDate,nowIndicatorSegs:e.nowIndicatorSegs,clientWidth:e.clientWidth,tableMinWidth:e.tableMinWidth,tableColGroupNode:e.tableColGroupNode,slatCoords:t.slatCoords,onColCoords:this.handleColCoords,forPrint:e.forPrint}))},t.prototype.componentDidMount=function(){this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)},t.prototype.componentDidUpdate=function(e){this.scrollResponder.update(e.dateProfile!==this.props.dateProfile)},t.prototype.componentWillUnmount=function(){this.scrollResponder.detach()},t.prototype.positionToHit=function(e,t){var n=this.context,r=n.dateEnv,o=n.options,i=this.colCoords,a=this.props.dateProfile,s=this.state.slatCoords,l=this.processSlotOptions(this.props.slotDuration,o.snapDuration),u=l.snapDuration,c=l.snapsPerSlot,d=i.leftToIndex(e),p=s.positions.topToIndex(t);if(null!=d&&null!=p){var f=s.positions.tops[p],h=s.positions.getHeight(p),v=(t-f)/h,g=p*c+Math.floor(v*c),m=this.props.cells[d].date,y=Xe(a.slotMinTime,Ke(u,g)),E=r.add(m,y);return{col:d,dateSpan:{range:{start:E,end:r.add(E,u)},allDay:!1},dayEl:i.els[d],relativeRect:{left:i.lefts[d],right:i.rights[d],top:f,bottom:f+h}}}},t}(jr);function zs(e,t){var n=t||e,r=Qe(e,n);return null===r&&(n=e,r=1),{snapDuration:n,snapsPerSlot:r}}var Fs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildDayRanges=it(Bs),t.slicer=new js,t.timeColsRef=Ar(),t.handleRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,o=t.dateProfile,i=t.dayTableModel,a=n.options.nowIndicator,s=this.buildDayRanges(i,o,n.dateEnv);return Hr(Mi,{unit:a?\"minute\":\"day\"},(function(l,u){return Hr(Vs,r({ref:e.timeColsRef,rootElRef:e.handleRootEl},e.slicer.sliceProps(t,o,null,n,s),{forPrint:t.forPrint,axis:t.axis,dateProfile:o,slatMetas:t.slatMetas,slotDuration:t.slotDuration,cells:i.cells[0],tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,expandRows:t.expandRows,nowDate:l,nowIndicatorSegs:a&&e.slicer.sliceNowDate(l,n,s),todayRange:u,onScrollTopRequest:t.onScrollTopRequest,onSlatCoords:t.onSlatCoords}))}))},t.prototype.queryHit=function(e,t){var n=this.timeColsRef.current.positionToHit(e,t);if(n)return{component:this,dateSpan:n.dateSpan,dayEl:n.dayEl,rect:{left:n.relativeRect.left,right:n.relativeRect.right,top:n.relativeRect.top,bottom:n.relativeRect.bottom},layer:0}},t}(oo);function Bs(e,t,n){for(var r=[],o=0,i=e.headerDates;o<i.length;o++){var a=i[o];r.push({start:n.add(a,t.slotMinTime),end:n.add(a,t.slotMaxTime)})}return r}var js=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.sliceRange=function(e,t){for(var n=[],r=0;r<t.length;r++){var o=nn(e,t[r]);o&&n.push({start:o.start,end:o.end,isStart:o.start.valueOf()===e.start.valueOf(),isEnd:o.end.valueOf()===e.end.valueOf(),col:r})}return n},t}(Hi),Gs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildTimeColsModel=it(qs),t.buildSlatMetas=it(bs),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.context,n=t.options,o=t.dateEnv,i=t.dateProfileGenerator,a=this.props,s=a.dateProfile,l=this.buildTimeColsModel(s,i),u=this.allDaySplitter.splitProps(a),c=this.buildSlatMetas(s.slotMinTime,s.slotMaxTime,n.slotLabelInterval,n.slotDuration,o),d=n.dayMinWidth,p=!d,f=d,h=n.dayHeaders&&Hr(_i,{dates:l.headerDates,dateProfile:s,datesRepDistinctDays:!0,renderIntro:p?this.renderHeadAxis:null}),v=!1!==n.allDaySlot&&function(t){return Hr(us,r({},u.allDay,{dateProfile:s,dayTableModel:l,nextDayThreshold:n.nextDayThreshold,tableMinWidth:t.tableMinWidth,colGroupNode:t.tableColGroupNode,renderRowIntro:p?e.renderTableRowAxis:null,showWeekNumbers:!1,expandRows:!1,headerAlignElRef:e.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:a.forPrint},e.getAllDayMaxEventProps()))},g=function(t){return Hr(Fs,r({},u.timed,{dayTableModel:l,dateProfile:s,axis:p,slotDuration:n.slotDuration,slatMetas:c,forPrint:a.forPrint,tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,onSlatCoords:e.handleSlatCoords,expandRows:t.expandRows,onScrollTopRequest:e.handleScrollTopRequest}))};return f?this.renderHScrollLayout(h,v,g,l.colCnt,d,c,this.state.slatCoords):this.renderSimpleLayout(h,v,g)},t}(ws);function qs(e,t){var n=new Pi(e.renderRange,t);return new Ni(n,!1)}var Ys=io({initialView:\"timeGridWeek\",optionRefiners:{allDaySlot:Boolean},views:{timeGrid:{component:Gs,usesMinMaxTime:!0,allDaySlot:!0,slotDuration:\"00:30:00\",slotEventOverlap:!0},timeGridDay:{type:\"timeGrid\",duration:{days:1}},timeGridWeek:{type:\"timeGrid\",duration:{weeks:1}}}}),Zs=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.dayDate,n=e.todayRange,o=this.context,i=o.theme,a=o.dateEnv,s=o.options,l=o.viewApi,u=hr(t,n),c=s.listDayFormat?a.format(t,s.listDayFormat):\"\",d=s.listDaySideFormat?a.format(t,s.listDaySideFormat):\"\",p=s.navLinks?gr(t):null,f=r({date:a.toDate(t),view:l,text:c,sideText:d,navLinkData:p},u),h=[\"fc-list-day\"].concat(vr(u,i));return Hr(uo,{hookProps:f,classNames:s.dayHeaderClassNames,content:s.dayHeaderContent,defaultContent:Xs,didMount:s.dayHeaderDidMount,willUnmount:s.dayHeaderWillUnmount},(function(e,n,r,o){return Hr(\"tr\",{ref:e,className:h.concat(n).join(\" \"),\"data-date\":tt(t)},Hr(\"th\",{colSpan:3},Hr(\"div\",{className:\"fc-list-day-cushion \"+i.getClass(\"tableCellShaded\"),ref:r},o)))}))},t}(jr);function Xs(e){var t=e.navLinkData?{\"data-navlink\":e.navLinkData,tabIndex:0}:{};return Hr(Ur,null,e.text&&Hr(\"a\",r({className:\"fc-list-day-text\"},t),e.text),e.sideText&&Hr(\"a\",r({className:\"fc-list-day-side-text\"},t),e.sideText))}var Ks=St({hour:\"numeric\",minute:\"2-digit\",meridiem:\"short\"}),Js=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.seg,r=t.options.eventTimeFormat||Ks;return Hr(Qi,{seg:n,timeText:\"\",disableDragging:!0,disableResizing:!0,defaultContent:$s,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday,isSelected:e.isSelected,isDragging:e.isDragging,isResizing:e.isResizing,isDateSelecting:e.isDateSelecting},(function(e,o,i,a,s){return Hr(\"tr\",{className:[\"fc-list-event\",s.event.url?\"fc-event-forced-url\":\"\"].concat(o).join(\" \"),ref:e},function(e,t,n){var r=n.options;if(!1!==r.displayEventTime){var o=e.eventRange.def,i=e.eventRange.instance,a=!1,s=void 0;if(o.allDay?a=!0:$t(e.eventRange.range)?e.isStart?s=En(e,t,n,null,null,i.range.start,e.end):e.isEnd?s=En(e,t,n,null,null,e.start,i.range.end):a=!0:s=En(e,t,n),a){var l={text:n.options.allDayText,view:n.viewApi};return Hr(uo,{hookProps:l,classNames:r.allDayClassNames,content:r.allDayContent,defaultContent:Qs,didMount:r.allDayDidMount,willUnmount:r.allDayWillUnmount},(function(e,t,n,r){return Hr(\"td\",{className:[\"fc-list-event-time\"].concat(t).join(\" \"),ref:e},r)}))}return Hr(\"td\",{className:\"fc-list-event-time\"},s)}return null}(n,r,t),Hr(\"td\",{className:\"fc-list-event-graphic\"},Hr(\"span\",{className:\"fc-list-event-dot\",style:{borderColor:s.borderColor||s.backgroundColor}})),Hr(\"td\",{className:\"fc-list-event-title\",ref:i},a))}))},t}(jr);function $s(e){var t=e.event,n=t.url;return Hr(\"a\",r({},n?{href:n}:{}),t.title)}function Qs(e){return e.text}var el=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.computeDateVars=it(nl),t.eventStoreToSegs=it(t._eventStoreToSegs),t.setRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=[\"fc-list\",n.theme.getClass(\"table\"),!1!==n.options.stickyHeaderDates?\"fc-list-sticky\":\"\"],o=this.computeDateVars(t.dateProfile),i=o.dayDates,a=o.dayRanges,s=this.eventStoreToSegs(t.eventStore,t.eventUiBases,a);return Hr(yo,{viewSpec:n.viewSpec,elRef:this.setRootEl},(function(n,o){return Hr(\"div\",{ref:n,className:r.concat(o).join(\" \")},Hr(Ui,{liquid:!t.isHeightAuto,overflowX:t.isHeightAuto?\"visible\":\"hidden\",overflowY:t.isHeightAuto?\"visible\":\"auto\"},s.length>0?e.renderSegList(s,i):e.renderEmptyMessage()))}))},t.prototype.renderEmptyMessage=function(){var e=this.context,t=e.options,n=e.viewApi,r={text:t.noEventsText,view:n};return Hr(uo,{hookProps:r,classNames:t.noEventsClassNames,content:t.noEventsContent,defaultContent:tl,didMount:t.noEventsDidMount,willUnmount:t.noEventsWillUnmount},(function(e,t,n,r){return Hr(\"div\",{className:[\"fc-list-empty\"].concat(t).join(\" \"),ref:e},Hr(\"div\",{className:\"fc-list-empty-cushion\",ref:n},r))}))},t.prototype.renderSegList=function(e,t){var n=this.context,o=n.theme,i=n.options,a=function(e){var t,n,r=[];for(t=0;t<e.length;t++)n=e[t],(r[n.dayIndex]||(r[n.dayIndex]=[])).push(n);return r}(e);return Hr(Mi,{unit:\"day\"},(function(e,n){for(var s=[],l=0;l<a.length;l++){var u=a[l];if(u){var c=t[l].toISOString();s.push(Hr(Zs,{key:c,dayDate:t[l],todayRange:n}));for(var d=0,p=u=hn(u,i.eventOrder);d<p.length;d++){var f=p[d];s.push(Hr(Js,r({key:c+\":\"+f.eventRange.instance.instanceId,seg:f,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1},Sn(f,n,e))))}}}return Hr(\"table\",{className:\"fc-list-table \"+o.getClass(\"table\")},Hr(\"tbody\",null,s))}))},t.prototype._eventStoreToSegs=function(e,t,n){return this.eventRangesToSegs(ln(e,t,this.props.dateProfile.activeRange,this.context.options.nextDayThreshold).fg,n)},t.prototype.eventRangesToSegs=function(e,t){for(var n=[],r=0,o=e;r<o.length;r++){var i=o[r];n.push.apply(n,this.eventRangeToSegs(i,t))}return n},t.prototype.eventRangeToSegs=function(e,t){var n,r,o,i=this.context.dateEnv,a=this.context.options.nextDayThreshold,s=e.range,l=e.def.allDay,u=[];for(n=0;n<t.length;n++)if((r=nn(s,t[n]))&&(o={component:this,eventRange:e,start:r.start,end:r.end,isStart:e.isStart&&r.start.valueOf()===s.start.valueOf(),isEnd:e.isEnd&&r.end.valueOf()===s.end.valueOf(),dayIndex:n},u.push(o),!o.isEnd&&!l&&n+1<t.length&&s.end<i.add(t[n+1].start,a))){o.end=s.end,o.isEnd=!0;break}return u},t}(oo);function tl(e){return e.text}function nl(e){for(var t=be(e.renderRange.start),n=e.renderRange.end,r=[],o=[];t<n;)r.push(t),o.push({start:t,end:ve(t,1)}),t=ve(t,1);return{dayDates:r,dayRanges:o}}function rl(e){return!1===e?null:St(e)}var ol=io({optionRefiners:{listDayFormat:rl,listDaySideFormat:rl,noEventsClassNames:_t,noEventsContent:_t,noEventsDidMount:_t,noEventsWillUnmount:_t},views:{list:{component:el,buttonTextKey:\"list\",listDayFormat:{month:\"long\",day:\"numeric\",year:\"numeric\"}},listDay:{type:\"list\",duration:{days:1},listDayFormat:{weekday:\"long\"}},listWeek:{type:\"list\",duration:{weeks:1},listDayFormat:{weekday:\"long\"},listDaySideFormat:{month:\"long\",day:\"numeric\",year:\"numeric\"}},listMonth:{type:\"list\",duration:{month:1},listDaySideFormat:{weekday:\"long\"}},listYear:{type:\"list\",duration:{year:1},listDaySideFormat:{weekday:\"long\"}}}}),il=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(Pr);il.prototype.classes={root:\"fc-theme-bootstrap\",table:\"table-bordered\",tableCellShaded:\"table-active\",buttonGroup:\"btn-group\",button:\"btn btn-default\",buttonActive:\"active\",popover:\"popover\",popoverHeader:\"popover-header\",popoverContent:\"popover-body\"},il.prototype.baseIconClass=\"fa\",il.prototype.iconClasses={close:\"fa-times\",prev:\"fa-chevron-left\",next:\"fa-chevron-right\",prevYear:\"fa-angle-double-left\",nextYear:\"fa-angle-double-right\"},il.prototype.rtlIconClasses={prev:\"fa-chevron-right\",next:\"fa-chevron-left\",prevYear:\"fa-angle-double-right\",nextYear:\"fa-angle-double-left\"},il.prototype.iconOverrideOption=\"bootstrapFontAwesome\",il.prototype.iconOverrideCustomButtonOption=\"bootstrapFontAwesome\",il.prototype.iconOverridePrefix=\"fa-\";var al=io({themeClasses:{bootstrap:il}});var sl=io({eventSourceDefs:[{parseMeta:function(e){var t=e.googleCalendarId;return!t&&e.url&&(t=function(e){var t;if(/^[^/]+@([^/.]+\\.)*(google|googlemail|gmail)\\.com$/.test(e))return e;if((t=/^https:\\/\\/www.googleapis.com\\/calendar\\/v3\\/calendars\\/([^/]*)/.exec(e))||(t=/^https?:\\/\\/www.google.com\\/calendar\\/feeds\\/([^/]*)/.exec(e)))return decodeURIComponent(t[1])}(e.url)),t?{googleCalendarId:t,googleCalendarApiKey:e.googleCalendarApiKey,googleCalendarApiBase:e.googleCalendarApiBase,extraParams:e.extraParams}:null},fetch:function(e,t,n){var o=e.context,i=o.dateEnv,a=o.options,s=e.eventSource.meta,l=s.googleCalendarApiKey||a.googleCalendarApiKey;if(l){var u=function(e){var t=e.googleCalendarApiBase;t||(t=\"https://www.googleapis.com/calendar/v3/calendars\");return t+\"/\"+encodeURIComponent(e.googleCalendarId)+\"/events\"}(s),c=s.extraParams,d=\"function\"==typeof c?c():c,p=function(e,t,n,o){var i,a,s;o.canComputeOffset?(a=o.formatIso(e.start),s=o.formatIso(e.end)):(a=ve(e.start,-1).toISOString(),s=ve(e.end,1).toISOString());i=r(r({},n||{}),{key:t,timeMin:a,timeMax:s,singleEvents:!0,maxResults:9999}),\"local\"!==o.timeZone&&(i.timeZone=o.timeZone);return i}(e.range,l,d,i);Wo(\"GET\",u,p,(function(e,r){var o,i;e.error?n({message:\"Google Calendar API: \"+e.error.message,errors:e.error.errors,xhr:r}):t({rawEvents:(o=e.items,i=p.timeZone,o.map((function(e){return function(e,t){var n=e.htmlLink||null;n&&t&&(n=function(e,t){return e.replace(/(\\?.*?)?(#|$)/,(function(e,n,r){return(n?n+\"&\":\"?\")+t+r}))}(n,\"ctz=\"+t));return{id:e.id,title:e.summary,start:e.start.dateTime||e.start.date,end:e.end.dateTime||e.end.date,url:n,location:e.location,description:e.description}}(e,i)}))),xhr:r})}),(function(e,t){n({message:e,xhr:t})}))}else n({message:\"Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/\"})}}],optionRefiners:{googleCalendarApiKey:String},eventSourceRefiners:{googleCalendarApiKey:String,googleCalendarId:String,googleCalendarApiBase:String,extraParams:_t}});return Fo.push(Wa,fs,Ys,ol,al,sl),e.BASE_OPTION_DEFAULTS=bt,e.BASE_OPTION_REFINERS=Dt,e.BaseComponent=jr,e.BgEvent=la,e.BootstrapTheme=il,e.Calendar=pa,e.CalendarApi=Vn,e.CalendarContent=Ei,e.CalendarDataManager=Zo,e.CalendarDataProvider=oi,e.CalendarRoot=bi,e.Component=Nr,e.ContentHook=po,e.CustomContentRenderContext=co,e.DateComponent=oo,e.DateEnv=Xn,e.DateProfileGenerator=Co,e.DayCellContent=ia,e.DayCellRoot=oa,e.DayGridView=ds,e.DayHeader=_i,e.DaySeriesModel=Pi,e.DayTable=us,e.DayTableModel=Ni,e.DayTableSlicer=cs,e.DayTimeCols=Fs,e.DayTimeColsSlicer=js,e.DayTimeColsView=Gs,e.DelayedRunner=Go,e.Draggable=Aa,e.ElementDragging=ci,e.ElementScrollController=_r,e.Emitter=kr,e.EventApi=zn,e.EventRoot=Qi,e.EventSourceApi=L,e.FeaturefulElementDragging=wa,e.Fragment=Ur,e.Interaction=ai,e.ListView=el,e.MountHook=ho,e.NamedTimeZoneImpl=ii,e.NowIndicatorRoot=na,e.NowTimer=Mi,e.PointerDragging=ga,e.PositionCache=Mr,e.RefMap=Li,e.RenderHook=uo,e.ScrollController=xr,e.ScrollResponder=Vr,e.Scroller=Ui,e.SimpleScrollGrid=$i,e.Slicer=Hi,e.Splitter=pr,e.StandardEvent=ea,e.Table=as,e.TableDateCell=Ri,e.TableDowCell=Ti,e.TableView=Va,e.Theme=Pr,e.ThirdPartyDraggable=La,e.TimeCols=Vs,e.TimeColsSlatsCoords=vs,e.TimeColsView=ws,e.ViewApi=On,e.ViewContextType=zr,e.ViewRoot=yo,e.WeekNumberRoot=ca,e.WindowScrollController=Ir,e.addDays=ve,e.addDurations=Xe,e.addMs=ge,e.addWeeks=he,e.allowContextMenu=oe,e.allowSelection=ne,e.applyMutationToEventStore=Pn,e.applyStyle=j,e.applyStyleProp=G,e.asCleanDays=function(e){return e.years||e.months||e.milliseconds?0:e.days},e.asRoughMinutes=function(e){return $e(e)/6e4},e.asRoughMs=$e,e.asRoughSeconds=function(e){return $e(e)/1e3},e.buildClassNameNormalizer=vo,e.buildDayRanges=Bs,e.buildDayTableModel=ps,e.buildEventApis=Bn,e.buildEventRangeKey=bn,e.buildHashFromArray=function(e,t){for(var n={},r=0;r<e.length;r++){var o=t(e[r],r);n[o[0]]=o[1]}return n},e.buildNavLinkData=gr,e.buildSegCompareObj=vn,e.buildSegTimeText=En,e.buildSlatMetas=bs,e.buildTimeColsModel=qs,e.collectFromHash=Fe,e.combineEventUis=Vt,e.compareByFieldSpec=se,e.compareByFieldSpecs=ae,e.compareNumbers=ce,e.compareObjs=Ve,e.computeEdges=br,e.computeFallbackHeaderFormat=Ci,e.computeHeightAndMargins=function(e){return e.getBoundingClientRect().height+function(e){var t=window.getComputedStyle(e);return parseInt(t.marginTop,10)+parseInt(t.marginBottom,10)}(e)},e.computeInnerRect=Cr,e.computeRect=wr,e.computeSegDraggable=gn,e.computeSegEndResizable=yn,e.computeSegStartResizable=mn,e.computeShrinkWidth=Wi,e.computeSmallestCellWidth=pe,e.computeVisibleDayRange=Jt,e.config=di,e.constrainPoint=sr,e.createContext=Lr,e.createDuration=Ye,e.createElement=Hr,e.createEmptyEventStore=Ht,e.createEventInstance=Ie,e.createEventUi=Wt,e.createFormatter=St,e.createPlugin=io,e.createRef=Ar,e.diffDates=Qt,e.diffDayAndTime=Ee,e.diffDays=ye,e.diffPoints=ur,e.diffWeeks=me,e.diffWholeDays=De,e.diffWholeWeeks=Se,e.disableCursor=Q,e.elementClosest=V,e.elementMatches=z,e.enableCursor=ee,e.eventTupleToStore=Pt,e.filterEventStoreDefs=At,e.filterHash=He,e.findDirectChildren=function(e,t){for(var n=e instanceof HTMLElement?[e]:e,r=[],o=0;o<n.length;o++)for(var i=n[o].children,a=0;a<i.length;a++){var s=i[a];t&&!z(s,t)||r.push(s)}return r},e.findElements=F,e.flexibleCompare=le,e.flushToDom=Wr,e.formatDate=function(e,t){void 0===t&&(t={});var n=tr(t),r=St(t),o=n.createMarkerMeta(e);return o?n.format(o.marker,r,{forcedTzo:o.forcedTzo}):\"\"},e.formatDayString=tt,e.formatIsoTimeString=nt,e.formatRange=function(e,t,n){var r=tr(\"object\"==typeof n&&n?n:{}),o=St(n),i=r.createMarkerMeta(e),a=r.createMarkerMeta(t);return i&&a?r.formatRange(i.marker,a.marker,o,{forcedStartTzo:i.forcedTzo,forcedEndTzo:a.forcedTzo,isEndExclusive:n.isEndExclusive,defaultSeparator:bt.defaultRangeSeparator}):\"\"},e.getAllowYScrolling=zi,e.getCanVGrowWithinCell=cr,e.getClippingParents=Rr,e.getDateMeta=hr,e.getDayClassNames=vr,e.getDefaultEventEnd=In,e.getElSeg=dn,e.getEventClassNames=Dn,e.getIsRtlScrollbarOnLeft=Er,e.getRectCenter=lr,e.getRelevantEvents=Nt,e.getScrollGridClassNames=Yi,e.getScrollbarWidths=Sr,e.getSectionClassNames=Zi,e.getSectionHasLiquidHeight=Vi,e.getSegMeta=Sn,e.getSlotClassNames=function(e,t){var n=[\"fc-slot\",\"fc-slot-\"+fe[e.dow]];return e.isDisabled?n.push(\"fc-slot-disabled\"):(e.isToday&&(n.push(\"fc-slot-today\"),n.push(t.getClass(\"today\"))),e.isPast&&n.push(\"fc-slot-past\"),e.isFuture&&n.push(\"fc-slot-future\")),n},e.getStickyFooterScrollbar=Ji,e.getStickyHeaderDates=Ki,e.getUnequalProps=We,e.globalLocales=Kn,e.globalPlugins=Fo,e.greatestDurationDenominator=et,e.guid=$,e.hasBgRendering=un,e.hasShrinkWidth=qi,e.identity=_t,e.interactionSettingsStore=ui,e.interactionSettingsToStore=li,e.intersectRanges=nn,e.intersectRects=ar,e.isArraysEqual=ot,e.isColPropsEqual=Bi,e.isDateSpansEqual=Rn,e.isInt=de,e.isInteractionValid=Jr,e.isMultiDayRange=$t,e.isPropsEqual=Le,e.isPropsValid=Qr,e.isValidDate=xe,e.listenBySelector=Z,e.mapHash=Oe,e.memoize=it,e.memoizeArraylike=function(e,t,n){var r=[],o=[];return function(i){for(var a=r.length,s=i.length,l=0;l<a;l++)if(i[l]){if(!ot(r[l],i[l])){n&&n(o[l]);var u=e.apply(this,i[l]);t&&t(u,o[l])||(o[l]=u)}}else n&&n(o[l]);for(;l<s;l++)o[l]=e.apply(this,i[l]);return r=i,o.splice(s),o}},e.memoizeHashlike=function(e,t,n){var r={},o={};return function(i){var a={};for(var s in i)if(o[s])if(ot(r[s],i[s]))a[s]=o[s];else{n&&n(o[s]);var l=e.apply(this,i[s]);a[s]=t&&t(l,o[s])?o[s]:l}else a[s]=e.apply(this,i[s]);return r=i,o=a,a}},e.memoizeObjArg=at,e.mergeEventStores=Ot,e.multiplyDuration=Ke,e.padStart=ue,e.parseBusinessHours=or,e.parseClassNames=Ut,e.parseDragMeta=fi,e.parseEventDef=Xt,e.parseFieldSpecs=ie,e.parseMarker=Zn,e.pointInsideRect=ir,e.preventContextMenu=re,e.preventDefault=q,e.preventSelection=te,e.rangeContainsMarker=sn,e.rangeContainsRange=an,e.rangesEqual=rn,e.rangesIntersect=on,e.refineEventDef=Yt,e.refineProps=xt,e.removeElement=W,e.removeExact=function(e,t){for(var n=0,r=0;r<e.length;)e[r]===t?(e.splice(r,1),n++):r++;return n},e.render=Or,e.renderChunkContent=Fi,e.renderFill=sa,e.renderMicroColGroup=ji,e.renderScrollShim=Xi,e.requestJson=Wo,e.sanitizeShrinkWidth=Gi,e.setElSeg=cn,e.setRef=Yr,e.sliceEventStore=ln,e.sliceEvents=function(e,t){return ln(e.eventStore,e.eventUiBases,e.dateProfile.activeRange,t?e.nextDayThreshold:null).fg},e.sortEventSegs=hn,e.startOfDay=be,e.translateRect=function(e,t,n){return{left:e.left+t,right:e.right+t,top:e.top+n,bottom:e.bottom+n}},e.triggerDateSelect=xn,e.unpromisify=Tr,e.version=\"<%= version %>\",e.whenTransitionDone=K,e.wholeDivideDurations=Qe,e}({});\n", "/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n var context = this;\n\n (function() {\n (function() {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n\n }).call(this);\n }).call(context);\n\n var Rails = context.Rails;\n\n (function() {\n (function() {\n var nonce;\n\n nonce = null;\n\n Rails.loadCSPNonce = function() {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function() {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n\n }).call(this);\n (function() {\n var expando, m;\n\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function(element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function(element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function(element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n\n Rails.$ = function(selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n\n }).call(this);\n (function() {\n var $, csrfParam, csrfToken;\n\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function(xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function() {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if ((token != null) && (param != null)) {\n return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n return input.value = token;\n });\n }\n };\n\n }).call(this);\n (function() {\n var CustomEvent, fire, matches, preventDefault;\n\n matches = Rails.matches;\n\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function() {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n }\n return result;\n };\n }\n\n fire = Rails.fire = function(obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function(e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function(element, selector, eventType, handler) {\n return element.addEventListener(eventType, function(e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n\n }).call(this);\n (function() {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function(options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function() {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n\n createXHR = function(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n\n processResponse = function(response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n\n Rails.href = function(element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function(url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n } catch (error) {\n e = error;\n return true;\n }\n };\n\n }).call(this);\n (function() {\n var matches, toArray;\n\n matches = Rails.matches;\n\n toArray = function(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function(element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function(option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function(param) {\n if (param.name != null) {\n return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function(form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function(el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n\n }).call(this);\n (function() {\n var allowAction, fire, stopEverything;\n\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function(e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function(message, element) {\n return confirm(message);\n };\n\n allowAction = function(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n\n }).call(this);\n (function() {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function(e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function(e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function(e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n\n }).call(this);\n (function() {\n var stopEverything;\n\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function(e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n }\n formContent += '<input type=\"submit\" />';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n\n }).call(this);\n (function() {\n var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n slice = [].slice;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function(element) {\n var value;\n value = element.getAttribute('data-remote');\n return (value != null) && value !== 'false';\n };\n\n Rails.handleRemote = function(e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: (withCredentials != null) && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function(e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function(e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n\n }).call(this);\n (function() {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function() {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function() {\n $(Rails.formEnableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n return setTimeout((function() {\n return disableElement(e);\n }), 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n\n }).call(this);\n }).call(this);\n\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);\n", "/*\n * International Telephone Input v17.0.16\n * https://github.com/jackocnr/intl-tel-input.git\n * Licensed under the MIT license\n */\n\n// wrap in UMD\n(function(factory) {\n if (typeof module === \"object\" && module.exports) module.exports = factory(); else window.intlTelInput = factory();\n})(function(undefined) {\n \"use strict\";\n return function() {\n // Array of country objects for the flag dropdown.\n // Here is the criteria for the plugin to support a given country/territory\n // - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n // - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n // - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n // - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n // Each country array has the following information:\n // [\n // Country name,\n // iso2 code,\n // International dial code,\n // Order (if >1 country with same dial code),\n // Area codes\n // ]\n var allCountries = [ [ \"Afghanistan (\u202B\u0627\u0641\u063A\u0627\u0646\u0633\u062A\u0627\u0646\u202C\u200E)\", \"af\", \"93\" ], [ \"Albania (Shqip\u00EBri)\", \"al\", \"355\" ], [ \"Algeria (\u202B\u0627\u0644\u062C\u0632\u0627\u0626\u0631\u202C\u200E)\", \"dz\", \"213\" ], [ \"American Samoa\", \"as\", \"1\", 5, [ \"684\" ] ], [ \"Andorra\", \"ad\", \"376\" ], [ \"Angola\", \"ao\", \"244\" ], [ \"Anguilla\", \"ai\", \"1\", 6, [ \"264\" ] ], [ \"Antigua and Barbuda\", \"ag\", \"1\", 7, [ \"268\" ] ], [ \"Argentina\", \"ar\", \"54\" ], [ \"Armenia (\u0540\u0561\u0575\u0561\u057D\u057F\u0561\u0576)\", \"am\", \"374\" ], [ \"Aruba\", \"aw\", \"297\" ], [ \"Ascension Island\", \"ac\", \"247\" ], [ \"Australia\", \"au\", \"61\", 0 ], [ \"Austria (\u00D6sterreich)\", \"at\", \"43\" ], [ \"Azerbaijan (Az\u0259rbaycan)\", \"az\", \"994\" ], [ \"Bahamas\", \"bs\", \"1\", 8, [ \"242\" ] ], [ \"Bahrain (\u202B\u0627\u0644\u0628\u062D\u0631\u064A\u0646\u202C\u200E)\", \"bh\", \"973\" ], [ \"Bangladesh (\u09AC\u09BE\u0982\u09B2\u09BE\u09A6\u09C7\u09B6)\", \"bd\", \"880\" ], [ \"Barbados\", \"bb\", \"1\", 9, [ \"246\" ] ], [ \"Belarus (\u0411\u0435\u043B\u0430\u0440\u0443\u0441\u044C)\", \"by\", \"375\" ], [ \"Belgium (Belgi\u00EB)\", \"be\", \"32\" ], [ \"Belize\", \"bz\", \"501\" ], [ \"Benin (B\u00E9nin)\", \"bj\", \"229\" ], [ \"Bermuda\", \"bm\", \"1\", 10, [ \"441\" ] ], [ \"Bhutan (\u0F60\u0F56\u0FB2\u0F74\u0F42)\", \"bt\", \"975\" ], [ \"Bolivia\", \"bo\", \"591\" ], [ \"Bosnia and Herzegovina (\u0411\u043E\u0441\u043D\u0430 \u0438 \u0425\u0435\u0440\u0446\u0435\u0433\u043E\u0432\u0438\u043D\u0430)\", \"ba\", \"387\" ], [ \"Botswana\", \"bw\", \"267\" ], [ \"Brazil (Brasil)\", \"br\", \"55\" ], [ \"British Indian Ocean Territory\", \"io\", \"246\" ], [ \"British Virgin Islands\", \"vg\", \"1\", 11, [ \"284\" ] ], [ \"Brunei\", \"bn\", \"673\" ], [ \"Bulgaria (\u0411\u044A\u043B\u0433\u0430\u0440\u0438\u044F)\", \"bg\", \"359\" ], [ \"Burkina Faso\", \"bf\", \"226\" ], [ \"Burundi (Uburundi)\", \"bi\", \"257\" ], [ \"Cambodia (\u1780\u1798\u17D2\u1796\u17BB\u1787\u17B6)\", \"kh\", \"855\" ], [ \"Cameroon (Cameroun)\", \"cm\", \"237\" ], [ \"Canada\", \"ca\", \"1\", 1, [ \"204\", \"226\", \"236\", \"249\", \"250\", \"289\", \"306\", \"343\", \"365\", \"387\", \"403\", \"416\", \"418\", \"431\", \"437\", \"438\", \"450\", \"506\", \"514\", \"519\", \"548\", \"579\", \"581\", \"587\", \"604\", \"613\", \"639\", \"647\", \"672\", \"705\", \"709\", \"742\", \"778\", \"780\", \"782\", \"807\", \"819\", \"825\", \"867\", \"873\", \"902\", \"905\" ] ], [ \"Cape Verde (Kabu Verdi)\", \"cv\", \"238\" ], [ \"Caribbean Netherlands\", \"bq\", \"599\", 1, [ \"3\", \"4\", \"7\" ] ], [ \"Cayman Islands\", \"ky\", \"1\", 12, [ \"345\" ] ], [ \"Central African Republic (R\u00E9publique centrafricaine)\", \"cf\", \"236\" ], [ \"Chad (Tchad)\", \"td\", \"235\" ], [ \"Chile\", \"cl\", \"56\" ], [ \"China (\u4E2D\u56FD)\", \"cn\", \"86\" ], [ \"Christmas Island\", \"cx\", \"61\", 2, [ \"89164\" ] ], [ \"Cocos (Keeling) Islands\", \"cc\", \"61\", 1, [ \"89162\" ] ], [ \"Colombia\", \"co\", \"57\" ], [ \"Comoros (\u202B\u062C\u0632\u0631 \u0627\u0644\u0642\u0645\u0631\u202C\u200E)\", \"km\", \"269\" ], [ \"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\", \"cd\", \"243\" ], [ \"Congo (Republic) (Congo-Brazzaville)\", \"cg\", \"242\" ], [ \"Cook Islands\", \"ck\", \"682\" ], [ \"Costa Rica\", \"cr\", \"506\" ], [ \"C\u00F4te d\u2019Ivoire\", \"ci\", \"225\" ], [ \"Croatia (Hrvatska)\", \"hr\", \"385\" ], [ \"Cuba\", \"cu\", \"53\" ], [ \"Cura\u00E7ao\", \"cw\", \"599\", 0 ], [ \"Cyprus (\u039A\u03CD\u03C0\u03C1\u03BF\u03C2)\", \"cy\", \"357\" ], [ \"Czech Republic (\u010Cesk\u00E1 republika)\", \"cz\", \"420\" ], [ \"Denmark (Danmark)\", \"dk\", \"45\" ], [ \"Djibouti\", \"dj\", \"253\" ], [ \"Dominica\", \"dm\", \"1\", 13, [ \"767\" ] ], [ \"Dominican Republic (Rep\u00FAblica Dominicana)\", \"do\", \"1\", 2, [ \"809\", \"829\", \"849\" ] ], [ \"Ecuador\", \"ec\", \"593\" ], [ \"Egypt (\u202B\u0645\u0635\u0631\u202C\u200E)\", \"eg\", \"20\" ], [ \"El Salvador\", \"sv\", \"503\" ], [ \"Equatorial Guinea (Guinea Ecuatorial)\", \"gq\", \"240\" ], [ \"Eritrea\", \"er\", \"291\" ], [ \"Estonia (Eesti)\", \"ee\", \"372\" ], [ \"Eswatini\", \"sz\", \"268\" ], [ \"Ethiopia\", \"et\", \"251\" ], [ \"Falkland Islands (Islas Malvinas)\", \"fk\", \"500\" ], [ \"Faroe Islands (F\u00F8royar)\", \"fo\", \"298\" ], [ \"Fiji\", \"fj\", \"679\" ], [ \"Finland (Suomi)\", \"fi\", \"358\", 0 ], [ \"France\", \"fr\", \"33\" ], [ \"French Guiana (Guyane fran\u00E7aise)\", \"gf\", \"594\" ], [ \"French Polynesia (Polyn\u00E9sie fran\u00E7aise)\", \"pf\", \"689\" ], [ \"Gabon\", \"ga\", \"241\" ], [ \"Gambia\", \"gm\", \"220\" ], [ \"Georgia (\u10E1\u10D0\u10E5\u10D0\u10E0\u10D7\u10D5\u10D4\u10DA\u10DD)\", \"ge\", \"995\" ], [ \"Germany (Deutschland)\", \"de\", \"49\" ], [ \"Ghana (Gaana)\", \"gh\", \"233\" ], [ \"Gibraltar\", \"gi\", \"350\" ], [ \"Greece (\u0395\u03BB\u03BB\u03AC\u03B4\u03B1)\", \"gr\", \"30\" ], [ \"Greenland (Kalaallit Nunaat)\", \"gl\", \"299\" ], [ \"Grenada\", \"gd\", \"1\", 14, [ \"473\" ] ], [ \"Guadeloupe\", \"gp\", \"590\", 0 ], [ \"Guam\", \"gu\", \"1\", 15, [ \"671\" ] ], [ \"Guatemala\", \"gt\", \"502\" ], [ \"Guernsey\", \"gg\", \"44\", 1, [ \"1481\", \"7781\", \"7839\", \"7911\" ] ], [ \"Guinea (Guin\u00E9e)\", \"gn\", \"224\" ], [ \"Guinea-Bissau (Guin\u00E9 Bissau)\", \"gw\", \"245\" ], [ \"Guyana\", \"gy\", \"592\" ], [ \"Haiti\", \"ht\", \"509\" ], [ \"Honduras\", \"hn\", \"504\" ], [ \"Hong Kong (\u9999\u6E2F)\", \"hk\", \"852\" ], [ \"Hungary (Magyarorsz\u00E1g)\", \"hu\", \"36\" ], [ \"Iceland (\u00CDsland)\", \"is\", \"354\" ], [ \"India (\u092D\u093E\u0930\u0924)\", \"in\", \"91\" ], [ \"Indonesia\", \"id\", \"62\" ], [ \"Iran (\u202B\u0627\u06CC\u0631\u0627\u0646\u202C\u200E)\", \"ir\", \"98\" ], [ \"Iraq (\u202B\u0627\u0644\u0639\u0631\u0627\u0642\u202C\u200E)\", \"iq\", \"964\" ], [ \"Ireland\", \"ie\", \"353\" ], [ \"Isle of Man\", \"im\", \"44\", 2, [ \"1624\", \"74576\", \"7524\", \"7924\", \"7624\" ] ], [ \"Israel (\u202B\u05D9\u05E9\u05E8\u05D0\u05DC\u202C\u200E)\", \"il\", \"972\" ], [ \"Italy (Italia)\", \"it\", \"39\", 0 ], [ \"Jamaica\", \"jm\", \"1\", 4, [ \"876\", \"658\" ] ], [ \"Japan (\u65E5\u672C)\", \"jp\", \"81\" ], [ \"Jersey\", \"je\", \"44\", 3, [ \"1534\", \"7509\", \"7700\", \"7797\", \"7829\", \"7937\" ] ], [ \"Jordan (\u202B\u0627\u0644\u0623\u0631\u062F\u0646\u202C\u200E)\", \"jo\", \"962\" ], [ \"Kazakhstan (\u041A\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043D)\", \"kz\", \"7\", 1, [ \"33\", \"7\" ] ], [ \"Kenya\", \"ke\", \"254\" ], [ \"Kiribati\", \"ki\", \"686\" ], [ \"Kosovo\", \"xk\", \"383\" ], [ \"Kuwait (\u202B\u0627\u0644\u0643\u0648\u064A\u062A\u202C\u200E)\", \"kw\", \"965\" ], [ \"Kyrgyzstan (\u041A\u044B\u0440\u0433\u044B\u0437\u0441\u0442\u0430\u043D)\", \"kg\", \"996\" ], [ \"Laos (\u0EA5\u0EB2\u0EA7)\", \"la\", \"856\" ], [ \"Latvia (Latvija)\", \"lv\", \"371\" ], [ \"Lebanon (\u202B\u0644\u0628\u0646\u0627\u0646\u202C\u200E)\", \"lb\", \"961\" ], [ \"Lesotho\", \"ls\", \"266\" ], [ \"Liberia\", \"lr\", \"231\" ], [ \"Libya (\u202B\u0644\u064A\u0628\u064A\u0627\u202C\u200E)\", \"ly\", \"218\" ], [ \"Liechtenstein\", \"li\", \"423\" ], [ \"Lithuania (Lietuva)\", \"lt\", \"370\" ], [ \"Luxembourg\", \"lu\", \"352\" ], [ \"Macau (\u6FB3\u9580)\", \"mo\", \"853\" ], [ \"North Macedonia (\u041C\u0430\u043A\u0435\u0434\u043E\u043D\u0438\u0458\u0430)\", \"mk\", \"389\" ], [ \"Madagascar (Madagasikara)\", \"mg\", \"261\" ], [ \"Malawi\", \"mw\", \"265\" ], [ \"Malaysia\", \"my\", \"60\" ], [ \"Maldives\", \"mv\", \"960\" ], [ \"Mali\", \"ml\", \"223\" ], [ \"Malta\", \"mt\", \"356\" ], [ \"Marshall Islands\", \"mh\", \"692\" ], [ \"Martinique\", \"mq\", \"596\" ], [ \"Mauritania (\u202B\u0645\u0648\u0631\u064A\u062A\u0627\u0646\u064A\u0627\u202C\u200E)\", \"mr\", \"222\" ], [ \"Mauritius (Moris)\", \"mu\", \"230\" ], [ \"Mayotte\", \"yt\", \"262\", 1, [ \"269\", \"639\" ] ], [ \"Mexico (M\u00E9xico)\", \"mx\", \"52\" ], [ \"Micronesia\", \"fm\", \"691\" ], [ \"Moldova (Republica Moldova)\", \"md\", \"373\" ], [ \"Monaco\", \"mc\", \"377\" ], [ \"Mongolia (\u041C\u043E\u043D\u0433\u043E\u043B)\", \"mn\", \"976\" ], [ \"Montenegro (Crna Gora)\", \"me\", \"382\" ], [ \"Montserrat\", \"ms\", \"1\", 16, [ \"664\" ] ], [ \"Morocco (\u202B\u0627\u0644\u0645\u063A\u0631\u0628\u202C\u200E)\", \"ma\", \"212\", 0 ], [ \"Mozambique (Mo\u00E7ambique)\", \"mz\", \"258\" ], [ \"Myanmar (Burma) (\u1019\u103C\u1014\u103A\u1019\u102C)\", \"mm\", \"95\" ], [ \"Namibia (Namibi\u00EB)\", \"na\", \"264\" ], [ \"Nauru\", \"nr\", \"674\" ], [ \"Nepal (\u0928\u0947\u092A\u093E\u0932)\", \"np\", \"977\" ], [ \"Netherlands (Nederland)\", \"nl\", \"31\" ], [ \"New Caledonia (Nouvelle-Cal\u00E9donie)\", \"nc\", \"687\" ], [ \"New Zealand\", \"nz\", \"64\" ], [ \"Nicaragua\", \"ni\", \"505\" ], [ \"Niger (Nijar)\", \"ne\", \"227\" ], [ \"Nigeria\", \"ng\", \"234\" ], [ \"Niue\", \"nu\", \"683\" ], [ \"Norfolk Island\", \"nf\", \"672\" ], [ \"North Korea (\uC870\uC120 \uBBFC\uC8FC\uC8FC\uC758 \uC778\uBBFC \uACF5\uD654\uAD6D)\", \"kp\", \"850\" ], [ \"Northern Mariana Islands\", \"mp\", \"1\", 17, [ \"670\" ] ], [ \"Norway (Norge)\", \"no\", \"47\", 0 ], [ \"Oman (\u202B\u0639\u064F\u0645\u0627\u0646\u202C\u200E)\", \"om\", \"968\" ], [ \"Pakistan (\u202B\u067E\u0627\u06A9\u0633\u062A\u0627\u0646\u202C\u200E)\", \"pk\", \"92\" ], [ \"Palau\", \"pw\", \"680\" ], [ \"Palestine (\u202B\u0641\u0644\u0633\u0637\u064A\u0646\u202C\u200E)\", \"ps\", \"970\" ], [ \"Panama (Panam\u00E1)\", \"pa\", \"507\" ], [ \"Papua New Guinea\", \"pg\", \"675\" ], [ \"Paraguay\", \"py\", \"595\" ], [ \"Peru (Per\u00FA)\", \"pe\", \"51\" ], [ \"Philippines\", \"ph\", \"63\" ], [ \"Poland (Polska)\", \"pl\", \"48\" ], [ \"Portugal\", \"pt\", \"351\" ], [ \"Puerto Rico\", \"pr\", \"1\", 3, [ \"787\", \"939\" ] ], [ \"Qatar (\u202B\u0642\u0637\u0631\u202C\u200E)\", \"qa\", \"974\" ], [ \"R\u00E9union (La R\u00E9union)\", \"re\", \"262\", 0 ], [ \"Romania (Rom\u00E2nia)\", \"ro\", \"40\" ], [ \"Russia (\u0420\u043E\u0441\u0441\u0438\u044F)\", \"ru\", \"7\", 0 ], [ \"Rwanda\", \"rw\", \"250\" ], [ \"Saint Barth\u00E9lemy\", \"bl\", \"590\", 1 ], [ \"Saint Helena\", \"sh\", \"290\" ], [ \"Saint Kitts and Nevis\", \"kn\", \"1\", 18, [ \"869\" ] ], [ \"Saint Lucia\", \"lc\", \"1\", 19, [ \"758\" ] ], [ \"Saint Martin (Saint-Martin (partie fran\u00E7aise))\", \"mf\", \"590\", 2 ], [ \"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\", \"pm\", \"508\" ], [ \"Saint Vincent and the Grenadines\", \"vc\", \"1\", 20, [ \"784\" ] ], [ \"Samoa\", \"ws\", \"685\" ], [ \"San Marino\", \"sm\", \"378\" ], [ \"S\u00E3o Tom\u00E9 and Pr\u00EDncipe (S\u00E3o Tom\u00E9 e Pr\u00EDncipe)\", \"st\", \"239\" ], [ \"Saudi Arabia (\u202B\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064A\u0629 \u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0629\u202C\u200E)\", \"sa\", \"966\" ], [ \"Senegal (S\u00E9n\u00E9gal)\", \"sn\", \"221\" ], [ \"Serbia (\u0421\u0440\u0431\u0438\u0458\u0430)\", \"rs\", \"381\" ], [ \"Seychelles\", \"sc\", \"248\" ], [ \"Sierra Leone\", \"sl\", \"232\" ], [ \"Singapore\", \"sg\", \"65\" ], [ \"Sint Maarten\", \"sx\", \"1\", 21, [ \"721\" ] ], [ \"Slovakia (Slovensko)\", \"sk\", \"421\" ], [ \"Slovenia (Slovenija)\", \"si\", \"386\" ], [ \"Solomon Islands\", \"sb\", \"677\" ], [ \"Somalia (Soomaaliya)\", \"so\", \"252\" ], [ \"South Africa\", \"za\", \"27\" ], [ \"South Korea (\uB300\uD55C\uBBFC\uAD6D)\", \"kr\", \"82\" ], [ \"South Sudan (\u202B\u062C\u0646\u0648\u0628 \u0627\u0644\u0633\u0648\u062F\u0627\u0646\u202C\u200E)\", \"ss\", \"211\" ], [ \"Spain (Espa\u00F1a)\", \"es\", \"34\" ], [ \"Sri Lanka (\u0DC1\u0DCA\u200D\u0DBB\u0DD3 \u0DBD\u0D82\u0D9A\u0DCF\u0DC0)\", \"lk\", \"94\" ], [ \"Sudan (\u202B\u0627\u0644\u0633\u0648\u062F\u0627\u0646\u202C\u200E)\", \"sd\", \"249\" ], [ \"Suriname\", \"sr\", \"597\" ], [ \"Svalbard and Jan Mayen\", \"sj\", \"47\", 1, [ \"79\" ] ], [ \"Sweden (Sverige)\", \"se\", \"46\" ], [ \"Switzerland (Schweiz)\", \"ch\", \"41\" ], [ \"Syria (\u202B\u0633\u0648\u0631\u064A\u0627\u202C\u200E)\", \"sy\", \"963\" ], [ \"Taiwan (\u53F0\u7063)\", \"tw\", \"886\" ], [ \"Tajikistan\", \"tj\", \"992\" ], [ \"Tanzania\", \"tz\", \"255\" ], [ \"Thailand (\u0E44\u0E17\u0E22)\", \"th\", \"66\" ], [ \"Timor-Leste\", \"tl\", \"670\" ], [ \"Togo\", \"tg\", \"228\" ], [ \"Tokelau\", \"tk\", \"690\" ], [ \"Tonga\", \"to\", \"676\" ], [ \"Trinidad and Tobago\", \"tt\", \"1\", 22, [ \"868\" ] ], [ \"Tunisia (\u202B\u062A\u0648\u0646\u0633\u202C\u200E)\", \"tn\", \"216\" ], [ \"Turkey (T\u00FCrkiye)\", \"tr\", \"90\" ], [ \"Turkmenistan\", \"tm\", \"993\" ], [ \"Turks and Caicos Islands\", \"tc\", \"1\", 23, [ \"649\" ] ], [ \"Tuvalu\", \"tv\", \"688\" ], [ \"U.S. Virgin Islands\", \"vi\", \"1\", 24, [ \"340\" ] ], [ \"Uganda\", \"ug\", \"256\" ], [ \"Ukraine (\u0423\u043A\u0440\u0430\u0457\u043D\u0430)\", \"ua\", \"380\" ], [ \"United Arab Emirates (\u202B\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062A \u0627\u0644\u0639\u0631\u0628\u064A\u0629 \u0627\u0644\u0645\u062A\u062D\u062F\u0629\u202C\u200E)\", \"ae\", \"971\" ], [ \"United Kingdom\", \"gb\", \"44\", 0 ], [ \"United States\", \"us\", \"1\", 0 ], [ \"Uruguay\", \"uy\", \"598\" ], [ \"Uzbekistan (O\u02BBzbekiston)\", \"uz\", \"998\" ], [ \"Vanuatu\", \"vu\", \"678\" ], [ \"Vatican City (Citt\u00E0 del Vaticano)\", \"va\", \"39\", 1, [ \"06698\" ] ], [ \"Venezuela\", \"ve\", \"58\" ], [ \"Vietnam (Vi\u1EC7t Nam)\", \"vn\", \"84\" ], [ \"Wallis and Futuna (Wallis-et-Futuna)\", \"wf\", \"681\" ], [ \"Western Sahara (\u202B\u0627\u0644\u0635\u062D\u0631\u0627\u0621 \u0627\u0644\u063A\u0631\u0628\u064A\u0629\u202C\u200E)\", \"eh\", \"212\", 1, [ \"5288\", \"5289\" ] ], [ \"Yemen (\u202B\u0627\u0644\u064A\u0645\u0646\u202C\u200E)\", \"ye\", \"967\" ], [ \"Zambia\", \"zm\", \"260\" ], [ \"Zimbabwe\", \"zw\", \"263\" ], [ \"\u00C5land Islands\", \"ax\", \"358\", 1, [ \"18\" ] ] ];\n // loop over all of the countries above, restructuring the data to be objects with named keys\n for (var i = 0; i < allCountries.length; i++) {\n var c = allCountries[i];\n allCountries[i] = {\n name: c[0],\n iso2: c[1],\n dialCode: c[2],\n priority: c[3] || 0,\n areaCodes: c[4] || null\n };\n }\n \"use strict\";\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n var intlTelInputGlobals = {\n getInstance: function getInstance(input) {\n var id = input.getAttribute(\"data-intl-tel-input-id\");\n return window.intlTelInputGlobals.instances[id];\n },\n instances: {},\n // using a global like this allows us to mock it in the tests\n documentReady: function documentReady() {\n return document.readyState === \"complete\";\n }\n };\n if (typeof window === \"object\") window.intlTelInputGlobals = intlTelInputGlobals;\n // these vars persist through all instances of the plugin\n var id = 0;\n var defaults = {\n // whether or not to allow the dropdown\n allowDropdown: true,\n // if there is just a dial code in the input: remove it on blur\n autoHideDialCode: true,\n // add a placeholder in the input with an example number for the selected country\n autoPlaceholder: \"polite\",\n // modify the parentClass\n customContainer: \"\",\n // modify the auto placeholder\n customPlaceholder: null,\n // append menu to specified element\n dropdownContainer: null,\n // don't display these countries\n excludeCountries: [],\n // format the input value during initialisation and on setNumber\n formatOnDisplay: true,\n // geoIp lookup function\n geoIpLookup: null,\n // inject a hidden input with this name, and on submit, populate it with the result of getNumber\n hiddenInput: \"\",\n // initial country\n initialCountry: \"\",\n // localized country names e.g. { 'de': 'Deutschland' }\n localizedCountries: null,\n // don't insert international dial codes\n nationalMode: true,\n // display only these countries\n onlyCountries: [],\n // number type to use for placeholders\n placeholderNumberType: \"MOBILE\",\n // the countries at the top of the list. defaults to united states and united kingdom\n preferredCountries: [ \"us\", \"gb\" ],\n // display the country dial code next to the selected flag so it's not part of the typed number\n separateDialCode: false,\n // specify the path to the libphonenumber script to enable validation/formatting\n utilsScript: \"\"\n };\n // https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes#Non-geographic_area_codes\n var regionlessNanpNumbers = [ \"800\", \"822\", \"833\", \"844\", \"855\", \"866\", \"877\", \"880\", \"881\", \"882\", \"883\", \"884\", \"885\", \"886\", \"887\", \"888\", \"889\" ];\n // utility function to iterate over an object. can't use Object.entries or native forEach because\n // of IE11\n var forEachProp = function forEachProp(obj, callback) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n callback(keys[i], obj[keys[i]]);\n }\n };\n // run a method on each instance of the plugin\n var forEachInstance = function forEachInstance(method) {\n forEachProp(window.intlTelInputGlobals.instances, function(key) {\n window.intlTelInputGlobals.instances[key][method]();\n });\n };\n // this is our plugin class that we will create an instance of\n // eslint-disable-next-line no-unused-vars\n var Iti = /*#__PURE__*/\n function() {\n function Iti(input, options) {\n var _this = this;\n _classCallCheck(this, Iti);\n this.id = id++;\n this.telInput = input;\n this.activeItem = null;\n this.highlightedItem = null;\n // process specified options / defaults\n // alternative to Object.assign, which isn't supported by IE11\n var customOptions = options || {};\n this.options = {};\n forEachProp(defaults, function(key, value) {\n _this.options[key] = customOptions.hasOwnProperty(key) ? customOptions[key] : value;\n });\n this.hadInitialPlaceholder = Boolean(input.getAttribute(\"placeholder\"));\n }\n _createClass(Iti, [ {\n key: \"_init\",\n value: function _init() {\n var _this2 = this;\n // if in nationalMode, disable options relating to dial codes\n if (this.options.nationalMode) this.options.autoHideDialCode = false;\n // if separateDialCode then doesn't make sense to A) insert dial code into input\n // (autoHideDialCode), and B) display national numbers (because we're displaying the country\n // dial code next to them)\n if (this.options.separateDialCode) {\n this.options.autoHideDialCode = this.options.nationalMode = false;\n }\n // we cannot just test screen size as some smartphones/website meta tags will report desktop\n // resolutions\n // Note: for some reason jasmine breaks if you put this in the main Plugin function with the\n // rest of these declarations\n // Note: to target Android Mobiles (and not Tablets), we must find 'Android' and 'Mobile'\n this.isMobile = /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n if (this.isMobile) {\n // trigger the mobile dropdown css\n document.body.classList.add(\"iti-mobile\");\n // on mobile, we want a full screen dropdown, so we must append it to the body\n if (!this.options.dropdownContainer) this.options.dropdownContainer = document.body;\n }\n // these promises get resolved when their individual requests complete\n // this way the dev can do something like iti.promise.then(...) to know when all requests are\n // complete\n if (typeof Promise !== \"undefined\") {\n var autoCountryPromise = new Promise(function(resolve, reject) {\n _this2.resolveAutoCountryPromise = resolve;\n _this2.rejectAutoCountryPromise = reject;\n });\n var utilsScriptPromise = new Promise(function(resolve, reject) {\n _this2.resolveUtilsScriptPromise = resolve;\n _this2.rejectUtilsScriptPromise = reject;\n });\n this.promise = Promise.all([ autoCountryPromise, utilsScriptPromise ]);\n } else {\n // prevent errors when Promise doesn't exist\n this.resolveAutoCountryPromise = this.rejectAutoCountryPromise = function() {};\n this.resolveUtilsScriptPromise = this.rejectUtilsScriptPromise = function() {};\n }\n // in various situations there could be no country selected initially, but we need to be able\n // to assume this variable exists\n this.selectedCountryData = {};\n // process all the data: onlyCountries, excludeCountries, preferredCountries etc\n this._processCountryData();\n // generate the markup\n this._generateMarkup();\n // set the initial state of the input value and the selected flag\n this._setInitialState();\n // start all of the event listeners: autoHideDialCode, input keydown, selectedFlag click\n this._initListeners();\n // utils script, and auto country\n this._initRequests();\n }\n }, {\n key: \"_processCountryData\",\n value: function _processCountryData() {\n // process onlyCountries or excludeCountries array if present\n this._processAllCountries();\n // process the countryCodes map\n this._processCountryCodes();\n // process the preferredCountries\n this._processPreferredCountries();\n // translate countries according to localizedCountries option\n if (this.options.localizedCountries) this._translateCountriesByLocale();\n // sort countries by name\n if (this.options.onlyCountries.length || this.options.localizedCountries) {\n this.countries.sort(this._countryNameSort);\n }\n }\n }, {\n key: \"_addCountryCode\",\n value: function _addCountryCode(iso2, countryCode, priority) {\n if (countryCode.length > this.countryCodeMaxLen) {\n this.countryCodeMaxLen = countryCode.length;\n }\n if (!this.countryCodes.hasOwnProperty(countryCode)) {\n this.countryCodes[countryCode] = [];\n }\n // bail if we already have this country for this countryCode\n for (var i = 0; i < this.countryCodes[countryCode].length; i++) {\n if (this.countryCodes[countryCode][i] === iso2) return;\n }\n // check for undefined as 0 is falsy\n var index = priority !== undefined ? priority : this.countryCodes[countryCode].length;\n this.countryCodes[countryCode][index] = iso2;\n }\n }, {\n key: \"_processAllCountries\",\n value: function _processAllCountries() {\n if (this.options.onlyCountries.length) {\n var lowerCaseOnlyCountries = this.options.onlyCountries.map(function(country) {\n return country.toLowerCase();\n });\n this.countries = allCountries.filter(function(country) {\n return lowerCaseOnlyCountries.indexOf(country.iso2) > -1;\n });\n } else if (this.options.excludeCountries.length) {\n var lowerCaseExcludeCountries = this.options.excludeCountries.map(function(country) {\n return country.toLowerCase();\n });\n this.countries = allCountries.filter(function(country) {\n return lowerCaseExcludeCountries.indexOf(country.iso2) === -1;\n });\n } else {\n this.countries = allCountries;\n }\n }\n }, {\n key: \"_translateCountriesByLocale\",\n value: function _translateCountriesByLocale() {\n for (var i = 0; i < this.countries.length; i++) {\n var iso = this.countries[i].iso2.toLowerCase();\n if (this.options.localizedCountries.hasOwnProperty(iso)) {\n this.countries[i].name = this.options.localizedCountries[iso];\n }\n }\n }\n }, {\n key: \"_countryNameSort\",\n value: function _countryNameSort(a, b) {\n return a.name.localeCompare(b.name);\n }\n }, {\n key: \"_processCountryCodes\",\n value: function _processCountryCodes() {\n this.countryCodeMaxLen = 0;\n // here we store just dial codes\n this.dialCodes = {};\n // here we store \"country codes\" (both dial codes and their area codes)\n this.countryCodes = {};\n // first: add dial codes\n for (var i = 0; i < this.countries.length; i++) {\n var c = this.countries[i];\n if (!this.dialCodes[c.dialCode]) this.dialCodes[c.dialCode] = true;\n this._addCountryCode(c.iso2, c.dialCode, c.priority);\n }\n // next: add area codes\n // this is a second loop over countries, to make sure we have all of the \"root\" countries\n // already in the map, so that we can access them, as each time we add an area code substring\n // to the map, we also need to include the \"root\" country's code, as that also matches\n for (var _i = 0; _i < this.countries.length; _i++) {\n var _c = this.countries[_i];\n // area codes\n if (_c.areaCodes) {\n var rootCountryCode = this.countryCodes[_c.dialCode][0];\n // for each area code\n for (var j = 0; j < _c.areaCodes.length; j++) {\n var areaCode = _c.areaCodes[j];\n // for each digit in the area code to add all partial matches as well\n for (var k = 1; k < areaCode.length; k++) {\n var partialDialCode = _c.dialCode + areaCode.substr(0, k);\n // start with the root country, as that also matches this dial code\n this._addCountryCode(rootCountryCode, partialDialCode);\n this._addCountryCode(_c.iso2, partialDialCode);\n }\n // add the full area code\n this._addCountryCode(_c.iso2, _c.dialCode + areaCode);\n }\n }\n }\n }\n }, {\n key: \"_processPreferredCountries\",\n value: function _processPreferredCountries() {\n this.preferredCountries = [];\n for (var i = 0; i < this.options.preferredCountries.length; i++) {\n var countryCode = this.options.preferredCountries[i].toLowerCase();\n var countryData = this._getCountryData(countryCode, false, true);\n if (countryData) this.preferredCountries.push(countryData);\n }\n }\n }, {\n key: \"_createEl\",\n value: function _createEl(name, attrs, container) {\n var el = document.createElement(name);\n if (attrs) forEachProp(attrs, function(key, value) {\n return el.setAttribute(key, value);\n });\n if (container) container.appendChild(el);\n return el;\n }\n }, {\n key: \"_generateMarkup\",\n value: function _generateMarkup() {\n // if autocomplete does not exist on the element and its form, then\n // prevent autocomplete as there's no safe, cross-browser event we can react to, so it can\n // easily put the plugin in an inconsistent state e.g. the wrong flag selected for the\n // autocompleted number, which on submit could mean wrong number is saved (esp in nationalMode)\n if (!this.telInput.hasAttribute(\"autocomplete\") && !(this.telInput.form && this.telInput.form.hasAttribute(\"autocomplete\"))) {\n this.telInput.setAttribute(\"autocomplete\", \"off\");\n }\n // containers (mostly for positioning)\n var parentClass = \"iti\";\n if (this.options.allowDropdown) parentClass += \" iti--allow-dropdown\";\n if (this.options.separateDialCode) parentClass += \" iti--separate-dial-code\";\n if (this.options.customContainer) {\n parentClass += \" \";\n parentClass += this.options.customContainer;\n }\n var wrapper = this._createEl(\"div\", {\n \"class\": parentClass\n });\n this.telInput.parentNode.insertBefore(wrapper, this.telInput);\n this.flagsContainer = this._createEl(\"div\", {\n \"class\": \"iti__flag-container\"\n }, wrapper);\n wrapper.appendChild(this.telInput);\n // selected flag (displayed to left of input)\n this.selectedFlag = this._createEl(\"div\", {\n \"class\": \"iti__selected-flag\",\n role: \"combobox\",\n \"aria-controls\": \"iti-\".concat(this.id, \"__country-listbox\"),\n \"aria-owns\": \"iti-\".concat(this.id, \"__country-listbox\"),\n \"aria-expanded\": \"false\"\n }, this.flagsContainer);\n this.selectedFlagInner = this._createEl(\"div\", {\n \"class\": \"iti__flag\"\n }, this.selectedFlag);\n if (this.options.separateDialCode) {\n this.selectedDialCode = this._createEl(\"div\", {\n \"class\": \"iti__selected-dial-code\"\n }, this.selectedFlag);\n }\n if (this.options.allowDropdown) {\n // make element focusable and tab navigable\n this.selectedFlag.setAttribute(\"tabindex\", \"0\");\n this.dropdownArrow = this._createEl(\"div\", {\n \"class\": \"iti__arrow\"\n }, this.selectedFlag);\n // country dropdown: preferred countries, then divider, then all countries\n this.countryList = this._createEl(\"ul\", {\n \"class\": \"iti__country-list iti__hide\",\n id: \"iti-\".concat(this.id, \"__country-listbox\"),\n role: \"listbox\",\n \"aria-label\": \"List of countries\"\n });\n if (this.preferredCountries.length) {\n this._appendListItems(this.preferredCountries, \"iti__preferred\", true);\n this._createEl(\"li\", {\n \"class\": \"iti__divider\",\n role: \"separator\",\n \"aria-disabled\": \"true\"\n }, this.countryList);\n }\n this._appendListItems(this.countries, \"iti__standard\");\n // create dropdownContainer markup\n if (this.options.dropdownContainer) {\n this.dropdown = this._createEl(\"div\", {\n \"class\": \"iti iti--container\"\n });\n this.dropdown.appendChild(this.countryList);\n } else {\n this.flagsContainer.appendChild(this.countryList);\n }\n }\n if (this.options.hiddenInput) {\n var hiddenInputName = this.options.hiddenInput;\n var name = this.telInput.getAttribute(\"name\");\n if (name) {\n var i = name.lastIndexOf(\"[\");\n // if input name contains square brackets, then give the hidden input the same name,\n // replacing the contents of the last set of brackets with the given hiddenInput name\n if (i !== -1) hiddenInputName = \"\".concat(name.substr(0, i), \"[\").concat(hiddenInputName, \"]\");\n }\n this.hiddenInput = this._createEl(\"input\", {\n type: \"hidden\",\n name: hiddenInputName\n });\n wrapper.appendChild(this.hiddenInput);\n }\n }\n }, {\n key: \"_appendListItems\",\n value: function _appendListItems(countries, className, preferred) {\n // we create so many DOM elements, it is faster to build a temp string\n // and then add everything to the DOM in one go at the end\n var tmp = \"\";\n // for each country\n for (var i = 0; i < countries.length; i++) {\n var c = countries[i];\n var idSuffix = preferred ? \"-preferred\" : \"\";\n // open the list item\n tmp += \"<li class='iti__country \".concat(className, \"' tabIndex='-1' id='iti-\").concat(this.id, \"__item-\").concat(c.iso2).concat(idSuffix, \"' role='option' data-dial-code='\").concat(c.dialCode, \"' data-country-code='\").concat(c.iso2, \"' aria-selected='false'>\");\n // add the flag\n tmp += \"<div class='iti__flag-box'><div class='iti__flag iti__\".concat(c.iso2, \"'></div></div>\");\n // and the country name and dial code\n tmp += \"<span class='iti__country-name'>\".concat(c.name, \"</span>\");\n tmp += \"<span class='iti__dial-code'>+\".concat(c.dialCode, \"</span>\");\n // close the list item\n tmp += \"</li>\";\n }\n this.countryList.insertAdjacentHTML(\"beforeend\", tmp);\n }\n }, {\n key: \"_setInitialState\",\n value: function _setInitialState() {\n // fix firefox bug: when first load page (with input with value set to number with intl dial\n // code) and initialising plugin removes the dial code from the input, then refresh page,\n // and we try to init plugin again but this time on number without dial code so get grey flag\n var attributeValue = this.telInput.getAttribute(\"value\");\n var inputValue = this.telInput.value;\n var useAttribute = attributeValue && attributeValue.charAt(0) === \"+\" && (!inputValue || inputValue.charAt(0) !== \"+\");\n var val = useAttribute ? attributeValue : inputValue;\n var dialCode = this._getDialCode(val);\n var isRegionlessNanp = this._isRegionlessNanp(val);\n var _this$options = this.options, initialCountry = _this$options.initialCountry, nationalMode = _this$options.nationalMode, autoHideDialCode = _this$options.autoHideDialCode, separateDialCode = _this$options.separateDialCode;\n // if we already have a dial code, and it's not a regionlessNanp, we can go ahead and set the\n // flag, else fall back to the default country\n if (dialCode && !isRegionlessNanp) {\n this._updateFlagFromNumber(val);\n } else if (initialCountry !== \"auto\") {\n // see if we should select a flag\n if (initialCountry) {\n this._setFlag(initialCountry.toLowerCase());\n } else {\n if (dialCode && isRegionlessNanp) {\n // has intl dial code, is regionless nanp, and no initialCountry, so default to US\n this._setFlag(\"us\");\n } else {\n // no dial code and no initialCountry, so default to first in list\n this.defaultCountry = this.preferredCountries.length ? this.preferredCountries[0].iso2 : this.countries[0].iso2;\n if (!val) {\n this._setFlag(this.defaultCountry);\n }\n }\n }\n // if empty and no nationalMode and no autoHideDialCode then insert the default dial code\n if (!val && !nationalMode && !autoHideDialCode && !separateDialCode) {\n this.telInput.value = \"+\".concat(this.selectedCountryData.dialCode);\n }\n }\n // NOTE: if initialCountry is set to auto, that will be handled separately\n // format - note this wont be run after _updateDialCode as that's only called if no val\n if (val) this._updateValFromNumber(val);\n }\n }, {\n key: \"_initListeners\",\n value: function _initListeners() {\n this._initKeyListeners();\n if (this.options.autoHideDialCode) this._initBlurListeners();\n if (this.options.allowDropdown) this._initDropdownListeners();\n if (this.hiddenInput) this._initHiddenInputListener();\n }\n }, {\n key: \"_initHiddenInputListener\",\n value: function _initHiddenInputListener() {\n var _this3 = this;\n this._handleHiddenInputSubmit = function() {\n _this3.hiddenInput.value = _this3.getNumber();\n };\n if (this.telInput.form) this.telInput.form.addEventListener(\"submit\", this._handleHiddenInputSubmit);\n }\n }, {\n key: \"_getClosestLabel\",\n value: function _getClosestLabel() {\n var el = this.telInput;\n while (el && el.tagName !== \"LABEL\") {\n el = el.parentNode;\n }\n return el;\n }\n }, {\n key: \"_initDropdownListeners\",\n value: function _initDropdownListeners() {\n var _this4 = this;\n // hack for input nested inside label (which is valid markup): clicking the selected-flag to\n // open the dropdown would then automatically trigger a 2nd click on the input which would\n // close it again\n this._handleLabelClick = function(e) {\n // if the dropdown is closed, then focus the input, else ignore the click\n if (_this4.countryList.classList.contains(\"iti__hide\")) _this4.telInput.focus(); else e.preventDefault();\n };\n var label = this._getClosestLabel();\n if (label) label.addEventListener(\"click\", this._handleLabelClick);\n // toggle country dropdown on click\n this._handleClickSelectedFlag = function() {\n // only intercept this event if we're opening the dropdown\n // else let it bubble up to the top (\"click-off-to-close\" listener)\n // we cannot just stopPropagation as it may be needed to close another instance\n if (_this4.countryList.classList.contains(\"iti__hide\") && !_this4.telInput.disabled && !_this4.telInput.readOnly) {\n _this4._showDropdown();\n }\n };\n this.selectedFlag.addEventListener(\"click\", this._handleClickSelectedFlag);\n // open dropdown list if currently focused\n this._handleFlagsContainerKeydown = function(e) {\n var isDropdownHidden = _this4.countryList.classList.contains(\"iti__hide\");\n if (isDropdownHidden && [ \"ArrowUp\", \"Up\", \"ArrowDown\", \"Down\", \" \", \"Enter\" ].indexOf(e.key) !== -1) {\n // prevent form from being submitted if \"ENTER\" was pressed\n e.preventDefault();\n // prevent event from being handled again by document\n e.stopPropagation();\n _this4._showDropdown();\n }\n // allow navigation from dropdown to input on TAB\n if (e.key === \"Tab\") _this4._closeDropdown();\n };\n this.flagsContainer.addEventListener(\"keydown\", this._handleFlagsContainerKeydown);\n }\n }, {\n key: \"_initRequests\",\n value: function _initRequests() {\n var _this5 = this;\n // if the user has specified the path to the utils script, fetch it on window.load, else resolve\n if (this.options.utilsScript && !window.intlTelInputUtils) {\n // if the plugin is being initialised after the window.load event has already been fired\n if (window.intlTelInputGlobals.documentReady()) {\n window.intlTelInputGlobals.loadUtils(this.options.utilsScript);\n } else {\n // wait until the load event so we don't block any other requests e.g. the flags image\n window.addEventListener(\"load\", function() {\n window.intlTelInputGlobals.loadUtils(_this5.options.utilsScript);\n });\n }\n } else this.resolveUtilsScriptPromise();\n if (this.options.initialCountry === \"auto\") this._loadAutoCountry(); else this.resolveAutoCountryPromise();\n }\n }, {\n key: \"_loadAutoCountry\",\n value: function _loadAutoCountry() {\n // 3 options:\n // 1) already loaded (we're done)\n // 2) not already started loading (start)\n // 3) already started loading (do nothing - just wait for loading callback to fire)\n if (window.intlTelInputGlobals.autoCountry) {\n this.handleAutoCountry();\n } else if (!window.intlTelInputGlobals.startedLoadingAutoCountry) {\n // don't do this twice!\n window.intlTelInputGlobals.startedLoadingAutoCountry = true;\n if (typeof this.options.geoIpLookup === \"function\") {\n this.options.geoIpLookup(function(countryCode) {\n window.intlTelInputGlobals.autoCountry = countryCode.toLowerCase();\n // tell all instances the auto country is ready\n // TODO: this should just be the current instances\n // UPDATE: use setTimeout in case their geoIpLookup function calls this callback straight\n // away (e.g. if they have already done the geo ip lookup somewhere else). Using\n // setTimeout means that the current thread of execution will finish before executing\n // this, which allows the plugin to finish initialising.\n setTimeout(function() {\n return forEachInstance(\"handleAutoCountry\");\n });\n }, function() {\n return forEachInstance(\"rejectAutoCountryPromise\");\n });\n }\n }\n }\n }, {\n key: \"_initKeyListeners\",\n value: function _initKeyListeners() {\n var _this6 = this;\n // update flag on keyup\n this._handleKeyupEvent = function() {\n if (_this6._updateFlagFromNumber(_this6.telInput.value)) {\n _this6._triggerCountryChange();\n }\n };\n this.telInput.addEventListener(\"keyup\", this._handleKeyupEvent);\n // update flag on cut/paste events (now supported in all major browsers)\n this._handleClipboardEvent = function() {\n // hack because \"paste\" event is fired before input is updated\n setTimeout(_this6._handleKeyupEvent);\n };\n this.telInput.addEventListener(\"cut\", this._handleClipboardEvent);\n this.telInput.addEventListener(\"paste\", this._handleClipboardEvent);\n }\n }, {\n key: \"_cap\",\n value: function _cap(number) {\n var max = this.telInput.getAttribute(\"maxlength\");\n return max && number.length > max ? number.substr(0, max) : number;\n }\n }, {\n key: \"_initBlurListeners\",\n value: function _initBlurListeners() {\n var _this7 = this;\n // on blur or form submit: if just a dial code then remove it\n this._handleSubmitOrBlurEvent = function() {\n _this7._removeEmptyDialCode();\n };\n if (this.telInput.form) this.telInput.form.addEventListener(\"submit\", this._handleSubmitOrBlurEvent);\n this.telInput.addEventListener(\"blur\", this._handleSubmitOrBlurEvent);\n }\n }, {\n key: \"_removeEmptyDialCode\",\n value: function _removeEmptyDialCode() {\n if (this.telInput.value.charAt(0) === \"+\") {\n var numeric = this._getNumeric(this.telInput.value);\n // if just a plus, or if just a dial code\n if (!numeric || this.selectedCountryData.dialCode === numeric) {\n this.telInput.value = \"\";\n }\n }\n }\n }, {\n key: \"_getNumeric\",\n value: function _getNumeric(s) {\n return s.replace(/\\D/g, \"\");\n }\n }, {\n key: \"_trigger\",\n value: function _trigger(name) {\n // have to use old school document.createEvent as IE11 doesn't support `new Event()` syntax\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n // can bubble, and is cancellable\n this.telInput.dispatchEvent(e);\n }\n }, {\n key: \"_showDropdown\",\n value: function _showDropdown() {\n this.countryList.classList.remove(\"iti__hide\");\n this.selectedFlag.setAttribute(\"aria-expanded\", \"true\");\n this._setDropdownPosition();\n // update highlighting and scroll to active list item\n if (this.activeItem) {\n this._highlightListItem(this.activeItem, false);\n this._scrollTo(this.activeItem, true);\n }\n // bind all the dropdown-related listeners: mouseover, click, click-off, keydown\n this._bindDropdownListeners();\n // update the arrow\n this.dropdownArrow.classList.add(\"iti__arrow--up\");\n this._trigger(\"open:countrydropdown\");\n }\n }, {\n key: \"_toggleClass\",\n value: function _toggleClass(el, className, shouldHaveClass) {\n if (shouldHaveClass && !el.classList.contains(className)) el.classList.add(className); else if (!shouldHaveClass && el.classList.contains(className)) el.classList.remove(className);\n }\n }, {\n key: \"_setDropdownPosition\",\n value: function _setDropdownPosition() {\n var _this8 = this;\n if (this.options.dropdownContainer) {\n this.options.dropdownContainer.appendChild(this.dropdown);\n }\n if (!this.isMobile) {\n var pos = this.telInput.getBoundingClientRect();\n // windowTop from https://stackoverflow.com/a/14384091/217866\n var windowTop = window.pageYOffset || document.documentElement.scrollTop;\n var inputTop = pos.top + windowTop;\n var dropdownHeight = this.countryList.offsetHeight;\n // dropdownFitsBelow = (dropdownBottom < windowBottom)\n var dropdownFitsBelow = inputTop + this.telInput.offsetHeight + dropdownHeight < windowTop + window.innerHeight;\n var dropdownFitsAbove = inputTop - dropdownHeight > windowTop;\n // by default, the dropdown will be below the input. If we want to position it above the\n // input, we add the dropup class.\n this._toggleClass(this.countryList, \"iti__country-list--dropup\", !dropdownFitsBelow && dropdownFitsAbove);\n // if dropdownContainer is enabled, calculate postion\n if (this.options.dropdownContainer) {\n // by default the dropdown will be directly over the input because it's not in the flow.\n // If we want to position it below, we need to add some extra top value.\n var extraTop = !dropdownFitsBelow && dropdownFitsAbove ? 0 : this.telInput.offsetHeight;\n // calculate placement\n this.dropdown.style.top = \"\".concat(inputTop + extraTop, \"px\");\n this.dropdown.style.left = \"\".concat(pos.left + document.body.scrollLeft, \"px\");\n // close menu on window scroll\n this._handleWindowScroll = function() {\n return _this8._closeDropdown();\n };\n window.addEventListener(\"scroll\", this._handleWindowScroll);\n }\n }\n }\n }, {\n key: \"_getClosestListItem\",\n value: function _getClosestListItem(target) {\n var el = target;\n while (el && el !== this.countryList && !el.classList.contains(\"iti__country\")) {\n el = el.parentNode;\n }\n // if we reached the countryList element, then return null\n return el === this.countryList ? null : el;\n }\n }, {\n key: \"_bindDropdownListeners\",\n value: function _bindDropdownListeners() {\n var _this9 = this;\n // when mouse over a list item, just highlight that one\n // we add the class \"highlight\", so if they hit \"enter\" we know which one to select\n this._handleMouseoverCountryList = function(e) {\n // handle event delegation, as we're listening for this event on the countryList\n var listItem = _this9._getClosestListItem(e.target);\n if (listItem) _this9._highlightListItem(listItem, false);\n };\n this.countryList.addEventListener(\"mouseover\", this._handleMouseoverCountryList);\n // listen for country selection\n this._handleClickCountryList = function(e) {\n var listItem = _this9._getClosestListItem(e.target);\n if (listItem) _this9._selectListItem(listItem);\n };\n this.countryList.addEventListener(\"click\", this._handleClickCountryList);\n // click off to close\n // (except when this initial opening click is bubbling up)\n // we cannot just stopPropagation as it may be needed to close another instance\n var isOpening = true;\n this._handleClickOffToClose = function() {\n if (!isOpening) _this9._closeDropdown();\n isOpening = false;\n };\n document.documentElement.addEventListener(\"click\", this._handleClickOffToClose);\n // listen for up/down scrolling, enter to select, or letters to jump to country name.\n // use keydown as keypress doesn't fire for non-char keys and we want to catch if they\n // just hit down and hold it to scroll down (no keyup event).\n // listen on the document because that's where key events are triggered if no input has focus\n var query = \"\";\n var queryTimer = null;\n this._handleKeydownOnDropdown = function(e) {\n // prevent down key from scrolling the whole page,\n // and enter key from submitting a form etc\n e.preventDefault();\n // up and down to navigate\n if (e.key === \"ArrowUp\" || e.key === \"Up\" || e.key === \"ArrowDown\" || e.key === \"Down\") _this9._handleUpDownKey(e.key); else if (e.key === \"Enter\") _this9._handleEnterKey(); else if (e.key === \"Escape\") _this9._closeDropdown(); else if (/^[a-zA-Z\u00C0-\u00FF\u0430-\u044F\u0410-\u042F ]$/.test(e.key)) {\n // jump to countries that start with the query string\n if (queryTimer) clearTimeout(queryTimer);\n query += e.key.toLowerCase();\n _this9._searchForCountry(query);\n // if the timer hits 1 second, reset the query\n queryTimer = setTimeout(function() {\n query = \"\";\n }, 1e3);\n }\n };\n document.addEventListener(\"keydown\", this._handleKeydownOnDropdown);\n }\n }, {\n key: \"_handleUpDownKey\",\n value: function _handleUpDownKey(key) {\n var next = key === \"ArrowUp\" || key === \"Up\" ? this.highlightedItem.previousElementSibling : this.highlightedItem.nextElementSibling;\n if (next) {\n // skip the divider\n if (next.classList.contains(\"iti__divider\")) {\n next = key === \"ArrowUp\" || key === \"Up\" ? next.previousElementSibling : next.nextElementSibling;\n }\n this._highlightListItem(next, true);\n }\n }\n }, {\n key: \"_handleEnterKey\",\n value: function _handleEnterKey() {\n if (this.highlightedItem) this._selectListItem(this.highlightedItem);\n }\n }, {\n key: \"_searchForCountry\",\n value: function _searchForCountry(query) {\n for (var i = 0; i < this.countries.length; i++) {\n if (this._startsWith(this.countries[i].name, query)) {\n var listItem = this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(this.countries[i].iso2));\n // update highlighting and scroll\n this._highlightListItem(listItem, false);\n this._scrollTo(listItem, true);\n break;\n }\n }\n }\n }, {\n key: \"_startsWith\",\n value: function _startsWith(a, b) {\n return a.substr(0, b.length).toLowerCase() === b;\n }\n }, {\n key: \"_updateValFromNumber\",\n value: function _updateValFromNumber(originalNumber) {\n var number = originalNumber;\n if (this.options.formatOnDisplay && window.intlTelInputUtils && this.selectedCountryData) {\n var useNational = !this.options.separateDialCode && (this.options.nationalMode || number.charAt(0) !== \"+\");\n var _intlTelInputUtils$nu = intlTelInputUtils.numberFormat, NATIONAL = _intlTelInputUtils$nu.NATIONAL, INTERNATIONAL = _intlTelInputUtils$nu.INTERNATIONAL;\n var format = useNational ? NATIONAL : INTERNATIONAL;\n number = intlTelInputUtils.formatNumber(number, this.selectedCountryData.iso2, format);\n }\n number = this._beforeSetNumber(number);\n this.telInput.value = number;\n }\n }, {\n key: \"_updateFlagFromNumber\",\n value: function _updateFlagFromNumber(originalNumber) {\n // if we're in nationalMode and we already have US/Canada selected, make sure the number starts\n // with a +1 so _getDialCode will be able to extract the area code\n // update: if we dont yet have selectedCountryData, but we're here (trying to update the flag\n // from the number), that means we're initialising the plugin with a number that already has a\n // dial code, so fine to ignore this bit\n var number = originalNumber;\n var selectedDialCode = this.selectedCountryData.dialCode;\n var isNanp = selectedDialCode === \"1\";\n if (number && this.options.nationalMode && isNanp && number.charAt(0) !== \"+\") {\n if (number.charAt(0) !== \"1\") number = \"1\".concat(number);\n number = \"+\".concat(number);\n }\n // update flag if user types area code for another country\n if (this.options.separateDialCode && selectedDialCode && number.charAt(0) !== \"+\") {\n number = \"+\".concat(selectedDialCode).concat(number);\n }\n // try and extract valid dial code from input\n var dialCode = this._getDialCode(number, true);\n var numeric = this._getNumeric(number);\n var countryCode = null;\n if (dialCode) {\n var countryCodes = this.countryCodes[this._getNumeric(dialCode)];\n // check if the right country is already selected. this should be false if the number is\n // longer than the matched dial code because in this case we need to make sure that if\n // there are multiple country matches, that the first one is selected (note: we could\n // just check that here, but it requires the same loop that we already have later)\n var alreadySelected = countryCodes.indexOf(this.selectedCountryData.iso2) !== -1 && numeric.length <= dialCode.length - 1;\n var isRegionlessNanpNumber = selectedDialCode === \"1\" && this._isRegionlessNanp(numeric);\n // only update the flag if:\n // A) NOT (we currently have a NANP flag selected, and the number is a regionlessNanp)\n // AND\n // B) the right country is not already selected\n if (!isRegionlessNanpNumber && !alreadySelected) {\n // if using onlyCountries option, countryCodes[0] may be empty, so we must find the first\n // non-empty index\n for (var j = 0; j < countryCodes.length; j++) {\n if (countryCodes[j]) {\n countryCode = countryCodes[j];\n break;\n }\n }\n }\n } else if (number.charAt(0) === \"+\" && numeric.length) {\n // invalid dial code, so empty\n // Note: use getNumeric here because the number has not been formatted yet, so could contain\n // bad chars\n countryCode = \"\";\n } else if (!number || number === \"+\") {\n // empty, or just a plus, so default\n countryCode = this.defaultCountry;\n }\n if (countryCode !== null) {\n return this._setFlag(countryCode);\n }\n return false;\n }\n }, {\n key: \"_isRegionlessNanp\",\n value: function _isRegionlessNanp(number) {\n var numeric = this._getNumeric(number);\n if (numeric.charAt(0) === \"1\") {\n var areaCode = numeric.substr(1, 3);\n return regionlessNanpNumbers.indexOf(areaCode) !== -1;\n }\n return false;\n }\n }, {\n key: \"_highlightListItem\",\n value: function _highlightListItem(listItem, shouldFocus) {\n var prevItem = this.highlightedItem;\n if (prevItem) prevItem.classList.remove(\"iti__highlight\");\n this.highlightedItem = listItem;\n this.highlightedItem.classList.add(\"iti__highlight\");\n if (shouldFocus) this.highlightedItem.focus();\n }\n }, {\n key: \"_getCountryData\",\n value: function _getCountryData(countryCode, ignoreOnlyCountriesOption, allowFail) {\n var countryList = ignoreOnlyCountriesOption ? allCountries : this.countries;\n for (var i = 0; i < countryList.length; i++) {\n if (countryList[i].iso2 === countryCode) {\n return countryList[i];\n }\n }\n if (allowFail) {\n return null;\n }\n throw new Error(\"No country data for '\".concat(countryCode, \"'\"));\n }\n }, {\n key: \"_setFlag\",\n value: function _setFlag(countryCode) {\n var prevCountry = this.selectedCountryData.iso2 ? this.selectedCountryData : {};\n // do this first as it will throw an error and stop if countryCode is invalid\n this.selectedCountryData = countryCode ? this._getCountryData(countryCode, false, false) : {};\n // update the defaultCountry - we only need the iso2 from now on, so just store that\n if (this.selectedCountryData.iso2) {\n this.defaultCountry = this.selectedCountryData.iso2;\n }\n this.selectedFlagInner.setAttribute(\"class\", \"iti__flag iti__\".concat(countryCode));\n // update the selected country's title attribute\n var title = countryCode ? \"\".concat(this.selectedCountryData.name, \": +\").concat(this.selectedCountryData.dialCode) : \"Unknown\";\n this.selectedFlag.setAttribute(\"title\", title);\n if (this.options.separateDialCode) {\n var dialCode = this.selectedCountryData.dialCode ? \"+\".concat(this.selectedCountryData.dialCode) : \"\";\n this.selectedDialCode.innerHTML = dialCode;\n // offsetWidth is zero if input is in a hidden container during initialisation\n var selectedFlagWidth = this.selectedFlag.offsetWidth || this._getHiddenSelectedFlagWidth();\n // add 6px of padding after the grey selected-dial-code box, as this is what we use in the css\n this.telInput.style.paddingLeft = \"\".concat(selectedFlagWidth + 6, \"px\");\n }\n // and the input's placeholder\n this._updatePlaceholder();\n // update the active list item\n if (this.options.allowDropdown) {\n var prevItem = this.activeItem;\n if (prevItem) {\n prevItem.classList.remove(\"iti__active\");\n prevItem.setAttribute(\"aria-selected\", \"false\");\n }\n if (countryCode) {\n // check if there is a preferred item first, else fall back to standard\n var nextItem = this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(countryCode, \"-preferred\")) || this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(countryCode));\n nextItem.setAttribute(\"aria-selected\", \"true\");\n nextItem.classList.add(\"iti__active\");\n this.activeItem = nextItem;\n this.selectedFlag.setAttribute(\"aria-activedescendant\", nextItem.getAttribute(\"id\"));\n }\n }\n // return if the flag has changed or not\n return prevCountry.iso2 !== countryCode;\n }\n }, {\n key: \"_getHiddenSelectedFlagWidth\",\n value: function _getHiddenSelectedFlagWidth() {\n // to get the right styling to apply, all we need is a shallow clone of the container,\n // and then to inject a deep clone of the selectedFlag element\n var containerClone = this.telInput.parentNode.cloneNode();\n containerClone.style.visibility = \"hidden\";\n document.body.appendChild(containerClone);\n var flagsContainerClone = this.flagsContainer.cloneNode();\n containerClone.appendChild(flagsContainerClone);\n var selectedFlagClone = this.selectedFlag.cloneNode(true);\n flagsContainerClone.appendChild(selectedFlagClone);\n var width = selectedFlagClone.offsetWidth;\n containerClone.parentNode.removeChild(containerClone);\n return width;\n }\n }, {\n key: \"_updatePlaceholder\",\n value: function _updatePlaceholder() {\n var shouldSetPlaceholder = this.options.autoPlaceholder === \"aggressive\" || !this.hadInitialPlaceholder && this.options.autoPlaceholder === \"polite\";\n if (window.intlTelInputUtils && shouldSetPlaceholder) {\n var numberType = intlTelInputUtils.numberType[this.options.placeholderNumberType];\n var placeholder = this.selectedCountryData.iso2 ? intlTelInputUtils.getExampleNumber(this.selectedCountryData.iso2, this.options.nationalMode, numberType) : \"\";\n placeholder = this._beforeSetNumber(placeholder);\n if (typeof this.options.customPlaceholder === \"function\") {\n placeholder = this.options.customPlaceholder(placeholder, this.selectedCountryData);\n }\n this.telInput.setAttribute(\"placeholder\", placeholder);\n }\n }\n }, {\n key: \"_selectListItem\",\n value: function _selectListItem(listItem) {\n // update selected flag and active list item\n var flagChanged = this._setFlag(listItem.getAttribute(\"data-country-code\"));\n this._closeDropdown();\n this._updateDialCode(listItem.getAttribute(\"data-dial-code\"), true);\n // focus the input\n this.telInput.focus();\n // put cursor at end - this fix is required for FF and IE11 (with nationalMode=false i.e. auto\n // inserting dial code), who try to put the cursor at the beginning the first time\n var len = this.telInput.value.length;\n this.telInput.setSelectionRange(len, len);\n if (flagChanged) {\n this._triggerCountryChange();\n }\n }\n }, {\n key: \"_closeDropdown\",\n value: function _closeDropdown() {\n this.countryList.classList.add(\"iti__hide\");\n this.selectedFlag.setAttribute(\"aria-expanded\", \"false\");\n // update the arrow\n this.dropdownArrow.classList.remove(\"iti__arrow--up\");\n // unbind key events\n document.removeEventListener(\"keydown\", this._handleKeydownOnDropdown);\n document.documentElement.removeEventListener(\"click\", this._handleClickOffToClose);\n this.countryList.removeEventListener(\"mouseover\", this._handleMouseoverCountryList);\n this.countryList.removeEventListener(\"click\", this._handleClickCountryList);\n // remove menu from container\n if (this.options.dropdownContainer) {\n if (!this.isMobile) window.removeEventListener(\"scroll\", this._handleWindowScroll);\n if (this.dropdown.parentNode) this.dropdown.parentNode.removeChild(this.dropdown);\n }\n this._trigger(\"close:countrydropdown\");\n }\n }, {\n key: \"_scrollTo\",\n value: function _scrollTo(element, middle) {\n var container = this.countryList;\n // windowTop from https://stackoverflow.com/a/14384091/217866\n var windowTop = window.pageYOffset || document.documentElement.scrollTop;\n var containerHeight = container.offsetHeight;\n var containerTop = container.getBoundingClientRect().top + windowTop;\n var containerBottom = containerTop + containerHeight;\n var elementHeight = element.offsetHeight;\n var elementTop = element.getBoundingClientRect().top + windowTop;\n var elementBottom = elementTop + elementHeight;\n var newScrollTop = elementTop - containerTop + container.scrollTop;\n var middleOffset = containerHeight / 2 - elementHeight / 2;\n if (elementTop < containerTop) {\n // scroll up\n if (middle) newScrollTop -= middleOffset;\n container.scrollTop = newScrollTop;\n } else if (elementBottom > containerBottom) {\n // scroll down\n if (middle) newScrollTop += middleOffset;\n var heightDifference = containerHeight - elementHeight;\n container.scrollTop = newScrollTop - heightDifference;\n }\n }\n }, {\n key: \"_updateDialCode\",\n value: function _updateDialCode(newDialCodeBare, hasSelectedListItem) {\n var inputVal = this.telInput.value;\n // save having to pass this every time\n var newDialCode = \"+\".concat(newDialCodeBare);\n var newNumber;\n if (inputVal.charAt(0) === \"+\") {\n // there's a plus so we're dealing with a replacement (doesn't matter if nationalMode or not)\n var prevDialCode = this._getDialCode(inputVal);\n if (prevDialCode) {\n // current number contains a valid dial code, so replace it\n newNumber = inputVal.replace(prevDialCode, newDialCode);\n } else {\n // current number contains an invalid dial code, so ditch it\n // (no way to determine where the invalid dial code ends and the rest of the number begins)\n newNumber = newDialCode;\n }\n } else if (this.options.nationalMode || this.options.separateDialCode) {\n // don't do anything\n return;\n } else {\n // nationalMode is disabled\n if (inputVal) {\n // there is an existing value with no dial code: prefix the new dial code\n newNumber = newDialCode + inputVal;\n } else if (hasSelectedListItem || !this.options.autoHideDialCode) {\n // no existing value and either they've just selected a list item, or autoHideDialCode is\n // disabled: insert new dial code\n newNumber = newDialCode;\n } else {\n return;\n }\n }\n this.telInput.value = newNumber;\n }\n }, {\n key: \"_getDialCode\",\n value: function _getDialCode(number, includeAreaCode) {\n var dialCode = \"\";\n // only interested in international numbers (starting with a plus)\n if (number.charAt(0) === \"+\") {\n var numericChars = \"\";\n // iterate over chars\n for (var i = 0; i < number.length; i++) {\n var c = number.charAt(i);\n // if char is number (https://stackoverflow.com/a/8935649/217866)\n if (!isNaN(parseInt(c, 10))) {\n numericChars += c;\n // if current numericChars make a valid dial code\n if (includeAreaCode) {\n if (this.countryCodes[numericChars]) {\n // store the actual raw string (useful for matching later)\n dialCode = number.substr(0, i + 1);\n }\n } else {\n if (this.dialCodes[numericChars]) {\n dialCode = number.substr(0, i + 1);\n // if we're just looking for a dial code, we can break as soon as we find one\n break;\n }\n }\n // stop searching as soon as we can - in this case when we hit max len\n if (numericChars.length === this.countryCodeMaxLen) {\n break;\n }\n }\n }\n }\n return dialCode;\n }\n }, {\n key: \"_getFullNumber\",\n value: function _getFullNumber() {\n var val = this.telInput.value.trim();\n var dialCode = this.selectedCountryData.dialCode;\n var prefix;\n var numericVal = this._getNumeric(val);\n if (this.options.separateDialCode && val.charAt(0) !== \"+\" && dialCode && numericVal) {\n // when using separateDialCode, it is visible so is effectively part of the typed number\n prefix = \"+\".concat(dialCode);\n } else {\n prefix = \"\";\n }\n return prefix + val;\n }\n }, {\n key: \"_beforeSetNumber\",\n value: function _beforeSetNumber(originalNumber) {\n var number = originalNumber;\n if (this.options.separateDialCode) {\n var dialCode = this._getDialCode(number);\n // if there is a valid dial code\n if (dialCode) {\n // in case _getDialCode returned an area code as well\n dialCode = \"+\".concat(this.selectedCountryData.dialCode);\n // a lot of numbers will have a space separating the dial code and the main number, and\n // some NANP numbers will have a hyphen e.g. +1 684-733-1234 - in both cases we want to get\n // rid of it\n // NOTE: don't just trim all non-numerics as may want to preserve an open parenthesis etc\n var start = number[dialCode.length] === \" \" || number[dialCode.length] === \"-\" ? dialCode.length + 1 : dialCode.length;\n number = number.substr(start);\n }\n }\n return this._cap(number);\n }\n }, {\n key: \"_triggerCountryChange\",\n value: function _triggerCountryChange() {\n this._trigger(\"countrychange\");\n }\n }, {\n key: \"handleAutoCountry\",\n value: function handleAutoCountry() {\n if (this.options.initialCountry === \"auto\") {\n // we must set this even if there is an initial val in the input: in case the initial val is\n // invalid and they delete it - they should see their auto country\n this.defaultCountry = window.intlTelInputGlobals.autoCountry;\n // if there's no initial value in the input, then update the flag\n if (!this.telInput.value) {\n this.setCountry(this.defaultCountry);\n }\n this.resolveAutoCountryPromise();\n }\n }\n }, {\n key: \"handleUtils\",\n value: function handleUtils() {\n // if the request was successful\n if (window.intlTelInputUtils) {\n // if there's an initial value in the input, then format it\n if (this.telInput.value) {\n this._updateValFromNumber(this.telInput.value);\n }\n this._updatePlaceholder();\n }\n this.resolveUtilsScriptPromise();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var form = this.telInput.form;\n if (this.options.allowDropdown) {\n // make sure the dropdown is closed (and unbind listeners)\n this._closeDropdown();\n this.selectedFlag.removeEventListener(\"click\", this._handleClickSelectedFlag);\n this.flagsContainer.removeEventListener(\"keydown\", this._handleFlagsContainerKeydown);\n // label click hack\n var label = this._getClosestLabel();\n if (label) label.removeEventListener(\"click\", this._handleLabelClick);\n }\n // unbind hiddenInput listeners\n if (this.hiddenInput && form) form.removeEventListener(\"submit\", this._handleHiddenInputSubmit);\n // unbind autoHideDialCode listeners\n if (this.options.autoHideDialCode) {\n if (form) form.removeEventListener(\"submit\", this._handleSubmitOrBlurEvent);\n this.telInput.removeEventListener(\"blur\", this._handleSubmitOrBlurEvent);\n }\n // unbind key events, and cut/paste events\n this.telInput.removeEventListener(\"keyup\", this._handleKeyupEvent);\n this.telInput.removeEventListener(\"cut\", this._handleClipboardEvent);\n this.telInput.removeEventListener(\"paste\", this._handleClipboardEvent);\n // remove attribute of id instance: data-intl-tel-input-id\n this.telInput.removeAttribute(\"data-intl-tel-input-id\");\n // remove markup (but leave the original input)\n var wrapper = this.telInput.parentNode;\n wrapper.parentNode.insertBefore(this.telInput, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n delete window.intlTelInputGlobals.instances[this.id];\n }\n }, {\n key: \"getExtension\",\n value: function getExtension() {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getExtension(this._getFullNumber(), this.selectedCountryData.iso2);\n }\n return \"\";\n }\n }, {\n key: \"getNumber\",\n value: function getNumber(format) {\n if (window.intlTelInputUtils) {\n var iso2 = this.selectedCountryData.iso2;\n return intlTelInputUtils.formatNumber(this._getFullNumber(), iso2, format);\n }\n return \"\";\n }\n }, {\n key: \"getNumberType\",\n value: function getNumberType() {\n if (window.intlTelInputUtils) {\n return intlTelInputUtils.getNumberType(this._getFullNumber(), this.selectedCountryData.iso2);\n }\n return -99;\n }\n }, {\n key: \"getSelectedCountryData\",\n value: function getSelectedCountryData() {\n return this.selectedCountryData;\n }\n }, {\n key: \"getValidationError\",\n value: function getValidationError() {\n if (window.intlTelInputUtils) {\n var iso2 = this.selectedCountryData.iso2;\n return intlTelInputUtils.getValidationError(this._getFullNumber(), iso2);\n }\n return -99;\n }\n }, {\n key: \"isValidNumber\",\n value: function isValidNumber() {\n var val = this._getFullNumber().trim();\n var countryCode = this.options.nationalMode ? this.selectedCountryData.iso2 : \"\";\n return window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(val, countryCode) : null;\n }\n }, {\n key: \"setCountry\",\n value: function setCountry(originalCountryCode) {\n var countryCode = originalCountryCode.toLowerCase();\n // check if already selected\n if (!this.selectedFlagInner.classList.contains(\"iti__\".concat(countryCode))) {\n this._setFlag(countryCode);\n this._updateDialCode(this.selectedCountryData.dialCode, false);\n this._triggerCountryChange();\n }\n }\n }, {\n key: \"setNumber\",\n value: function setNumber(number) {\n // we must update the flag first, which updates this.selectedCountryData, which is used for\n // formatting the number before displaying it\n var flagChanged = this._updateFlagFromNumber(number);\n this._updateValFromNumber(number);\n if (flagChanged) {\n this._triggerCountryChange();\n }\n }\n }, {\n key: \"setPlaceholderNumberType\",\n value: function setPlaceholderNumberType(type) {\n this.options.placeholderNumberType = type;\n this._updatePlaceholder();\n }\n } ]);\n return Iti;\n }();\n /********************\n * STATIC METHODS\n ********************/\n // get the country data object\n intlTelInputGlobals.getCountryData = function() {\n return allCountries;\n };\n // inject a <script> element to load utils.js\n var injectScript = function injectScript(path, handleSuccess, handleFailure) {\n // inject a new script element into the page\n var script = document.createElement(\"script\");\n script.onload = function() {\n forEachInstance(\"handleUtils\");\n if (handleSuccess) handleSuccess();\n };\n script.onerror = function() {\n forEachInstance(\"rejectUtilsScriptPromise\");\n if (handleFailure) handleFailure();\n };\n script.className = \"iti-load-utils\";\n script.async = true;\n script.src = path;\n document.body.appendChild(script);\n };\n // load the utils script\n intlTelInputGlobals.loadUtils = function(path) {\n // 2 options:\n // 1) not already started loading (start)\n // 2) already started loading (do nothing - just wait for the onload callback to fire, which will\n // trigger handleUtils on all instances, invoking their resolveUtilsScriptPromise functions)\n if (!window.intlTelInputUtils && !window.intlTelInputGlobals.startedLoadingUtilsScript) {\n // only do this once\n window.intlTelInputGlobals.startedLoadingUtilsScript = true;\n // if we have promises, then return a promise\n if (typeof Promise !== \"undefined\") {\n return new Promise(function(resolve, reject) {\n return injectScript(path, resolve, reject);\n });\n }\n injectScript(path);\n }\n return null;\n };\n // default options\n intlTelInputGlobals.defaults = defaults;\n // version\n intlTelInputGlobals.version = \"17.0.16\";\n // convenience wrapper\n return function(input, options) {\n var iti = new Iti(input, options);\n iti._init();\n input.setAttribute(\"data-intl-tel-input-id\", iti.id);\n window.intlTelInputGlobals.instances[iti.id] = iti;\n return iti;\n };\n }();\n});", "/**\n * Exposing intl-tel-input as a component\n */\nmodule.exports = require(\"./build/js/intlTelInput\");\n", "/*\n * jQuery MiniColors: A tiny color picker built on jQuery\n *\n * Copyright: Cory LaViska for A Beautiful Site, LLC: http://www.abeautifulsite.net/\n *\n * Contribute: https://github.com/claviska/jquery-minicolors\n *\n * @license: http://opensource.org/licenses/MIT\n *\n */\n(function (factory) {\n /* jshint ignore:start */\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory(require('jquery'));\n } else {\n // Browser globals\n factory(jQuery);\n }\n /* jshint ignore:end */\n}(function ($) {\n\n // Defaults\n $.minicolors = {\n defaults: {\n animationSpeed: 50,\n animationEasing: 'swing',\n change: null,\n changeDelay: 0,\n control: 'hue',\n dataUris: true,\n defaultValue: '',\n hide: null,\n hideSpeed: 100,\n inline: false,\n letterCase: 'lowercase',\n opacity: false,\n position: 'bottom left',\n show: null,\n showSpeed: 100,\n theme: 'default'\n }\n };\n\n // Public methods\n $.extend($.fn, {\n minicolors: function(method, data) {\n\n switch(method) {\n\n // Destroy the control\n case 'destroy':\n $(this).each( function() {\n destroy($(this));\n });\n return $(this);\n\n // Hide the color picker\n case 'hide':\n hide();\n return $(this);\n\n // Get/set opacity\n case 'opacity':\n // Getter\n if( data === undefined ) {\n // Getter\n return $(this).attr('data-opacity');\n } else {\n // Setter\n $(this).each( function() {\n updateFromInput($(this).attr('data-opacity', data));\n });\n }\n return $(this);\n\n // Get an RGB(A) object based on the current color/opacity\n case 'rgbObject':\n return rgbObject($(this), method === 'rgbaObject');\n\n // Get an RGB(A) string based on the current color/opacity\n case 'rgbString':\n case 'rgbaString':\n return rgbString($(this), method === 'rgbaString');\n\n // Get/set settings on the fly\n case 'settings':\n if( data === undefined ) {\n return $(this).data('minicolors-settings');\n } else {\n // Setter\n $(this).each( function() {\n var settings = $(this).data('minicolors-settings') || {};\n destroy($(this));\n $(this).minicolors($.extend(true, settings, data));\n });\n }\n return $(this);\n\n // Show the color picker\n case 'show':\n show( $(this).eq(0) );\n return $(this);\n\n // Get/set the hex color value\n case 'value':\n if( data === undefined ) {\n // Getter\n return $(this).val();\n } else {\n // Setter\n $(this).each( function() {\n updateFromInput($(this).val(data));\n });\n }\n return $(this);\n\n // Initializes the control\n default:\n if( method !== 'create' ) data = method;\n $(this).each( function() {\n init($(this), data);\n });\n return $(this);\n\n }\n\n }\n });\n\n // Initialize input elements\n function init(input, settings) {\n\n var minicolors = $('<div class=\"minicolors\" />'),\n defaults = $.minicolors.defaults;\n\n // Do nothing if already initialized\n if( input.data('minicolors-initialized') ) return;\n\n // Handle settings\n settings = $.extend(true, {}, defaults, settings);\n\n // The wrapper\n minicolors\n .addClass('minicolors-theme-' + settings.theme)\n .toggleClass('minicolors-with-opacity', settings.opacity)\n .toggleClass('minicolors-no-data-uris', settings.dataUris !== true);\n\n // Custom positioning\n if( settings.position !== undefined ) {\n $.each(settings.position.split(' '), function() {\n minicolors.addClass('minicolors-position-' + this);\n });\n }\n\n // The input\n input\n .addClass('minicolors-input')\n .data('minicolors-initialized', false)\n .data('minicolors-settings', settings)\n .prop('size', 7)\n .wrap(minicolors)\n .after(\n '<div class=\"minicolors-panel minicolors-slider-' + settings.control + '\">' +\n '<div class=\"minicolors-slider minicolors-sprite\">' +\n '<div class=\"minicolors-picker\"></div>' +\n '</div>' +\n '<div class=\"minicolors-opacity-slider minicolors-sprite\">' +\n '<div class=\"minicolors-picker\"></div>' +\n '</div>' +\n '<div class=\"minicolors-grid minicolors-sprite\">' +\n '<div class=\"minicolors-grid-inner\"></div>' +\n '<div class=\"minicolors-picker\"><div></div></div>' +\n '</div>' +\n '</div>'\n );\n\n // The swatch\n if( !settings.inline ) {\n input.after('<span class=\"minicolors-swatch minicolors-sprite\"><span class=\"minicolors-swatch-color\"></span></span>');\n input.next('.minicolors-swatch').on('click', function(event) {\n event.preventDefault();\n input.focus();\n });\n }\n\n // Prevent text selection in IE\n input.parent().find('.minicolors-panel').on('selectstart', function() { return false; }).end();\n\n // Inline controls\n if( settings.inline ) input.parent().addClass('minicolors-inline');\n\n updateFromInput(input, false);\n\n input.data('minicolors-initialized', true);\n\n }\n\n // Returns the input back to its original state\n function destroy(input) {\n\n var minicolors = input.parent();\n\n // Revert the input element\n input\n .removeData('minicolors-initialized')\n .removeData('minicolors-settings')\n .removeProp('size')\n .removeClass('minicolors-input');\n\n // Remove the wrap and destroy whatever remains\n minicolors.before(input).remove();\n\n }\n\n // Shows the specified dropdown panel\n function show(input) {\n\n var minicolors = input.parent(),\n panel = minicolors.find('.minicolors-panel'),\n settings = input.data('minicolors-settings');\n\n // Do nothing if uninitialized, disabled, inline, or already open\n if( !input.data('minicolors-initialized') ||\n input.prop('disabled') ||\n minicolors.hasClass('minicolors-inline') ||\n minicolors.hasClass('minicolors-focus')\n ) return;\n\n hide();\n\n minicolors.addClass('minicolors-focus');\n panel\n .stop(true, true)\n .fadeIn(settings.showSpeed, function() {\n if( settings.show ) settings.show.call(input.get(0));\n });\n\n }\n\n // Hides all dropdown panels\n function hide() {\n\n $('.minicolors-focus').each( function() {\n\n var minicolors = $(this),\n input = minicolors.find('.minicolors-input'),\n panel = minicolors.find('.minicolors-panel'),\n settings = input.data('minicolors-settings');\n\n panel.fadeOut(settings.hideSpeed, function() {\n if( settings.hide ) settings.hide.call(input.get(0));\n minicolors.removeClass('minicolors-focus');\n });\n\n });\n }\n\n // Moves the selected picker\n function move(target, event, animate) {\n\n var input = target.parents('.minicolors').find('.minicolors-input'),\n settings = input.data('minicolors-settings'),\n picker = target.find('[class$=-picker]'),\n offsetX = target.offset().left,\n offsetY = target.offset().top,\n x = Math.round(event.pageX - offsetX),\n y = Math.round(event.pageY - offsetY),\n duration = animate ? settings.animationSpeed : 0,\n wx, wy, r, phi;\n\n // Touch support\n if( event.originalEvent.changedTouches ) {\n x = event.originalEvent.changedTouches[0].pageX - offsetX;\n y = event.originalEvent.changedTouches[0].pageY - offsetY;\n }\n\n // Constrain picker to its container\n if( x < 0 ) x = 0;\n if( y < 0 ) y = 0;\n if( x > target.width() ) x = target.width();\n if( y > target.height() ) y = target.height();\n\n // Constrain color wheel values to the wheel\n if( target.parent().is('.minicolors-slider-wheel') && picker.parent().is('.minicolors-grid') ) {\n wx = 75 - x;\n wy = 75 - y;\n r = Math.sqrt(wx * wx + wy * wy);\n phi = Math.atan2(wy, wx);\n if( phi < 0 ) phi += Math.PI * 2;\n if( r > 75 ) {\n r = 75;\n x = 75 - (75 * Math.cos(phi));\n y = 75 - (75 * Math.sin(phi));\n }\n x = Math.round(x);\n y = Math.round(y);\n }\n\n // Move the picker\n if( target.is('.minicolors-grid') ) {\n picker\n .stop(true)\n .animate({\n top: y + 'px',\n left: x + 'px'\n }, duration, settings.animationEasing, function() {\n updateFromControl(input, target);\n });\n } else {\n picker\n .stop(true)\n .animate({\n top: y + 'px'\n }, duration, settings.animationEasing, function() {\n updateFromControl(input, target);\n });\n }\n\n }\n\n // Sets the input based on the color picker values\n function updateFromControl(input, target) {\n\n function getCoords(picker, container) {\n\n var left, top;\n if( !picker.length || !container ) return null;\n left = picker.offset().left;\n top = picker.offset().top;\n\n return {\n x: left - container.offset().left + (picker.outerWidth() / 2),\n y: top - container.offset().top + (picker.outerHeight() / 2)\n };\n\n }\n\n var hue, saturation, brightness, x, y, r, phi,\n\n hex = input.val(),\n opacity = input.attr('data-opacity'),\n\n // Helpful references\n minicolors = input.parent(),\n settings = input.data('minicolors-settings'),\n swatch = minicolors.find('.minicolors-swatch'),\n\n // Panel objects\n grid = minicolors.find('.minicolors-grid'),\n slider = minicolors.find('.minicolors-slider'),\n opacitySlider = minicolors.find('.minicolors-opacity-slider'),\n\n // Picker objects\n gridPicker = grid.find('[class$=-picker]'),\n sliderPicker = slider.find('[class$=-picker]'),\n opacityPicker = opacitySlider.find('[class$=-picker]'),\n\n // Picker positions\n gridPos = getCoords(gridPicker, grid),\n sliderPos = getCoords(sliderPicker, slider),\n opacityPos = getCoords(opacityPicker, opacitySlider);\n\n // Handle colors\n if( target.is('.minicolors-grid, .minicolors-slider') ) {\n\n // Determine HSB values\n switch(settings.control) {\n\n case 'wheel':\n // Calculate hue, saturation, and brightness\n x = (grid.width() / 2) - gridPos.x;\n y = (grid.height() / 2) - gridPos.y;\n r = Math.sqrt(x * x + y * y);\n phi = Math.atan2(y, x);\n if( phi < 0 ) phi += Math.PI * 2;\n if( r > 75 ) {\n r = 75;\n gridPos.x = 69 - (75 * Math.cos(phi));\n gridPos.y = 69 - (75 * Math.sin(phi));\n }\n saturation = keepWithin(r / 0.75, 0, 100);\n hue = keepWithin(phi * 180 / Math.PI, 0, 360);\n brightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n hex = hsb2hex({\n h: hue,\n s: saturation,\n b: brightness\n });\n\n // Update UI\n slider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 }));\n break;\n\n case 'saturation':\n // Calculate hue, saturation, and brightness\n hue = keepWithin(parseInt(gridPos.x * (360 / grid.width()), 10), 0, 360);\n saturation = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n brightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n hex = hsb2hex({\n h: hue,\n s: saturation,\n b: brightness\n });\n\n // Update UI\n slider.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: brightness }));\n minicolors.find('.minicolors-grid-inner').css('opacity', saturation / 100);\n break;\n\n case 'brightness':\n // Calculate hue, saturation, and brightness\n hue = keepWithin(parseInt(gridPos.x * (360 / grid.width()), 10), 0, 360);\n saturation = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n brightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n hex = hsb2hex({\n h: hue,\n s: saturation,\n b: brightness\n });\n\n // Update UI\n slider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 }));\n minicolors.find('.minicolors-grid-inner').css('opacity', 1 - (brightness / 100));\n break;\n\n default:\n // Calculate hue, saturation, and brightness\n hue = keepWithin(360 - parseInt(sliderPos.y * (360 / slider.height()), 10), 0, 360);\n saturation = keepWithin(Math.floor(gridPos.x * (100 / grid.width())), 0, 100);\n brightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n hex = hsb2hex({\n h: hue,\n s: saturation,\n b: brightness\n });\n\n // Update UI\n grid.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: 100 }));\n break;\n\n }\n\n // Adjust case\n input.val( convertCase(hex, settings.letterCase) );\n\n }\n\n // Handle opacity\n if( target.is('.minicolors-opacity-slider') ) {\n if( settings.opacity ) {\n opacity = parseFloat(1 - (opacityPos.y / opacitySlider.height())).toFixed(2);\n } else {\n opacity = 1;\n }\n if( settings.opacity ) input.attr('data-opacity', opacity);\n }\n\n // Set swatch color\n swatch.find('SPAN').css({\n backgroundColor: hex,\n opacity: opacity\n });\n\n // Handle change event\n doChange(input, hex, opacity);\n\n }\n\n // Sets the color picker values from the input\n function updateFromInput(input, preserveInputValue) {\n\n var hex,\n hsb,\n opacity,\n x, y, r, phi,\n\n // Helpful references\n minicolors = input.parent(),\n settings = input.data('minicolors-settings'),\n swatch = minicolors.find('.minicolors-swatch'),\n\n // Panel objects\n grid = minicolors.find('.minicolors-grid'),\n slider = minicolors.find('.minicolors-slider'),\n opacitySlider = minicolors.find('.minicolors-opacity-slider'),\n\n // Picker objects\n gridPicker = grid.find('[class$=-picker]'),\n sliderPicker = slider.find('[class$=-picker]'),\n opacityPicker = opacitySlider.find('[class$=-picker]');\n\n // Determine hex/HSB values\n hex = convertCase(parseHex(input.val(), true), settings.letterCase);\n if( !hex ){\n hex = convertCase(parseHex(settings.defaultValue, true), settings.letterCase);\n }\n hsb = hex2hsb(hex);\n\n // Update input value\n if( !preserveInputValue ) input.val(hex);\n\n // Determine opacity value\n if( settings.opacity ) {\n // Get from data-opacity attribute and keep within 0-1 range\n opacity = input.attr('data-opacity') === '' ? 1 : keepWithin(parseFloat(input.attr('data-opacity')).toFixed(2), 0, 1);\n if( isNaN(opacity) ) opacity = 1;\n input.attr('data-opacity', opacity);\n swatch.find('SPAN').css('opacity', opacity);\n\n // Set opacity picker position\n y = keepWithin(opacitySlider.height() - (opacitySlider.height() * opacity), 0, opacitySlider.height());\n opacityPicker.css('top', y + 'px');\n }\n\n // Update swatch\n swatch.find('SPAN').css('backgroundColor', hex);\n\n // Determine picker locations\n switch(settings.control) {\n\n case 'wheel':\n // Set grid position\n r = keepWithin(Math.ceil(hsb.s * 0.75), 0, grid.height() / 2);\n phi = hsb.h * Math.PI / 180;\n x = keepWithin(75 - Math.cos(phi) * r, 0, grid.width());\n y = keepWithin(75 - Math.sin(phi) * r, 0, grid.height());\n gridPicker.css({\n top: y + 'px',\n left: x + 'px'\n });\n\n // Set slider position\n y = 150 - (hsb.b / (100 / grid.height()));\n if( hex === '' ) y = 0;\n sliderPicker.css('top', y + 'px');\n\n // Update panel color\n slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 }));\n break;\n\n case 'saturation':\n // Set grid position\n x = keepWithin((5 * hsb.h) / 12, 0, 150);\n y = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());\n gridPicker.css({\n top: y + 'px',\n left: x + 'px'\n });\n\n // Set slider position\n y = keepWithin(slider.height() - (hsb.s * (slider.height() / 100)), 0, slider.height());\n sliderPicker.css('top', y + 'px');\n\n // Update UI\n slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: hsb.b }));\n minicolors.find('.minicolors-grid-inner').css('opacity', hsb.s / 100);\n break;\n\n case 'brightness':\n // Set grid position\n x = keepWithin((5 * hsb.h) / 12, 0, 150);\n y = keepWithin(grid.height() - Math.ceil(hsb.s / (100 / grid.height())), 0, grid.height());\n gridPicker.css({\n top: y + 'px',\n left: x + 'px'\n });\n\n // Set slider position\n y = keepWithin(slider.height() - (hsb.b * (slider.height() / 100)), 0, slider.height());\n sliderPicker.css('top', y + 'px');\n\n // Update UI\n slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 }));\n minicolors.find('.minicolors-grid-inner').css('opacity', 1 - (hsb.b / 100));\n break;\n\n default:\n // Set grid position\n x = keepWithin(Math.ceil(hsb.s / (100 / grid.width())), 0, grid.width());\n y = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());\n gridPicker.css({\n top: y + 'px',\n left: x + 'px'\n });\n\n // Set slider position\n y = keepWithin(slider.height() - (hsb.h / (360 / slider.height())), 0, slider.height());\n sliderPicker.css('top', y + 'px');\n\n // Update panel color\n grid.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: 100 }));\n break;\n\n }\n\n // Fire change event, but only if minicolors is fully initialized\n if( input.data('minicolors-initialized') ) {\n doChange(input, hex, opacity);\n }\n\n }\n\n // Runs the change and changeDelay callbacks\n function doChange(input, hex, opacity) {\n\n var settings = input.data('minicolors-settings'),\n lastChange = input.data('minicolors-lastChange');\n\n // Only run if it actually changed\n if( !lastChange || lastChange.hex !== hex || lastChange.opacity !== opacity ) {\n\n // Remember last-changed value\n input.data('minicolors-lastChange', {\n hex: hex,\n opacity: opacity\n });\n\n // Fire change event\n if( settings.change ) {\n if( settings.changeDelay ) {\n // Call after a delay\n clearTimeout(input.data('minicolors-changeTimeout'));\n input.data('minicolors-changeTimeout', setTimeout( function() {\n settings.change.call(input.get(0), hex, opacity);\n }, settings.changeDelay));\n } else {\n // Call immediately\n settings.change.call(input.get(0), hex, opacity);\n }\n }\n input.trigger('change').trigger('input');\n }\n\n }\n\n // Generates an RGB(A) object based on the input's value\n function rgbObject(input) {\n var hex = parseHex($(input).val(), true),\n rgb = hex2rgb(hex),\n opacity = $(input).attr('data-opacity');\n if( !rgb ) return null;\n if( opacity !== undefined ) $.extend(rgb, { a: parseFloat(opacity) });\n return rgb;\n }\n\n // Genearates an RGB(A) string based on the input's value\n function rgbString(input, alpha) {\n var hex = parseHex($(input).val(), true),\n rgb = hex2rgb(hex),\n opacity = $(input).attr('data-opacity');\n if( !rgb ) return null;\n if( opacity === undefined ) opacity = 1;\n if( alpha ) {\n return 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + parseFloat(opacity) + ')';\n } else {\n return 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')';\n }\n }\n\n // Converts to the letter case specified in settings\n function convertCase(string, letterCase) {\n return letterCase === 'uppercase' ? string.toUpperCase() : string.toLowerCase();\n }\n\n // Parses a string and returns a valid hex string when possible\n function parseHex(string, expand) {\n string = string.replace(/[^A-F0-9]/ig, '');\n if( string.length !== 3 && string.length !== 6 ) return '';\n if( string.length === 3 && expand ) {\n string = string[0] + string[0] + string[1] + string[1] + string[2] + string[2];\n }\n return '#' + string;\n }\n\n // Keeps value within min and max\n function keepWithin(value, min, max) {\n if( value < min ) value = min;\n if( value > max ) value = max;\n return value;\n }\n\n // Converts an HSB object to an RGB object\n function hsb2rgb(hsb) {\n var rgb = {};\n var h = Math.round(hsb.h);\n var s = Math.round(hsb.s * 255 / 100);\n var v = Math.round(hsb.b * 255 / 100);\n if(s === 0) {\n rgb.r = rgb.g = rgb.b = v;\n } else {\n var t1 = v;\n var t2 = (255 - s) * v / 255;\n var t3 = (t1 - t2) * (h % 60) / 60;\n if( h === 360 ) h = 0;\n if( h < 60 ) { rgb.r = t1; rgb.b = t2; rgb.g = t2 + t3; }\n else if( h < 120 ) {rgb.g = t1; rgb.b = t2; rgb.r = t1 - t3; }\n else if( h < 180 ) {rgb.g = t1; rgb.r = t2; rgb.b = t2 + t3; }\n else if( h < 240 ) {rgb.b = t1; rgb.r = t2; rgb.g = t1 - t3; }\n else if( h < 300 ) {rgb.b = t1; rgb.g = t2; rgb.r = t2 + t3; }\n else if( h < 360 ) {rgb.r = t1; rgb.g = t2; rgb.b = t1 - t3; }\n else { rgb.r = 0; rgb.g = 0; rgb.b = 0; }\n }\n return {\n r: Math.round(rgb.r),\n g: Math.round(rgb.g),\n b: Math.round(rgb.b)\n };\n }\n\n // Converts an RGB object to a hex string\n function rgb2hex(rgb) {\n var hex = [\n rgb.r.toString(16),\n rgb.g.toString(16),\n rgb.b.toString(16)\n ];\n $.each(hex, function(nr, val) {\n if (val.length === 1) hex[nr] = '0' + val;\n });\n return '#' + hex.join('');\n }\n\n // Converts an HSB object to a hex string\n function hsb2hex(hsb) {\n return rgb2hex(hsb2rgb(hsb));\n }\n\n // Converts a hex string to an HSB object\n function hex2hsb(hex) {\n var hsb = rgb2hsb(hex2rgb(hex));\n if( hsb.s === 0 ) hsb.h = 360;\n return hsb;\n }\n\n // Converts an RGB object to an HSB object\n function rgb2hsb(rgb) {\n var hsb = { h: 0, s: 0, b: 0 };\n var min = Math.min(rgb.r, rgb.g, rgb.b);\n var max = Math.max(rgb.r, rgb.g, rgb.b);\n var delta = max - min;\n hsb.b = max;\n hsb.s = max !== 0 ? 255 * delta / max : 0;\n if( hsb.s !== 0 ) {\n if( rgb.r === max ) {\n hsb.h = (rgb.g - rgb.b) / delta;\n } else if( rgb.g === max ) {\n hsb.h = 2 + (rgb.b - rgb.r) / delta;\n } else {\n hsb.h = 4 + (rgb.r - rgb.g) / delta;\n }\n } else {\n hsb.h = -1;\n }\n hsb.h *= 60;\n if( hsb.h < 0 ) {\n hsb.h += 360;\n }\n hsb.s *= 100/255;\n hsb.b *= 100/255;\n return hsb;\n }\n\n // Converts a hex string to an RGB object\n function hex2rgb(hex) {\n hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);\n return {\n /* jshint ignore:start */\n r: hex >> 16,\n g: (hex & 0x00FF00) >> 8,\n b: (hex & 0x0000FF)\n /* jshint ignore:end */\n };\n }\n\n // Handle events\n $(document)\n // Hide on clicks outside of the control\n .on('mousedown.minicolors touchstart.minicolors', function(event) {\n if( !$(event.target).parents().add(event.target).hasClass('minicolors') ) {\n hide();\n }\n })\n // Start moving\n .on('mousedown.minicolors touchstart.minicolors', '.minicolors-grid, .minicolors-slider, .minicolors-opacity-slider', function(event) {\n var target = $(this);\n event.preventDefault();\n $(document).data('minicolors-target', target);\n move(target, event, true);\n })\n // Move pickers\n .on('mousemove.minicolors touchmove.minicolors', function(event) {\n var target = $(document).data('minicolors-target');\n if( target ) move(target, event);\n })\n // Stop moving\n .on('mouseup.minicolors touchend.minicolors', function() {\n $(this).removeData('minicolors-target');\n })\n // Show panel when swatch is clicked\n .on('mousedown.minicolors touchstart.minicolors', '.minicolors-swatch', function(event) {\n var input = $(this).parent().find('.minicolors-input');\n event.preventDefault();\n show(input);\n })\n // Show on focus\n .on('focus.minicolors', '.minicolors-input', function() {\n var input = $(this);\n if( !input.data('minicolors-initialized') ) return;\n show(input);\n })\n // Fix hex on blur\n .on('blur.minicolors', '.minicolors-input', function() {\n var input = $(this),\n settings = input.data('minicolors-settings');\n if( !input.data('minicolors-initialized') ) return;\n\n // Parse Hex\n input.val(parseHex(input.val(), true));\n\n // Is it blank?\n if( input.val() === '' ) input.val(parseHex(settings.defaultValue, true));\n\n // Adjust case\n input.val( convertCase(input.val(), settings.letterCase) );\n\n })\n // Handle keypresses\n .on('keydown.minicolors', '.minicolors-input', function(event) {\n var input = $(this);\n if( !input.data('minicolors-initialized') ) return;\n switch(event.keyCode) {\n case 9: // tab\n hide();\n break;\n case 13: // enter\n case 27: // esc\n hide();\n input.blur();\n break;\n }\n })\n // Update on keyup\n .on('keyup.minicolors', '.minicolors-input', function() {\n var input = $(this);\n if( !input.data('minicolors-initialized') ) return;\n updateFromInput(input, true);\n })\n // Update on paste\n .on('paste.minicolors', '.minicolors-input', function() {\n var input = $(this);\n if( !input.data('minicolors-initialized') ) return;\n setTimeout( function() {\n updateFromInput(input, true);\n }, 1);\n });\n\n}));", null, "/**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\n\ntype TCallback = (...args:any) => any;\n\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events:string,callback:(event:string)=>any){\n\tevents.split(/\\s+/).forEach((event) =>{\n\t\tcallback(event);\n\t});\n}\n\nexport default class MicroEvent{\n\n\tpublic _events: {[key:string]:TCallback[]};\n\n\tconstructor(){\n\t\tthis._events = {};\n\t}\n\n\ton(events:string, fct:TCallback){\n\t\tforEvents(events,(event) => {\n\t\t\tthis._events[event] = this._events[event] || [];\n\t\t\tthis._events[event].push(fct);\n\t\t});\n\t}\n\n\toff(events:string, fct:TCallback){\n\t\tvar n = arguments.length;\n\t\tif( n === 0 ){\n\t\t\tthis._events = {};\n\t\t\treturn;\n\t\t}\n\n\t\tforEvents(events,(event) => {\n\n\t\t\tif (n === 1) return delete this._events[event];\n\n\t\t\tif (event in this._events === false) return;\n\t\t\tthis._events[event].splice(this._events[event].indexOf(fct), 1);\n\t\t});\n\t}\n\n\ttrigger(events:string, ...args:any){\n\t\tvar self = this;\n\n\t\tforEvents(events,(event) => {\n\t\t\tif(event in self._events === false) return;\n\t\t\tfor( let fct of self._events[event] ){\n\t\t\t\tfct.apply(self, args );\n\t\t\t}\n\t\t});\n\t}\n};\n", "/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\ntype TSettings = {\n\t[key:string]:any\n}\n\ntype TPlugins = {\n\tnames: string[],\n\tsettings: TSettings,\n\trequested: {[key:string]:boolean},\n\tloaded: {[key:string]:any}\n};\n\nexport type TPluginItem = {name:string,options:{}};\nexport type TPluginHash = {[key:string]:{}};\n\n\n\n\nexport default function MicroPlugin(Interface: any ){\n\n\tInterface.plugins = {};\n\n\treturn class extends Interface{\n\n\t\tpublic plugins:TPlugins = {\n\t\t\tnames : [],\n\t\t\tsettings : {},\n\t\t\trequested : {},\n\t\t\tloaded : {}\n\t\t};\n\n\t\t/**\n\t\t * Registers a plugin.\n\t\t *\n\t\t * @param {function} fn\n\t\t */\n\t\tstatic define(name:string, fn:(this:any,settings:TSettings)=>any){\n\t\t\tInterface.plugins[name] = {\n\t\t\t\t'name' : name,\n\t\t\t\t'fn' : fn\n\t\t\t};\n\t\t}\n\n\n\t\t/**\n\t\t * Initializes the listed plugins (with options).\n\t\t * Acceptable formats:\n\t\t *\n\t\t * List (without options):\n\t\t * ['a', 'b', 'c']\n\t\t *\n\t\t * List (with options):\n\t\t * [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n\t\t *\n\t\t * Hash (with options):\n\t\t * {'a': { ... }, 'b': { ... }, 'c': { ... }}\n\t\t *\n\t\t * @param {array|object} plugins\n\t\t */\n\t\tinitializePlugins(plugins:string[]|TPluginItem[]|TPluginHash) {\n\t\t\tvar key, name;\n\t\t\tconst self = this;\n\t\t\tconst queue:string[] = [];\n\n\t\t\tif (Array.isArray(plugins)) {\n\t\t\t\tplugins.forEach((plugin:string|TPluginItem)=>{\n\t\t\t\t\tif (typeof plugin === 'string') {\n\t\t\t\t\t\tqueue.push(plugin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.plugins.settings[plugin.name] = plugin.options;\n\t\t\t\t\t\tqueue.push(plugin.name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (plugins) {\n\t\t\t\tfor (key in plugins) {\n\t\t\t\t\tif (plugins.hasOwnProperty(key)) {\n\t\t\t\t\t\tself.plugins.settings[key] = plugins[key];\n\t\t\t\t\t\tqueue.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile( name = queue.shift() ){\n\t\t\t\tself.require(name);\n\t\t\t}\n\t\t}\n\n\t\tloadPlugin(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\t\t\tvar plugin = Interface.plugins[name];\n\n\t\t\tif (!Interface.plugins.hasOwnProperty(name)) {\n\t\t\t\tthrow new Error('Unable to find \"' + name + '\" plugin');\n\t\t\t}\n\n\t\t\tplugins.requested[name] = true;\n\t\t\tplugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n\t\t\tplugins.names.push(name);\n\t\t}\n\n\t\t/**\n\t\t * Initializes a plugin.\n\t\t *\n\t\t */\n\t\trequire(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\n\t\t\tif (!self.plugins.loaded.hasOwnProperty(name)) {\n\t\t\t\tif (plugins.requested[name]) {\n\t\t\t\t\tthrow new Error('Plugin has circular dependency (\"' + name + '\")');\n\t\t\t\t}\n\t\t\t\tself.loadPlugin(name);\n\t\t\t}\n\n\t\t\treturn plugins.loaded[name];\n\t\t}\n\n\t};\n\n}\n", "\ntype TDiacraticList = {[key:string]:string};\n\n// https://github.com/andrewrk/node-diacritics/blob/master/index.js\n\nvar latin_pat:RegExp;\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}]'; // \\u{2bc}\nconst accent_reg = new RegExp(accent_pat,'g');\nvar diacritic_patterns:TDiacraticList;\n\nconst latin_convert:TDiacraticList = {\n\t'\u00E6': 'ae',\n\t'\u2C65': 'a',\n\t'\u00F8': 'o',\n};\n\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|'),'g');\n\n\nexport const DIACRITICS:TDiacraticList = {\n\t\" \":\"\u00A0\",\n\t0:\"\u07C0\",\n\tA:\"\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F\",\n\tAA:\"\uA732\",\n\tAE:\"\u00C6\u01FC\u01E2\",\n\tAO:\"\uA734\",\n\tAU:\"\uA736\",\n\tAV:\"\uA738\uA73A\",\n\tAY:\"\uA73C\",\n\tB:\"\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0181\",\n\tC:\"\u24B8\uFF23\uA73E\u1E08\u0106C\u0108\u010A\u010C\u00C7\u0187\u023B\",\n\tD:\"\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018A\u0189\u1D05\uA779\",\n\tDh:\"\u00D0\",\n\tDZ:\"\u01F1\u01C4\",\n\tDz:\"\u01F2\u01C5\",\n\tE:\"\u025B\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E\u1D07\",\n\tF:\"\uA77C\u24BB\uFF26\u1E1E\u0191\uA77B\",\n\tG:\"\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E\u0262\",\n\tH:\"\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D\",\n\tI:\"\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197\",\n\tJ:\"\u24BF\uFF2A\u0134\u0248\u0237\",\n\tK:\"\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2\",\n\tL:\"\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780\",\n\tLJ:\"\u01C7\",\n\tLj:\"\u01C8\",\n\tM:\"\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C\u03FB\",\n\tN:\"\uA7A4\u0220\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u019D\uA790\u1D0E\",\n\tNJ:\"\u01CA\",\n\tNj:\"\u01CB\",\n\tO:\"\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C\",\n\tOE:\"\u0152\",\n\tOI:\"\u01A2\",\n\tOO:\"\uA74E\",\n\tOU:\"\u0222\",\n\tP:\"\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754\",\n\tQ:\"\u24C6\uFF31\uA756\uA758\u024A\",\n\tR:\"\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782\",\n\tS:\"\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784\",\n\tT:\"\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786\",\n\tTh:\"\u00DE\",\n\tTZ:\"\uA728\",\n\tU:\"\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244\",\n\tV:\"\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245\",\n\tVY:\"\uA760\",\n\tW:\"\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72\",\n\tX:\"\u24CD\uFF38\u1E8A\u1E8C\",\n\tY:\"\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE\",\n\tZ:\"\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762\",\n\ta:\"\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250\u0251\",\n\taa:\"\uA733\",\n\tae:\"\u00E6\u01FD\u01E3\",\n\tao:\"\uA735\",\n\tau:\"\uA737\",\n\tav:\"\uA739\uA73B\",\n\tay:\"\uA73D\",\n\tb:\"\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253\u0182\",\n\tc:\"\uFF43\u24D2\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184\",\n\td:\"\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\u018B\u13E7\u0501\uA7AA\",\n\tdh:\"\u00F0\",\n\tdz:\"\u01F3\u01C6\",\n\te:\"\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u01DD\",\n\tf:\"\u24D5\uFF46\u1E1F\u0192\",\n\tff:\"\uFB00\",\n\tfi:\"\uFB01\",\n\tfl:\"\uFB02\",\n\tffi:\"\uFB03\",\n\tffl:\"\uFB04\",\n\tg:\"\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\uA77F\u1D79\",\n\th:\"\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265\",\n\thv:\"\u0195\",\n\ti:\"\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131\",\n\tj:\"\u24D9\uFF4A\u0135\u01F0\u0249\",\n\tk:\"\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3\",\n\tl:\"\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747\u026D\",\n\tlj:\"\u01C9\",\n\tm:\"\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F\",\n\tn:\"\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5\u043B\u0509\",\n\tnj:\"\u01CC\",\n\to:\"\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\uA74B\uA74D\u0275\u0254\u1D11\",\n\toe:\"\u0153\",\n\toi:\"\u01A3\",\n\too:\"\uA74F\",\n\tou:\"\u0223\",\n\tp:\"\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755\u03C1\",\n\tq:\"\u24E0\uFF51\u024B\uA757\uA759\",\n\tr:\"\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783\",\n\ts:\"\u24E2\uFF53\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B\u0282\",\n\tss:\"\u00DF\",\n\tt:\"\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787\",\n\tth:\"\u00FE\",\n\ttz:\"\uA729\",\n\tu:\"\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289\",\n\tv:\"\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C\",\n\tvy:\"\uA761\",\n\tw:\"\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73\",\n\tx:\"\u24E7\uFF58\u1E8B\u1E8D\",\n\ty:\"\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF\",\n\tz:\"\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763\"\n}\n\n/**\n * code points generated from toCodePoints();\n * removed 65339 to 65345\n */\nexport const code_points = [\n\t[ 67, 67 ],\n\t[ 160, 160 ],\n\t[ 192, 438 ],\n\t[ 452, 652 ],\n\t[ 961, 961 ],\n\t[ 1019, 1019 ],\n\t[ 1083, 1083 ],\n\t[ 1281, 1289 ],\n\t[ 1984, 1984 ],\n\t[ 5095, 5095 ],\n\t[ 7429, 7441 ],\n\t[ 7545, 7549 ],\n\t[ 7680, 7935 ],\n\t[ 8580, 8580 ],\n\t[ 9398, 9449 ],\n\t[ 11360, 11391 ],\n\t[ 42792, 42793 ],\n\t[ 42802, 42851 ],\n\t[ 42873, 42897 ],\n\t[ 42912, 42922 ],\n\t[ 64256, 64260 ],\n\t[ 65313, 65338 ],\n\t[ 65345, 65370 ]\n];\n\n/**\n * Remove accents\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n *\n */\nexport const asciifold = (str:string):string => {\n\treturn str\n\t\t.normalize('NFKD')\n\t\t.replace(accent_reg, '')\n\t\t.toLowerCase()\n\t\t.replace(convert_pat,function(foreignletter) {\n\t\t\treturn latin_convert[foreignletter];\n\t\t});\n};\n\n\n/**\n * Convert list of diacritics to array of code points\n *\n */\n// @ts-ignore\nfunction toCodePoints(tolerance=8){\n\tvar char_codes:number[] = [];\n\n\tfor( let letter in DIACRITICS ){\n\t\tlet _diacritics = DIACRITICS[letter];\n\t\tfor( let n = 0; n < _diacritics.length; n++ ){\n\t\t\tvar code_point = _diacritics.codePointAt(n);\n\t\t\tif( code_point ) char_codes.push( code_point );\n\t\t}\n\t}\n\n\t//https://stackoverflow.com/questions/40431572/is-there-a-simple-way-to-group-js-array-values-by-range\n\tchar_codes.sort((a, b) => a - b);\n\tvar accumulator: number[][] = [];\n\tchar_codes.reduce(function (accumulator, currentValue, index, source) {\n\n\t\tif( !index ){\n\t\t\taccumulator.push( [currentValue,currentValue] );\n\n\t\t}else if( currentValue - source[index - 1] > tolerance ){\n\t\t\taccumulator.push( [currentValue,currentValue] );\n\n\t\t}else{\n\n\t\t\tlet range = accumulator.pop();\n\t\t\tif( range ){\n\t\t\t\taccumulator.push( [range[0],currentValue]);\n\t\t\t}\n\t\t}\n\n\t\treturn accumulator;\n\t}, accumulator);\n\n}\n\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n *\n */\nexport const arrayToPattern = (chars:string[],glue:string='|'):string =>{\n\t\n\tif( chars.length == 1 ){\n\t\treturn chars[0];\n\t}\n\t\n\tvar longest = 1;\n\tchars.forEach((a)=>{longest = Math.max(longest,a.length)});\n\n\tif( longest == 1 ){\n\t\treturn '['+chars.join('')+']';\n\t}\n\n\treturn '(?:'+chars.join(glue)+')';\t\n};\n\n/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n *\n */\nexport const allSubstrings = (input:string):string[][] => {\n\n if( input.length === 1) return [[input]];\n\n var result:string[][] = [];\n allSubstrings(input.substring(1)).forEach(function(subresult) {\n var tmp = subresult.slice(0);\n tmp[0] = input.charAt(0) + tmp[0];\n result.push(tmp);\n\n tmp = subresult.slice(0);\n tmp.unshift(input.charAt(0));\n result.push(tmp);\n });\n \n return result;\n}\n\n/**\n * Generate a list of diacritics from the list of code points\n *\n */\nexport const generateDiacritics = ():TDiacraticList => {\t\n\n\tvar diacritics:{[key:string]:string[]} = {};\n\tcode_points.forEach((code_range)=>{\n\n\t\tfor(let i = code_range[0]; i <= code_range[1]; i++){\n\t\t\t\n\t\t\tlet diacritic\t= String.fromCharCode(i);\n\t\t\tlet\tlatin\t\t= asciifold(diacritic);\n\n\t\t\tif( latin == diacritic.toLowerCase() ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( !(latin in diacritics) ){\n\t\t\t\tdiacritics[latin] = [latin];\n\t\t\t}\n\t\t\t\n\t\t\tvar patt = new RegExp( arrayToPattern(diacritics[latin]),'iu');\n\t\t\tif( diacritic.match(patt) ){\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tdiacritics[latin].push(diacritic);\n\t\t}\n\t});\n\t\t\n\tvar latin_chars = Object.keys(diacritics);\n\t\n\t\n\t// latin character pattern\n\t// match longer substrings first\n\tlatin_chars\t\t= latin_chars.sort((a, b) => b.length - a.length );\n\tlatin_pat\t\t= new RegExp('('+ arrayToPattern(latin_chars) + accent_pat + '*)','g');\n\t\n\t\n\t// build diacritic patterns\n\t// ae needs: \n\t//\t(?:(?:ae|\u00C6|\u01FC|\u01E2)|(?:A|\u24B6|\uFF21...)(?:E|\u025B|\u24BA...))\n\tvar diacritic_patterns:TDiacraticList = {};\n\tlatin_chars.sort((a,b) => a.length -b.length).forEach((latin)=>{\n\t\t\n\t\tvar substrings\t= allSubstrings(latin);\n\t\tvar pattern = substrings.map((sub_pat)=>{\n\t\t\t\n\t\t\tsub_pat = sub_pat.map((l)=>{\n\t\t\t\tif( diacritics.hasOwnProperty(l) ){\n\t\t\t\t\treturn arrayToPattern(diacritics[l]);\n\t\t\t\t}\n\t\t\t\treturn l;\n\t\t\t});\n\t\t\t\n\t\t\treturn arrayToPattern(sub_pat,'');\n\t\t});\n\t\t\n\t\tdiacritic_patterns[latin] = arrayToPattern(pattern);\t\t\n\t});\n\t\t\t\n\treturn diacritic_patterns;\n}\n\n/**\n * Expand a regular expression pattern to include diacritics\n * \teg /a/ becomes /a\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250\u0251A\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F/\n *\n */\nexport const diacriticRegexPoints = (regex:string):string => {\n\n\tif( diacritic_patterns === undefined ){\n\t\tdiacritic_patterns = generateDiacritics();\n\t}\n\t\n\tconst decomposed\t\t= regex.normalize('NFKD').toLowerCase();\n\t\n\treturn decomposed.split(latin_pat).map((part:string)=>{\n\t\t\n\t\tif( part == '' ){\n\t\t\treturn '';\n\t\t}\n\t\t\n\t\t// \"\uFB04\" or \"ffl\"\n\t\tconst no_accent = asciifold(part);\t\t\t\t\n\t\tif( diacritic_patterns.hasOwnProperty(no_accent) ){\n\t\t\treturn diacritic_patterns[no_accent];\n\t\t}\n\t\t\n\t\t// '\u0623\u0647\u0644\u0627' (\\u{623}\\u{647}\\u{644}\\u{627}) or '\u0627\u0654\u0647\u0644\u0627' (\\u{627}\\u{654}\\u{647}\\u{644}\\u{627})\n\t\tconst composed_part = part.normalize('NFC');\n\t\tif( composed_part != part ){\n\t\t\treturn arrayToPattern([part,composed_part]);\n\t\t}\n\t\t\t\t\n\t\treturn part;\n\t}).join('');\n\t\n}\n", "\n// @ts-ignore TS2691 \"An import path cannot end with a '.ts' extension\"\nimport { asciifold } from './diacritics.ts';\n\n// @ts-ignore TS2691 \"An import path cannot end with a '.ts' extension\"\nimport * as T from './types.ts';\n\n\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nexport const getAttr = (obj:{[key:string]:any}, name:string ) => {\n if (!obj ) return;\n return obj[name];\n};\n\n/**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\nexport const getAttrNesting = (obj:{[key:string]:any}, name:string ) => {\n if (!obj ) return;\n var part, names = name.split(\".\");\n\twhile( (part = names.shift()) && (obj = obj[part]));\n return obj;\n};\n\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\nexport const scoreValue = (value:string, token:T.Token, weight:number ):number => {\n\tvar score, pos;\n\n\tif (!value) return 0;\n\n\tvalue = value + '';\n\tpos = value.search(token.regex);\n\tif (pos === -1) return 0;\n\n\tscore = token.string.length / value.length;\n\tif (pos === 0) score += 0.5;\n\n\treturn score * weight;\n};\n\n/**\n *\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n */\nexport const escape_regex = (str:string):string => {\t\n\treturn (str + '').replace(/([\\$\\(\\)\\*\\+\\.\\?\\[\\]\\^\\{\\|\\}\\\\])/gu, '\\\\$1');\n};\n\n\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\nexport const propToArray = (obj:{[key:string]:any}, key:string) => {\n\tvar value = obj[key];\n\t\n\tif( typeof value == 'function' ) return value;\n\t\n\tif( value && !Array.isArray(value) ){\n\t\tobj[key] = [value];\n\t}\n}\n\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:number|string)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nexport const cmp = (a:number|string, b:number|string) => {\n\tif (typeof a === 'number' && typeof b === 'number') {\n\t\treturn a > b ? 1 : (a < b ? -1 : 0);\n\t}\n\ta = asciifold(a + '').toLowerCase();\n\tb = asciifold(b + '').toLowerCase();\n\tif (a > b) return 1;\n\tif (b > a) return -1;\n\treturn 0;\n};\n", "/**\n * sifter.js\n * Copyright (c) 2013\u20132020 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\n // @ts-ignore TS2691 \"An import path cannot end with a '.ts' extension\"\nimport { scoreValue, getAttr, getAttrNesting, escape_regex, propToArray, iterate, cmp } from './utils.ts';\n// @ts-ignore TS2691 \"An import path cannot end with a '.ts' extension\"\nimport { diacriticRegexPoints } from './diacritics.ts';\n// @ts-ignore TS2691 \"An import path cannot end with a '.ts' extension\"\nimport * as T from 'types.ts';\n\nexport default class Sifter{\n\n\tpublic items; // []|{};\n\tpublic settings: T.Settings;\n\n\t/**\n\t * Textually searches arrays and hashes of objects\n\t * by property (or multiple properties). Designed\n\t * specifically for autocomplete.\n\t *\n\t */\n\tconstructor(items:any, settings:T.Settings) {\n\t\tthis.items = items;\n\t\tthis.settings = settings || {diacritics: true};\n\t};\n\n\t/**\n\t * Splits a search string into an array of individual\n\t * regexps to be used to match results.\n\t *\n\t */\n\ttokenize(query:string, respect_word_boundaries?:boolean, weights?:T.Weights ):T.Token[] {\n\t\tif (!query || !query.length) return [];\n\n\t\tconst tokens:T.Token[]\t= [];\n\t\tconst words\t\t\t\t= query.split(/\\s+/);\n\t\tvar field_regex:RegExp;\n\n\t\tif( weights ){\n\t\t\tfield_regex = new RegExp( '^('+ Object.keys(weights).map(escape_regex).join('|')+')\\:(.*)$');\n\t\t}\n\n\t\twords.forEach((word:string) => {\n\t\t\tlet field_match;\n\t\t\tlet field:null|string\t= null;\n\t\t\tlet regex:null|string\t= null;\n\n\t\t\t// look for \"field:query\" tokens\n\t\t\tif( field_regex && (field_match = word.match(field_regex)) ){\n\t\t\t\tfield\t= field_match[1];\n\t\t\t\tword\t= field_match[2];\n\t\t\t}\n\n\t\t\tif( word.length > 0 ){\n\t\t\t\tregex = escape_regex(word);\n\t\t\t\tif( this.settings.diacritics ){\n\t\t\t\t\tregex = diacriticRegexPoints(regex);\n\t\t\t\t}\n\t\t\t\tif( respect_word_boundaries ) regex = \"\\\\b\"+regex;\n\t\t\t}\n\n\t\t\ttokens.push({\n\t\t\t\tstring : word,\n\t\t\t\tregex : regex ? new RegExp(regex,'iu') : null,\n\t\t\t\tfield : field,\n\t\t\t});\n\t\t});\n\n\t\treturn tokens;\n\t};\n\n\n\t/**\n\t * Returns a function to be used to score individual results.\n\t *\n\t * Good matches will have a higher score than poor matches.\n\t * If an item is not a match, 0 will be returned by the function.\n\t *\n\t * @returns {function}\n\t */\n\tgetScoreFunction(query:string, options:T.Options ){\n\t\tvar search = this.prepareSearch(query, options);\n\t\treturn this._getScoreFunction(search);\n\t}\n\n\t_getScoreFunction(search:T.PrepareObj ){\n\t\tconst tokens\t\t= search.tokens,\n\t\ttoken_count\t\t\t= tokens.length;\n\n\t\tif (!token_count) {\n\t\t\treturn function() { return 0; };\n\t\t}\n\n\t\tconst fields\t= search.options.fields,\n\t\tweights\t\t\t= search.weights,\n\t\tfield_count\t\t= fields.length,\n\t\tgetAttrFn\t\t= search.getAttrFn;\n\n\t\tif (!field_count) {\n\t\t\treturn function() { return 1; };\n\t\t}\n\n\n\t\t/**\n\t\t * Calculates the score of an object\n\t\t * against the search query.\n\t\t *\n\t\t */\n\t\tconst scoreObject = (function() {\n\n\n\t\t\tif (field_count === 1) {\n\t\t\t\treturn function(token:T.Token, data:{}) {\n\t\t\t\t\tconst field = fields[0].field;\n\t\t\t\t\treturn scoreValue(getAttrFn(data, field), token, weights[field]);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn function(token:T.Token, data:{}) {\n\t\t\t\tvar sum = 0;\n\n\t\t\t\t// is the token specific to a field?\n\t\t\t\tif( token.field ){\n\n\t\t\t\t\tconst value = getAttrFn(data, token.field);\n\n\t\t\t\t\tif( !token.regex && value ){\n\t\t\t\t\t\tsum += (1/field_count);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tsum += scoreValue(value, token, 1);\n\t\t\t\t\t}\n\n\n\n\t\t\t\t}else{\n\t\t\t\t\titerate(weights, (weight:number, field:string) => {\n\t\t\t\t\t\tsum += scoreValue(getAttrFn(data, field), token, weight);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn sum / field_count;\n\t\t\t};\n\t\t})();\n\n\t\tif (token_count === 1) {\n\t\t\treturn function(data:{}) {\n\t\t\t\treturn scoreObject(tokens[0], data);\n\t\t\t};\n\t\t}\n\n\t\tif (search.options.conjunction === 'and') {\n\t\t\treturn function(data:{}) {\n\t\t\t\tvar i = 0, score, sum = 0;\n\t\t\t\tfor (; i < token_count; i++) {\n\t\t\t\t\tscore = scoreObject(tokens[i], data);\n\t\t\t\t\tif (score <= 0) return 0;\n\t\t\t\t\tsum += score;\n\t\t\t\t}\n\t\t\t\treturn sum / token_count;\n\t\t\t};\n\t\t} else {\n\t\t\treturn function(data:{}) {\n\t\t\t\tvar sum = 0;\n\t\t\t\titerate(tokens,(token:T.Token)=>{\n\t\t\t\t\tsum += scoreObject(token, data);\n\t\t\t\t});\n\t\t\t\treturn sum / token_count;\n\t\t\t};\n\t\t}\n\t};\n\n\t/**\n\t * Returns a function that can be used to compare two\n\t * results, for sorting purposes. If no sorting should\n\t * be performed, `null` will be returned.\n\t *\n\t * @return function(a,b)\n\t */\n\tgetSortFunction(query:string, options:T.Options) {\n\t\tvar search = this.prepareSearch(query, options);\n\t\treturn this._getSortFunction(search);\n\t}\n\n\t_getSortFunction(search:T.PrepareObj){\n\t\tvar i, n, implicit_score;\n\n\t\tconst self\t= this,\n\t\toptions\t\t= search.options,\n\t\tsort\t\t= (!search.query && options.sort_empty) ? options.sort_empty : options.sort,\n\t\tsort_flds:T.Sort[]\t\t= [],\n\t\tmultipliers:number[]\t= [];\n\n\n\t\tif( typeof sort == 'function' ){\n\t\t\treturn sort.bind(this);\n\t\t}\t\t\t\n\n\t\t/**\n\t\t * Fetches the specified sort field value\n\t\t * from a search result item.\n\t\t *\n\t\t */\n\t\tconst get_field = function(name:string, result:T.ResultItem):string|number {\n\t\t\tif (name === '$score') return result.score;\n\t\t\treturn search.getAttrFn(self.items[result.id], name);\n\t\t};\n\n\t\t// parse options\n\t\tif (sort) {\n\t\t\tfor (i = 0, n = sort.length; i < n; i++) {\n\t\t\t\tif (search.query || sort[i].field !== '$score') {\n\t\t\t\t\tsort_flds.push(sort[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// the \"$score\" field is implied to be the primary\n\t\t// sort field, unless it's manually specified\n\t\tif (search.query) {\n\t\t\timplicit_score = true;\n\t\t\tfor (i = 0, n = sort_flds.length; i < n; i++) {\n\t\t\t\tif (sort_flds[i].field === '$score') {\n\t\t\t\t\timplicit_score = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (implicit_score) {\n\t\t\t\tsort_flds.unshift({field: '$score', direction: 'desc'});\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0, n = sort_flds.length; i < n; i++) {\n\t\t\t\tif (sort_flds[i].field === '$score') {\n\t\t\t\t\tsort_flds.splice(i, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, n = sort_flds.length; i < n; i++) {\n\t\t\tmultipliers.push(sort_flds[i].direction === 'desc' ? -1 : 1);\n\t\t}\n\n\t\t// build function\n\t\tconst sort_flds_count = sort_flds.length;\n\t\tif (!sort_flds_count) {\n\t\t\treturn null;\n\t\t} else if (sort_flds_count === 1) {\n\t\t\tconst sort_fld = sort_flds[0].field;\n\t\t\tconst multiplier = multipliers[0];\n\t\t\treturn function(a:T.ResultItem, b:T.ResultItem) {\n\t\t\t\treturn multiplier * cmp(\n\t\t\t\t\tget_field(sort_fld, a),\n\t\t\t\t\tget_field(sort_fld, b)\n\t\t\t\t);\n\t\t\t};\n\t\t} else {\n\t\t\treturn function(a:T.ResultItem, b:T.ResultItem) {\n\t\t\t\tvar i, result, field;\n\t\t\t\tfor (i = 0; i < sort_flds_count; i++) {\n\t\t\t\t\tfield = sort_flds[i].field;\n\t\t\t\t\tresult = multipliers[i] * cmp(\n\t\t\t\t\t\tget_field(field, a),\n\t\t\t\t\t\tget_field(field, b)\n\t\t\t\t\t);\n\t\t\t\t\tif (result) return result;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t};\n\t\t}\n\t};\n\n\t/**\n\t * Parses a search query and returns an object\n\t * with tokens and fields ready to be populated\n\t * with results.\n\t *\n\t */\n\tprepareSearch(query:string, optsUser:Partial<T.Options>):T.PrepareObj {\n\t\tconst weights:T.Weights = {};\n\t\tvar options\t\t= Object.assign({},optsUser);\n\n\t\tpropToArray(options,'sort');\n\t\tpropToArray(options,'sort_empty');\n\n\t\t// convert fields to new format\n\t\tif( options.fields ){\n\t\t\tpropToArray(options,'fields');\n\t\t\tconst fields:T.Field[] = [];\n\t\t\toptions.fields.forEach((field:string|T.Field) => {\n\t\t\t\tif( typeof field == 'string' ){\n\t\t\t\t\tfield = {field:field,weight:1};\n\t\t\t\t}\n\t\t\t\tfields.push(field);\n\t\t\t\tweights[field.field] = ('weight' in field) ? field.weight : 1;\n\t\t\t});\n\t\t\toptions.fields = fields;\n\t\t}\n\n\n\t\treturn {\n\t\t\toptions\t\t: options,\n\t\t\tquery\t\t: query.toLowerCase().trim(),\n\t\t\ttokens\t\t: this.tokenize(query, options.respect_word_boundaries, weights),\n\t\t\ttotal\t\t: 0,\n\t\t\titems\t\t: [],\n\t\t\tweights\t\t: weights,\n\t\t\tgetAttrFn\t: (options.nesting) ? getAttrNesting : getAttr,\n\t\t};\n\t};\n\n\t/**\n\t * Searches through all items and returns a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string, options:T.Options) : T.PrepareObj {\n\t\tvar self = this, score, search:T.PrepareObj;\n\n\t\tsearch = this.prepareSearch(query, options);\n\t\toptions = search.options;\n\t\tquery = search.query;\n\n\t\t// generate result scoring function\n\t\tconst fn_score = options.score || self._getScoreFunction(search);\n\n\t\t// perform search and sort\n\t\tif (query.length) {\n\t\t\titerate(self.items, (item:T.ResultItem, id:string|number) => {\n\t\t\t\tscore = fn_score(item);\n\t\t\t\tif (options.filter === false || score > 0) {\n\t\t\t\t\tsearch.items.push({'score': score, 'id': id});\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\titerate(self.items, (item:T.ResultItem, id:string|number) => {\n\t\t\t\tsearch.items.push({'score': 1, 'id': id});\n\t\t\t});\n\t\t}\n\n\t\tconst fn_sort = self._getSortFunction(search);\n\t\tif (fn_sort) search.items.sort(fn_sort);\n\n\t\t// apply limits\n\t\tsearch.total = search.items.length;\n\t\tif (typeof options.limit === 'number') {\n\t\t\tsearch.items = search.items.slice(0, options.limit);\n\t\t}\n\n\t\treturn search;\n\t};\n}\n", "\nimport { iterate } from '@orchidjs/sifter/lib/utils';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tlet div = document.createElement('div');\n\t\tdiv.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn div.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\11\\12\\14\\15\\40]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * highlight v3 | MIT license | Johann Burkard <jb@eaio.com>\n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal <beatgates@gmail.com> 2011-6-24 (added regex)\n * - Modified by Brian Reavis <brian@thirdroute.com> 2012-8-27 (cleanup)\n */\n\nimport {replaceNode} from '../vanilla';\n\n\nexport const highlight = (element:HTMLElement, regex:string|RegExp) => {\n\n\tif( regex === null ) return;\n\n\t// convet string to regex\n\tif( typeof regex === 'string' ){\n\n\t\tif( !regex.length ) return;\n\t\tregex = new RegExp(regex, 'i');\n\t}\n\n\n\t// Wrap matching part of text node with highlighting <span>, e.g.\n\t// Soccer -> <span class=\"highlight\">Soc</span>cer for regex = /soc/i\n\tconst highlightText = ( node:Text ):number => {\n\n\t\tvar match = node.data.match(regex);\n\t\tif( match && node.data.length > 0 ){\n\t\t\tvar spannode\t\t= document.createElement('span');\n\t\t\tspannode.className\t= 'highlight';\n\t\t\tvar middlebit\t\t= node.splitText(match.index as number);\n\n\t\t\tmiddlebit.splitText(match[0].length);\n\t\t\tvar middleclone\t\t= middlebit.cloneNode(true);\n\n\t\t\tspannode.appendChild(middleclone);\n\t\t\treplaceNode(middlebit, spannode);\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\n\t// Recurse element node, looking for child text nodes to highlight, unless element\n\t// is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n\tconst highlightChildren = ( node:Element ):void => {\n\t\tif( node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && ( node.className !== 'highlight' || node.tagName !== 'SPAN' ) ){\n\t\t\tfor (var i = 0; i < node.childNodes.length; ++i) {\n\t\t\t\ti += highlightRecursive(node.childNodes[i]);\n\t\t\t}\n\t\t}\n\t};\n\n\n\tconst highlightRecursive = ( node:Node|Element ):number => {\n\n\t\tif( node.nodeType === 3 ){\n\t\t\treturn highlightText(node as Text);\n\t\t}\n\n\t\thighlightChildren(node as Element);\n\n\t\treturn 0;\n\t};\n\n\thighlightRecursive( element );\n};\n\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with(), pass js strict mode, and use without jquery\n */\nexport const removeHighlight = (el:HTMLElement) => {\n\tvar elements = el.querySelectorAll(\"span.highlight\");\n\tArray.prototype.forEach.call(elements, function(el:HTMLElement){\n\t\tvar parent = el.parentNode as Node;\n\t\tparent.replaceChild(el.firstChild as Node, el);\n\t\tparent.normalize();\n\t});\n};\n", "export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n", "\nexport default {\n\toptions: [],\n\toptgroups: [],\n\n\tplugins: [],\n\tdelimiter: ',',\n\tsplitOn: null, // regexp or string for splitting up values from a paste command\n\tpersist: true,\n\tdiacritics: true,\n\tcreate: null,\n\tcreateOnBlur: false,\n\tcreateFilter: null,\n\thighlight: true,\n\topenOnFocus: true,\n\tshouldOpen: null,\n\tmaxOptions: 50,\n\tmaxItems: null,\n\thideSelected: null,\n\tduplicates: false,\n\taddPrecedence: false,\n\tselectOnTab: false,\n\tpreload: null,\n\tallowEmptyOption: false,\n\t//closeAfterSelect: false,\n\n\tloadThrottle: 300,\n\tloadingClass: 'loading',\n\n\tdataAttr: null, //'data-data',\n\toptgroupField: 'optgroup',\n\tvalueField: 'value',\n\tlabelField: 'text',\n\tdisabledField: 'disabled',\n\toptgroupLabelField: 'label',\n\toptgroupValueField: 'value',\n\tlockOptgroupOrder: false,\n\n\tsortField: '$order',\n\tsearchField: ['text'],\n\tsearchConjunction: 'and',\n\n\tmode: null,\n\twrapperClass: 'ts-wrapper',\n\tcontrolClass: 'ts-control',\n\tdropdownClass: 'ts-dropdown',\n\tdropdownContentClass: 'ts-dropdown-content',\n\titemClass: 'item',\n\toptionClass: 'option',\n\n\tdropdownParent: null,\n\tcontrolInput: '<input type=\"text\" autocomplete=\"off\" size=\"1\" />',\n\n\tcopyClassesToDropdown: false,\n\n\tplaceholder: null,\n\thidePlaceholder: null,\n\n\tshouldLoad: function(query:string):boolean{\n\t\treturn query.length > 0;\n\t},\n\n\t/*\n\tload : null, // function(query, callback) { ... }\n\tscore : null, // function(search) { ... }\n\tonInitialize : null, // function() { ... }\n\tonChange : null, // function(value) { ... }\n\tonItemAdd : null, // function(value, $item) { ... }\n\tonItemRemove : null, // function(value) { ... }\n\tonClear : null, // function() { ... }\n\tonOptionAdd : null, // function(value, data) { ... }\n\tonOptionRemove : null, // function(value) { ... }\n\tonOptionClear : null, // function() { ... }\n\tonOptionGroupAdd : null, // function(id, data) { ... }\n\tonOptionGroupRemove : null, // function(id) { ... }\n\tonOptionGroupClear : null, // function() { ... }\n\tonDropdownOpen : null, // function(dropdown) { ... }\n\tonDropdownClose : null, // function(dropdown) { ... }\n\tonType : null, // function(str) { ... }\n\tonDelete : null, // function(values) { ... }\n\t*/\n\n\trender: {\n\t\t/*\n\t\titem: null,\n\t\toptgroup: null,\n\t\toptgroup_header: null,\n\t\toption: null,\n\t\toption_create: null\n\t\t*/\n\t}\n};\n", "\nimport TomSelect from './tom-select';\nimport { TomLoadCallback } from './types/index';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n * 'str' -> 'str'\n * null -> ''\n * undefined -> ''\n * true -> '1'\n * false -> '0'\n * 0 -> '0'\n * 1 -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"');\n};\n\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n * - start\n * - length\n *\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Prevent default\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n", "import defaults from './defaults';\nimport { hash_key } from './utils';\nimport { TomOption, TomSettings } from './types/index';\nimport { iterate } from '@orchidjs/sifter/lib/utils';\nimport { TomInput } from './types/index';\n\n\nexport default function getSettings( input:TomInput, settings_user:Partial<TomSettings>):TomSettings{\n\tvar settings:TomSettings\t= Object.assign({}, defaults, settings_user);\n\n\tvar attr_data\t\t\t\t= settings.dataAttr;\n\tvar field_label\t\t\t\t= settings.labelField;\n\tvar field_value\t\t\t\t= settings.valueField;\n\tvar field_disabled\t\t\t= settings.disabledField;\n\tvar field_optgroup\t\t\t= settings.optgroupField;\n\tvar field_optgroup_label\t= settings.optgroupLabelField;\n\tvar field_optgroup_value\t= settings.optgroupValueField;\n\n\tvar tag_name\t\t\t\t= input.tagName.toLowerCase();\n\tvar placeholder\t\t\t\t= input.getAttribute('placeholder') || input.getAttribute('data-placeholder');\n\n\tif (!placeholder && !settings.allowEmptyOption) {\n\t\tlet option\t\t= input.querySelector('option[value=\"\"]');\n\t\tif( option ){\n\t\t\tplaceholder = option.textContent;\n\t\t}\n\n\t}\n\n\tvar settings_element:{\n\t\tplaceholder\t: null|string,\n\t\toptions\t\t: TomOption[],\n\t\toptgroups\t: TomOption[],\n\t\titems\t\t: string[],\n\t\tmaxItems\t: null|number,\n\t} = {\n\t\tplaceholder\t: placeholder,\n\t\toptions\t\t: [],\n\t\toptgroups\t: [],\n\t\titems\t\t: [],\n\t\tmaxItems\t: null,\n\t};\n\n\n\t/**\n\t * Initialize from a <select> element.\n\t *\n\t */\n\tvar init_select = () => {\n\t\tvar tagName;\n\t\tvar options = settings_element.options;\n\t\tvar optionsMap:{[key:string]:any} = {};\n\t\tvar group_count = 1;\n\n\t\tvar readData = (el:HTMLElement):TomOption => {\n\n\t\t\tvar data\t= Object.assign({},el.dataset); // get plain object from DOMStringMap\n\t\t\tvar json\t= attr_data && data[attr_data];\n\n\t\t\tif( typeof json === 'string' && json.length ){\n\t\t\t\tdata = Object.assign(data,JSON.parse(json));\n\t\t\t}\n\n\t\t\treturn data;\n\t\t};\n\n\t\tvar addOption = (option:HTMLOptionElement, group?:string) => {\n\n\t\t\tvar value = hash_key(option.value);\n\t\t\tif ( value == null ) return;\n\t\t\tif ( !value && !settings.allowEmptyOption) return;\n\n\t\t\t// if the option already exists, it's probably been\n\t\t\t// duplicated in another optgroup. in this case, push\n\t\t\t// the current group to the \"optgroup\" property on the\n\t\t\t// existing option so that it's rendered in both places.\n\t\t\tif (optionsMap.hasOwnProperty(value)) {\n\t\t\t\tif (group) {\n\t\t\t\t\tvar arr = optionsMap[value][field_optgroup];\n\t\t\t\t\tif (!arr) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = group;\n\t\t\t\t\t} else if (!Array.isArray(arr)) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = [arr, group];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarr.push(group);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\tvar option_data = readData(option);\n\t\t\t\toption_data[field_label] = option_data[field_label] || option.textContent;\n\t\t\t\toption_data[field_value] = option_data[field_value] || value;\n\t\t\t\toption_data[field_disabled] = option_data[field_disabled] || option.disabled;\n\t\t\t\toption_data[field_optgroup] = option_data[field_optgroup] || group;\n\t\t\t\toption_data.$option\t\t\t= option;\n\n\t\t\t\toptionsMap[value] = option_data;\n\t\t\t\toptions.push(option_data);\n\t\t\t}\n\n\t\t\tif( option.selected ){\n\t\t\t\tsettings_element.items.push(value);\n\t\t\t}\n\t\t};\n\n\t\tvar addGroup = ( optgroup:HTMLOptGroupElement ) => {\n\t\t\tvar id:string, optgroup_data\n\n\t\t\toptgroup_data\t\t\t\t\t\t\t= readData(optgroup);\n\t\t\toptgroup_data[field_optgroup_label]\t\t= optgroup_data[field_optgroup_label] || optgroup.getAttribute('label') || '';\n\t\t\toptgroup_data[field_optgroup_value]\t\t= optgroup_data[field_optgroup_value] || group_count++;\n\t\t\toptgroup_data[field_disabled]\t\t\t= optgroup_data[field_disabled] || optgroup.disabled;\n\t\t\tsettings_element.optgroups.push(optgroup_data);\n\n\t\t\tid = optgroup_data[field_optgroup_value];\n\n\t\t\titerate(optgroup.children, (option)=>{\n\t\t\t\taddOption(option as HTMLOptionElement, id);\n\t\t\t});\n\n\t\t};\n\n\t\tsettings_element.maxItems = input.hasAttribute('multiple') ? null : 1;\n\n\t\titerate(input.children,(child)=>{\n\t\t\ttagName = child.tagName.toLowerCase();\n\t\t\tif (tagName === 'optgroup') {\n\t\t\t\taddGroup(child as HTMLOptGroupElement);\n\t\t\t} else if (tagName === 'option') {\n\t\t\t\taddOption(child as HTMLOptionElement);\n\t\t\t}\n\t\t});\n\n\t};\n\n\n\t/**\n\t * Initialize from a <input type=\"text\"> element.\n\t *\n\t */\n\tvar init_textbox = () => {\n\t\tconst data_raw = input.getAttribute(attr_data);\n\n\t\tif (!data_raw) {\n\t\t\tvar value = input.value.trim() || '';\n\t\t\tif (!settings.allowEmptyOption && !value.length) return;\n\t\t\tconst values = value.split(settings.delimiter);\n\n\t\t\titerate( values, (value) => {\n\t\t\t\tconst option:TomOption = {};\n\t\t\t\toption[field_label] = value;\n\t\t\t\toption[field_value] = value;\n\t\t\t\tsettings_element.options.push(option);\n\t\t\t});\n\t\t\tsettings_element.items = values;\n\t\t} else {\n\t\t\tsettings_element.options = JSON.parse(data_raw);\n\t\t\titerate( settings_element.options, (opt) => {\n\t\t\t\tsettings_element.items.push(opt[field_value]);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tif (tag_name === 'select') {\n\t\tinit_select();\n\t} else {\n\t\tinit_textbox();\n\t}\n\n\treturn Object.assign( {}, defaults, settings_element, settings_user) as TomSettings;\n};\n", "\nimport MicroEvent from './contrib/microevent';\nimport MicroPlugin from './contrib/microplugin';\nimport Sifter from '@orchidjs/sifter/lib/sifter';\nimport { escape_regex, iterate } from '@orchidjs/sifter/lib/utils';\nimport { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback, TomItem, TomSettings, TomTemplateNames } from './types/index';\nimport {highlight, removeHighlight} from './contrib/highlight';\nimport * as constants from './constants';\nimport getSettings from './getSettings';\nimport {\n\thash_key,\n\tget_hash,\n\tescape_html,\n\tdebounce_events,\n\tgetSelection,\n\tpreventDefault,\n\taddEvent,\n\tloadDebounce,\n\tisKeyDown,\n\tgetId,\n\taddSlashes,\n\tappend\n} from './utils';\n\nimport {\n\tgetDom,\n\tisHtmlString,\n\tescapeQuery,\n\ttriggerEvent,\n\tapplyCSS,\n\taddClasses,\n\tremoveClasses,\n\tparentMatch,\n\tgetTail,\n\tisEmptyObject,\n\tnodeIndex,\n\tsetAttr,\n\treplaceNode\n} from './vanilla';\n\nvar instance_i = 0;\n\nexport default class TomSelect extends MicroPlugin(MicroEvent){\n\n\tpublic control_input\t\t\t: HTMLInputElement;\n\tpublic wrapper\t\t\t\t\t: HTMLElement;\n\tpublic dropdown\t\t\t\t\t: HTMLElement;\n\tpublic control\t\t\t\t\t: HTMLElement;\n\tpublic dropdown_content\t\t\t: HTMLElement;\n\tpublic focus_node\t\t\t\t: HTMLElement;\n\n\tpublic order\t\t\t\t\t: number = 0;\n\tpublic settings\t\t\t\t\t: TomSettings;\n\tpublic input\t\t\t\t\t: TomInput;\n\tpublic tabIndex\t\t\t\t\t: number;\n\tpublic is_select_tag\t\t\t: boolean;\n\tpublic rtl\t\t\t\t\t\t: boolean;\n\tprivate inputId\t\t\t\t\t: string;\n\n\tprivate _destroy\t\t\t\t!: () => void;\n\tpublic sifter\t\t\t\t\t: Sifter;\n\n\n\tpublic isOpen\t\t\t\t\t: boolean = false;\n\tpublic isDisabled\t\t\t\t: boolean = false;\n\tpublic isRequired\t\t\t\t: boolean;\n\tpublic isInvalid\t\t\t\t: boolean = false; // @deprecated 1.8\n\tpublic isValid\t\t\t\t\t: boolean = true; \n\tpublic isLocked\t\t\t\t\t: boolean = false;\n\tpublic isFocused\t\t\t\t: boolean = false;\n\tpublic isInputHidden\t\t\t: boolean = false;\n\tpublic isSetup\t\t\t\t\t: boolean = false;\n\tpublic ignoreFocus\t\t\t\t: boolean = false;\n\tpublic hasOptions\t\t\t\t: boolean = false;\n\tpublic currentResults\t\t\t?: ReturnType<Sifter['search']>;\n\tpublic lastValue\t\t\t\t: string = '';\n\tpublic caretPos\t\t\t\t\t: number = 0;\n\tpublic loading\t\t\t\t\t: number = 0;\n\tpublic loadedSearches\t\t\t: { [key: string]: boolean } = {};\n\n\tpublic activeOption\t\t\t\t: null|HTMLElement = null;\n\tpublic activeItems\t\t\t\t: TomItem[] = [];\n\n\tpublic optgroups\t\t\t\t: TomOptions = {};\n\tpublic options\t\t\t\t\t: TomOptions = {};\n\tpublic userOptions\t\t\t\t: {[key:string]:boolean} = {};\n\tpublic items\t\t\t\t\t: string[] = [];\n\n\n\n\tconstructor( input_arg: string|TomInput, user_settings:Partial<TomSettings> ){\n\t\tsuper();\n\n\t\tinstance_i++;\n\n\t\tvar dir;\n\t\tvar input\t\t\t\t= getDom( input_arg ) as TomInput;\n\n\t\tif( input.tomselect ){\n\t\t\tthrow new Error('Tom Select already initialized on this element');\n\t\t}\n\n\n\t\tinput.tomselect\t\t\t= this;\n\n\n\t\t// detect rtl environment\n\t\tvar computedStyle\t\t= window.getComputedStyle && window.getComputedStyle(input, null);\n\t\tdir\t\t\t\t\t\t= computedStyle.getPropertyValue('direction');\n\n\t\t// setup default state\n\t\tconst settings\t\t\t= getSettings( input, user_settings );\n\t\tthis.settings\t\t\t= settings;\n\t\tthis.input\t\t\t\t= input;\n\t\tthis.tabIndex\t\t\t= input.tabIndex || 0;\n\t\tthis.is_select_tag\t\t= input.tagName.toLowerCase() === 'select';\n\t\tthis.rtl\t\t\t\t= /rtl/i.test(dir);\n\t\tthis.inputId\t\t\t= getId(input, 'tomselect-'+instance_i);\n\t\tthis.isRequired\t\t\t= input.required;\n\n\n\t\t// search system\n\t\tthis.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\n\n\t\t// option-dependent defaults\n\t\tsettings.mode = settings.mode || (settings.maxItems === 1 ? 'single' : 'multi');\n\t\tif (typeof settings.hideSelected !== 'boolean') {\n\t\t\tsettings.hideSelected = settings.mode === 'multi';\n\t\t}\n\n\t\tif( typeof settings.hidePlaceholder !== 'boolean' ){\n\t\t\tsettings.hidePlaceholder = settings.mode !== 'multi';\n\t\t}\n\n\t\t// set up createFilter callback\n\t\tvar filter = settings.createFilter;\n\t\tif( typeof filter !== 'function' ){\n\n\t\t\tif( typeof filter === 'string' ){\n\t\t\t\tfilter = new RegExp(filter);\n\t\t\t}\n\n\t\t\tif( filter instanceof RegExp ){\n\t\t\t\tsettings.createFilter = (input) => (filter as RegExp).test(input);\n\t\t\t}else{\n\t\t\t\tsettings.createFilter = () => true;\n\t\t\t}\n\t\t}\n\n\n\t\tthis.initializePlugins(settings.plugins);\n\t\tthis.setupCallbacks();\n\t\tthis.setupTemplates();\n\t\t\n\t\t\n\t\t// Create all elements\n\t\tconst wrapper\t\t\t= getDom('<div>');\n\t\tconst control\t\t\t= getDom('<div>');\n\t\tconst dropdown\t\t\t= this._render('dropdown');\n\t\tconst dropdown_content\t= getDom(`<div role=\"listbox\" tabindex=\"-1\">`);\n\t\t\t\n\t\tconst classes\t\t\t= this.input.getAttribute('class') || '';\n\t\tconst inputMode\t\t\t= settings.mode;\n\n\t\tvar control_input: HTMLInputElement;\n\n\n\t\taddClasses( wrapper, settings.wrapperClass, classes, inputMode);\n\t\t\n\n\t\taddClasses(control,settings.controlClass);\n\t\tappend( wrapper, control );\n\n\n\t\taddClasses(dropdown, settings.dropdownClass, inputMode);\n\t\tif( settings.copyClassesToDropdown ){ \n\t\t\taddClasses( dropdown, classes);\n\t\t}\n\n\n\t\taddClasses(dropdown_content, settings.dropdownContentClass);\n\t\tappend( dropdown, dropdown_content );\n\n\t\tgetDom( settings.dropdownParent || wrapper ).appendChild( dropdown );\n\n\n\t\t// default controlInput\n\t\tif( isHtmlString(settings.controlInput) ){\n\t\t\tcontrol_input\t\t= getDom(settings.controlInput ) as HTMLInputElement;\n\n\t\t\t// set attributes\n\t\t\tvar attrs = ['autocorrect','autocapitalize','autocomplete'];\n\t\t\titerate(attrs,(attr) => {\n\t\t\t\tif( input.getAttribute(attr) ){\n\t\t\t\t\tsetAttr(control_input,{[attr]:input.getAttribute(attr)});\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tcontrol_input.tabIndex = -1;\n\t\t\tcontrol.appendChild( control_input );\n\t\t\tthis.focus_node\t\t= control_input;\n\t\t\n\t\t// dom element\t\n\t\t}else if( settings.controlInput ){\n\t\t\tcontrol_input\t\t= getDom( settings.controlInput ) as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t}else{\n\t\t\tcontrol_input\t\t= getDom('<input/>') as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control;\n\t\t}\n\t\t\n\t\tthis.wrapper\t\t\t= wrapper;\n\t\tthis.dropdown\t\t\t= dropdown;\n\t\tthis.dropdown_content\t= dropdown_content;\n\t\tthis.control \t\t\t= control;\n\t\tthis.control_input\t\t= control_input;\n\n\t\tthis.setup();\n\t}\n\n\t/**\n\t * set up event bindings.\n\t *\n\t */\t\n\tsetup(){\n\n\t\tconst self = this;\n\t\tconst settings\t\t\t\t= self.settings;\n\t\tconst control_input\t\t\t= self.control_input;\n\t\tconst dropdown\t\t\t\t= self.dropdown;\n\t\tconst dropdown_content\t\t= self.dropdown_content;\n\t\tconst wrapper\t\t\t\t= self.wrapper;\n\t\tconst control\t\t\t\t= self.control;\n\t\tconst input\t\t\t\t\t= self.input;\n\t\tconst focus_node\t\t\t= self.focus_node;\n\t\tconst passive_event\t\t\t= { passive: true };\n\t\tconst listboxId\t\t\t\t= self.inputId +'-ts-dropdown';\n\n\n\t\tsetAttr(dropdown_content,{\n\t\t\tid: listboxId\n\t\t});\n\n\t\tsetAttr(focus_node,{\n\t\t\trole:'combobox',\n\t\t\t'aria-haspopup':'listbox',\n\t\t\t'aria-expanded':'false',\n\t\t\t'aria-controls':listboxId\n\t\t});\n\n\t\tconst control_id\t= getId(focus_node,self.inputId + '-ts-control');\n\t\tconst query\t\t\t= \"label[for='\"+escapeQuery(self.inputId)+\"']\";\n\t\tconst label\t\t\t= document.querySelector(query);\n\t\tconst label_click\t= self.focus.bind(self);\n\t\tif( label ){\n\t\t\taddEvent(label,'click', label_click );\n\t\t\tsetAttr(label,{for:control_id});\n\t\t\tconst label_id = getId(label,self.inputId+'-ts-label');\n\t\t\tsetAttr(focus_node,{'aria-labelledby':label_id});\n\t\t\tsetAttr(dropdown_content,{'aria-labelledby':label_id});\n\t\t}\n\n\t\twrapper.style.width = input.style.width;\n\n\t\tif (self.plugins.names.length) {\n\t\t\tconst classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n\t\t\taddClasses( [wrapper,dropdown], classes_plugins);\n\t\t}\n\n\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag ){\n\t\t\tsetAttr(input,{multiple:'multiple'});\n\t\t}\n\n\t\tif (self.settings.placeholder) {\n\t\t\tsetAttr(control_input,{placeholder:settings.placeholder});\n\t\t}\n\n\t\t// if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n\t\tif (!self.settings.splitOn && self.settings.delimiter) {\n\t\t\tself.settings.splitOn = new RegExp('\\\\s*' + escape_regex(self.settings.delimiter) + '+\\\\s*');\n\t\t}\n\n\t\t// debounce user defined load() if loadThrottle > 0\n\t\t// after initializePlugins() so plugins can create/modify user defined loaders\n\t\tif( settings.load && settings.loadThrottle ){\n\t\t\tsettings.load = loadDebounce(settings.load,settings.loadThrottle)\n\t\t}\n\n\t\tself.control_input.type\t= input.type;\n\t\t\n\t\t\n\t\t// clicking on an option should select it\n\t\taddEvent(dropdown,'click',(evt) => {\n\t\t\tconst option = parentMatch(evt.target as HTMLElement, '[data-selectable]');\n\t\t\tif( option ){\n\t\t\t\tself.onOptionSelect( evt as MouseEvent, option );\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\t\t});\n\n\t\taddEvent(control,'click', (evt) => {\n\n\t\t\tvar target_match = parentMatch( evt.target as HTMLElement, '[data-ts-item]', control);\n\t\t\tif( target_match && self.onItemSelect(evt as MouseEvent, target_match as TomItem) ){\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// retain focus (see control_input mousedown)\n\t\t\tif( control_input.value != '' ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.onClick();\n\t\t\tpreventDefault(evt,true);\n\t\t});\n\n\t\t\n\t\t// keydown on focus_node for arrow_down/arrow_up\n\t\taddEvent(focus_node,'keydown',\t\t(e) => self.onKeyDown(e as KeyboardEvent) );\n\t\t\n\t\t// keypress and input/keyup\n\t\taddEvent(control_input,'keypress',\t(e) => self.onKeyPress(e as KeyboardEvent) );\n\t\taddEvent(control_input,'input',\t\t(e) => self.onInput(e as KeyboardEvent) );\n\t\t\n\t\taddEvent(focus_node,'resize',\t\t() => self.positionDropdown(), passive_event);\n\t\taddEvent(focus_node,'blur', \t\t(e) => self.onBlur(e as FocusEvent) );\n\t\taddEvent(focus_node,'focus',\t\t(e) => self.onFocus(e as MouseEvent) );\n\t\taddEvent(focus_node,'paste',\t\t(e) => self.onPaste(e as MouseEvent) );\n\n\n\t\tconst doc_mousedown = (evt:Event) => {\n\n\t\t\t// blur if target is outside of this instance\n\t\t\t// dropdown is not always inside wrapper\n\t\t\tconst target = evt.composedPath()[0];\n\t\t\tif( !wrapper.contains(target as HTMLElement) && !dropdown.contains(target as HTMLElement) ){\n\t\t\t\tif (self.isFocused) {\n\t\t\t\t\tself.blur();\n\t\t\t\t}\n\t\t\t\tself.inputState();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\t\n\t\t\t\n\t\t\t// retain focus by preventing native handling. if the\n\t\t\t// event target is the input it should not be modified.\n\t\t\t// otherwise, text selection within the input won't work.\n\t\t\t// Fixes bug #212 which is no covered by tests\n\t\t\tif( target == control_input && self.isOpen ){\n\t\t\t\tevt.stopPropagation();\n\n\t\t\t// clicking anywhere in the control should not blur the control_input (which would close the dropdown)\n\t\t\t}else{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\t\t\t\t\t\t\n\t\t};\n\n\t\tvar win_scroll = () => {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown();\n\t\t\t}\n\t\t};\n\n\n\t\taddEvent(document,'mousedown', doc_mousedown);\n\t\taddEvent(window,'scroll', win_scroll, passive_event);\n\t\taddEvent(window,'resize', win_scroll, passive_event);\n\n\t\tthis._destroy = () => {\n\t\t\tdocument.removeEventListener('mousedown',doc_mousedown);\n\t\t\twindow.removeEventListener('sroll',win_scroll);\n\t\t\twindow.removeEventListener('resize',win_scroll);\n\t\t\tif( label ) label.removeEventListener('click',label_click);\n\t\t};\n\n\t\t// store original html and tab index so that they can be\n\t\t// restored when the destroy() method is called.\n\t\tthis.revertSettings = {\n\t\t\tinnerHTML : input.innerHTML,\n\t\t\ttabIndex : input.tabIndex\n\t\t};\n\n\n\t\tinput.tabIndex = -1;\n\t\tinput.insertAdjacentElement('afterend', self.wrapper);\n\n\t\tself.sync(false);\n\t\tsettings.items = [];\n\t\tdelete settings.optgroups;\n\t\tdelete settings.options;\n\n\t\taddEvent(input,'invalid', (e) => {\n\t\t\tif( self.isValid ){\n\t\t\t\tself.isValid = false;\n\t\t\t\tself.isInvalid = true;\n\t\t\t\tself.refreshState();\n\t\t\t}\n\t\t});\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshItems();\n\t\tself.close(false);\n\t\tself.inputState();\n\t\tself.isSetup = true;\n\n\t\tif( input.disabled ){\n\t\t\tself.disable();\n\t\t}else{\n\t\t\tself.enable(); //sets tabIndex\n\t\t}\n\n\t\tself.on('change', this.onChange);\n\n\t\taddClasses(input,'tomselected','ts-hidden-accessible');\n\t\tself.trigger('initialize');\n\n\t\t// preload options\n\t\tif (settings.preload === true) {\n\t\t\tself.preload();\n\t\t}\n\n\t}\n\n\n\t/**\n\t * Register options and optgroups\n\t *\n\t */\n\tsetupOptions(options:TomOption[] = [], optgroups:TomOption[] = []){\n\n\t\t// build options table\n\t\tthis.addOptions(options);\n\n\n\t\t// build optgroup table\n\t\titerate( optgroups, (optgroup) => {\n\t\t\tthis.registerOptionGroup(optgroup);\n\t\t});\n\t}\n\n\t/**\n\t * Sets up default rendering functions.\n\t */\n\tsetupTemplates() {\n\t\tvar self = this;\n\t\tvar field_label = self.settings.labelField;\n\t\tvar field_optgroup = self.settings.optgroupLabelField;\n\n\t\tvar templates = {\n\t\t\t'optgroup': (data:TomOption) => {\n\t\t\t\tlet optgroup = document.createElement('div');\n\t\t\t\toptgroup.className = 'optgroup';\n\t\t\t\toptgroup.appendChild(data.options);\n\t\t\t\treturn optgroup;\n\n\t\t\t},\n\t\t\t'optgroup_header': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n\t\t\t},\n\t\t\t'option': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'item': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'option_create': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>…</div>';\n\t\t\t},\n\t\t\t'no_results':() => {\n\t\t\t\treturn '<div class=\"no-results\">No results found</div>';\n\t\t\t},\n\t\t\t'loading':() => {\n\t\t\t\treturn '<div class=\"spinner\"></div>';\n\t\t\t},\n\t\t\t'not_loading':() => {},\n\t\t\t'dropdown':() => {\n\t\t\t\treturn '<div></div>';\n\t\t\t}\n\t\t};\n\n\n\t\tself.settings.render = Object.assign({}, templates, self.settings.render);\n\t}\n\n\t/**\n\t * Maps fired events to callbacks provided\n\t * in the settings used when creating the control.\n\t */\n\tsetupCallbacks() {\n\t\tvar key, fn;\n\t\tvar callbacks:{[key:string]:string} = {\n\t\t\t'initialize' : 'onInitialize',\n\t\t\t'change' : 'onChange',\n\t\t\t'item_add' : 'onItemAdd',\n\t\t\t'item_remove' : 'onItemRemove',\n\t\t\t'item_select' : 'onItemSelect',\n\t\t\t'clear' : 'onClear',\n\t\t\t'option_add' : 'onOptionAdd',\n\t\t\t'option_remove' : 'onOptionRemove',\n\t\t\t'option_clear' : 'onOptionClear',\n\t\t\t'optgroup_add' : 'onOptionGroupAdd',\n\t\t\t'optgroup_remove' : 'onOptionGroupRemove',\n\t\t\t'optgroup_clear' : 'onOptionGroupClear',\n\t\t\t'dropdown_open' : 'onDropdownOpen',\n\t\t\t'dropdown_close' : 'onDropdownClose',\n\t\t\t'type' : 'onType',\n\t\t\t'load' : 'onLoad',\n\t\t\t'focus' : 'onFocus',\n\t\t\t'blur' : 'onBlur'\n\t\t};\n\n\t\tfor (key in callbacks) {\n\n\t\t\tfn = this.settings[callbacks[key] as (keyof TomSettings)];\n\t\t\tif (fn) this.on(key, fn);\n\n\t\t}\n\t}\n\n\t/**\n\t * Sync the Tom Select instance with the original input or select\n\t *\n\t */\n\tsync(get_settings:boolean=true):void{\n\t\tconst self\t\t= this;\n\t\tconst settings\t= get_settings ? getSettings( self.input, {delimiter:self.settings.delimiter} as TomSettings ) : self.settings;\n\n\t\tself.setupOptions(settings.options,settings.optgroups);\n\n\t\tself.setValue(settings.items,true); // silent prevents recursion\n\n\t\tself.lastQuery = null; // so updated options will be displayed in dropdown\n\t}\n\n\t/**\n\t * Triggered when the main control element\n\t * has a click event.\n\t *\n\t */\n\tonClick():void {\n\t\tvar self = this;\n\n\t\tif( self.activeItems.length > 0 ){\n\t\t\tself.clearActiveItems();\n\t\t\tself.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.isFocused && self.isOpen ){\n\t\t\tself.blur();\n\t\t} else {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated v1.7\n\t *\n\t */\n\tonMouseDown():void {}\n\n\t/**\n\t * Triggered when the value of the control has been changed.\n\t * This should propagate the event to the original DOM\n\t * input / select element.\n\t */\n\tonChange() {\n\t\ttriggerEvent(this.input, 'input');\n\t\ttriggerEvent(this.input, 'change');\n\t}\n\n\t/**\n\t * Triggered on <input> paste.\n\t *\n\t */\n\tonPaste(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isInputHidden || self.isLocked ){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\t\t\n\n\t\t// If a regex or string is included, this will split the pasted\n\t\t// input and create Items for each separate value\n\t\tif (self.settings.splitOn) {\n\n\t\t\t// Wait for pasted text to be recognized in value\n\t\t\tsetTimeout(() => {\n\t\t\t\tvar pastedText = self.inputValue();\n\t\t\t\tif( !pastedText.match(self.settings.splitOn)){\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tvar splitInput = pastedText.trim().split(self.settings.splitOn);\n\t\t\t\titerate( splitInput, (piece) => {\n\t\t\t\t\tself.createItem(piece);\n\t\t\t\t});\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keypress.\n\t *\n\t */\n\tonKeyPress(e:KeyboardEvent):void {\n\t\tvar self = this;\n\t\tif(self.isLocked){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t\tvar character = String.fromCharCode(e.keyCode || e.which);\n\t\tif (self.settings.create && self.settings.mode === 'multi' && character === self.settings.delimiter) {\n\t\t\tself.createItem();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keydown.\n\t *\n\t */\n\tonKeyDown(e:KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif (self.isLocked) {\n\t\t\tif (e.keyCode !== constants.KEY_TAB) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\n\t\t\t// ctrl+A: select all\n\t\t\tcase constants.KEY_A:\n\t\t\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\t\t\tif( self.control_input.value == '' ){\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\tself.selectAll();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// esc: close dropdown\n\t\t\tcase constants.KEY_ESC:\n\t\t\t\tif (self.isOpen) {\n\t\t\t\t\tpreventDefault(e,true);\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\n\t\t\t// down: open dropdown or move selection down\n\t\t\tcase constants.KEY_DOWN:\n\t\t\t\tif (!self.isOpen && self.hasOptions) {\n\t\t\t\t\tself.open();\n\t\t\t\t} else if (self.activeOption) {\n\t\t\t\t\tlet next = self.getAdjacent(self.activeOption, 1);\n\t\t\t\t\tif (next) self.setActiveOption(next);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// up: move selection up\n\t\t\tcase constants.KEY_UP:\n\t\t\t\tif (self.activeOption) {\n\t\t\t\t\tlet prev = self.getAdjacent(self.activeOption, -1);\n\t\t\t\t\tif (prev) self.setActiveOption(prev);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// return: select active option\n\t\t\tcase constants.KEY_RETURN:\n\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// if the option_create=null, the dropdown might be closed\n\t\t\t\t}else if (self.settings.create && self.createItem()) {\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t}\n\t\t\t\treturn;\n\n\t\t\t// left: modifiy item selection to the left\n\t\t\tcase constants.KEY_LEFT:\n\t\t\t\tself.advanceSelection(-1, e);\n\t\t\t\treturn;\n\n\t\t\t// right: modifiy item selection to the right\n\t\t\tcase constants.KEY_RIGHT:\n\t\t\t\tself.advanceSelection(1, e);\n\t\t\t\treturn;\n\n\t\t\t// tab: select active option and/or create item\n\t\t\tcase constants.KEY_TAB:\n\n\t\t\t\tif( self.settings.selectOnTab ){\n\t\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\n\t\t\t\t\t\t// prevent default [tab] behaviour of jump to the next field\n\t\t\t\t\t\t// if select isFull, then the dropdown won't be open and [tab] will work normally\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t\tif (self.settings.create && self.createItem()) {\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\n\t\t\t// delete|backspace: delete items\n\t\t\tcase constants.KEY_BACKSPACE:\n\t\t\tcase constants.KEY_DELETE:\n\t\t\t\tself.deleteSelection(e);\n\t\t\t\treturn;\n\t\t}\n\n\t\t// don't enter text in the control_input when active items are selected\n\t\tif( self.isInputHidden && !isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\tpreventDefault(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keyup.\n\t *\n\t */\n\tonInput(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isLocked ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar value = self.inputValue();\n\t\tif (self.lastValue !== value) {\n\t\t\tself.lastValue = value;\n\n\t\t\tif( self.settings.shouldLoad.call(self,value) ){\n\t\t\t\tself.load(value);\n\t\t\t}\n\n\t\t\tself.refreshOptions();\n\t\t\tself.trigger('type', value);\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered on <input> focus.\n\t *\n\t */\n\tonFocus(e?:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\t\tvar wasFocused = self.isFocused;\n\n\t\tif (self.isDisabled) {\n\t\t\tself.blur();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.ignoreFocus) return;\n\t\tself.isFocused = true;\n\t\tif( self.settings.preload === 'focus' ) self.preload();\n\n\t\tif (!wasFocused) self.trigger('focus');\n\n\t\tif (!self.activeItems.length) {\n\t\t\tself.showInput();\n\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\n\t\t}\n\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Triggered on <input> blur.\n\t *\n\t */\n\tonBlur(e?:FocusEvent):void {\n\n\t\tif( document.hasFocus() === false ) return;\n\n\t\tvar self = this;\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\t\tself.ignoreFocus = false;\n\n\t\tvar deactivate = () => {\n\t\t\tself.close();\n\t\t\tself.setActiveItem();\n\t\t\tself.setCaret(self.items.length);\n\t\t\tself.trigger('blur');\n\t\t};\n\n\t\tif (self.settings.create && self.settings.createOnBlur) {\n\t\t\tself.createItem(null, false, deactivate);\n\t\t} else {\n\t\t\tdeactivate();\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered when the user clicks on an option\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionSelect( evt:MouseEvent|KeyboardEvent, option:HTMLElement ){\n\t\tvar value, self = this;\n\n\n\t\t// should not be possible to trigger a option under a disabled optgroup\n\t\tif( option.parentElement && option.parentElement.matches('[data-disabled]') ){\n\t\t\treturn;\n\t\t}\n\n\n\t\tif( option.classList.contains('create') ){\n\t\t\tself.createItem(null, true, () => {\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = option.dataset.value;\n\t\t\tif (typeof value !== 'undefined') {\n\t\t\t\tself.lastQuery = null;\n\t\t\t\tself.addItem(value);\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( !self.settings.hideSelected && evt.type && /click/.test(evt.type) ){\n\t\t\t\t\tself.setActiveOption(option);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Return true if the given option can be selected\n\t *\n\t */\n\tcanSelect(option:HTMLElement|null):boolean{\n\n\t\tif( this.isOpen && option && this.dropdown_content.contains(option) ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Triggered when the user clicks on an item\n\t * that has been selected.\n\t *\n\t */\n\tonItemSelect( evt?:MouseEvent, item?:TomItem ):boolean{\n\t\tvar self = this;\n\n\t\tif( !self.isLocked && self.settings.mode === 'multi' ){\n\t\t\tpreventDefault(evt);\n\t\t\tself.setActiveItem(item, evt);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determines whether or not to invoke\n\t * the user-provided option provider / loader\n\t *\n\t * Note, there is a subtle difference between\n\t * this.canLoad() and this.settings.shouldLoad();\n\t *\n\t *\t- settings.shouldLoad() is a user-input validator.\n\t *\tWhen false is returned, the not_loading template\n\t *\twill be added to the dropdown\n\t *\n\t *\t- canLoad() is lower level validator that checks\n\t * \tthe Tom Select instance. There is no inherent user\n\t *\tfeedback when canLoad returns false\n\t *\n\t */\n\tcanLoad(value:string):boolean{\n\n\t\tif( !this.settings.load ) return false;\n\t\tif( this.loadedSearches.hasOwnProperty(value) ) return false;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Invokes the user-provided option provider / loader.\n\t *\n\t */\n\tload(value:string):void {\n\t\tconst self = this;\n\n\t\tif( !self.canLoad(value) ) return;\n\n\t\taddClasses(self.wrapper,self.settings.loadingClass);\n\t\tself.loading++;\n\n\t\tconst callback = self.loadCallback.bind(self);\n\t\tself.settings.load.call(self, value, callback);\n\t}\n\n\t/**\n\t * Invoked by the user-provided option provider\n\t *\n\t */\n\tloadCallback( options:TomOption[], optgroups:TomOption[] ):void{\n\t\tconst self = this;\n\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\tself.lastQuery = null;\n\n\t\tself.clearActiveOption(); // when new results load, focus should be on first option\n\t\tself.setupOptions(options,optgroups);\n\n\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\n\t\tif (!self.loading) {\n\t\t\tremoveClasses(self.wrapper,self.settings.loadingClass);\n\t\t}\n\n\t\tself.trigger('load', options, optgroups);\n\t}\n\t\n\tpreload():void{\n\t\tvar classList = this.wrapper.classList;\n\t\tif( classList.contains('preloaded') ) return;\n\t\tclassList.add('preloaded');\n\t\tthis.load('');\n\t}\n\n\n\t/**\n\t * Sets the input field of the control to the specified value.\n\t *\n\t */\n\tsetTextboxValue(value:string = '') {\n\t\tvar input = this.control_input;\n\t\tvar changed = input.value !== value;\n\t\tif (changed) {\n\t\t\tinput.value = value;\n\t\t\ttriggerEvent(input,'update');\n\t\t\tthis.lastValue = value;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the value of the control. If multiple items\n\t * can be selected (e.g. <select multiple>), this returns\n\t * an array. If only one item can be selected, this\n\t * returns a string.\n\t *\n\t */\n\tgetValue():string|string[] {\n\n\t\tif( this.is_select_tag && this.input.hasAttribute('multiple')) {\n\t\t\treturn this.items;\n\t\t}\n\n\t\treturn this.items.join(this.settings.delimiter);\n\t}\n\n\t/**\n\t * Resets the selected items to the given value.\n\t *\n\t */\n\tsetValue( value:string|string[], silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change'];\n\n\t\tdebounce_events(this, events,() => {\n\t\t\tthis.clear(silent);\n\t\t\tthis.addItems(value, silent);\n\t\t});\n\t}\n\n\n\t/**\n\t * Resets the number of max items to the given value\n\t *\n\t */\n\tsetMaxItems(value:null|number){\n\t\tif(value === 0) value = null; //reset to unlimited items.\n\t\tthis.settings.maxItems = value;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Sets the selected item.\n\t *\n\t */\n\tsetActiveItem( item?:TomItem, e?:MouseEvent|KeyboardEvent ){\n\t\tvar self = this;\n\t\tvar eventName;\n\t\tvar i, begin, end, swap;\n\t\tvar last;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\t// clear the active selection\n\t\tif( !item ){\n\t\t\tself.clearActiveItems();\n\t\t\tif (self.isFocused) {\n\t\t\t\tself.showInput();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// modify selection\n\t\teventName = e && e.type.toLowerCase();\n\n\t\tif (eventName === 'click' && isKeyDown('shiftKey',e) && self.activeItems.length) {\n\t\t\tlast\t= self.getLastActive();\n\t\t\tbegin\t= Array.prototype.indexOf.call(self.control.children, last);\n\t\t\tend\t\t= Array.prototype.indexOf.call(self.control.children, item);\n\n\t\t\tif (begin > end) {\n\t\t\t\tswap = begin;\n\t\t\t\tbegin = end;\n\t\t\t\tend = swap;\n\t\t\t}\n\t\t\tfor (i = begin; i <= end; i++) {\n\t\t\t\titem = self.control.children[i] as TomItem;\n\t\t\t\tif (self.activeItems.indexOf(item) === -1) {\n\t\t\t\t\tself.setActiveItemClass(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpreventDefault(e);\n\t\t} else if ((eventName === 'click' && isKeyDown(constants.KEY_SHORTCUT,e) ) || (eventName === 'keydown' && isKeyDown('shiftKey',e))) {\n\t\t\tif( item.classList.contains('active') ){\n\t\t\t\tself.removeActiveItem( item );\n\t\t\t} else {\n\t\t\t\tself.setActiveItemClass(item);\n\t\t\t}\n\t\t} else {\n\t\t\tself.clearActiveItems();\n\t\t\tself.setActiveItemClass(item);\n\t\t}\n\n\t\t// ensure control has focus\n\t\tself.hideInput();\n\t\tif (!self.isFocused) {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Set the active and last-active classes\n\t *\n\t */\n\tsetActiveItemClass( item:TomItem ){\n\t\tconst self = this;\n\t\tconst last_active = self.control.querySelector('.last-active');\n\t\tif( last_active ) removeClasses(last_active as HTMLElement,'last-active');\n\n\t\taddClasses(item,'active last-active');\n\t\tself.trigger('item_select', item);\n\t\tif( self.activeItems.indexOf(item) == -1 ){\n\t\t\tself.activeItems.push( item );\n\t\t}\n\t}\n\n\t/**\n\t * Remove active item\n\t *\n\t */\n\tremoveActiveItem( item:TomItem ){\n\t\tvar idx = this.activeItems.indexOf(item);\n\t\tthis.activeItems.splice(idx, 1);\n\t\tremoveClasses(item,'active');\n\t}\n\n\t/**\n\t * Clears all the active items\n\t *\n\t */\n\tclearActiveItems(){\n\t\tremoveClasses(this.activeItems,'active');\n\t\tthis.activeItems = [];\n\t}\n\n\t/**\n\t * Sets the selected item in the dropdown menu\n\t * of available options.\n\t *\n\t */\n\tsetActiveOption( option:null|HTMLElement ):void{\n\n\t\tif( option === this.activeOption ){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearActiveOption();\n\t\tif( !option ) return;\n\n\t\tthis.activeOption = option;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':option.getAttribute('id')});\n\t\tsetAttr(option,{'aria-selected':'true'});\n\t\taddClasses(option,'active');\n\t\tthis.scrollToOption(option);\n\t}\n\n\t/**\n\t * Sets the dropdown_content scrollTop to display the option\n\t *\n\t */\n\tscrollToOption( option:null|HTMLElement, behavior?:string ):void{\n\n\t\tif( !option ) return;\n\n\t\tconst content\t\t= this.dropdown_content;\n\t\tconst height_menu\t= content.clientHeight;\n\t\tconst scrollTop\t\t= content.scrollTop || 0;\n\t\tconst height_item\t= option.offsetHeight;\n\t\tconst y\t\t\t\t= option.getBoundingClientRect().top - content.getBoundingClientRect().top + scrollTop;\n\n\t\tif (y + height_item > height_menu + scrollTop) {\n\t\t\tthis.scroll(y - height_menu + height_item, behavior);\n\n\t\t} else if (y < scrollTop) {\n\t\t\tthis.scroll(y, behavior);\n\t\t}\n\t}\n\n\t/**\n\t * Scroll the dropdown to the given position\n\t *\n\t */\n\tscroll( scrollTop:number, behavior?:string ):void{\n\t\tconst content = this.dropdown_content;\n\t\tif( behavior ){\n\t\t\tcontent.style.scrollBehavior = behavior;\n\t\t}\n\t\tcontent.scrollTop = scrollTop;\n\t\tcontent.style.scrollBehavior = '';\n\t}\n\n\t/**\n\t * Clears the active option\n\t *\n\t */\n\tclearActiveOption(){\n\t\tif( this.activeOption ){\n\t\t\tremoveClasses(this.activeOption,'active');\n\t\t\tsetAttr(this.activeOption,{'aria-selected':null});\n\t\t}\n\t\tthis.activeOption = null;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':null});\n\t}\n\n\n\t/**\n\t * Selects all items (CTRL + A).\n\t */\n\tselectAll() {\n\n\t\tif (this.settings.mode === 'single') return;\n\n\t\tconst activeItems = this.controlChildren();\n\n\t\tif( !activeItems.length ) return;\n\t\t\n\t\tthis.hideInput();\n\t\tthis.close();\n\n\t\tthis.activeItems = activeItems;\n\t\taddClasses( activeItems, 'active' );\n\t}\n\n\t/**\n\t * Determines if the control_input should be in a hidden or visible state\n\t *\n\t */\n\tinputState(){\n\t\tvar self = this;\n\n\t\tif( !self.control.contains(self.control_input) ) return;\n\t\t\t\t\t\n\t\tsetAttr(self.control_input,{placeholder:self.settings.placeholder});\n\n\t\tif( self.activeItems.length > 0 || (!self.isFocused && self.settings.hidePlaceholder && self.items.length > 0) ){\n\t\t\tself.setTextboxValue();\n\t\t\tself.isInputHidden = true;\n\t\t\t\n\t\t}else{\n\t\t\t\t\t\t\n\t\t\tif( self.settings.hidePlaceholder && self.items.length > 0 ){\n\t\t\t\tsetAttr(self.control_input,{placeholder:''});\n\t\t\t}\t\t\t\n\t\t\tself.isInputHidden = false;\n\t\t}\n\n\t\tself.wrapper.classList.toggle('input-hidden', self.isInputHidden );\n\t}\n\n\t/**\n\t * Hides the input element out of view, while\n\t * retaining its focus.\n\t * @deprecated 1.3\n\t */\n\thideInput() {\n\t\tthis.inputState();\n\t}\n\n\t/**\n\t * Restores input visibility.\n\t * @deprecated 1.3\n\t */\n\tshowInput() {\n\t\tthis.inputState();\n\t}\n\n\t/**\n\t * Get the input value\n\t */\n\tinputValue(){\n\t\treturn this.control_input.value.trim();\n\t}\n\n\t/**\n\t * Gives the control focus.\n\t */\n\tfocus() {\n\t\tvar self = this;\n\t\tif (self.isDisabled) return;\n\n\t\tself.ignoreFocus = true;\n\t\t\n\t\tif( self.control_input.offsetWidth ){\n\t\t\tself.control_input.focus();\n\t\t}else{\n\t\t\tself.focus_node.focus();\n\t\t}\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tself.ignoreFocus = false;\n\t\t\tself.onFocus();\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Forces the control out of focus.\n\t *\n\t */\n\tblur():void {\n\t\tthis.focus_node.blur();\n\t\tthis.onBlur();\n\t}\n\n\t/**\n\t * Returns a function that scores an object\n\t * to show how good of a match it is to the\n\t * provided query.\n\t *\n\t * @return {function}\n\t */\n\tgetScoreFunction(query:string) {\n\t\treturn this.sifter.getScoreFunction(query, this.getSearchOptions());\n\t}\n\n\t/**\n\t * Returns search options for sifter (the system\n\t * for scoring and sorting results).\n\t *\n\t * @see https://github.com/orchidjs/sifter.js\n\t * @return {object}\n\t */\n\tgetSearchOptions() {\n\t\tvar settings = this.settings;\n\t\tvar sort = settings.sortField;\n\t\tif (typeof settings.sortField === 'string') {\n\t\t\tsort = [{field: settings.sortField}];\n\t\t}\n\n\t\treturn {\n\t\t\tfields : settings.searchField,\n\t\t\tconjunction : settings.searchConjunction,\n\t\t\tsort : sort,\n\t\t\tnesting : settings.nesting\n\t\t};\n\t}\n\n\t/**\n\t * Searches through available options and returns\n\t * a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string) : ReturnType<Sifter['search']>{\n\t\tvar i, result, calculateScore;\n\t\tvar self = this;\n\t\tvar options = this.getSearchOptions();\n\n\t\t// validate user-provided result scoring function\n\t\tif ( self.settings.score ){\n\t\t\tcalculateScore = self.settings.score.call(self,query);\n\t\t\tif (typeof calculateScore !== 'function') {\n\t\t\t\tthrow new Error('Tom Select \"score\" setting must be a function that returns a function');\n\t\t\t}\n\t\t}\n\n\t\t// perform search\n\t\tif (query !== self.lastQuery) {\n\t\t\tself.lastQuery\t\t\t= query;\n\t\t\tresult\t\t\t\t\t= self.sifter.search(query, Object.assign(options, {score: calculateScore}));\n\t\t\tself.currentResults\t\t= result;\n\t\t} else {\n\t\t\tresult\t\t\t\t\t= Object.assign( {}, self.currentResults);\n\t\t}\n\n\t\t// filter out selected items\n\t\tif( self.settings.hideSelected ){\n\t\t\tfor (i = result.items.length - 1; i >= 0; i--) {\n\t\t\t\tlet hashed = hash_key(result.items[i].id);\n\t\t\t\tif( hashed && self.items.indexOf(hashed) !== -1 ){\n\t\t\t\t\tresult.items.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Refreshes the list of available options shown\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\trefreshOptions( triggerDropdown:boolean = true ){\n\t\tvar i, j, k, n, optgroup, optgroups, html:DocumentFragment, has_create_option, active_value, active_group;\n\t\tvar create;\n\t\tconst groups: {[key:string]:DocumentFragment} = {};\n\n\t\tconst groups_order:string[]\t= [];\n\t\tvar self\t\t\t\t\t= this;\n\t\tvar query\t\t\t\t\t= self.inputValue();\n\t\tvar results\t\t\t\t\t= self.search(query);\n\t\tvar active_option\t\t\t= self.activeOption;\n\t\tvar show_dropdown\t\t\t= self.settings.shouldOpen || false;\n\t\tvar dropdown_content\t\t= self.dropdown_content;\n\n\t\tif( active_option ){\n\t\t\tactive_value = active_option.dataset.value;\n\t\t\tactive_group = active_option.closest('[data-group]') as HTMLElement;\n\t\t}\n\n\t\t// build markup\n\t\tn = results.items.length;\n\t\tif (typeof self.settings.maxOptions === 'number') {\n\t\t\tn = Math.min(n, self.settings.maxOptions);\n\t\t}\n\n\t\tif( n > 0 ){\n\t\t\tshow_dropdown = true;\n\t\t}\n\n\t\t// render and group available options individually\n\t\tfor (i = 0; i < n; i++) {\n\n\t\t\t// get option dom element\n\t\t\tlet opt_value\t\t= results.items[i].id;\n\t\t\tlet option\t\t\t= self.options[opt_value];\n\t\t\tlet option_el\t\t= self.getOption(opt_value,true) as HTMLElement;\n\t\t\t\n\t\t\t\n\t\t\t// toggle 'selected' class\n\t\t\tif( !self.settings.hideSelected ){\n\t\t\t\toption_el.classList.toggle('selected', self.items.includes(opt_value) );\n\t\t\t}\n\n\t\t\toptgroup = option[self.settings.optgroupField] || '';\n\t\t\toptgroups = Array.isArray(optgroup) ? optgroup : [optgroup];\n\n\t\t\tfor (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n\t\t\t\toptgroup = optgroups[j];\n\t\t\t\tif (!self.optgroups.hasOwnProperty(optgroup)) {\n\t\t\t\t\toptgroup = '';\n\t\t\t\t}\n\t\t\t\tif (!groups.hasOwnProperty(optgroup)) {\n\t\t\t\t\tgroups[optgroup] = document.createDocumentFragment();\n\t\t\t\t\tgroups_order.push(optgroup);\n\t\t\t\t}\n\n\t\t\t\t// nodes can only have one parent, so if the option is in mutple groups, we need a clone\n\t\t\t\tif( j > 0 ){\n\t\t\t\t\toption_el = option_el.cloneNode(true) as HTMLElement;\n\t\t\t\t\tsetAttr(option_el,{id: option.$id+'-clone-'+j,'aria-selected':null});\n\t\t\t\t\toption_el.classList.add('ts-cloned');\n\t\t\t\t\tremoveClasses(option_el,'active');\n\t\t\t\t}\n\n\t\t\t\t// make sure we keep the activeOption in the same group\n\t\t\t\tif( active_value == opt_value && active_group && active_group.dataset.group === optgroup ){\n\t\t\t\t\tactive_option = option_el;\n\t\t\t\t}\n\n\t\t\t\tgroups[optgroup].appendChild(option_el);\n\t\t\t}\n\t\t}\n\n\t\t// sort optgroups\n\t\tif (this.settings.lockOptgroupOrder) {\n\t\t\tgroups_order.sort((a, b) => {\n\t\t\t\tvar a_order = self.optgroups[a] && self.optgroups[a].$order || 0;\n\t\t\t\tvar b_order = self.optgroups[b] && self.optgroups[b].$order || 0;\n\t\t\t\treturn a_order - b_order;\n\t\t\t});\n\t\t}\n\n\t\t// render optgroup headers & join groups\n\t\thtml = document.createDocumentFragment();\n\t\titerate( groups_order, (optgroup) => {\n\t\t\tif (self.optgroups.hasOwnProperty(optgroup) && groups[optgroup].children.length) {\n\n\t\t\t\tlet group_options = document.createDocumentFragment();\n\t\t\t\tlet header = self.render('optgroup_header', self.optgroups[optgroup]);\n\t\t\t\tappend( group_options, header );\n\t\t\t\tappend( group_options, groups[optgroup] );\n\n\t\t\t\tlet group_html = self.render('optgroup', {group:self.optgroups[optgroup],options:group_options} );\n\n\t\t\t\tappend( html, group_html );\n\n\t\t\t} else {\n\t\t\t\tappend( html, groups[optgroup] );\n\t\t\t}\n\t\t});\n\n\t\tdropdown_content.innerHTML = '';\n\t\tappend( dropdown_content, html );\n\n\t\t// highlight matching terms inline\n\t\tif (self.settings.highlight) {\n\t\t\tremoveHighlight( dropdown_content );\n\t\t\tif (results.query.length && results.tokens.length) {\n\t\t\t\titerate( results.tokens, (tok) => {\n\t\t\t\t\thighlight( dropdown_content, tok.regex);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// helper method for adding templates to dropdown\n\t\tvar add_template = (template:TomTemplateNames) => {\n\t\t\tlet content = self.render(template,{input:query});\n\t\t\tif( content ){\n\t\t\t\tshow_dropdown = true;\n\t\t\t\tdropdown_content.insertBefore(content, dropdown_content.firstChild);\n\t\t\t}\n\t\t\treturn content;\n\t\t};\n\t\t\n\n\t\t// add loading message\n\t\tif( self.loading ){\n\t\t\tadd_template('loading');\n\t\t\t\n\t\t// invalid query\n\t\t}else if( !self.settings.shouldLoad.call(self,query) ){\n\t\t\tadd_template('not_loading');\n\n\t\t// add no_results message\n\t\t}else if( results.items.length === 0 ){\n\t\t\tadd_template('no_results');\n\n\t\t}\n\n\n\n\t\t// add create option\n\t\thas_create_option = self.canCreate(query);\n\t\tif (has_create_option) {\n\t\t\tcreate = add_template('option_create');\n\t\t}\n\n\n\t\t// activate\n\t\tself.hasOptions = results.items.length > 0 || has_create_option;\n\t\tif( show_dropdown ){\n\n\t\t\tif (results.items.length > 0) {\n\n\t\t\t\tif( !dropdown_content.contains(active_option) && self.settings.mode === 'single' && self.items.length ){\n\t\t\t\t\tactive_option = self.getOption(self.items[0]);\n\t\t\t\t}\n\n\t\t\t\tif( !dropdown_content.contains(active_option) ){\n\n\t\t\t\t\tlet active_index = 0;\n\t\t\t\t\tif( create && !self.settings.addPrecedence ){\n\t\t\t\t\t\tactive_index = 1;\n\t\t\t\t\t}\n\t\t\t\t\tactive_option = self.selectable()[active_index] as HTMLElement;\n\t\t\t\t}\n\n\t\t\t}else if( create ){\n\t\t\t\tactive_option = create;\n\t\t\t}\n\n\t\t\tif( triggerDropdown && !self.isOpen ){\n\t\t\t\tself.open();\n\t\t\t\tself.scrollToOption(active_option,'auto');\n\t\t\t}\n\t\t\tself.setActiveOption(active_option);\n\n\t\t}else{\n\t\t\tself.clearActiveOption();\n\t\t\tif( triggerDropdown && self.isOpen ){\n\t\t\t\tself.close(false); // if create_option=null, we want the dropdown to close but not reset the textbox value\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return list of selectable options\n\t *\n\t */\n\tselectable():NodeList{\n\t\treturn this.dropdown_content.querySelectorAll('[data-selectable]');\n\t}\n\n\n\n\t/**\n\t * Adds an available option. If it already exists,\n\t * nothing will happen. Note: this does not refresh\n\t * the options list dropdown (use `refreshOptions`\n\t * for that).\n\t *\n\t * Usage:\n\t *\n\t * this.addOption(data)\n\t *\n\t */\n\taddOption( data:TomOption, user_created = false ):false|string {\n\t\tconst self = this;\n\n\t\t// @deprecated 1.7.7\n\t\t// use addOptions( array, user_created ) for adding multiple options\n\t\tif( Array.isArray(data) ){\n\t\t\tself.addOptions( data, user_created);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst key = hash_key(data[self.settings.valueField]);\n\t\tif( key === null || self.options.hasOwnProperty(key) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tdata.$order\t\t\t= data.$order || ++self.order;\n\t\tdata.$id\t\t\t= self.inputId + '-opt-' + data.$order;\n\t\tself.options[key]\t= data;\n\t\tself.lastQuery\t\t= null;\n\n\t\tif( user_created ){\n\t\t\tself.userOptions[key] = user_created;\n\t\t\tself.trigger('option_add', key, data);\n\t\t}\n\n\t\treturn key;\n\t}\n\t\n\t/**\n\t * Add multiple options\n\t *\n\t */\n\taddOptions( data:TomOption[], user_created = false ):void{\n\t\titerate( data, (dat) => {\n\t\t\tthis.addOption(dat, user_created);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 1.7.7\n\t */\n\tregisterOption( data:TomOption ):false|string {\n\t\treturn this.addOption(data);\n\t}\n\n\t/**\n\t * Registers an option group to the pool of option groups.\n\t *\n\t * @return {boolean|string}\n\t */\n\tregisterOptionGroup(data:TomOption) {\n\t\tvar key = hash_key(data[this.settings.optgroupValueField]);\n\n\t\tif ( key === null ) return false;\n\n\t\tdata.$order = data.$order || ++this.order;\n\t\tthis.optgroups[key] = data;\n\t\treturn key;\n\t}\n\n\t/**\n\t * Registers a new optgroup for options\n\t * to be bucketed into.\n\t *\n\t */\n\taddOptionGroup(id:string, data:TomOption) {\n\t\tvar hashed_id;\n\t\tdata[this.settings.optgroupValueField] = id;\n\n\t\tif( hashed_id = this.registerOptionGroup(data) ){\n\t\t\tthis.trigger('optgroup_add', hashed_id, data);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an existing option group.\n\t *\n\t */\n\tremoveOptionGroup(id:string) {\n\t\tif (this.optgroups.hasOwnProperty(id)) {\n\t\t\tdelete this.optgroups[id];\n\t\t\tthis.clearCache();\n\t\t\tthis.trigger('optgroup_remove', id);\n\t\t}\n\t}\n\n\t/**\n\t * Clears all existing option groups.\n\t */\n\tclearOptionGroups() {\n\t\tthis.optgroups = {};\n\t\tthis.clearCache();\n\t\tthis.trigger('optgroup_clear');\n\t}\n\n\t/**\n\t * Updates an option available for selection. If\n\t * it is visible in the selected items or options\n\t * dropdown, it will be re-rendered automatically.\n\t *\n\t */\n\tupdateOption(value:string, data:TomOption) {\n\t\tconst self = this;\n\t\tvar item_new;\n\t\tvar index_item;\n\n\t\tconst value_old\t\t= hash_key(value);\n\t\tconst value_new\t\t= hash_key(data[self.settings.valueField]);\n\t\t\n\t\t// sanity checks\n\t\tif( value_old === null ) return;\n\t\tif( !self.options.hasOwnProperty(value_old) ) return;\n\t\tif( typeof value_new !== 'string' ) throw new Error('Value must be set in option data');\n\n\n\t\tconst option\t\t= self.getOption(value_old);\n\t\tconst item\t\t\t= self.getItem(value_old);\n\n\n\t\tdata.$order = data.$order || self.options[value_old].$order;\n\t\tdelete self.options[value_old];\n\n\t\t// invalidate render cache\n\t\t// don't remove existing node yet, we'll remove it after replacing it\n\t\tself.uncacheValue(value_new);\n\n\t\tself.options[value_new] = data;\n\n\t\t// update the option if it's in the dropdown\n\t\tif( option ){\n\t\t\tif( self.dropdown_content.contains(option) ){\n\n\t\t\t\tconst option_new\t= self._render('option', data);\n\t\t\t\treplaceNode(option, option_new);\n\n\t\t\t\tif( self.activeOption === option ){\n\t\t\t\t\tself.setActiveOption(option_new);\n\t\t\t\t}\n\t\t\t}\n\t\t\toption.remove();\n\t\t}\n\n\t\t// update the item if we have one\n\t\tif( item ){\n\t\t\tindex_item = self.items.indexOf(value_old);\n\t\t\tif (index_item !== -1) {\n\t\t\t\tself.items.splice(index_item, 1, value_new);\n\t\t\t}\n\n\t\t\titem_new\t= self._render('item', data);\n\n\t\t\tif( item.classList.contains('active') ) addClasses(item_new,'active');\n\n\t\t\treplaceNode( item, item_new);\n\t\t}\n\n\t\t// invalidate last query because we might have updated the sortField\n\t\tself.lastQuery = null;\n\t}\n\n\t/**\n\t * Removes a single option.\n\t *\n\t */\n\tremoveOption(value:string, silent?:boolean):void {\n\t\tconst self = this;\n\t\tvalue = get_hash(value);\n\n\t\tself.uncacheValue(value);\n\n\t\tdelete self.userOptions[value];\n\t\tdelete self.options[value];\n\t\tself.lastQuery = null;\n\t\tself.trigger('option_remove', value);\n\t\tself.removeItem(value, silent);\n\t}\n\n\t/**\n\t * Clears all options.\n\t */\n\tclearOptions() {\n\n\t\tthis.loadedSearches\t\t= {};\n\t\tthis.userOptions\t\t= {};\n\t\tthis.clearCache();\n\t\tvar selected:TomOptions\t= {};\n\t\titerate(this.options,(option,key)=>{\n \t\tif( this.items.indexOf(key as string) >= 0 ){\n\t\t\t\tselected[key] = this.options[key];\n\t\t\t}\n\t\t});\n\n\t\tthis.options = this.sifter.items = selected;\n\t\tthis.lastQuery = null;\n\t\tthis.trigger('option_clear');\n\t}\n\n\n\t/**\n\t * Returns the dom element of the option\n\t * matching the given value.\n\t *\n\t */\n\tgetOption(value:null|string, create:boolean=false):null|HTMLElement {\n\t\tconst hashed = hash_key(value);\n\n\t\tif( hashed !== null && this.options.hasOwnProperty(hashed) ){\n\t\t\tconst option = this.options[hashed];\n\t\t\t\t\t\t\n\t\t\tif( option.$div ){\n\t\t\t\treturn option.$div;\n\t\t\t}\n\t\t\t\n\t\t\tif( create ){\n\t\t\t\treturn this._render('option', option);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the dom element of the next or previous dom element of the same type\n\t * Note: adjacent options may not be adjacent DOM elements (optgroups)\n\t *\n\t */\n\tgetAdjacent( option:null|HTMLElement, direction:number, type:string = 'option' ) : HTMLElement|null{\n\t\tvar self = this, all;\n\n\t\tif( !option ){\n\t\t\treturn null;\n\t\t}\n\n\t\tif( type == 'item' ){\n\t\t\tall\t\t\t= self.controlChildren();\n\t\t}else{\n\t\t\tall\t\t\t= self.dropdown_content.querySelectorAll('[data-selectable]');\n\t\t}\n\n\t\tfor( let i = 0; i < all.length; i++ ){\n\t\t\tif( all[i] != option ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( direction > 0 ){\n\t\t\t\treturn all[i+1] as HTMLElement;\n\t\t\t}\n\n\t\t\treturn all[i-1] as HTMLElement;\n\t\t}\n\t\treturn null;\n\t}\n\n\n\t/**\n\t * Returns the dom element of the item\n\t * matching the given value.\n\t *\n\t */\n\tgetItem(item:string|TomItem|null):null|TomItem {\n\n\t\tif( typeof item == 'object' ){\n\t\t\treturn item;\n\t\t}\n\n\t\tvar value = hash_key(item);\n\t\treturn value !== null\n\t\t\t? this.control.querySelector(`[data-value=\"${addSlashes(value)}\"]`)\n\t\t\t: null;\n\t}\n\n\t/**\n\t * \"Selects\" multiple items at once. Adds them to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItems( values:string|string[], silent?:boolean ):void{\n\t\tvar self = this;\n\n\t\tvar items = Array.isArray(values) ? values : [values];\n\t\titems = items.filter(x => self.items.indexOf(x) === -1);\n\t\tfor (let i = 0, n = items.length; i < n; i++) {\n\t\t\tself.isPending = (i < n - 1);\n\t\t\tself.addItem(items[i], silent);\n\t\t}\n\t}\n\n\t/**\n\t * \"Selects\" an item. Adds it to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItem( value:string, silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change','dropdown_close'];\n\n\t\tdebounce_events(this, events, () => {\n\t\t\tvar item, wasFull;\n\t\t\tconst self = this;\n\t\t \tconst inputMode = self.settings.mode;\n\t\t\tconst hashed = hash_key(value);\n\n\t\t\tif( hashed && self.items.indexOf(hashed) !== -1 ){\n\n\t\t\t\tif( inputMode === 'single' ){\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( inputMode === 'single' || !self.settings.duplicates ){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hashed === null || !self.options.hasOwnProperty(hashed)) return;\n\t\t\tif (inputMode === 'single') self.clear(silent);\n\t\t\tif (inputMode === 'multi' && self.isFull()) return;\n\n\t\t\titem = self._render('item', self.options[hashed]);\n\n\t\t\tif( self.control.contains(item) ){ // duplicates\n\t\t\t\titem = item.cloneNode(true) as HTMLElement;\n\t\t\t}\n\n\t\t\twasFull = self.isFull();\n\t\t\tself.items.splice(self.caretPos, 0, hashed);\n\t\t\tself.insertAtCaret(item);\n\n\t\t\tif (self.isSetup) {\n\n\t\t\t\t// update menu / remove the option (if this is not one item being added as part of series)\n\t\t\t\tif( !self.isPending && self.settings.hideSelected ){\n\t\t\t\t\tlet option = self.getOption(hashed);\n\t\t\t\t\tlet next = self.getAdjacent(option, 1);\n\t\t\t\t\tif( next ){\n\t\t\t\t\t\tself.setActiveOption(next);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// refreshOptions after setActiveOption(),\n\t\t\t\t// otherwise setActiveOption() will be called by refreshOptions() with the wrong value\n\t\t\t\tif( !self.isPending && !self.settings.closeAfterSelect ){\n\t\t\t\t\tself.refreshOptions(self.isFocused && inputMode !== 'single');\n\t\t\t\t}\n\n\t\t\t\t// hide the menu if the maximum number of items have been selected or no options are left\n\t\t\t\tif( self.settings.closeAfterSelect != false && self.isFull() ){\n\t\t\t\t\tself.close();\n\t\t\t\t} else if (!self.isPending) {\n\t\t\t\t\tself.positionDropdown();\n\t\t\t\t}\n\n\t\t\t\tself.trigger('item_add', hashed, item);\n\n\t\t\t\tif (!self.isPending) {\n\t\t\t\t\tself.updateOriginalInput({silent: silent});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.isPending || (!wasFull && self.isFull())) {\n\t\t\t\tself.inputState();\n\t\t\t\tself.refreshState();\n\t\t\t}\n\n\t\t});\n\t}\n\n\t/**\n\t * Removes the selected item matching\n\t * the provided value.\n\t *\n\t */\n\tremoveItem( item:string|TomItem|null=null, silent?:boolean ){\n\t\tconst self\t\t= this;\n\t\titem\t\t\t= self.getItem(item);\n\n\t\tif( !item ) return;\n\n\t\tvar i,idx;\n\t\tconst value\t= item.dataset.value;\n\t\ti = nodeIndex(item);\n\n\t\titem.remove();\n\t\tif( item.classList.contains('active') ){\n\t\t\tidx = self.activeItems.indexOf(item);\n\t\t\tself.activeItems.splice(idx, 1);\n\t\t\tremoveClasses(item,'active');\n\t\t}\n\n\t\tself.items.splice(i, 1);\n\t\tself.lastQuery = null;\n\t\tif (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n\t\t\tself.removeOption(value, silent);\n\t\t}\n\n\t\tif (i < self.caretPos) {\n\t\t\tself.setCaret(self.caretPos - 1);\n\t\t}\n\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.positionDropdown();\n\t\tself.trigger('item_remove', value, item);\n\n\t}\n\n\t/**\n\t * Invokes the `create` method provided in the\n\t * TomSelect options that should provide the data\n\t * for the new item, given the user input.\n\t *\n\t * Once this completes, it will be added\n\t * to the item list.\n\t *\n\t */\n\tcreateItem( input:null|string=null, triggerDropdown:boolean=true, callback:TomCreateCallback = ()=>{} ):boolean{\n\t\tvar self = this;\n\t\tvar caret = self.caretPos;\n\t\tvar output;\n\t\tinput = input || self.inputValue();\n\n\t\tif (!self.canCreate(input)) {\n\t\t\tcallback();\n\t\t\treturn false;\n\t\t}\n\n\t\tself.lock();\n\n\t\tvar created = false;\n\t\tvar create = (data?:boolean|TomOption) => {\n\t\t\tself.unlock();\n\n\t\t\tif (!data || typeof data !== 'object') return callback();\n\t\t\tvar value = hash_key(data[self.settings.valueField]);\n\t\t\tif( typeof value !== 'string' ){\n\t\t\t\treturn callback();\n\t\t\t}\n\n\t\t\tself.setTextboxValue();\n\t\t\tself.addOption(data,true);\n\t\t\tself.setCaret(caret);\n\t\t\tself.addItem(value);\n\t\t\tcallback(data);\n\t\t\tcreated = true;\n\t\t};\n\n\t\tif( typeof self.settings.create === 'function' ){\n\t\t\toutput = self.settings.create.call(this, input, create);\n\t\t}else{\n\t\t\toutput = {\n\t\t\t\t[self.settings.labelField]: input,\n\t\t\t\t[self.settings.valueField]: input,\n\t\t\t};\n\t\t}\n\n\t\tif( !created ){\n\t\t\tcreate(output);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Re-renders the selected item lists.\n\t */\n\trefreshItems() {\n\t\tvar self = this;\n\t\tself.lastQuery = null;\n\n\t\tif (self.isSetup) {\n\t\t\tself.addItems(self.items);\n\t\t}\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Updates all state-dependent attributes\n\t * and CSS classes.\n\t */\n\trefreshState() {\n\t\tconst self = this;\n\n\t\tself.refreshValidityState();\n\n\t\tconst isFull\t= self.isFull();\n\t\tconst isLocked\t= self.isLocked;\n\n\t\tself.wrapper.classList.toggle('rtl',self.rtl);\n\t\t\n\t\t\n\t\tconst wrap_classList = self.wrapper.classList;\n\n\t\twrap_classList.toggle('focus', self.isFocused)\n\t\twrap_classList.toggle('disabled', self.isDisabled)\n\t\twrap_classList.toggle('required', self.isRequired)\n\t\twrap_classList.toggle('invalid', !self.isValid)\n\t\twrap_classList.toggle('locked', isLocked)\n\t\twrap_classList.toggle('full', isFull)\n\t\twrap_classList.toggle('input-active', self.isFocused && !self.isInputHidden)\n\t\twrap_classList.toggle('dropdown-active', self.isOpen)\n\t\twrap_classList.toggle('has-options', isEmptyObject(self.options) )\n\t\twrap_classList.toggle('has-items', self.items.length > 0);\n\n\t}\n\n\n\t/**\n\t * Update the `required` attribute of both input and control input.\n\t *\n\t * The `required` property needs to be activated on the control input\n\t * for the error to be displayed at the right place. `required` also\n\t * needs to be temporarily deactivated on the input since the input is\n\t * hidden and can't show errors.\n\t */\n\trefreshValidityState() {\n\t\tvar self = this;\n\n\t\tif( !self.input.checkValidity ){\n\t\t\treturn;\n\t\t}\n\n\t\tself.isValid = self.input.checkValidity();\n\t\tself.isInvalid = !self.isValid;\n\t}\n\n\t/**\n\t * Determines whether or not more items can be added\n\t * to the control without exceeding the user-defined maximum.\n\t *\n\t * @returns {boolean}\n\t */\n\tisFull() {\n\t\treturn this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n\t}\n\n\t/**\n\t * Refreshes the original <select> or <input>\n\t * element to reflect the current state.\n\t *\n\t */\n\tupdateOriginalInput( opts:TomArgObject = {} ){\n\t\tconst self = this;\n\t\tvar option, label;\n\t\t\n\t\tconst empty_option = self.input.querySelector('option[value=\"\"]') as HTMLOptionElement;\n\n\t\tif( self.is_select_tag ){\n\n\t\t\tconst selected:HTMLOptionElement[]\t\t= [];\n\n\t\t\tfunction AddSelected(option_el:HTMLOptionElement|null, value:string, label:string):HTMLOptionElement{\n\n\t\t\t\tif( !option_el ){\n\t\t\t\t\toption_el = getDom('<option value=\"' + escape_html(value) + '\">' + escape_html(label) + '</option>') as HTMLOptionElement;\n\t\t\t\t}\n\n\t\t\t\t// don't move empty option from top of list\n\t\t\t\t// fixes bug in firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1725293\t\t\t\t\n\t\t\t\tif( option_el != empty_option ){\n\t\t\t\t\tself.input.append(option_el);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tselected.push(option_el);\n\n\t\t\t\toption_el.selected = true;\n\n\t\t\t\treturn option_el;\n\t\t\t}\n\n\t\t\t// unselect all selected options\n\t\t\tself.input.querySelectorAll('option:checked').forEach((option_el:Element) => {\n\t\t\t\t(<HTMLOptionElement>option_el).selected = false;\n\t\t\t});\n\n\n\t\t\t// nothing selected?\n\t\t\tif( self.items.length == 0 && self.settings.mode == 'single' ){\n\t\t\t\t\t\t\t\n\t\t\t\tAddSelected(empty_option, \"\", \"\");\n\n\t\t\t// order selected <option> tags for values in self.items\n\t\t\t}else{\n\t\t\t\t\t\n\t\t\t\tself.items.forEach((value)=>{\n\t\t\t\t\toption\t\t\t= self.options[value];\n\t\t\t\t\tlabel\t\t\t= option[self.settings.labelField] || '';\n\n\t\t\t\t\tif( selected.includes(option.$option) ){\n\t\t\t\t\t\tconst reuse_opt = self.input.querySelector(`option[value=\"${addSlashes(value)}\"]:not(:checked)`) as HTMLOptionElement;\n\t\t\t\t\t\tAddSelected(reuse_opt, value, label);\n\t\t\t\t\t}else{\n\t\t\t\t\t\toption.$option\t= AddSelected(option.$option, value, label);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t} else {\n\t\t\tself.input.value = self.getValue() as string;\n\t\t}\n\n\t\tif (self.isSetup) {\n\t\t\tif (!opts.silent) {\n\t\t\t\tself.trigger('change', self.getValue() );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shows the autocomplete dropdown containing\n\t * the available options.\n\t */\n\topen() {\n\t\tvar self = this;\n\n\t\tif (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\n\t\tself.isOpen = true;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'true'});\n\t\tself.refreshState();\n\t\tapplyCSS(self.dropdown,{visibility: 'hidden', display: 'block'});\n\t\tself.positionDropdown();\n\t\tapplyCSS(self.dropdown,{visibility: 'visible', display: 'block'});\n\t\tself.focus();\n\t\tself.trigger('dropdown_open', self.dropdown);\n\t}\n\n\t/**\n\t * Closes the autocomplete dropdown menu.\n\t */\n\tclose(setTextboxValue=true) {\n\t\tvar self = this;\n\t\tvar trigger = self.isOpen;\n\n\t\tif( setTextboxValue ){\n\n\t\t\t// before blur() to prevent form onchange event\n\t\t\tself.setTextboxValue();\n\n\t\t\tif (self.settings.mode === 'single' && self.items.length) {\n\t\t\t\tself.hideInput();\n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'false'});\n\t\tapplyCSS(self.dropdown,{display: 'none'});\n\t\tif( self.settings.hideSelected ){\n\t\t\tself.clearActiveOption();\n\t\t}\n\t\tself.refreshState();\n\n\t\tif (trigger) self.trigger('dropdown_close', self.dropdown);\n\t}\n\n\t/**\n\t * Calculates and applies the appropriate\n\t * position of the dropdown if dropdownParent = 'body'.\n\t * Otherwise, position is determined by css\n\t */\n\tpositionDropdown(){\n\n\t\tif( this.settings.dropdownParent !== 'body' ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar context\t\t\t= this.control;\n\t\tvar rect\t\t\t= context.getBoundingClientRect();\n\t\tvar top\t\t\t\t= context.offsetHeight + rect.top + window.scrollY;\n\t\tvar left\t\t\t= rect.left + window.scrollX;\n\n\n\t\tapplyCSS(this.dropdown,{\n\t\t\twidth : rect.width + 'px',\n\t\t\ttop : top + 'px',\n\t\t\tleft : left + 'px'\n\t\t});\n\n\t}\n\n\t/**\n\t * Resets / clears all selected items\n\t * from the control.\n\t *\n\t */\n\tclear(silent?:boolean) {\n\t\tvar self = this;\n\n\t\tif (!self.items.length) return;\n\n\t\tvar items = self.controlChildren();\n\t\titerate(items,(item)=>{\n\t\t\tself.removeItem(item,true);\n\t\t});\n\n\t\tself.showInput();\n\t\tif( !silent ) self.updateOriginalInput();\n\t\tself.trigger('clear');\n\t}\n\n\t/**\n\t * A helper method for inserting an element\n\t * at the current caret position.\n\t *\n\t */\n\tinsertAtCaret(el:HTMLElement) {\n\t\tconst self\t\t= this;\t\t\n\t\tconst caret\t\t= self.caretPos;\n\t\tconst target\t= self.control;\n\n\t\ttarget.insertBefore(el, target.children[caret]);\n\n\t\tself.setCaret(caret + 1);\n\t}\n\n\t/**\n\t * Removes the current selected item(s).\n\t *\n\t */\n\tdeleteSelection(e:KeyboardEvent):boolean {\n\t\tvar direction, selection, caret, tail;\n\t\tvar self = this;\n\n\t\tdirection = (e && e.keyCode === constants.KEY_BACKSPACE) ? -1 : 1;\n\t\tselection = getSelection(self.control_input);\n\n\n\t\t// determine items that will be removed\n\t\tconst rm_items:TomItem[]\t= [];\n\n\t\tif (self.activeItems.length) {\n\n\t\t\ttail = getTail(self.activeItems, direction);\n\t\t\tcaret = nodeIndex(tail);\n\n\t\t\tif (direction > 0) { caret++; }\n\n\t\t\titerate(self.activeItems, (item) => rm_items.push(item) );\n\n\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n\t\t\tconst items = self.controlChildren();\n\t\t\tif (direction < 0 && selection.start === 0 && selection.length === 0) {\n\t\t\t\trm_items.push( items[self.caretPos - 1]);\n\n\t\t\t} else if (direction > 0 && selection.start === self.inputValue().length) {\n\t\t\t\trm_items.push(items[self.caretPos]);\n\t\t\t}\n\t\t}\n\n\t\tconst values = rm_items.map(item => item.dataset.value);\n\n\t\t// allow the callback to abort\n\t\tif (!values.length || (typeof self.settings.onDelete === 'function' && self.settings.onDelete.call(self,values,e) === false)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tpreventDefault(e,true);\n\n\t\t// perform removal\n\t\tif (typeof caret !== 'undefined') {\n\t\t\tself.setCaret(caret);\n\t\t}\n\n\t\twhile( rm_items.length ){\n\t\t\tself.removeItem(rm_items.pop());\n\t\t}\n\n\t\tself.showInput();\n\t\tself.positionDropdown();\n\t\tself.refreshOptions(false);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Selects the previous / next item (depending on the `direction` argument).\n\t *\n\t * > 0 - right\n\t * < 0 - left\n\t *\n\t */\n\tadvanceSelection(direction:number, e?:MouseEvent|KeyboardEvent) {\n\t\tvar last_active, adjacent, self = this;\n\n\t\tif (self.rtl) direction *= -1;\n\t\tif( self.inputValue().length ) return;\n\n\n\t\t// add or remove to active items\n\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) || isKeyDown('shiftKey',e) ){\n\n\t\t\tlast_active\t\t\t= self.getLastActive(direction);\n\t\t\tif( last_active ){\n\n\t\t\t\tif( !last_active.classList.contains('active') ){\n\t\t\t\t\tadjacent\t\t\t= last_active;\n\t\t\t\t}else{\n\t\t\t\t\tadjacent\t\t\t= self.getAdjacent(last_active,direction,'item');\n\t\t\t\t}\n\n\t\t\t// if no active item, get items adjacent to the control input\n\t\t\t}else if( direction > 0 ){\n\t\t\t\tadjacent\t\t\t= self.control_input.nextElementSibling;\n\t\t\t}else{\n\t\t\t\tadjacent\t\t\t= self.control_input.previousElementSibling;\n\t\t\t}\n\n\n\t\t\tif( adjacent ){\n\t\t\t\tif( adjacent.classList.contains('active') ){\n\t\t\t\t\tself.removeActiveItem(last_active);\n\t\t\t\t}\n\t\t\t\tself.setActiveItemClass(adjacent); // mark as last_active !! after removeActiveItem() on last_active\n\t\t\t}\n\n\t\t// move caret to the left or right\n\t\t}else{\n\t\t\tself.moveCaret(direction);\n\t\t}\n\t}\n\t\n\tmoveCaret(direction:number){}\n\n\t/**\n\t * Get the last active item\n\t *\n\t */\n\tgetLastActive(direction?:number){\n\n\t\tlet last_active = this.control.querySelector('.last-active');\n\t\tif( last_active ){\n\t\t\treturn last_active;\n\t\t}\n\n\n\t\tvar result = this.control.querySelectorAll('.active');\n\t\tif( result ){\n\t\t\treturn getTail(result,direction);\n\t\t}\n\t}\n\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tsetCaret(new_pos:number) {\n\t\tthis.caretPos = this.items.length;\n\t}\n\n\t/**\n\t * Return list of item dom elements\n\t *\n\t */\n\tcontrolChildren():TomItem[]{\n\t\treturn Array.from( this.control.querySelectorAll('[data-ts-item]') ) as TomItem[];\n\t}\n\n\t/**\n\t * Disables user input on the control. Used while\n\t * items are being asynchronously created.\n\t */\n\tlock() {\n\t\tthis.isLocked = true;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Re-enables user input on the control.\n\t */\n\tunlock() {\n\t\tthis.isLocked = false;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Disables user input on the control completely.\n\t * While disabled, it cannot receive focus.\n\t */\n\tdisable() {\n\t\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= true;\n\t\tself.control_input.disabled\t\t= true;\n\t\tself.focus_node.tabIndex\t\t= -1;\n\t\tself.isDisabled\t\t\t\t\t= true;\n\t\tthis.close();\n\t\tself.lock();\n\t}\n\n\t/**\n\t * Enables the control so that it can respond\n\t * to focus and user input.\n\t */\n\tenable() {\n\t\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= false;\n\t\tself.control_input.disabled\t\t= false;\n\t\tself.focus_node.tabIndex\t\t= self.tabIndex;\n\t\tself.isDisabled\t\t\t\t\t= false;\n\t\tself.unlock();\n\t}\n\n\t/**\n\t * Completely destroys the control and\n\t * unbinds all event listeners so that it can\n\t * be garbage collected.\n\t */\n\tdestroy() {\n\t\tvar self = this;\n\t\tvar revertSettings = self.revertSettings;\n\n\t\tself.trigger('destroy');\n\t\tself.off();\n\t\tself.wrapper.remove();\n\t\tself.dropdown.remove();\n\n\t\tself.input.innerHTML = revertSettings.innerHTML;\n\t\tself.input.tabIndex = revertSettings.tabIndex;\n\n\t\tremoveClasses(self.input,'tomselected','ts-hidden-accessible');\n\n\t\tself._destroy();\n\n\t\tdelete self.input.tomselect;\n\t}\n\n\t/**\n\t * A helper method for rendering \"item\" and\n\t * \"option\" templates, given the data.\n\t *\n\t */\n\trender( templateName:TomTemplateNames, data?:any ):null|HTMLElement{\n\n\t\tif( typeof this.settings.render[templateName] !== 'function' ){\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this._render(templateName, data);\n\t}\n\n\t/**\n\t * _render() can be called directly when we know we don't want to hit the cache\n\t * return type could be null for some templates, we need https://github.com/microsoft/TypeScript/issues/33014\n\t */\n\t_render( templateName:TomTemplateNames, data?:any ):HTMLElement{\n\t\tvar value = '', id, html;\n\t\tconst self = this;\n\t\t\n\t\tif( templateName === 'option' || templateName == 'item' ){\n\t\t\tvalue\t= get_hash(data[self.settings.valueField]);\n\t\t}\n\n\t\t// render markup\n\t\thtml = self.settings.render[templateName].call(this, data, escape_html);\n\n\t\tif( html == null ){\n\t\t\treturn html;\n\t\t}\n\n\t\thtml = getDom( html );\n\n\t\t// add mandatory attributes\n\t\tif (templateName === 'option' || templateName === 'option_create') {\n\n\t\t\tif( data[self.settings.disabledField] ){\n\t\t\t\tsetAttr(html,{'aria-disabled':'true'});\n\t\t\t}else{\n\t\t\t\tsetAttr(html,{'data-selectable': ''});\n\t\t\t}\n\n\t\t}else if (templateName === 'optgroup') {\n\t\t\tid = data.group[self.settings.optgroupValueField];\n\t\t\tsetAttr(html,{'data-group': id});\n\t\t\tif(data.group[self.settings.disabledField]) {\n\t\t\t\tsetAttr(html,{'data-disabled': ''});\n\t\t\t}\n\t\t}\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tsetAttr(html,{'data-value': value });\n\n\n\t\t\t// make sure we have some classes if a template is overwritten\n\t\t\tif( templateName === 'item' ){\n\t\t\t\taddClasses(html,self.settings.itemClass);\n\t\t\t\tsetAttr(html,{'data-ts-item':''});\n\t\t\t}else{\n\t\t\t\taddClasses(html,self.settings.optionClass);\n\t\t\t\tsetAttr(html,{\n\t\t\t\t\trole:'option',\n\t\t\t\t\tid:data.$id\n\t\t\t\t});\n\n\t\t\t\t// update cache\n\t\t\t\tself.options[value].$div = html;\n\t\t\t}\n\n\n\t\t}\n\n\t\treturn html;\n\t}\n\n\n\t/**\n\t * Clears the render cache for a template. If\n\t * no template is given, clears all render\n\t * caches.\n\t *\n\t */\n\tclearCache():void{\n\n\t\titerate(this.options, (option, value)=>{\n\t\t\tif( option.$div ){\n\t\t\t\toption.$div.remove();\n\t\t\t\tdelete option.$div;\n\t\t\t}\n\t\t});\n\t\t\n\t}\n\n\t/**\n\t * Removes a value from item and option caches\n\t *\n\t */\n\tuncacheValue(value:string){\n\n\t\tconst option_el\t\t\t= this.getOption(value);\n\t\tif( option_el ) option_el.remove();\n\n\t}\n\n\t/**\n\t * Determines whether or not to display the\n\t * create item prompt, given a user input.\n\t *\n\t */\n\tcanCreate( input:string ):boolean {\n\t\treturn this.settings.create && (input.length > 0) && (this.settings.createFilter as TomCreateFilter ).call(this, input);\n\t}\n\n\n\t/**\n\t * Wraps this.`method` so that `new_fn` can be invoked 'before', 'after', or 'instead' of the original method\n\t *\n\t * this.hook('instead','onKeyDown',function( arg1, arg2 ...){\n\t *\n\t * });\n\t */\n\thook( when:string, method:string, new_fn:any ){\n\t\tvar self = this;\n\t\tvar orig_method = self[method];\n\n\n\t\tself[method] = function(){\n\t\t\tvar result, result_new;\n\n\t\t\tif( when === 'after' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\tresult_new = new_fn.apply(self, arguments );\n\n\t\t\tif( when === 'instead' ){\n\t\t\t\treturn result_new;\n\t\t\t}\n\n\t\t\tif( when === 'before' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t}\n\n};\n", "/**\n * Plugin: \"change_listener\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { addEvent } from '../../utils';\n\nexport default function(this:TomSelect) {\n\taddEvent(this.input,'change',()=>{\n\t\tthis.sync();\n\t});\n};\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { preventDefault, hash_key } from '../../utils';\nimport { getDom } from '../../vanilla';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_onOptionSelect = self.onOptionSelect;\n\n\tself.settings.hideSelected = false;\n\n\n\t// update the checkbox for an option\n\tvar UpdateCheckbox = function(option:HTMLElement){\n\t\tsetTimeout(()=>{\n\t\t\tvar checkbox = option.querySelector('input') as HTMLInputElement;\n\t\t\tif( option.classList.contains('selected') ){\n\t\t\t\tcheckbox.checked = true;\n\t\t\t}else{\n\t\t\t\tcheckbox.checked = false;\n\t\t\t}\n\t\t},1);\n\t};\n\n\t// add checkbox to option template\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_option = self.settings.render.option;\n\n\t\tself.settings.render.option = (data, escape_html) => {\n\t\t\tvar rendered = getDom(orig_render_option.call(self, data, escape_html));\n\t\t\tvar checkbox = document.createElement('input');\n\t\t\tcheckbox.addEventListener('click',function(evt){\n\t\t\t\tpreventDefault(evt);\n\t\t\t});\n\n\t\t\tcheckbox.type = 'checkbox';\n\t\t\tconst hashed = hash_key(data[self.settings.valueField]);\n\n\n\t\t\tif( hashed && self.items.indexOf(hashed) > -1 ){\n\t\t\t\tcheckbox.checked = true;\n\t\t\t}\n\n\t\t\trendered.prepend(checkbox);\n\t\t\treturn rendered;\n\t\t};\n\t});\n\n\t// uncheck when item removed\n\tself.on('item_remove',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\toption.classList.remove('selected'); // selected class won't be removed yet\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\n\t// remove items when selected option is clicked\n\tself.hook('instead','onOptionSelect',( evt:KeyboardEvent, option:HTMLElement )=>{\n\n\t\tif( option.classList.contains('selected') ){\n\t\t\toption.classList.remove('selected')\n\t\t\tself.removeItem(option.dataset.value);\n\t\t\tself.refreshOptions();\n\t\t\tpreventDefault(evt,true);\n\t\t\treturn;\n }\n\n\t\torig_onOptionSelect.call(self, evt, option);\n\n\t\tUpdateCheckbox(option);\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { CBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:CBOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\tclassName: 'clear-button',\n\t\ttitle: 'Clear All',\n\t\thtml: (data:CBOptions) => {\n\t\t\treturn `<div class=\"${data.className}\" title=\"${data.title}\">×</div>`;\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar button = getDom(options.html(options));\n\t\tbutton.addEventListener('click',(evt)=>{\n\t\t\tself.clear();\n\n\t\t\tif( self.settings.mode === 'single' && self.settings.allowEmptyOption ){\n\t\t\t\tself.addItem('');\n\t\t\t}\n\n\t\t\tevt.preventDefault();\n\t\t\tevt.stopPropagation();\n\t\t});\n\t\tself.control.appendChild(button);\n\t});\n\n};\n", "/**\n * Plugin: \"drag_drop\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tif (!$.fn.sortable) throw new Error('The \"drag_drop\" plugin requires jQuery UI \"sortable\".');\n\tif (self.settings.mode !== 'multi') return;\n\n\tvar orig_lock\t\t= self.lock;\n\tvar orig_unlock\t\t= self.unlock;\n\n\tself.hook('instead','lock',()=>{\n\t\tvar sortable = $(self.control).data('sortable');\n\t\tif (sortable) sortable.disable();\n\t\treturn orig_lock.call(self);\n\t});\n\n\tself.hook('instead','unlock',()=>{\n\t\tvar sortable = $(self.control).data('sortable');\n\t\tif (sortable) sortable.enable();\n\t\treturn orig_unlock.call(self);\n\t});\n\n\tself.on('initialize',()=>{\n\t\tvar $control = $(self.control).sortable({\n\t\t\titems: '[data-value]',\n\t\t\tforcePlaceholderSize: true,\n\t\t\tdisabled: self.isLocked,\n\t\t\tstart: (e, ui) => {\n\t\t\t\tui.placeholder.css('width', ui.helper.css('width'));\n\t\t\t\t$control.css({overflow: 'visible'});\n\t\t\t},\n\t\t\tstop: ()=>{\n\t\t\t\t$control.css({overflow: 'hidden'});\n\n\t\t\t\tvar values:string[] = [];\n\t\t\t\t$control.children('[data-value]').each(function(this:HTMLElement){\n\t\t\t\t\tif( this.dataset.value ) values.push(this.dataset.value);\n\t\t\t\t});\n\n\t\t\t\tself.setValue(values);\n\t\t\t}\n\t\t});\n\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { preventDefault } from '../../utils';\nimport { DHOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:DHOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttitle : 'Untitled',\n\t\theaderClass : 'dropdown-header',\n\t\ttitleRowClass : 'dropdown-header-title',\n\t\tlabelClass : 'dropdown-header-label',\n\t\tcloseClass : 'dropdown-header-close',\n\n\t\thtml: (data:DHOptions) => {\n\t\t\treturn (\n\t\t\t\t'<div class=\"' + data.headerClass + '\">' +\n\t\t\t\t\t'<div class=\"' + data.titleRowClass + '\">' +\n\t\t\t\t\t\t'<span class=\"' + data.labelClass + '\">' + data.title + '</span>' +\n\t\t\t\t\t\t'<a class=\"' + data.closeClass + '\">×</a>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t'</div>'\n\t\t\t);\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar header = getDom(options.html(options));\n\n\t\tvar close_link = header.querySelector('.'+options.closeClass);\n\t\tif( close_link ){\n\t\t\tclose_link.addEventListener('click',(evt)=>{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\tself.close();\n\t\t\t});\n\t\t}\n\n\t\tself.dropdown.insertBefore(header, self.dropdown.firstChild);\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { nodeIndex } from '../../vanilla';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tself.hook('instead','setCaret',(new_pos:number) => {\n\n\t\tif( self.settings.mode === 'single' || !self.control.contains(self.control_input) ) {\n\t\t\tnew_pos = self.items.length;\n\t\t} else {\n\t\t\tnew_pos = Math.max(0, Math.min(self.items.length, new_pos));\n\n\t\t\tif( new_pos != self.caretPos && !self.isPending ){\n\n\t\t\t\tself.controlChildren().forEach((child,j) => {\n\t\t\t\t\tif( j < new_pos ){\n\t\t\t\t\t\tself.control_input.insertAdjacentElement('beforebegin', child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.control.appendChild( child );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tself.caretPos = new_pos;\n\t});\n\n\tself.hook('instead','moveCaret',(direction:number) => {\n\n\t\tif( !self.isFocused ) return;\n\n\t\t// move caret before or after selected items\n\t\tconst last_active\t\t= self.getLastActive(direction);\n\t\tif( last_active ){\n\t\t\tconst idx = nodeIndex(last_active);\n\t\t\tself.setCaret(direction > 0 ? idx + 1: idx);\n\t\t\tself.setActiveItem();\n\n\t\t// move caret left or right of current position\n\t\t}else{\n\t\t\tself.setCaret(self.caretPos + direction);\n\n\t\t}\n\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { getDom, addClasses } from '../../vanilla';\nimport { addEvent, preventDefault } from '../../utils';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\tself.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown\n\n\tself.hook('before','setup',()=>{\n\t\tself.focus_node\t\t= self.control;\n\n\t\taddClasses( self.control_input, 'dropdown-input');\n\n\t \tconst div = getDom('<div class=\"dropdown-input-wrap\">');\n\t\tdiv.append(self.control_input);\n\t\tself.dropdown.insertBefore(div, self.dropdown.firstChild);\n\t});\n\n\n\tself.on('initialize',()=>{\n\n\t\t// set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input\n\t\tself.control_input.addEventListener('keydown',(evt:KeyboardEvent) =>{\n\t\t//addEvent(self.control_input,'keydown' as const,(evt:KeyboardEvent) =>{\n\t\t\tswitch( evt.keyCode ){\n\t\t\t\tcase constants.KEY_ESC:\n\t\t\t\t\tif (self.isOpen) {\n\t\t\t\t\t\tpreventDefault(evt,true);\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\t\t\t\tcase constants.KEY_TAB:\n\t\t\t\t\tself.focus_node.tabIndex = -1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn self.onKeyDown.call(self,evt);\n\t\t});\n\n\t\tself.on('blur',()=>{\n\t\t\tself.focus_node.tabIndex = self.isDisabled ? -1 : self.tabIndex;\n\t\t});\n\n\n\t\t// give the control_input focus when the dropdown is open\n\t\tself.on('dropdown_open',() =>{\n\t\t\tself.control_input.focus();\n\t\t});\n\n\t\t// prevent onBlur from closing when focus is on the control_input\n\t\tconst orig_onBlur = self.onBlur;\n\t\tself.hook('instead','onBlur',(evt?:FocusEvent)=>{\n\t\t\tif( evt && evt.relatedTarget == self.control_input ) return;\n\t\t\treturn orig_onBlur.call(self);\n\t\t});\n\n\t\taddEvent(self.control_input,'blur', () => self.onBlur() );\n\n\t\t// return focus to control to allow further keyboard input\n\t\tself.hook('before','close',() =>{\n\n\t\t\tif( !self.isOpen ) return;\n\t\t\tself.focus_node.focus();\n\t\t});\n\n\t});\n\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { addEvent } from '../../utils';\n\nexport default function(this:TomSelect) {\n\tvar self\t\t\t\t\t= this;\n\n\tself.on('initialize',()=>{\n\n\n\t\tvar test_input\t\t\t\t= document.createElement('span');\n\t\tvar control\t\t\t\t\t= self.control_input;\n\t\ttest_input.style.cssText\t= 'position:absolute; top:-99999px; left:-99999px; width:auto; padding:0; white-space:pre; ';\n\n\t\tself.wrapper.appendChild(test_input);\n\n\n\t\tvar transfer_styles\t\t\t= [ 'letterSpacing', 'fontSize', 'fontFamily', 'fontWeight', 'textTransform' ];\n\n\t\tfor( const style_name of transfer_styles ){\n\t\t\t// @ts-ignore TS7015 https://stackoverflow.com/a/50506154/697576\n\t\t\ttest_input.style[style_name] = control.style[style_name];\n\t\t}\n\n\n\t\t/**\n\t\t * Set the control width\n\t\t *\n\t\t */\n\t\tvar resize = ()=>{\n\t\t\tif( self.items.length > 0 ){\n\t\t\t\ttest_input.textContent\t= control.value;\n\t\t\t\tcontrol.style.width\t\t= test_input.clientWidth+'px';\n\t\t\t}else{\n\t\t\t\tcontrol.style.width\t\t= '';\n\t\t\t}\n\n\t\t};\n\n\t\tresize();\n\t\tself.on('update item_add item_remove',resize);\n\t\taddEvent(control,'input', resize );\n\t\taddEvent(control,'keyup', resize );\n\t\taddEvent(control,'blur', resize );\n\t\taddEvent(control,'update', resize );\n\t});\n\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_deleteSelection = self.deleteSelection;\n\n\tthis.hook('instead','deleteSelection',(evt:KeyboardEvent) => {\n\n\t\tif( self.activeItems.length ){\n\t\t\treturn orig_deleteSelection.call(self, evt);\n\t\t}\n\n\t\treturn false;\n\t});\n\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tthis.hook('instead','setActiveItem',() => {});\n\tthis.hook('instead','selectAll',() => {});\n};\n", "/**\n * Plugin: \"optgroup_columns\" (Tom Select.js)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { parentMatch, nodeIndex } from '../../vanilla';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\tvar orig_keydown = self.onKeyDown;\n\n\tself.hook('instead','onKeyDown',(evt:KeyboardEvent)=>{\n\t\tvar index, option, options, optgroup;\n\n\t\tif( !self.isOpen || !(evt.keyCode === constants.KEY_LEFT || evt.keyCode === constants.KEY_RIGHT)) {\n\t\t\treturn orig_keydown.call(self,evt);\n\t\t}\n\n\t\toptgroup\t\t\t= parentMatch(self.activeOption,'[data-group]');\n\t\tindex\t\t\t\t= nodeIndex(self.activeOption,'[data-selectable]');\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( evt.keyCode === constants.KEY_LEFT ){\n\t\t\toptgroup = optgroup.previousSibling;\n\t\t} else {\n\t\t\toptgroup = optgroup.nextSibling;\n\t\t}\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\toptions\t\t\t\t= (<HTMLOptGroupElement>optgroup).querySelectorAll('[data-selectable]');\n\t\toption\t\t\t\t= options[ Math.min(options.length - 1, index) ] as HTMLElement;\n\n\t\tif( option ){\n\t\t\tself.setActiveOption(option);\n\t\t}\n\n\t});\n\n};\n", "/**\n * Plugin: \"remove_button\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { escape_html, preventDefault, addEvent } from '../../utils';\nimport { TomOption } from '../../types/index';\nimport { RBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:RBOptions) {\n\n\tconst options = Object.assign({\n\t\t\tlabel : '×',\n\t\t\ttitle : 'Remove',\n\t\t\tclassName : 'remove',\n\t\t\tappend : true\n\t\t}, userOptions);\n\n\n\t//options.className = 'remove-single';\n\tvar self\t\t\t= this;\n\n\t// override the render method to add remove button to each item\n\tif( !options.append ){\n\t\treturn;\n\t}\n\n\tvar html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\n\t\t\tvar rendered = getDom(orig_render_item.call(self, data, escape));\n\n\t\t\tvar close_button = getDom(html);\n\t\t\trendered.appendChild(close_button);\n\n\t\t\taddEvent(close_button,'mousedown',(evt) => {\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t});\n\n\t\t\taddEvent(close_button,'click',(evt) => {\n\n\t\t\t\t// propagating will trigger the dropdown to show for single mode\n\t\t\t\tpreventDefault(evt,true);\n\n\t\t\t\tif (self.isLocked) return;\n\n\t\t\t\tvar value = rendered.dataset.value;\n\t\t\t\tself.removeItem(value);\n\t\t\t\tself.refreshOptions(false);\n\t\t\t});\n\n\t\t\treturn rendered;\n\t\t};\n\n\t});\n\n\n};\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\n\ntype TPluginOptions = {\n\ttext?:(option:TomOption)=>string,\n};\n\nexport default function(this:TomSelect, userOptions:TPluginOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttext: (option:TomOption) => {\n\t\t\treturn option[self.settings.labelField];\n\t\t}\n\t},userOptions);\n\n\tself.on('item_remove',function(value:string){\n\t\tif( self.control_input.value.trim() === '' ){\n\t\t\tvar option = self.options[value];\n\t\t\tif( option ){\n\t\t\t\tself.setTextboxValue(options.text.call(self, option));\n\t\t\t}\n\t\t}\n\t});\n\n};\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * 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 CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\nimport { addClasses } from '../../vanilla';\n\nexport default function(this:TomSelect) {\n\tconst self\t\t\t\t\t\t\t= this;\n\tconst orig_canLoad\t\t\t\t\t= self.canLoad;\n\tconst orig_clearActiveOption\t\t= self.clearActiveOption;\n\tconst orig_loadCallback\t\t\t\t= self.loadCallback;\n\n\tvar pagination:{[key:string]:any}\t= {};\n\tvar dropdown_content:HTMLElement;\n\tvar loading_more\t\t\t\t\t= false;\n\n\n\tif( !self.settings.firstUrl ){\n\t\tthrow 'virtual_scroll plugin requires a firstUrl() method';\n\t\treturn;\n\t}\n\n\n\t// in order for virtual scrolling to work,\n\t// options need to be ordered the same way they're returned from the remote data source\n\tself.settings.sortField\t\t\t= [{field:'$order'},{field:'$score'}];\n\n\n\t// can we load more results for given query?\n\tfunction canLoadMore(query:string):boolean{\n\n\t\tif( typeof self.settings.maxOptions === 'number' && dropdown_content.children.length >= self.settings.maxOptions ){\n\t\t\treturn false;\n\t\t}\n\n\t\tif( (query in pagination) && pagination[query] ){\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\t// set the next url that will be\n\tself.setNextUrl = function(value:string,next_url:any):void{\n\t\tpagination[value] = next_url;\n\t};\n\n\t// getUrl() to be used in settings.load()\n\tself.getUrl = function(query:string):any{\n\n\t\tif( query in pagination ){\n\t\t\tconst next_url = pagination[query];\n\t\t\tpagination[query] = false;\n\t\t\treturn next_url;\n\t\t}\n\n\t\t// if the user goes back to a previous query\n\t\t// we need to load the first page again\n\t\tpagination = {};\n\n\t\treturn self.settings.firstUrl(query);\n\t};\n\n\t// don't clear the active option (and cause unwanted dropdown scroll)\n\t// while loading more results\n\tself.hook('instead','clearActiveOption',()=>{\n\n\t\tif( loading_more ){\n\t\t\treturn;\n\t\t}\n\n\t\treturn orig_clearActiveOption.call(self);\n\t});\n\n\t// override the canLoad method\n\tself.hook('instead','canLoad',(query:string)=>{\n\n\t\t// first time the query has been seen\n\t\tif( !(query in pagination) ){\n\t\t\treturn orig_canLoad.call(self,query);\n\t\t}\n\n\t\treturn canLoadMore(query);\n\t});\n\n\n\t// wrap the load\n\tself.hook('instead','loadCallback',( options:TomOption[], optgroups:TomOption[])=>{\n\n\t\tif( !loading_more ){\n\t\t\tself.clearOptions();\n\t\t}\n\n\t\torig_loadCallback.call( self, options, optgroups);\n\n\t\tloading_more = false;\n\t});\n\n\n\t// add templates to dropdown\n\t//\tloading_more if we have another url in the queue\n\t//\tno_more_results if we don't have another url in the queue\n\tself.hook('after','refreshOptions',()=>{\n\n\t\tconst query\t\t= self.lastValue;\n\t\tvar option;\n\n\t\tif( canLoadMore(query) ){\n\t\t\toption = self.render('loading_more',{query:query});\n\t\t\tif( option ) option.setAttribute('data-selectable',''); // so that navigating dropdown with [down] keypresses can navigate to this node\n\n\t\t}else if( (query in pagination) && !dropdown_content.querySelector('.no-results') ){\n\t\t\toption = self.render('no_more_results',{query:query});\n\t\t}\n\n\t\tif( option ){\n\t\t\taddClasses(option,self.settings.optionClass);\n\t\t\tdropdown_content.append( option );\n\t\t}\n\n\t});\n\n\n\t// add scroll listener and default templates\n\tself.on('initialize',()=>{\n\t\tdropdown_content = self.dropdown_content;\n\n\t\t// default templates\n\t\tself.settings.render = Object.assign({}, {\n\t\t\tloading_more:function(){\n\t\t\t\treturn `<div class=\"loading-more-results\">Loading more results ... </div>`;\n\t\t\t},\n\t\t\tno_more_results:function(){\n\t\t\t\treturn `<div class=\"no-more-results\">No more results</div>`;\n\t\t\t}\n\t\t},self.settings.render);\n\n\n\t\t// watch dropdown content scroll position\n\t\tdropdown_content.addEventListener('scroll',function(){\n\n\t\t\tconst scroll_percent = dropdown_content.clientHeight / (dropdown_content.scrollHeight - dropdown_content.scrollTop);\n\t\t\tif( scroll_percent < 0.95 ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// !important: this will get checked again in load() but we still need to check here otherwise loading_more will be set to true\n\t\t\tif( !canLoadMore(self.lastValue) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// don't call load() too much\n\t\t\tif( loading_more ) return;\n\n\n\t\t\tloading_more = true;\n\t\t\tself.load.call(self,self.lastValue);\n\t\t});\n\t});\n\n};\n", "import TomSelect from './tom-select';\n\nimport change_listener from './plugins/change_listener/plugin';\nimport checkbox_options from './plugins/checkbox_options/plugin';\nimport clear_button from './plugins/clear_button/plugin';\nimport drag_drop from './plugins/drag_drop/plugin';\nimport dropdown_header from './plugins/dropdown_header/plugin';\nimport caret_position from './plugins/caret_position/plugin';\nimport dropdown_input from './plugins/dropdown_input/plugin';\nimport input_autogrow from './plugins/input_autogrow/plugin';\nimport no_backspace_delete from './plugins/no_backspace_delete/plugin';\nimport no_active_items from './plugins/no_active_items/plugin';\nimport optgroup_columns from './plugins/optgroup_columns/plugin';\nimport remove_button from './plugins/remove_button/plugin';\nimport restore_on_backspace from './plugins/restore_on_backspace/plugin';\nimport virtual_scroll from './plugins/virtual_scroll/plugin';\n\nTomSelect.define('change_listener', change_listener);\nTomSelect.define('checkbox_options', checkbox_options);\nTomSelect.define('clear_button', clear_button);\nTomSelect.define('drag_drop', drag_drop);\nTomSelect.define('dropdown_header', dropdown_header);\nTomSelect.define('caret_position', caret_position);\nTomSelect.define('dropdown_input', dropdown_input);\nTomSelect.define('input_autogrow', input_autogrow);\nTomSelect.define('no_backspace_delete', no_backspace_delete);\nTomSelect.define('no_active_items', no_active_items);\nTomSelect.define('optgroup_columns', optgroup_columns);\nTomSelect.define('remove_button', remove_button);\nTomSelect.define('restore_on_backspace', restore_on_backspace);\nTomSelect.define('virtual_scroll', virtual_scroll);\n\nexport default TomSelect;\n", "(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.monthSelectPlugin = factory());\n}(this, (function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n\n function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n }\n\n var defaultConfig = {\n shorthand: false,\n dateFormat: \"F Y\",\n altFormat: \"F Y\",\n theme: \"light\",\n };\n function monthSelectPlugin(pluginConfig) {\n var config = __assign(__assign({}, defaultConfig), pluginConfig);\n return function (fp) {\n fp.config.dateFormat = config.dateFormat;\n fp.config.altFormat = config.altFormat;\n var self = { monthsContainer: null };\n function clearUnnecessaryDOMElements() {\n if (!fp.rContainer || !fp.daysContainer || !fp.weekdayContainer)\n return;\n fp.rContainer.removeChild(fp.daysContainer);\n fp.rContainer.removeChild(fp.weekdayContainer);\n for (var index = 0; index < fp.monthElements.length; index++) {\n var element = fp.monthElements[index];\n if (!element.parentNode)\n continue;\n element.parentNode.removeChild(element);\n }\n }\n function addListeners() {\n fp._bind(fp.prevMonthNav, \"click\", function (e) {\n e.preventDefault();\n e.stopPropagation();\n fp.changeYear(fp.currentYear - 1);\n selectYear();\n });\n fp._bind(fp.nextMonthNav, \"click\", function (e) {\n e.preventDefault();\n e.stopPropagation();\n fp.changeYear(fp.currentYear + 1);\n selectYear();\n });\n }\n function addMonths() {\n if (!fp.rContainer)\n return;\n self.monthsContainer = fp._createElement(\"div\", \"flatpickr-monthSelect-months\");\n self.monthsContainer.tabIndex = -1;\n fp.calendarContainer.classList.add(\"flatpickr-monthSelect-theme-\" + config.theme);\n for (var i = 0; i < 12; i++) {\n var month = fp._createElement(\"span\", \"flatpickr-monthSelect-month\");\n month.dateObj = new Date(fp.currentYear, i);\n month.$i = i;\n month.textContent = monthToStr(i, config.shorthand, fp.l10n);\n month.tabIndex = -1;\n month.addEventListener(\"click\", selectMonth);\n self.monthsContainer.appendChild(month);\n if ((fp.config.minDate && month.dateObj < fp.config.minDate) ||\n (fp.config.maxDate && month.dateObj > fp.config.maxDate)) {\n month.classList.add(\"disabled\");\n }\n }\n fp.rContainer.appendChild(self.monthsContainer);\n }\n function setCurrentlySelected() {\n if (!fp.rContainer)\n return;\n var currentlySelected = fp.rContainer.querySelectorAll(\".flatpickr-monthSelect-month.selected\");\n for (var index = 0; index < currentlySelected.length; index++) {\n currentlySelected[index].classList.remove(\"selected\");\n }\n var targetMonth = (fp.selectedDates[0] || new Date()).getMonth();\n var month = fp.rContainer.querySelector(\".flatpickr-monthSelect-month:nth-child(\" + (targetMonth + 1) + \")\");\n if (month) {\n month.classList.add(\"selected\");\n }\n }\n function selectYear() {\n var selectedDate = fp.selectedDates[0];\n if (selectedDate) {\n selectedDate = new Date(selectedDate);\n selectedDate.setFullYear(fp.currentYear);\n if (fp.config.minDate && selectedDate < fp.config.minDate) {\n selectedDate = fp.config.minDate;\n }\n if (fp.config.maxDate && selectedDate > fp.config.maxDate) {\n selectedDate = fp.config.maxDate;\n }\n fp.currentYear = selectedDate.getFullYear();\n }\n fp.currentYearElement.value = String(fp.currentYear);\n if (fp.rContainer) {\n var months = fp.rContainer.querySelectorAll(\".flatpickr-monthSelect-month\");\n months.forEach(function (month) {\n month.dateObj.setFullYear(fp.currentYear);\n if ((fp.config.minDate && month.dateObj < fp.config.minDate) ||\n (fp.config.maxDate && month.dateObj > fp.config.maxDate)) {\n month.classList.add(\"disabled\");\n }\n else {\n month.classList.remove(\"disabled\");\n }\n });\n }\n setCurrentlySelected();\n }\n function selectMonth(e) {\n e.preventDefault();\n e.stopPropagation();\n var eventTarget = getEventTarget(e);\n if (eventTarget instanceof Element &&\n !eventTarget.classList.contains(\"disabled\")) {\n setMonth(eventTarget.dateObj);\n fp.close();\n }\n }\n function setMonth(date) {\n var selectedDate = new Date(date);\n selectedDate.setFullYear(fp.currentYear);\n fp.setDate(selectedDate, true);\n setCurrentlySelected();\n }\n var shifts = {\n 37: -1,\n 39: 1,\n 40: 3,\n 38: -3,\n };\n function onKeyDown(_, __, ___, e) {\n var shouldMove = shifts[e.keyCode] !== undefined;\n if (!shouldMove && e.keyCode !== 13) {\n return;\n }\n if (!fp.rContainer || !self.monthsContainer)\n return;\n var currentlySelected = fp.rContainer.querySelector(\".flatpickr-monthSelect-month.selected\");\n var index = Array.prototype.indexOf.call(self.monthsContainer.children, document.activeElement);\n if (index === -1) {\n var target = currentlySelected || self.monthsContainer.firstElementChild;\n target.focus();\n index = target.$i;\n }\n if (shouldMove) {\n self.monthsContainer.children[(12 + index + shifts[e.keyCode]) % 12].focus();\n }\n else if (e.keyCode === 13 &&\n self.monthsContainer.contains(document.activeElement)) {\n setMonth(document.activeElement.dateObj);\n }\n }\n function destroyPluginInstance() {\n if (self.monthsContainer !== null) {\n var months = self.monthsContainer.querySelectorAll(\".flatpickr-monthSelect-month\");\n for (var index = 0; index < months.length; index++) {\n months[index].removeEventListener(\"click\", selectMonth);\n }\n }\n }\n return {\n onParseConfig: function () {\n fp.config.mode = \"single\";\n fp.config.enableTime = false;\n },\n onValueUpdate: setCurrentlySelected,\n onKeyDown: onKeyDown,\n onReady: [\n function () {\n fp.currentMonth = 0;\n },\n clearUnnecessaryDOMElements,\n addListeners,\n addMonths,\n setCurrentlySelected,\n function () {\n fp.loadedPlugins.push(\"monthSelect\");\n },\n ],\n onDestroy: destroyPluginInstance,\n };\n };\n }\n\n return monthSelectPlugin;\n\n})));\n", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.FroalaEditor=t()}(this,function(){\"use strict\";function M(e){return(M=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest||(Element.prototype.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length;0<=--n&&t.item(n)!==this;);return-1<n}),Array.isArray||(Array.isArray=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)}),\"function\"!=typeof Object.assign&&Object.defineProperty(Object,\"assign\",{value:function(e,t){if(null==e)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(e),r=1;r<arguments.length;r++){var o=arguments[r];if(null!=o)for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(n[i]=o[i])}return n},writable:!0,configurable:!0}),function(){var a=/^\\s*:scope/gi,s=/,\\s*:scope/gi,l=document.createElement(\"div\");function e(e,t){var i=e[t];e[t]=function(e){var t,n=!1,r=!1;if(!e||Array.isArray(e)||!e.match(a)&&!e.match(s))return i.call(this,e);this.parentNode||(l.appendChild(this),r=!0);var o=this.parentNode;return this.id||(this.id=\"rootedQuerySelector_id_\".concat((new Date).getTime()),n=!0),t=i.call(o,e.replace(a,\"#\".concat(this.id)).replace(s,\",#\".concat(this.id))),n&&(this.id=\"\"),r&&l.removeChild(this),t}}try{var t=l.querySelectorAll(\":scope *\");if(!t||Array.isArray(t))throw\"error\"}catch(n){e(Element.prototype,\"querySelector\"),e(Element.prototype,\"querySelectorAll\"),e(HTMLElement.prototype,\"querySelector\"),e(HTMLElement.prototype,\"querySelectorAll\")}}(),\"document\"in self&&(\"classList\"in document.createElement(\"_\")&&(!document.createElementNS||\"classList\"in document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\"))||function(e){if(\"Element\"in e){var t=\"classList\",n=\"prototype\",r=e.Element[n],o=Object,i=String[n].trim||function(){return this.replace(/^\\s+|\\s+$/g,\"\")},a=Array[n].indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(t in this&&this[t]===e)return t;return-1},s=function s(e,t){this.name=e,this.code=DOMException[e],this.message=t},l=function l(e,t){if(\"\"===t)throw new s(\"SYNTAX_ERR\",\"The token must not be empty.\");if(/\\s/.test(t))throw new s(\"INVALID_CHARACTER_ERR\",\"The token must not contain space characters.\");return a.call(e,t)},c=function c(e){for(var t=i.call(e.getAttribute(\"class\")||\"\"),n=t?t.split(/\\s+/):[],r=0,o=n.length;r<o;r++)this.push(n[r]);this._updateClassName=function(){e.setAttribute(\"class\",this.toString())}},d=c[n]=[],f=function f(){return new c(this)};if(s[n]=Error[n],d.item=function(e){return this[e]||null},d.contains=function(e){return~l(this,e+\"\")},d.add=function(){for(var e,t=arguments,n=0,r=t.length,o=!1;e=t[n]+\"\",~l(this,e)||(this.push(e),o=!0),++n<r;);o&&this._updateClassName()},d.remove=function(){var e,t,n=arguments,r=0,o=n.length,i=!1;do{for(e=n[r]+\"\",t=l(this,e);~t;)this.splice(t,1),i=!0,t=l(this,e)}while(++r<o);i&&this._updateClassName()},d.toggle=function(e,t){var n=this.contains(e),r=n?!0!==t&&\"remove\":!1!==t&&\"add\";return r&&this[r](e),!0===t||!1===t?t:!n},d.replace=function(e,t){var n=l(e+\"\");~n&&(this.splice(n,1,t),this._updateClassName())},d.toString=function(){return this.join(\" \")},o.defineProperty){var p={get:f,enumerable:!0,configurable:!0};try{o.defineProperty(r,t,p)}catch(h){void 0!==h.number&&-2146823252!==h.number||(p.enumerable=!1,o.defineProperty(r,t,p))}}else o[n].__defineGetter__&&r.__defineGetter__(t,f)}}(self),function(){var e=document.createElement(\"_\");if(e.classList.add(\"c1\",\"c2\"),!e.classList.contains(\"c2\")){var t=function zc(e){var zc=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var t,n=arguments.length;for(t=0;t<n;t++)e=arguments[t],zc.call(this,e)}};t(\"add\"),t(\"remove\")}if(e.classList.toggle(\"c3\",!1),e.classList.contains(\"c3\")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:n.call(this,e)}}\"replace\"in document.createElement(\"_\").classList||(DOMTokenList.prototype.replace=function(e,t){var n=this.toString().split(\" \"),r=n.indexOf(e+\"\");~r&&(n=n.slice(r),this.remove.apply(this,n),this.add(t),this.add.apply(this,n.slice(1)))}),e=null}()),function(){var e,t=-1;if(\"Microsoft Internet Explorer\"===navigator.appName?(e=navigator.userAgent,null!==new RegExp(\"MSIE ([0-9]{1,}[\\\\.0-9]{0,})\").exec(e)&&(t=parseFloat(RegExp.$1))):\"Netscape\"===navigator.appName&&(e=navigator.userAgent,null!==new RegExp(\"Trident/.*rv:([0-9]{1,}[\\\\.0-9]{0,})\").exec(e)&&(t=parseFloat(RegExp.$1))),!(\"undefined\"==typeof window||\"undefined\"==typeof document||\"undefined\"==typeof HTMLElement||t<0)){var n=!1;try{var r=document.createElement(\"div\");r.addEventListener(\"focus\",function(e){e.preventDefault(),e.stopPropagation()},!0),r.focus(Object.defineProperty({},\"preventScroll\",{get:function(){if(navigator&&\"undefined\"!=typeof navigator.userAgent&&navigator.userAgent&&navigator.userAgent.match(/Edge\\/1[7-8]/))return n=!1;n=!0}}))}catch(s){}if(HTMLElement.prototype.nativeFocus===undefined&&!n){HTMLElement.prototype.nativeFocus=HTMLElement.prototype.focus;var o=function o(e){for(var t=e.parentNode,n=[],r=document.scrollingElement||document.documentElement;t&&t!==r;)(t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth)&&n.push([t,t.scrollTop,t.scrollLeft]),t=t.parentNode;return t=r,n.push([t,t.scrollTop,t.scrollLeft]),n},i=function i(e){for(var t=0;t<e.length;t++)e[t][0].scrollTop=e[t][1],e[t][0].scrollLeft=e[t][2];e=[]},a=function a(e){if(e&&e.preventScroll){var t=o(this);if(\"function\"==typeof setTimeout){var n=this;setTimeout(function(){n.nativeFocus(),i(t)},0)}else this.nativeFocus(),i(t)}else this.nativeFocus()};HTMLElement.prototype.focus=a}}}();function V(e,t,n){if(\"string\"!=typeof e)return new V.Bootstrap(e,t,n);var r=document.querySelectorAll(e);t&&t.iframe_document&&(r=t.iframe_document.querySelectorAll(e));for(var o=[],i=0;i<r.length;i++){var a=r[i][\"data-froala.editor\"];a?o.push(a):o.push(new V.Bootstrap(r[i],t,n))}return 1==o.length?o[0]:o}V.RegisterPlugins=function(e){for(var t=0;t<e.length;t++)e[t].call(V)},Object.assign(V,{DEFAULTS:{initOnClick:!1,pluginsEnabled:null},MODULES:{},PLUGINS:{},VERSION:\"4.0.19\",INSTANCES:[],OPTS_MAPPING:{},SHARED:{},ID:0}),V.MODULES.node=function(a){var n=a.$;function s(e){return e&&\"IFRAME\"!==e.tagName?Array.prototype.slice.call(e.childNodes||[]):[]}function l(e){return!!e&&(e.nodeType===Node.ELEMENT_NODE&&0<=V.BLOCK_TAGS.indexOf(e.tagName.toLowerCase()))}function c(e){var t={},n=e.attributes;if(n)for(var r=0;r<n.length;r++){var o=n[r];t[o.nodeName]=o.value}return t}function t(e){for(var t=\"\",n=c(e),r=Object.keys(n),o=0;o<r.length;o++){var i=r[o],a=n[i];a.indexOf(\"'\")<0&&0<=a.indexOf('\"')?t+=\" \".concat(i,\"='\").concat(a,\"'\"):(0<=a.indexOf('\"')&&0<=a.indexOf(\"'\")&&(a=a.replace(/\"/g,\""\")),t+=\" \".concat(i,'=\"').concat(a,'\"'))}return t}function r(e){return e===a.el}return{isBlock:l,isEmpty:function d(e,t){if(!e)return!0;if(e.querySelector(\"table\"))return!1;var n=s(e);1===n.length&&l(n[0])&&(n=s(n[0]));for(var r=!1,o=0;o<n.length;o++){var i=n[o];if(!(t&&a.node.hasClass(i,\"fr-marker\")||i.nodeType===Node.TEXT_NODE&&0===i.textContent.length)){if(\"BR\"!==i.tagName&&0<(i.textContent||\"\").replace(/\\u200B/gi,\"\").replace(/\\n/g,\"\").length)return!1;if(r)return!1;\"BR\"===i.tagName&&(r=!0)}}return!(e.querySelectorAll(V.VOID_ELEMENTS.join(\",\")).length-e.querySelectorAll(\"br\").length||e.querySelector(\"\".concat(a.opts.htmlAllowedEmptyTags.join(\":not(.fr-marker),\"),\":not(.fr-marker)\"))||1<e.querySelectorAll(V.BLOCK_TAGS.join(\",\")).length||e.querySelector(\"\".concat(a.opts.htmlDoNotWrapTags.join(\":not(.fr-marker),\"),\":not(.fr-marker)\")))},blockParent:function o(e){for(;e&&e.parentNode!==a.el&&(!e.parentNode||!a.node.hasClass(e.parentNode,\"fr-inner\"));)if(l(e=e.parentNode))return e;return null},deepestParent:function i(e,t,n){if(void 0===t&&(t=[]),void 0===n&&(n=!0),t.push(a.el),0<=t.indexOf(e.parentNode)||e.parentNode&&a.node.hasClass(e.parentNode,\"fr-inner\")||e.parentNode&&0<=V.SIMPLE_ENTER_TAGS.indexOf(e.parentNode.tagName)&&n)return null;for(;t.indexOf(e.parentNode)<0&&e.parentNode&&!a.node.hasClass(e.parentNode,\"fr-inner\")&&(V.SIMPLE_ENTER_TAGS.indexOf(e.parentNode.tagName)<0||!n)&&(!l(e)||l(e.parentNode))&&(!l(e)||!l(e.parentNode)||!n);)e=e.parentNode;return e},rawAttributes:c,attributes:t,clearAttributes:function f(e){for(var t=e.attributes,n=t.length-1;0<=n;n--){var r=t[n];e.removeAttribute(r.nodeName)}},openTagString:function p(e){return\"<\".concat(e.tagName.toLowerCase()).concat(t(e),\">\")},closeTagString:function h(e){return\"</\".concat(e.tagName.toLowerCase(),\">\")},isFirstSibling:function u(e,t){void 0===t&&(t=!0);for(var n=e.previousSibling;n&&t&&a.node.hasClass(n,\"fr-marker\");)n=n.previousSibling;return!n||n.nodeType===Node.TEXT_NODE&&\"\"===n.textContent&&u(n)},isLastSibling:function g(e,t){void 0===t&&(t=!0);for(var n=e.nextSibling;n&&t&&a.node.hasClass(n,\"fr-marker\");)n=n.nextSibling;return!n||n.nodeType===Node.TEXT_NODE&&\"\"===n.textContent&&g(n)},isList:function C(e){return!!e&&0<=[\"UL\",\"OL\"].indexOf(e.tagName)},isLink:function m(e){return!!e&&e.nodeType===Node.ELEMENT_NODE&&\"a\"===e.tagName.toLowerCase()},isElement:r,contents:s,isVoid:function v(e){return e&&e.nodeType===Node.ELEMENT_NODE&&0<=V.VOID_ELEMENTS.indexOf((e.tagName||\"\").toLowerCase())},hasFocus:function b(e){return e===a.doc.activeElement&&(!a.doc.hasFocus||a.doc.hasFocus())&&Boolean(r(e)||e.type||e.href||~e.tabIndex)},isEditable:function L(e){return(!e.getAttribute||\"false\"!==e.getAttribute(\"contenteditable\"))&&[\"STYLE\",\"SCRIPT\"].indexOf(e.tagName)<0},isDeletable:function E(e){return e&&e.nodeType===Node.ELEMENT_NODE&&e.getAttribute(\"class\")&&0<=(e.getAttribute(\"class\")||\"\").indexOf(\"fr-deletable\")},hasClass:function y(e,t){return e instanceof n&&(e=e.get(0)),e&&e.classList&&e.classList.contains(t)},filter:function S(e){return a.browser.msie?e:{acceptNode:e}}}},Object.assign(V.DEFAULTS,{DOMPurify:window.DOMPurify,htmlAllowedTags:[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"bdi\",\"bdo\",\"blockquote\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"hr\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"menu\",\"menuitem\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"pre\",\"progress\",\"queue\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"style\",\"section\",\"select\",\"small\",\"source\",\"span\",\"strike\",\"strong\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\",\"u\",\"ul\",\"var\",\"video\",\"wbr\"],htmlRemoveTags:[\"script\",\"style\"],htmlAllowedAttrs:[\"accept\",\"accept-charset\",\"accesskey\",\"action\",\"align\",\"allowfullscreen\",\"allowtransparency\",\"alt\",\"async\",\"autocomplete\",\"autofocus\",\"autoplay\",\"autosave\",\"background\",\"bgcolor\",\"border\",\"charset\",\"cellpadding\",\"cellspacing\",\"checked\",\"cite\",\"class\",\"color\",\"cols\",\"colspan\",\"content\",\"contenteditable\",\"contextmenu\",\"controls\",\"coords\",\"data\",\"data-.*\",\"datetime\",\"default\",\"defer\",\"dir\",\"dirname\",\"disabled\",\"download\",\"draggable\",\"dropzone\",\"enctype\",\"for\",\"form\",\"formaction\",\"frameborder\",\"headers\",\"height\",\"hidden\",\"high\",\"href\",\"hreflang\",\"http-equiv\",\"icon\",\"id\",\"ismap\",\"itemprop\",\"keytype\",\"kind\",\"label\",\"lang\",\"language\",\"list\",\"loop\",\"low\",\"max\",\"maxlength\",\"media\",\"method\",\"min\",\"mozallowfullscreen\",\"multiple\",\"muted\",\"name\",\"novalidate\",\"open\",\"optimum\",\"pattern\",\"ping\",\"placeholder\",\"playsinline\",\"poster\",\"preload\",\"pubdate\",\"radiogroup\",\"readonly\",\"rel\",\"required\",\"reversed\",\"rows\",\"rowspan\",\"sandbox\",\"scope\",\"scoped\",\"scrolling\",\"seamless\",\"selected\",\"shape\",\"size\",\"sizes\",\"span\",\"src\",\"srcdoc\",\"srclang\",\"srcset\",\"start\",\"step\",\"summary\",\"spellcheck\",\"style\",\"tabindex\",\"target\",\"title\",\"type\",\"translate\",\"usemap\",\"value\",\"valign\",\"webkitallowfullscreen\",\"width\",\"wrap\"],htmlAllowedStyleProps:[\".*\"],htmlAllowComments:!0,htmlUntouched:!1,fullPage:!1}),V.HTML5Map={B:\"STRONG\",I:\"EM\",STRIKE:\"S\"},V.MODULES.clean=function(f){var d,p,h,u,g=f.$;function o(e){if(e.nodeType===Node.ELEMENT_NODE&&e.getAttribute(\"class\")&&0<=e.getAttribute(\"class\").indexOf(\"fr-marker\"))return!1;var t,n=f.node.contents(e),r=[];for(t=0;t<n.length;t++)n[t].nodeType!==Node.ELEMENT_NODE||f.node.isVoid(n[t])?n[t].nodeType===Node.TEXT_NODE&&(n[t].textContent=n[t].textContent.replace(/\\u200b/g,\"\")):n[t].textContent.replace(/\\u200b/g,\"\").length!==n[t].textContent.length&&o(n[t]);if(e.nodeType===Node.ELEMENT_NODE&&!f.node.isVoid(e)&&(e.normalize(),n=f.node.contents(e),r=e.querySelectorAll(\".fr-marker\"),n.length-r.length==0)){for(t=0;t<n.length;t++)if(n[t].nodeType===Node.ELEMENT_NODE&&(n[t].getAttribute(\"class\")||\"\").indexOf(\"fr-marker\")<0)return!1;for(t=0;t<r.length;t++)e.parentNode.insertBefore(r[t].cloneNode(!0),e);return e.parentNode.removeChild(e),!1}}function s(e,t){if(e.nodeType===Node.COMMENT_NODE)return\"\\x3c!--\".concat(e.nodeValue,\"--\\x3e\");if(e.nodeType===Node.TEXT_NODE)return t?e.textContent.replace(/&/g,\"&\").replace(/</g,\"<\").replace(/>/g,\">\"):e.textContent.replace(/&/g,\"&\").replace(/</g,\"<\").replace(/>/g,\">\").replace(/\\u00A0/g,\" \").replace(/\\u0009/g,\"\");if(e.nodeType!==Node.ELEMENT_NODE)return e.outerHTML;if(e.nodeType===Node.ELEMENT_NODE&&0<=[\"STYLE\",\"SCRIPT\",\"NOSCRIPT\"].indexOf(e.tagName))return e.outerHTML;if(e.nodeType===Node.ELEMENT_NODE&&\"svg\"===e.tagName){var n=document.createElement(\"div\"),r=e.cloneNode(!0);return n.appendChild(r),n.innerHTML}if(\"IFRAME\"===e.tagName)return e.outerHTML.replace(/</g,\"<\").replace(/>/g,\">\");var o=e.childNodes;if(0===o.length)return e.outerHTML;for(var i=\"\",a=0;a<o.length;a++)\"PRE\"===e.tagName&&(t=!0),i+=s(o[a],t);return f.node.openTagString(e)+i+f.node.closeTagString(e)}var l=[];function C(e){var t=e.replace(/;;/gi,\";\");return\";\"!==(t=t.replace(/^;/gi,\"\")).charAt(t.length)&&(t+=\";\"),t}function c(e){var t;for(t in e)if(Object.prototype.hasOwnProperty.call(e,t)){var n=t.match(h),r=null;\"style\"===t&&f.opts.htmlAllowedStyleProps.length&&(r=e[t].match(u)),n&&r?e[t]=C(r.join(\";\")):n&&(\"style\"!==t||r)||delete e[t]}for(var o=\"\",i=Object.keys(e).sort(),a=0;a<i.length;a++)e[t=i[a]].indexOf('\"')<0?o+=\" \".concat(t,'=\"').concat(e[t],'\"'):o+=\" \".concat(t,\"='\").concat(e[t],\"'\");return o}function m(e,t){var n,r=document.implementation.createHTMLDocument(\"Froala DOC\").createElement(\"DIV\");g(r).append(e);var o=\"\";if(r){var i=f.node.contents(r);for(n=0;n<i.length;n++)t(i[n]);for(i=f.node.contents(r),n=0;n<i.length;n++)o+=s(i[n])}return o}function v(e,t,n){var r=e=function i(e){return l=[],e=(e=(e=(e=e.replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,function(e){return l.push(e),\"[FROALA.EDITOR.SCRIPT \".concat(l.length-1,\"]\")})).replace(/<noscript\\b[^<]*(?:(?!<\\/noscript>)<[^<]*)*<\\/noscript>/gi,function(e){return l.push(e),\"[FROALA.EDITOR.NOSCRIPT \".concat(l.length-1,\"]\")})).replace(/<meta((?:[\\w\\W]*?)) http-equiv=\"/g,'<meta$1 data-fr-http-equiv=\"')).replace(/<img((?:[\\w\\W]*?)) src=\"/g,'<img$1 data-fr-src=\"')}(e),o=null;return f.opts.fullPage&&(r=f.html.extractNode(e,\"body\")||(0<=e.indexOf(\"<body\")?\"\":e),n&&(o=f.html.extractNode(e,\"head\")||\"\")),r=m(r,t),o&&(o=m(o,t)),function a(e){return e=(e=(e=e.replace(/\\[FROALA\\.EDITOR\\.SCRIPT ([\\d]*)\\]/gi,function(e,t){return 0<=f.opts.htmlRemoveTags.indexOf(\"script\")?\"\":l[parseInt(t,10)]})).replace(/\\[FROALA\\.EDITOR\\.NOSCRIPT ([\\d]*)\\]/gi,function(e,t){if(0<=f.opts.htmlRemoveTags.indexOf(\"noscript\"))return\"\";var n=l[parseInt(t,10)].replace(/</g,\"<\").replace(/>/g,\">\"),r=g(n);if(r&&r.length){var o=m(r.html(),L);r.html(o),n=r.get(0).outerHTML}return n})).replace(/<img((?:[\\w\\W]*?)) data-fr-src=\"/g,'<img$1 src=\"')}(function s(e,t,n){if(f.opts.fullPage){var r=f.html.extractDoctype(n),o=c(f.html.extractNodeAttrs(n,\"html\"));t=null===t?f.html.extractNode(n,\"head\")||\"<title></title>\":t;var i=c(f.html.extractNodeAttrs(n,\"head\")),a=c(f.html.extractNodeAttrs(n,\"body\"));return\"\".concat(r,\"<html\").concat(o,\"><head\").concat(i,\">\").concat(t,\"</head><body\").concat(a,\">\").concat(e,\"</body></html>\")}return e}(r,o,e))}function b(e){var t=f.doc.createElement(\"DIV\");return t.innerText=e,t.textContent}function L(e){for(var t=f.node.contents(e),n=0;n<t.length;n++)t[n].nodeType!==Node.TEXT_NODE&&L(t[n]);!function c(a){if(\"SPAN\"===a.tagName&&0<=(a.getAttribute(\"class\")||\"\").indexOf(\"fr-marker\"))return!1;if(\"PRE\"===a.tagName&&function l(e){var t=e.innerHTML;0<=t.indexOf(\"\\n\")&&(e.innerHTML=t.replace(/\\n/g,\"<br>\"))}(a),a.nodeType===Node.ELEMENT_NODE&&(a.getAttribute(\"data-fr-src\")&&0!==a.getAttribute(\"data-fr-src\").indexOf(\"blob:\")&&a.setAttribute(\"data-fr-src\",f.helpers.sanitizeURL(b(a.getAttribute(\"data-fr-src\")))),a.getAttribute(\"href\")&&a.setAttribute(\"href\",f.helpers.sanitizeURL(b(a.getAttribute(\"href\")))),a.getAttribute(\"src\")&&a.setAttribute(\"src\",f.helpers.sanitizeURL(b(a.getAttribute(\"src\")))),a.getAttribute(\"srcdoc\")&&a.setAttribute(\"srcdoc\",f.clean.html(a.getAttribute(\"srcdoc\"))),0<=[\"TABLE\",\"TBODY\",\"TFOOT\",\"TR\"].indexOf(a.tagName)&&(a.innerHTML=a.innerHTML.trim())),!f.opts.pasteAllowLocalImages&&a.nodeType===Node.ELEMENT_NODE&&\"IMG\"===a.tagName&&a.getAttribute(\"data-fr-src\")&&0===a.getAttribute(\"data-fr-src\").indexOf(\"file://\"))return a.parentNode.removeChild(a),!1;if(a.nodeType===Node.ELEMENT_NODE&&V.HTML5Map[a.tagName]&&\"\"===f.node.attributes(a)){var e=V.HTML5Map[a.tagName],t=\"<\".concat(e,\">\").concat(a.innerHTML,\"</\").concat(e,\">\");a.insertAdjacentHTML(\"beforebegin\",t),(a=a.previousSibling).parentNode.removeChild(a.nextSibling)}if(f.opts.htmlAllowComments||a.nodeType!==Node.COMMENT_NODE)if(a.tagName&&a.tagName.match(p))\"STYLE\"==a.tagName&&f.helpers.isMac()&&function(){var e,n=a.innerHTML.trim(),r=[],t=/{([^}]+)}/g;for(n=n.replace(/\\/\\*[\\s\\S]*?\\*\\/|([^\\\\:]|^)\\/\\/.*|<!--[\\s\\S]*?-->$/,\"\");e=t.exec(n);)r.push(e[1]);for(var o=function o(t){var e=n.substring(0,n.indexOf(\"{\")).trim();0==!/^[a-z_-][a-z\\d_-]*$/i.test(e)&&a.parentNode.querySelectorAll(e).forEach(function(e){e.removeAttribute(\"class\"),e.setAttribute(\"style\",r[t])}),n=n.substring(n.indexOf(\"}\")+1)},i=0;-1!=n.indexOf(\"{\");i++)o(i)}(),a.parentNode.removeChild(a);else if(a.tagName&&!a.tagName.match(d))\"svg\"===a.tagName?a.parentNode.removeChild(a):f.browser.safari&&\"path\"===a.tagName&&a.parentNode&&\"svg\"===a.parentNode.tagName||(a.outerHTML=a.innerHTML);else{var n=a.attributes;if(n)for(var r=n.length-1;0<=r;r--){var o=n[r],i=o.nodeName.match(h),s=null;\"style\"===o.nodeName&&f.opts.htmlAllowedStyleProps.length&&(s=o.value.match(u)),i&&s?o.value=C(s.join(\";\")):i&&(\"style\"!==o.nodeName||s)||a.removeAttribute(o.nodeName)}}else 0!==a.data.indexOf(\"[FROALA.EDITOR\")&&a.parentNode.removeChild(a)}(e)}return{_init:function e(){f.opts.fullPage&&g.merge(f.opts.htmlAllowedTags,[\"head\",\"title\",\"style\",\"link\",\"base\",\"body\",\"html\",\"meta\"])},html:function E(e,t,n,r){void 0===t&&(t=[]),void 0===n&&(n=[]),void 0===r&&(r=!1);var o,i=g.merge([],f.opts.htmlAllowedTags);for(o=0;o<t.length;o++)0<=i.indexOf(t[o])&&i.splice(i.indexOf(t[o]),1);var a=g.merge([],f.opts.htmlAllowedAttrs);for(o=0;o<n.length;o++)0<=a.indexOf(n[o])&&a.splice(a.indexOf(n[o]),1);return a.push(\"data-fr-.*\"),a.push(\"fr-.*\"),d=new RegExp(\"^\".concat(i.join(\"$|^\"),\"$\"),\"gi\"),h=new RegExp(\"^\".concat(a.join(\"$|^\"),\"$\"),\"gi\"),p=new RegExp(\"^\".concat(f.opts.htmlRemoveTags.join(\"$|^\"),\"$\"),\"gi\"),u=f.opts.htmlAllowedStyleProps.length?new RegExp(\"((^|;|\\\\s)\".concat(f.opts.htmlAllowedStyleProps.join(\":.+?(?=;|$))|((^|;|\\\\s)\"),\":.+?(?=(;)|$))\"),\"gi\"):null,e=v(e,L,!0),\"undefined\"!=typeof f.opts.DOMPurify&&(e=f.opts.DOMPurify.sanitize(e,{ADD_TAGS:f.opts.htmlAllowedTags,ALLOW_UNKNOWN_PROTOCOLS:!0})),e},toHTML5:function r(){var e=f.el.querySelectorAll(Object.keys(V.HTML5Map).join(\",\"));if(e.length){var t=!1;f.el.querySelector(\".fr-marker\")||(f.selection.save(),t=!0);for(var n=0;n<e.length;n++)\"\"===f.node.attributes(e[n])&&g(e[n]).replaceWith(\"<\".concat(V.HTML5Map[e[n].tagName],\">\").concat(e[n].innerHTML,\"</\").concat(V.HTML5Map[e[n].tagName],\">\"));t&&f.selection.restore()}},tables:function t(){!function c(){for(var e=f.el.querySelectorAll(\"tr\"),t=0,n=0;n<e.length;n++){var r=e[n].outerHTML.match(/rowspan=\"([0-9]+)\"/);r&&(t+=Number(r[1])-1);for(var o=e[n].children,i=!0,a=0;a<o.length;a++)if(\"TH\"!==o[a].tagName){i=!1;break}if(!1!==i&&0!==o.length){var s=e[n];if(1===o.length&&\"TH\"===o[0].tagName&&t)t--;else{for(;s&&\"TABLE\"!==s.tagName&&\"THEAD\"!==s.tagName;)s=s.parentNode;var l=s;l.firstChild.nodeType===Node.ELEMENT_NODE&&\"THEAD\"===l.firstChild.tagName?l=l.firstChild:\"THEAD\"!==l.tagName&&(l=f.doc.createElement(\"THEAD\"),s.insertBefore(l,s.firstChild)),l.appendChild(e[n])}}}}()},lists:function y(){!function s(){var e,t=[];do{if(t.length){var n=t[0],r=f.doc.createElement(\"ul\");n.parentNode.insertBefore(r,n);do{var o=n;n=n.nextSibling,r.appendChild(o)}while(n&&\"LI\"===n.tagName)}t=[];for(var i=f.el.querySelectorAll(\"li\"),a=0;a<i.length;a++)e=i[a],f.node.isList(e.parentNode)||t.push(i[a])}while(0<t.length)}(),function i(){for(var e=f.el.querySelectorAll(\"ol + ol, ul + ul\"),t=0;t<e.length;t++){var n=e[t];if(f.node.isList(n.previousSibling)&&f.node.openTagString(n)===f.node.openTagString(n.previousSibling)){for(var r=f.node.contents(n),o=0;o<r.length;o++)n.previousSibling.appendChild(r[o]);n.parentNode.removeChild(n)}}}(),function a(){for(var e=f.el.querySelectorAll(\"ul, ol\"),t=0;t<e.length;t++)for(var n=f.node.contents(e[t]),r=null,o=n.length-1;0<=o;o--)!n[o].tagName&&f.opts.htmlUntouched||\"LI\"===n[o].tagName||\"UL\"==n[o].tagName||\"OL\"==n[o].tagName?r=null:\"BR\"==n[o].tagName?g(n[o]).remove():(r||(r=g(f.doc.createElement(\"LI\"))).insertBefore(n[o]),r.prepend(n[o]))}(),function l(){var e,t,n;do{t=!1;var r=f.el.querySelectorAll(\"li:empty\");for(e=0;e<r.length;e++)r[e].parentNode.removeChild(r[e]);var o=f.el.querySelectorAll(\"ul, ol\");for(e=0;e<o.length;e++)(n=o[e]).querySelector(\"LI\")||(t=!0,n.parentNode.removeChild(n))}while(!0===t)}(),function o(){for(var e=f.el.querySelectorAll(\"ul > ul, ol > ol, ul > ol, ol > ul\"),t=0;t<e.length;t++){var n=e[t],r=n.previousSibling;r&&(\"LI\"===r.tagName?r.appendChild(n):g(n).wrap(\"<li></li>\"))}}(),function c(){for(var e=f.el.querySelectorAll(\"li > ul, li > ol\"),t=0;t<e.length;t++){var n=e[t];if(n.nextSibling)for(var r=n.nextSibling;0<r.childNodes.length;)n.append(r.childNodes[0])}}(),function d(){for(var e=f.el.querySelectorAll(\"li > ul, li > ol\"),t=0;t<e.length;t++){var n=e[t];if(f.node.isFirstSibling(n)&&\"none\"!=n.parentNode.style.listStyleType)g(n).before(\"<br/>\");else if(n.previousSibling&&\"BR\"===n.previousSibling.tagName){for(var r=n.previousSibling.previousSibling;r&&f.node.hasClass(r,\"fr-marker\");)r=r.previousSibling;r&&\"BR\"!==r.tagName&&g(n.previousSibling).remove()}}}(),function n(){for(var e=f.el.querySelectorAll(\"li:empty\"),t=0;t<e.length;t++)g(e[t]).remove()}()},invisibleSpaces:function n(e){return e.replace(/\\u200b/g,\"\").length===e.length?e:f.clean.exec(e,o)},exec:v}},V.XS=0,V.SM=1,V.MD=2,V.LG=3;V.LinkRegExCommon=\"[\".concat(\"a-z\\\\u0080-\\\\u009f\\\\u00a1-\\\\uffff0-9-_\\\\.\",\"]{1,}\"),V.LinkRegExEnd=\"((:[0-9]{1,5})|)(((\\\\/|\\\\?|#)[a-z\\\\u00a1-\\\\uffff0-9@?\\\\|!^=%&\\\\/~+#-\\\\'*-_{}]*)|())\",V.LinkRegExTLD=\"((\".concat(V.LinkRegExCommon,\")(\\\\.(com|net|org|edu|mil|gov|co|biz|info|me|dev)))\"),V.LinkRegExHTTP=\"((ftp|http|https):\\\\/\\\\/\".concat(V.LinkRegExCommon,\")\"),V.LinkRegExAuth=\"((ftp|http|https):\\\\/\\\\/[\\\\u0021-\\\\uffff]{1,}@\".concat(V.LinkRegExCommon,\")\"),V.LinkRegExWWW=\"(www\\\\.\".concat(V.LinkRegExCommon,\"\\\\.[a-z0-9-]{2,24})\"),V.LinkRegEx=\"(\".concat(V.LinkRegExTLD,\"|\").concat(V.LinkRegExHTTP,\"|\").concat(V.LinkRegExWWW,\"|\").concat(V.LinkRegExAuth,\")\").concat(V.LinkRegExEnd),V.LinkProtocols=[\"mailto\",\"tel\",\"sms\",\"notes\",\"data\"],V.MAIL_REGEX=/.+@.+\\..+/i,V.MODULES.helpers=function(i){var a,s=i.$;function e(){var e={},t=function i(){var e,t=-1;return\"Microsoft Internet Explorer\"===navigator.appName?(e=navigator.userAgent,null!==new RegExp(\"MSIE ([0-9]{1,}[\\\\.0-9]{0,})\").exec(e)&&(t=parseFloat(RegExp.$1))):\"Netscape\"===navigator.appName&&(e=navigator.userAgent,null!==new RegExp(\"Trident/.*rv:([0-9]{1,}[\\\\.0-9]{0,})\").exec(e)&&(t=parseFloat(RegExp.$1))),t}();if(0<t)e.msie=!0;else{var n=navigator.userAgent.toLowerCase(),r=/(edge)[ /]([\\w.]+)/.exec(n)||/(chrome)[ /]([\\w.]+)/.exec(n)||/(webkit)[ /]([\\w.]+)/.exec(n)||/(opera)(?:.*version|)[ /]([\\w.]+)/.exec(n)||/(msie) ([\\w.]+)/.exec(n)||n.indexOf(\"compatible\")<0&&/(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(n)||[],o=r[1]||\"\";r[2];r[1]&&(e[o]=!0),e.chrome?e.webkit=!0:e.webkit&&(e.safari=!0)}return e.msie&&(e.version=t),e}function t(){return/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&!o()}function n(){return/(Android)/g.test(navigator.userAgent)&&!o()}function r(){return/(Blackberry)/g.test(navigator.userAgent)}function o(){return/(Windows Phone)/gi.test(navigator.userAgent)}var l=null;return{_init:function c(){i.browser=e()},isIOS:t,isMac:function d(){return null===l&&(l=0<=navigator.platform.toUpperCase().indexOf(\"MAC\")),l},isAndroid:n,isBlackberry:r,isWindowsPhone:o,isMobile:function f(){return n()||t()||r()},isEmail:function p(e){return!/^(https?:|ftps?:|)\\/\\//i.test(e)&&V.MAIL_REGEX.test(e)},requestAnimationFrame:function h(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}},getPX:function u(e){return parseInt(e,10)||0},screenSize:function g(e){try{var t=0;if((t=e?i.$box.width():i.$sc.width())<768)return V.XS;if(768<=t&&t<992)return V.SM;if(992<=t&&t<1200)return V.MD;if(1200<=t)return V.LG}catch(n){return V.LG}},isTouch:function C(){return\"ontouchstart\"in window||window.DocumentTouch&&document instanceof window.DocumentTouch},sanitizeURL:function m(e){return i.opts.DOMPurify&&(e=i.opts.DOMPurify.sanitize(e,{ADD_TAGS:i.opts.htmlAllowedTags,ALLOW_UNKNOWN_PROTOCOLS:!0,ALLOWED_URI_REGEXP:/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|xxx):|[^a-z]|[a-z+.]+(?:[^a-z+.\\-:]|$))/i})),/^(https?:|ftps?:|)\\/\\//i.test(e)?e:/^([A-Za-z]:(\\\\){1,2}|[A-Za-z]:((\\\\){1,2}[^\\\\]+)+)(\\\\)?$/i.test(e)?e:new RegExp(\"^(\".concat(V.LinkProtocols.join(\"|\"),\"):\"),\"i\").test(e)?e:e=encodeURIComponent(e).replace(/%23/g,\"#\").replace(/%2F/g,\"/\").replace(/%25/g,\"%\").replace(/mailto%3A/gi,\"mailto:\").replace(/file%3A/gi,\"file:\").replace(/sms%3A/gi,\"sms:\").replace(/tel%3A/gi,\"tel:\").replace(/notes%3A/gi,\"notes:\").replace(/data%3Aimage/gi,\"data:image\").replace(/blob%3A/gi,\"blob:\").replace(/%3A(\\d)/gi,\":$1\").replace(/webkit-fake-url%3A/gi,\"webkit-fake-url:\").replace(/%3F/g,\"?\").replace(/%3D/g,\"=\").replace(/%26/g,\"&\").replace(/&/g,\"&\").replace(/%2C/g,\",\").replace(/%3B/g,\";\").replace(/%2B/g,\"+\").replace(/%40/g,\"@\").replace(/%5B/g,\"[\").replace(/%5D/g,\"]\").replace(/%7B/g,\"{\").replace(/%7D/g,\"}\").replace(/%[0-1]+[0-9]+|%[0-1]+[A-F]+/g,\"\")},isArray:function v(e){return e&&!Object.prototype.propertyIsEnumerable.call(e,\"length\")&&\"object\"===M(e)&&\"number\"==typeof e.length},RGBToHex:function b(e){function t(e){return\"0\".concat(parseInt(e,10).toString(16)).slice(-2)}try{return e&&\"transparent\"!==e?/^#[0-9A-F]{6}$/i.test(e)?e:(e=e.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/),\"#\".concat(t(e[1])).concat(t(e[2])).concat(t(e[3])).toUpperCase()):\"\"}catch(n){return null}},HEXtoRGB:function L(e){e=e.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,function(e,t,n,r){return t+t+n+n+r+r});var t=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(e);return t?\"rgb(\".concat(parseInt(t[1],16),\", \").concat(parseInt(t[2],16),\", \").concat(parseInt(t[3],16),\")\"):\"\"},isURL:function E(e){return!!/^(https?:|ftps?:|)\\/\\//i.test(e)&&(e=String(e).replace(/</g,\"%3C\").replace(/>/g,\"%3E\").replace(/\"/g,\"%22\").replace(/ /g,\"%20\"),new RegExp(\"^\".concat(V.LinkRegExHTTP).concat(V.LinkRegExEnd,\"$\"),\"gi\").test(e))},getAlignment:function y(e){e.css||(e=s(e));var t=(e.css(\"text-align\")||\"\").replace(/-(.*)-/g,\"\");if([\"left\",\"right\",\"justify\",\"center\"].indexOf(t)<0){if(!a){var n=s('<div dir=\"'.concat(\"rtl\"===i.opts.direction?\"rtl\":\"auto\",'\" style=\"text-align: ').concat(i.$el.css(\"text-align\"),'; position: fixed; left: -3000px;\"><span id=\"s1\">.</span><span id=\"s2\">.</span></div>'));s(\"body\").first().append(n);var r=n.find(\"#s1\").get(0).getBoundingClientRect().left,o=n.find(\"#s2\").get(0).getBoundingClientRect().left;n.remove(),a=r<o?\"left\":\"right\"}t=a}return t},scrollTop:function S(){return i.o_win.pageYOffset?i.o_win.pageYOffset:i.o_doc.documentElement&&i.o_doc.documentElement.scrollTop?i.o_doc.documentElement.scrollTop:i.o_doc.body.scrollTop?i.o_doc.body.scrollTop:0},scrollLeft:function N(){return i.o_win.pageXOffset?i.o_win.pageXOffset:i.o_doc.documentElement&&i.o_doc.documentElement.scrollLeft?i.o_doc.documentElement.scrollLeft:i.o_doc.body.scrollLeft?i.o_doc.body.scrollLeft:0},isInViewPort:function T(e){var t=e.getBoundingClientRect();return 0<=(t={top:Math.round(t.top),bottom:Math.round(t.bottom)}).top&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)||t.top<=0&&t.bottom>=(window.innerHeight||document.documentElement.clientHeight)}}},V.MODULES.events=function(l){var e,i=l.$,a={};function s(e,t,n){C(e,t,n)}function c(e){if(void 0===e&&(e=!0),!l.$wp)return!1;if(l.helpers.isIOS()&&l.$win.get(0).focus(),l.core.hasFocus())return!1;if(!l.core.hasFocus()&&e){var t=l.$win.scrollTop();if(l.browser.msie&&l.$box&&l.$box.css(\"position\",\"fixed\"),l.browser.msie&&l.$wp&&l.$wp.css(\"overflow\",\"visible\"),l.browser.msie&&l.$sc&&l.$sc.css(\"position\",\"fixed\"),l.browser.msie||(p(),l.el.focus(),l.events.trigger(\"focus\"),f()),l.browser.msie&&l.$sc&&l.$sc.css(\"position\",\"\"),l.browser.msie&&l.$box&&l.$box.css(\"position\",\"\"),l.browser.msie&&l.$wp&&l.$wp.css(\"overflow\",\"auto\"),t!==l.$win.scrollTop()&&l.$win.scrollTop(t),!l.selection.info(l.el).atStart)return!1}if(!l.core.hasFocus()||0<l.$el.find(\".fr-marker\").length)return!1;if(l.selection.info(l.el).atStart&&l.selection.isCollapsed()&&null!==l.html.defaultTag()){var n=l.markers.insert();if(n&&!l.node.blockParent(n)){i(n).remove();var r=l.$el.find(l.html.blockTagsQuery()).get(0);r&&(i(r).prepend(V.MARKERS),l.selection.restore())}else n&&i(n).remove()}}var d=!1;function f(){e=!0}function p(){e=!1}function h(){return e}function u(e,t,n){var r,o=e.split(\" \");if(1<o.length){for(var i=0;i<o.length;i++)u(o[i],t,n);return!0}void 0===n&&(n=!1),r=0!==e.indexOf(\"shared.\")?(a[e]=a[e]||[],a[e]):(l.shared._events[e]=l.shared._events[e]||[],l.shared._events[e]),n?r.unshift(t):r.push(t)}var g=[];function C(e,t,n,r,o){\"function\"==typeof n&&(o=r,r=n,n=!1);var i=o?l.shared.$_events:g,a=o?l.sid:l.id,s=\"\".concat(t.trim().split(\" \").join(\".ed\".concat(a,\" \")),\".ed\").concat(a);n?e.on(s,n,r):e.on(s,r),i.push([e,s])}function t(e){for(var t=0;t<e.length;t++)e[t][0].off(e[t][1])}function m(e,t,n){if(!l.edit.isDisabled()||n){var r,o;if(0!==e.indexOf(\"shared.\"))r=a[e];else{if(0<l.shared.count)return!1;r=l.shared._events[e]}if(r)for(var i=0;i<r.length;i++)if(!1===(o=r[i].apply(l,t)))return!1;return(!l.opts.events||!l.opts.events[e]||!1!==(o=l.opts.events[e].apply(l,t)))&&o}}function v(){for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&delete a[e]}function b(){for(var e in l.shared._events)Object.prototype.hasOwnProperty.call(l.shared._events,e)&&delete l.shared._events[e]}return{_init:function L(){l.shared.$_events=l.shared.$_events||[],l.shared._events={},function e(){l.helpers.isMobile()?(l._mousedown=\"touchstart\",l._mouseup=\"touchend\",l._move=\"touchmove\",l._mousemove=\"touchmove\"):(l._mousedown=\"mousedown\",l._mouseup=\"mouseup\",l._move=\"\",l._mousemove=\"mousemove\")}(),function t(){s(l.$el,\"click mouseup mousemove mousedown touchstart touchend dragenter dragover dragleave dragend drop dragstart\",function(e){m(e.type,[e])}),u(\"mousedown\",function(){for(var e=0;e<V.INSTANCES.length;e++)V.INSTANCES[e]!==l&&V.INSTANCES[e].popups&&V.INSTANCES[e].popups.areVisible()&&V.INSTANCES[e].$el.find(\".fr-marker\").remove()})}(),function n(){s(l.$win,l._mousedown,function(e){m(\"window.mousedown\",[e]),f()}),s(l.$win,l._mouseup,function(e){m(\"window.mouseup\",[e])}),s(l.$win,\"beforeinput cut copy keydown keyup touchmove touchend\",function(e){m(\"window.\".concat(e.type),[e])})}(),function r(){s(l.$doc,\"dragend drop\",function(e){m(\"document.\".concat(e.type),[e])})}(),function o(){s(l.$el,\"beforeinput keydown keypress keyup input\",function(e){m(e.type,[e])})}(),function i(){s(l.$el,\"focus\",function(e){h()&&(c(!1),!1===d&&(m(e.type,[e]),l.helpers.isMobile()&&p()))}),s(l.$el,\"blur\",function(e){h()&&!0===d&&(m(e.type,[e]),l.helpers.isMobile()&&l.opts.toolbarContainer&&(l.shared.selected_editor=l.id),f())}),C(l.$el,\"mousedown\",'[contenteditable=\"true\"]',function(){p(),l.$el.blur()}),u(\"focus\",function(){d=!0}),u(\"blur\",function(){d=!1})}(),f(),function a(){s(l.$el,\"cut copy paste beforepaste\",function(e){m(e.type,[e])})}(),u(\"destroy\",v),u(\"shared.destroy\",b)},on:u,trigger:m,bindClick:function r(e,t,n){C(e,l._mousedown,t,function(e){l.edit.isDisabled()||function n(e){var t=i(e.currentTarget);return l.edit.isDisabled()||l.node.hasClass(t.get(0),\"fr-disabled\")?(e.preventDefault(),!1):\"mousedown\"===e.type&&1!==e.which||(l.helpers.isMobile()||e.preventDefault(),(l.helpers.isAndroid()||l.helpers.isWindowsPhone())&&0===t.parents(\".fr-dropdown-menu\").length&&(e.preventDefault(),e.stopPropagation()),t.addClass(\"fr-selected\"),void l.events.trigger(\"commands.mousedown\",[t]))}(e)},!0),C(e,\"\".concat(l._mouseup,\" \").concat(l._move),t,function(e){l.edit.isDisabled()||function o(e,t){var n=i(e.currentTarget);if(l.edit.isDisabled()||l.node.hasClass(n.get(0),\"fr-disabled\"))return e.preventDefault(),!1;if(\"mouseup\"===e.type&&1!==e.which)return!0;if(l.button.getButtons(\".fr-selected\",!0).get(0)==n.get(0)&&!l.node.hasClass(n.get(0),\"fr-selected\"))return!0;if(\"touchmove\"!==e.type){if(e.stopPropagation(),e.stopImmediatePropagation(),e.preventDefault(),!l.node.hasClass(n.get(0),\"fr-selected\"))return l.button.getButtons(\".fr-selected\",!0).removeClass(\"fr-selected\"),!1;if(l.button.getButtons(\".fr-selected\",!0).removeClass(\"fr-selected\"),n.data(\"dragging\")||n.attr(\"disabled\"))return n.removeData(\"dragging\"),!1;var r=n.data(\"timeout\");r&&(clearTimeout(r),n.removeData(\"timeout\")),t.apply(l,[e])}else n.data(\"timeout\")||n.data(\"timeout\",setTimeout(function(){n.data(\"dragging\",!0)},100))}(e,n)},!0),C(e,\"mousedown click mouseup\",t,function(e){l.edit.isDisabled()||e.stopPropagation()},!0),u(\"window.mouseup\",function(){l.edit.isDisabled()||(e.find(t).removeClass(\"fr-selected\"),f())}),C(e,\"mouseover\",t,function(){i(this).hasClass(\"fr-options\")&&i(this).prev(\".fr-btn\").addClass(\"fr-btn-hover\"),i(this).next(\".fr-btn\").hasClass(\"fr-options\")&&i(this).next(\".fr-btn\").addClass(\"fr-btn-hover\")}),C(e,\"mouseout\",t,function(){i(this).hasClass(\"fr-options\")&&i(this).prev(\".fr-btn\").removeClass(\"fr-btn-hover\"),i(this).next(\".fr-btn\").hasClass(\"fr-options\")&&i(this).next(\".fr-btn\").removeClass(\"fr-btn-hover\")})},disableBlur:p,enableBlur:f,blurActive:h,focus:c,chainTrigger:function E(e,t,n){if(!l.edit.isDisabled()||n){var r,o;if(0!==e.indexOf(\"shared.\"))r=a[e];else{if(0<l.shared.count)return!1;r=l.shared._events[e]}if(r)for(var i=0;i<r.length;i++)void 0!==(o=r[i].apply(l,[t]))&&(t=o);return l.opts.events&&l.opts.events[e]&&void 0!==(o=l.opts.events[e].apply(l,[t]))&&(t=o),t}},$on:C,$off:function n(){t(g),g=[],0===l.shared.count&&(t(l.shared.$_events),l.shared.$_events=[])}}},Object.assign(V.DEFAULTS,{indentMargin:20}),V.COMMANDS={bold:{title:\"Bold\",toggle:!0,refresh:function(e){var t=this.format.is(\"strong\");e.toggleClass(\"fr-active\",t).attr(\"aria-pressed\",t)}},italic:{title:\"Italic\",toggle:!0,refresh:function(e){var t=this.format.is(\"em\");e.toggleClass(\"fr-active\",t).attr(\"aria-pressed\",t)}},underline:{title:\"Underline\",toggle:!0,refresh:function(e){var t=this.format.is(\"u\");e.toggleClass(\"fr-active\",t).attr(\"aria-pressed\",t)}},strikeThrough:{title:\"Strikethrough\",toggle:!0,refresh:function(e){var t=this.format.is(\"s\");e.toggleClass(\"fr-active\",t).attr(\"aria-pressed\",t)}},subscript:{title:\"Subscript\",toggle:!0,refresh:function(e){var t=this.format.is(\"sub\");e.toggleClass(\"fr-active\",t).attr(\"aria-pressed\",t)}},superscript:{title:\"Superscript\",toggle:!0,refresh:function(e){var t=this.format.is(\"sup\");e.toggleClass(\"fr-active\",t).attr(\"aria-pressed\",t)}},outdent:{title:\"Decrease Indent\"},indent:{title:\"Increase Indent\"},undo:{title:\"Undo\",undo:!1,forcedRefresh:!0,disabled:!0},redo:{title:\"Redo\",undo:!1,forcedRefresh:!0,disabled:!0},insertHR:{title:\"Insert Horizontal Line\"},clearFormatting:{title:\"Clear Formatting\"},selectAll:{title:\"Select All\",undo:!1},moreText:{title:\"More Text\",undo:!1},moreParagraph:{title:\"More Paragraph\",undo:!1},moreRich:{title:\"More Rich\",undo:!1},moreMisc:{title:\"More Misc\",undo:!1}},V.RegisterCommand=function(e,t){V.COMMANDS[e]=t},V.MODULES.commands=function(a){var s=a.$;function l(e){return a.html.defaultTag()&&(e=\"<\".concat(a.html.defaultTag(),\">\").concat(e,\"</\").concat(a.html.defaultTag(),\">\")),e}var i={bold:function(){e(\"bold\",\"strong\")},subscript:function(){a.format.is(\"sup\")&&a.format.remove(\"sup\"),e(\"subscript\",\"sub\")},superscript:function(){a.format.is(\"sub\")&&a.format.remove(\"sub\"),e(\"superscript\",\"sup\")},italic:function(){e(\"italic\",\"em\")},strikeThrough:function(){e(\"strikeThrough\",\"s\")},underline:function(){e(\"underline\",\"u\")},undo:function(){a.undo.run()},redo:function(){a.undo.redo()},indent:function(){r(1)},outdent:function(){r(-1)},show:function(){a.opts.toolbarInline&&a.toolbar.showInline(null,!0)},insertHR:function(){a.selection.remove();var e=\"\";a.core.isEmpty()&&(e=l(e=\"<br>\"));var t='<hr id=\"fr-just\" class=\"fr-just\">'.concat(e);a.opts.trackChangesEnabled&&(t=a.track_changes.wrapInTracking(s(t),\"hrWrapper\").get(0).outerHTML);a.html.insert(t);var n,r=a.$el.find(\"hr#fr-just\").length?a.$el.find(\"hr#fr-just\"):a.$el.find(\".fr-just\");r.removeAttr(\"id\"),r.removeAttr(\"class\");var o=a.opts.trackChangesEnabled&&\"SPAN\"===r[0].parentNode.tagName&&\"P\"===r[0].parentNode.parentNode.tagName;if(0===r.next().length){var i=a.html.defaultTag();i&&!o?r.after(s(a.doc.createElement(i)).append(\"<br>\").get(0)):o?r[0].parentNode.after(s(a.doc.createElement(i)).append(\"<br>\").get(0)):r.after(\"<br>\")}r.prev().is(\"hr\")?n=a.selection.setAfter(r.get(0),!1):r.next().is(\"hr\")?n=a.selection.setBefore(r.get(0),!1):o||a.selection.setAfter(r.get(0),!1)?a.selection.setAfter(r[0].parentNode,!1):a.selection.setBefore(r.get(0),!1),n||void 0===n||(e=l(e=\"\".concat(V.MARKERS,\"<br>\")),r.after(e)),a.selection.restore()},clearFormatting:function(){a.format.remove()},selectAll:function(){a.doc.execCommand(\"selectAll\",!1,!1)},moreText:function(e){t(e)},moreParagraph:function(e){t(e)},moreRich:function(e){t(e)},moreMisc:function(e){t(e)},moreTrackChanges:function(){t(\"trackChanges\")}};function t(e){var t=a.$tb.find(\"[data-cmd=\".concat(e,\"]\")),n=a.$tb.find(\"[data-cmd=html]\");a.opts.trackChangesEnabled?n&&n.addClass(\"fr-disabled\"):n&&n.removeClass(\"fr-disabled\"),function r(n){a.helpers.isMobile()&&a.opts.toolbarInline&&a.events.disableBlur();var e=a.$tb.find('.fr-more-toolbar[data-name=\"'.concat(n.attr(\"data-group-name\"),'\"]'));\"trackChanges\"===n.data(\"cmd\")&&(e=a.$tb.find('.fr-more-toolbar[data-name=\"'.concat(n.attr(\"id\"),'\"]')));if(a.$tb.find(\".fr-open\").not(n).not('[data-cmd=\"trackChanges\"]').removeClass(\"fr-open\"),n.toggleClass(\"fr-open\"),a.$tb.find(\".fr-more-toolbar\").removeClass(\"fr-overflow-visible\"),a.$tb.find(\".fr-expanded\").not(e).length){var t=a.$tb.find(\".fr-expanded\").not(e);t.each(function(e,t){0!=s(t).data(\"name\").indexOf(\"trackChanges-\")&&0!=s(t).data(\"name\").indexOf(\"moreRich-\")?s(t).toggleClass(\"fr-expanded\"):n.parents('[data-name^=\"moreRich-\"]').length||0==s(t).data(\"name\").indexOf(\"trackChanges-\")||s(t).find('[id^=\"trackChanges-\"]').length&&a.opts.trackChangesEnabled||s(t).toggleClass(\"fr-expanded\")}),e.toggleClass(\"fr-expanded\")}else e.toggleClass(\"fr-expanded\"),a.$box.toggleClass(\"fr-toolbar-open\"),a.$tb.toggleClass(\"fr-toolbar-open\")}(t),a.toolbar.setMoreToolbarsHeight()}function n(e,t){if(!(a.markdown&&a.markdown.isEnabled()&&(\"bold\"===e||\"italic\"===e||\"underline\"===e)||a.opts.trackChangesEnabled&&\"markdown\"===e)&&!1!==a.events.trigger(\"commands.before\",s.merge([e],t||[]))){var n=V.COMMANDS[e]&&V.COMMANDS[e].callback||i[e],r=!0,o=!1;V.COMMANDS[e]&&(\"undefined\"!=typeof V.COMMANDS[e].focus&&(r=V.COMMANDS[e].focus),\"undefined\"!=typeof V.COMMANDS[e].accessibilityFocus&&(o=V.COMMANDS[e].accessibilityFocus)),(!a.core.hasFocus()&&r||!a.core.hasFocus()&&o&&a.accessibility.hasFocus())&&(a.el.focus({preventScroll:!0}),a.events.trigger(\"focus\")),V.COMMANDS[e]&&!1!==V.COMMANDS[e].undo&&(a.$el.find(\".fr-marker\").length&&(a.events.disableBlur(),a.selection.restore()),a.undo.saveStep()),n&&n.apply(a,s.merge([e],t||[])),a.events.trigger(\"commands.after\",s.merge([e],t||[])),V.COMMANDS[e]&&!1!==V.COMMANDS[e].undo&&a.undo.saveStep()}}function e(e,t){a.format.toggle(t)}function r(e){a.selection.save(),a.html.wrap(!0,!0,!0,!0),a.selection.restore();for(var t=a.selection.blocks(),n=0;n<t.length;n++)if(\"LI\"!==t[n].tagName&&\"LI\"!=t[n].parentNode.tagName&&(\"LI\"!==t[n].tagName||\"LI\"!==t[n].parentNode.tagName)){var r=s(t[n]);\"LI\"!=t[n].tagName&&\"LI\"==t[n].parentNode.tagName&&(r=s(t[n].parentNode));var o=\"rtl\"===a.opts.direction||\"rtl\"===r.css(\"direction\")?\"margin-right\":\"margin-left\",i=a.helpers.getPX(r.css(o));if(r.width()<2*a.opts.indentMargin&&0<e)continue;\"UL\"!=t[n].parentNode.tagName&&\"OL\"!=t[n].parentNode.tagName&&\"LI\"!=t[n].parentNode.tagName&&r.css(o,Math.max(i+e*a.opts.indentMargin,0)||\"\"),r.removeClass(\"fr-temp-div\")}a.selection.save(),a.html.unwrap(),a.selection.restore()}function o(e){return function(){n(e)}}var c={};for(var d in i)Object.prototype.hasOwnProperty.call(i,d)&&(c[d]=o(d));return Object.assign(c,{exec:n,_init:function f(){a.events.on(\"keydown\",function(e){var t=a.selection.element();if(t&&\"HR\"===t.tagName&&!a.keys.isArrow(e.which))return e.preventDefault(),!1}),a.events.on(\"keyup\",function(e){var t=a.selection.element();if(t&&\"HR\"===t.tagName)if(e.which===V.KEYCODE.ARROW_LEFT||e.which===V.KEYCODE.ARROW_UP){if(t.previousSibling)return a.node.isBlock(t.previousSibling)?a.selection.setAtEnd(t.previousSibling):s(t).before(V.MARKERS),a.selection.restore(),!1}else if((e.which===V.KEYCODE.ARROW_RIGHT||e.which===V.KEYCODE.ARROW_DOWN)&&t.nextSibling)return a.node.isBlock(t.nextSibling)?a.selection.setAtStart(t.nextSibling):s(t).after(V.MARKERS),a.selection.restore(),!1}),a.events.on(\"mousedown\",function(e){if(e.target&&\"HR\"===e.target.tagName)return e.preventDefault(),e.stopPropagation(),!1}),a.events.on(\"mouseup\",function(){var e=a.selection.element();e===a.selection.endElement()&&e&&\"HR\"===e.tagName&&(e.nextSibling&&(a.node.isBlock(e.nextSibling)?a.selection.setAtStart(e.nextSibling):s(e).after(V.MARKERS)),a.selection.restore())})}})},V.MODULES.cursorLists=function(v){var b=v.$;function L(e){for(var t=e;\"LI\"!==t.tagName;)t=t.parentNode;return t}function E(e){for(var t=e;!v.node.isList(t);)t=t.parentNode;return t}function y(e){for(var t=\"\",n=0;n<e.length;n++){var r=e[n];t+=\"\".concat(r.name,\"='\").concat(r.value,\"' \")}return t}return{_startEnter:function S(e){var t,n=L(e),r=n.nextSibling,o=n.previousSibling,i=v.html.defaultTag();if(v.node.isEmpty(n,!0)&&r){for(var a=\"\",s=\"\",l=e.parentNode;!v.node.isList(l)&&l.parentNode&&(\"LI\"!==l.parentNode.tagName||l.parentNode===n);)-1<[\"OL\",\"LI\",\"UL\"].indexOf(l.tagName)&&(a=v.node.openTagString(l)+a,s+=v.node.closeTagString(l)),l=l.parentNode;a=v.node.openTagString(l)+a,s+=v.node.closeTagString(l);var c=\"\";if(l.parentNode&&\"LI\"===l.parentNode.tagName)if(l.parentNode.attributes.length){var d=y(l.parentNode.attributes);c=\"\".concat(s,\"<li \").concat(d,\">\").concat(V.MARKERS,\"<br>\").concat(a)}else c=\"\".concat(s,\"<li>\").concat(V.MARKERS,\"<br>\").concat(a);else c=i?\"\".concat(s,\"<\").concat(i,\">\").concat(V.MARKERS,\"<br></\").concat(i,\">\").concat(a):\"\".concat(s+V.MARKERS,\"<br>\").concat(a);for(;[\"UL\",\"OL\"].indexOf(l.tagName)<0||l.parentNode&&\"LI\"===l.parentNode.tagName;)l=l.parentNode;b(n).replaceWith('<span id=\"fr-break\"></span>');var f=v.node.openTagString(l)+b(l).html()+v.node.closeTagString(l);f=f.replace(/<span id=\"fr-break\"><\\/span>/g,c),b(l).replaceWith(f),v.$el.find(\"li:empty\").remove(),v.$el.find(\"li > p > span:empty\").length&&v.$el.find(\"li > p > span:empty\")[0].parentNode.parentNode.remove()}else if(o&&r||!v.node.isEmpty(n,!0)){var p=\"<br>\",h=e.parentNode;for(h&&\"A\"===h.tagName&&(h=null);h&&\"LI\"!==h.tagName;)p=v.node.openTagString(h)+p+v.node.closeTagString(h),h=h.parentNode;if(h&&h.attributes.length){var u=y(h.attributes);b(n).before(\"<li \".concat(u,\">\").concat(p,\"</li>\"))}else b(n).before(\"<li>\".concat(p,\"</li>\"));b(e).remove()}else if(o){t=E(n);for(var g=\"\".concat(V.MARKERS,\"<br>\"),C=e.parentNode;C&&\"LI\"!==C.tagName;)g=v.node.openTagString(C)+g+v.node.closeTagString(C),C=C.parentNode;if(t.parentNode&&\"LI\"===t.parentNode.tagName)if(t.parentNode.attributes.length){var m=y(t.parentNode.attributes);b(t.parentNode).after(\"<li \".concat(m,\">\").concat(g,\"</li>\"))}else b(t.parentNode).after(\"<li>\".concat(g,\"</li>\"));else i?b(t).after(\"<\".concat(i,\">\").concat(g,\"</\").concat(i,\">\")):b(t).after(g);b(n).remove()}else(t=E(n)).parentNode&&\"LI\"===t.parentNode.tagName?r?b(t.parentNode).before(\"\".concat(v.node.openTagString(n)+V.MARKERS,\"<br></li>\")):b(t.parentNode).after(\"\".concat(v.node.openTagString(n)+V.MARKERS,\"<br></li>\")):i?b(t).before(\"<\".concat(i,\">\").concat(V.MARKERS,\"<br></\").concat(i,\">\")):b(t).before(\"\".concat(V.MARKERS,\"<br>\")),b(n).remove()},_middleEnter:function c(e){for(var t=L(e),n=\"\",r=e,o=\"\",i=\"\",a=!1;r!==t;){var s=\"A\"===(r=r.parentNode).tagName&&v.cursor.isAtEnd(e,r)?\"fr-to-remove\":\"\";a||r==t||v.node.isBlock(r)||(a=!0,o+=V.INVISIBLE_SPACE),o=v.node.openTagString(b(r).clone().addClass(s).get(0))+o,i+=v.node.closeTagString(r)}n=i+n+o+V.MARKERS+(v.opts.keepFormatOnDelete?V.INVISIBLE_SPACE:\"\"),b(e).replaceWith('<span id=\"fr-break\"></span>');var l=v.node.openTagString(t)+b(t).html()+v.node.closeTagString(t);l=l.replace(/<span id=\"fr-break\"><\\/span>/g,n),b(t).replaceWith(l)},_endEnter:function l(e){for(var t=L(e),n=V.MARKERS,r=\"\",o=e,i=!1;o!==t;)if(!(o=o.parentNode).classList.contains(\"fr-img-space-wrap\")&&!o.classList.contains(\"fr-img-space-wrap2\")){var a=\"A\"===o.tagName&&v.cursor.isAtEnd(e,o)?\"fr-to-remove\":\"\";i||o===t||v.node.isBlock(o)||(i=!0,r+=V.INVISIBLE_SPACE),r=v.node.openTagString(b(o).clone().addClass(a).get(0))+r,n+=v.node.closeTagString(o)}var s=r+n;b(e).remove(),b(t).after(s)},_backspace:function d(e){var t=L(e),n=t.previousSibling;if(n){n=b(n).find(v.html.blockTagsQuery()).get(-1)||n,b(e).replaceWith(V.MARKERS);var r=v.node.contents(n);r.length&&\"BR\"===r[r.length-1].tagName&&b(r[r.length-1]).remove(),b(t).find(v.html.blockTagsQuery()).not(\"ol, ul, table\").each(function(){this.parentNode===t&&b(this).replaceWith(b(this).html()+(v.node.isEmpty(this)?\"\":\"<br>\"))});for(var o,i=v.node.contents(t)[0];i&&!v.node.isList(i);)o=i.nextSibling,b(n).append(i),i=o;for(n=t.previousSibling;i;)o=i.nextSibling,b(n).append(i),i=o;1<(r=v.node.contents(n)).length&&\"BR\"===r[r.length-1].tagName&&b(r[r.length-1]).remove(),b(t).remove()}else{var a=E(t);if(b(e).replaceWith(V.MARKERS),a.parentNode&&\"LI\"===a.parentNode.tagName){var s=a.previousSibling;v.node.isBlock(s)?(b(t).find(v.html.blockTagsQuery()).not(\"ol, ul, table\").each(function(){this.parentNode===t&&b(this).replaceWith(b(this).html()+(v.node.isEmpty(this)?\"\":\"<br>\"))}),b(s).append(b(t).html())):b(a).before(b(t).html())}else{var l=v.html.defaultTag();l&&0===b(t).find(v.html.blockTagsQuery()).length?b(a).before(\"<\".concat(l,\">\").concat(b(t).html(),\"</\").concat(l,\">\")):b(a).before(b(t).html())}b(t).remove(),v.html.wrap(),0===b(a).find(\"li\").length&&b(a).remove()}},_del:function f(e){var t,n=L(e),r=n.nextSibling;if(r){(t=v.node.contents(r)).length&&\"BR\"===t[0].tagName&&b(t[0]).remove(),b(r).find(v.html.blockTagsQuery()).not(\"ol, ul, table\").each(function(){this.parentNode===r&&b(this).replaceWith(b(this).html()+(v.node.isEmpty(this)?\"\":\"<br>\"))});for(var o,i=e,a=v.node.contents(r)[0];a&&!v.node.isList(a);)o=a.nextSibling,b(i).after(a),i=a,a=o;for(;a;)o=a.nextSibling,b(n).append(a),a=o;b(e).replaceWith(V.MARKERS),b(r).remove()}else{for(var s=n;!s.nextSibling&&s!==v.el;)s=s.parentNode;if(s===v.el)return!1;if(s=s.nextSibling,v.node.isBlock(s)){if(V.NO_DELETE_TAGS.indexOf(s.tagName)<0){if(b(e).replaceWith(V.MARKERS),(t=v.node.contents(n)).length&&\"BR\"===t[t.length-1].tagName&&b(t[t.length-1]).remove(),s.isContentEditable&&\"DIV\"===s.tagName&&(!v.node.isBlock(s.previousSibling)||\"DIV\"===s.previousSibling.tagName))return;b(n).append(b(s).html()),b(s).remove()}}else{for((t=v.node.contents(n)).length&&\"BR\"===t[t.length-1].tagName&&b(t[t.length-1]).remove(),b(e).replaceWith(V.MARKERS);s&&!v.node.isBlock(s)&&\"BR\"!==s.tagName;)b(n).append(b(s)),s=s.nextSibling;b(s).remove()}}}}},V.NO_DELETE_TAGS=[\"TH\",\"TD\",\"TR\",\"TABLE\",\"FORM\"],V.SIMPLE_ENTER_TAGS=[\"TH\",\"TD\",\"LI\",\"DL\",\"DT\",\"FORM\"],V.MODULES.cursor=function(g){var C=g.$;function h(e){return!!e&&(g.node.isBlock(e)?\"P\"!==e.tagName||!e.nextElementSibling||!e.parentElement||\"OL\"!==e.nextElementSibling.tagName||\"LI\"!==e.parentElement.tagName:e.nextSibling&&e.nextSibling.nodeType===Node.TEXT_NODE&&0===e.nextSibling.textContent.replace(/\\u200b/g,\"\").length?h(e.nextSibling):!(e.nextSibling&&(!e.previousSibling||\"BR\"!==e.nextSibling.tagName||e.nextSibling.nextSibling))&&h(e.parentNode))}function u(e){return!!e&&(!!g.node.isBlock(e)||(e.previousSibling&&e.previousSibling.nodeType===Node.TEXT_NODE&&0===e.previousSibling.textContent.replace(/\\u200b/g,\"\").length?u(e.previousSibling):!e.previousSibling&&(!(e.previousSibling||!g.node.hasClass(e.parentNode,\"fr-inner\"))||u(e.parentNode))))}function m(e,t){return!!e&&(e!==g.$wp.get(0)&&(e.previousSibling&&e.previousSibling.nodeType===Node.TEXT_NODE&&0===e.previousSibling.textContent.replace(/\\u200b/g,\"\").length?m(e.previousSibling,t):!e.previousSibling&&(e.parentNode===t||m(e.parentNode,t))))}function v(e,t){return!!e&&(e!==g.$wp.get(0)&&(e.nextSibling&&e.nextSibling.nodeType===Node.TEXT_NODE&&0===e.nextSibling.textContent.replace(/\\u200b/g,\"\").length?v(e.nextSibling,t):!(e.nextSibling&&(!e.previousSibling||\"BR\"!==e.nextSibling.tagName||e.nextSibling.nextSibling))&&(e.parentNode===t||v(e.parentNode,t))))}function b(e){return 0<C(e).parentsUntil(g.$el,\"LI\").length&&0===C(e).parentsUntil(\"LI\",\"TABLE\").length}function L(e,t){var n=new RegExp(\"\".concat(t?\"^\":\"\",\"(([\\\\uD83C-\\\\uDBFF\\\\uDC00-\\\\uDFFF]+\\\\u200D)*[\\\\uD83C-\\\\uDBFF\\\\uDC00-\\\\uDFFF]{2})\").concat(t?\"\":\"$\"),\"i\"),r=e.match(n);return r?r[0].length:1}function E(e){for(var t,n=e;!n.previousSibling;)if(n=n.parentNode,g.node.isElement(n))return!1;n=n.previousSibling;var r=g.opts.htmlAllowedEmptyTags,o=n.tagName&&n.tagName.toLowerCase();if((!g.node.isBlock(n)||n.lastChild&&o&&0<=r.indexOf(o))&&g.node.isEditable(n)){for(t=g.node.contents(n);n.nodeType!==Node.TEXT_NODE&&!g.node.isDeletable(n)&&t.length&&g.node.isEditable(n);)n=t[t.length-1],t=g.node.contents(n);if(n.nodeType===Node.TEXT_NODE){var i=n.textContent,a=i.length;if(i.length&&\"\\n\"===i[i.length-1])return n.textContent=i.substring(0,a-2),0===n.textContent.length&&n.parentNode.removeChild(n),E(e);if(g.opts.tabSpaces&&i.length>=g.opts.tabSpaces)0===i.substr(i.length-g.opts.tabSpaces,i.length-1).replace(/ /g,\"\").replace(new RegExp(V.UNICODE_NBSP,\"g\"),\"\").length&&(a=i.length-g.opts.tabSpaces+1);n.textContent=i.substring(0,a-L(i));var s=n.textContent;(g.opts.enter===V.ENTER_BR&&0<s.length&&\" \"===s.charAt(s.length-1)||0===s.length&&e.previousSibling&&3===e.previousSibling.nodeType&&\"TD\"!==e.parentNode.tagName&&\"LI\"!==e.parentNode.tagName&&i!==String.fromCharCode(8203))&&(e.insertAdjacentHTML(\"beforebegin\",V.INVISIBLE_SPACE),n=n.nextSibling),g.opts.trackChangesEnabled&&0===n.textContent.length&&C(n.parentElement).data(\"tracking\")&&0===C(n.parentElement).find(\"[data-tracking-deleted=true]\").length&&(C(e).insertBefore(n.parentElement),C(n.parentElement).remove(),n=C(e)[0].previousSibling),g.opts.htmlUntouched&&!e.nextSibling&&n.textContent.length&&\" \"===n.textContent[n.textContent.length-1]&&(n.textContent=n.textContent.substring(0,n.textContent.length-1)+V.UNICODE_NBSP);var l=i.length!==n.textContent.length;if(g.opts.enter!==V.ENTER_BR&&n&&n.previousSibling&&n.previousSibling.previousSibling&&\"BR\"===n.previousSibling.previousSibling.tagName&&0===n.textContent.length&&n.previousSibling.previousSibling.remove(),0===n.textContent.length&&\"LI\"===n.parentNode.tagName&&n.previousSibling&&\"BR\"===n.previousSibling.tagName&&n.previousSibling.remove(),0===n.textContent.length)if(l&&g.opts.keepFormatOnDelete)C(n).after(V.INVISIBLE_SPACE+V.MARKERS);else if(0!==i.length&&g.node.isBlock(n.parentNode))C(n).after(V.MARKERS);else if((2!=n.parentNode.childNodes.length||n.parentNode!=e.parentNode)&&1!=n.parentNode.childNodes.length||g.node.isBlock(n.parentNode)||g.node.isElement(n.parentNode)||!g.node.isDeletable(n.parentNode)){for(var c,d=n;!g.node.isElement(n.parentNode)&&g.node.isEmpty(n.parentNode)&&V.NO_DELETE_TAGS.indexOf(n.parentNode.tagName)<0;)if(\"A\"===(n=n.parentNode).tagName){var f=n.childNodes[0];for(C(n).before(f),c=!0;0<f.childNodes.length;)f=f.childNodes[0];n.parentNode.removeChild(n),n=f;break}c||(n=d),C(n).after(V.MARKERS),g.node.isElement(n.parentNode)&&!e.nextSibling&&n.previousSibling&&\"BR\"===n.previousSibling.tagName&&C(e).after(\"<br>\");var p=n.parentNode;n.parentNode.removeChild(n),g.node.isEmpty(p)&&C(p).html(V.INVISIBLE_SPACE+V.MARKERS)}else C(n.parentNode).after(V.MARKERS),C(n.parentNode).remove();else C(n).after(V.MARKERS)}else g.node.isDeletable(n)?(C(n).after(V.MARKERS),C(n).remove()):e.nextSibling&&\"BR\"===e.nextSibling.tagName&&g.node.isVoid(n)&&\"BR\"!==n.tagName?(C(e.nextSibling).remove(),C(e).replaceWith(V.MARKERS)):!1!==g.events.trigger(\"node.remove\",[C(n)])&&(C(n).after(V.MARKERS),C(n).remove())}else if(V.NO_DELETE_TAGS.indexOf(n.tagName)<0&&(g.node.isEditable(n)||g.node.isDeletable(n)))if(g.node.isDeletable(n))C(e).replaceWith(V.MARKERS),C(n).remove();else if(g.node.isEmpty(n)&&!g.node.isList(n))C(n).remove(),C(e).replaceWith(V.MARKERS);else{for(g.node.isList(n)&&(n=C(n).find(\"li\").last().get(0)),(t=g.node.contents(n))&&0<t.length&&\"BR\"===t[t.length-1].tagName&&C(t[t.length-1]).remove(),t=g.node.contents(n);t&&0<t.length&&g.node.isBlock(t[t.length-1]);)n=t[t.length-1],t=g.node.contents(n);C(n).append(V.MARKERS);for(var h=e;!h.previousSibling;)h=h.parentNode;for(;h&&\"BR\"!==h.tagName&&!g.node.isBlock(h);){var u=h;h=h.nextSibling,C(n).append(u)}h&&\"BR\"===h.tagName&&C(h).remove(),C(e).remove()}else e.nextSibling&&\"BR\"===e.nextSibling.tagName&&C(e.nextSibling).remove();return!0}function i(e){var t=0<C(e).parentsUntil(g.$el,\"BLOCKQUOTE\").length,n=g.node.deepestParent(e,[],!t);if(n&&\"BLOCKQUOTE\"===n.tagName){var r=g.node.deepestParent(e,[C(e).parentsUntil(g.$el,\"BLOCKQUOTE\").get(0)]);r&&r.nextSibling&&(n=r)}if(null!==n){var o,i=n.nextSibling;if(g.node.isBlock(n)&&(g.node.isEditable(n)||g.node.isDeletable(n))&&i&&V.NO_DELETE_TAGS.indexOf(i.tagName)<0)if(g.node.isDeletable(i))C(i).remove(),C(e).replaceWith(V.MARKERS);else if(g.node.isBlock(i)&&g.node.isEditable(i))if(g.node.isList(i))if(g.node.isEmpty(n,!0))C(n).remove(),C(i).find(\"li\").first().prepend(V.MARKERS);else{var a=C(i).find(\"li\").first();\"BLOCKQUOTE\"===n.tagName&&(o=g.node.contents(n)).length&&g.node.isBlock(o[o.length-1])&&(n=o[o.length-1]),0===a.find(\"ul, ol\").length&&(C(e).replaceWith(V.MARKERS),a.find(g.html.blockTagsQuery()).not(\"ol, ul, table\").each(function(){this.parentNode===a.get(0)&&C(this).replaceWith(C(this).html()+(g.node.isEmpty(this)?\"\":\"<br>\"))}),C(n).append(g.node.contents(a.get(0))),a.remove(),0===C(i).find(\"li\").length&&C(i).remove())}else{if((o=g.node.contents(i)).length&&\"BR\"===o[0].tagName&&C(o[0]).remove(),\"BLOCKQUOTE\"!==i.tagName&&\"BLOCKQUOTE\"===n.tagName)for(o=g.node.contents(n);o.length&&g.node.isBlock(o[o.length-1]);)n=o[o.length-1],o=g.node.contents(n);else if(\"BLOCKQUOTE\"===i.tagName&&\"BLOCKQUOTE\"!==n.tagName)for(o=g.node.contents(i);o.length&&g.node.isBlock(o[0]);)i=o[0],o=g.node.contents(i);C(e).replaceWith(V.MARKERS),C(n).append(i.innerHTML),C(i).remove()}else{for(C(e).replaceWith(V.MARKERS);i&&\"BR\"!==i.tagName&&!g.node.isBlock(i)&&g.node.isEditable(i);){var s=i;i=i.nextSibling,C(n).append(s)}i&&\"BR\"===i.tagName&&g.node.isEditable(i)&&C(i).remove()}}}function n(e){for(var t,n=e;!n.nextSibling;)if(n=n.parentNode,g.node.isElement(n))return!1;if(\"BR\"===(n=n.nextSibling).tagName&&g.node.isEditable(n))if(n.nextSibling){if(g.node.isBlock(n.nextSibling)&&g.node.isEditable(n.nextSibling)){if(!(V.NO_DELETE_TAGS.indexOf(n.nextSibling.tagName)<0))return void C(n).remove();n=n.nextSibling,C(n.previousSibling).remove()}}else if(h(n)){if(b(e))g.cursorLists._del(e);else g.node.deepestParent(n)&&((!g.node.isEmpty(g.node.blockParent(n))||(g.node.blockParent(n).nextSibling&&V.NO_DELETE_TAGS.indexOf(g.node.blockParent(n).nextSibling.tagName))<0)&&C(n).remove(),n&&n.parentNode&&8203===n.parentNode.textContent.charCodeAt()&&n.parentNode.childNodes[1]&&\"BR\"===n.parentNode.childNodes[1].tagName&&n.parentNode.tagName.toLowerCase()===g.html.defaultTag()&&n.parentNode.nextSibling&&\"TABLE\"===n.parentNode.nextSibling.tagName&&C(n.parentNode).remove(),i(e));return}if(!g.node.isBlock(n)&&g.node.isEditable(n)){for(t=g.node.contents(n);n.nodeType!==Node.TEXT_NODE&&t.length&&!g.node.isDeletable(n)&&g.node.isEditable(n);)n=t[0],t=g.node.contents(n);n.nodeType===Node.TEXT_NODE?(C(n).before(V.MARKERS),n.textContent.length&&(n.textContent=n.textContent.substring(L(n.textContent,!0),n.textContent.length))):g.node.isDeletable(n)?(C(n).before(V.MARKERS),C(n).remove()):!1!==g.events.trigger(\"node.remove\",[C(n)])&&(C(n).before(V.MARKERS),C(n).remove()),C(e).remove()}else if(V.NO_DELETE_TAGS.indexOf(n.tagName)<0&&(g.node.isEditable(n)||g.node.isDeletable(n)))if(g.node.isDeletable(n))C(e).replaceWith(V.MARKERS),C(n).remove();else if(g.node.isList(n))e.previousSibling?(C(n).find(\"li\").first().prepend(e),g.cursorLists._backspace(e)):(C(n).find(\"li\").first().prepend(V.MARKERS),C(e).remove());else if((t=g.node.contents(n))&&0<t.length&&\"BR\"===t[0].tagName&&C(t[0]).remove(),t&&0<t.length&&\"BLOCKQUOTE\"===n.tagName){var r=t[0];for(C(e).before(V.MARKERS);r&&\"BR\"!==r.tagName;){var o=r;r=r.nextSibling,C(e).before(o)}r&&\"BR\"===r.tagName&&C(r).remove()}else C(e).after(C(n).html()).after(V.MARKERS),C(n).remove()}function a(){for(var e=g.el.querySelectorAll(\"blockquote:empty\"),t=0;t<e.length;t++)e[t].parentNode.removeChild(e[t])}function y(e,t,n){var r,o=g.node.deepestParent(e,[],!n);if(o&&\"BLOCKQUOTE\"===o.tagName)return v(e,o)?(r=g.html.defaultTag(),t?C(e).replaceWith(\"<br>\"+V.MARKERS):r?C(o).after(\"<\".concat(r,\">\").concat(V.MARKERS,\"<br></\").concat(r,\">\")):C(o).after(\"\".concat(V.MARKERS,\"<br>\")),C(e).remove()):S(e,t,n),!1;if(null===o)(r=g.html.defaultTag())&&g.node.isElement(e.parentNode)?C(e).replaceWith(\"<\".concat(r,\">\").concat(V.MARKERS,\"<br></\").concat(r,\">\")):!e.previousSibling||C(e.previousSibling).is(\"br\")||e.nextSibling?C(e).replaceWith(\"<br>\".concat(V.MARKERS)):C(e).replaceWith(\"<br>\".concat(V.MARKERS,\"<br>\"));else{var i=e,a=\"\";\"PRE\"!=o.tagName||e.nextSibling||(t=!0),g.node.isBlock(o)&&!t||(a=\"<br/>\");var s,l=\"\",c=\"\",d=\"\",f=\"\";(r=g.html.defaultTag())&&g.node.isBlock(o)&&(d=\"<\".concat(r,\">\"),f=\"</\".concat(r,\">\"),o.tagName===r.toUpperCase()&&(d=g.node.openTagString(C(o).clone().removeAttr(\"id\").get(0))));do{if(i=i.parentNode,!t||i!==o||t&&!g.node.isBlock(o))if(l+=g.node.closeTagString(i),i===o&&g.node.isBlock(o))c=d+c;else{var p=(\"A\"===i.tagName||g.node.hasClass(i,\"fa\"))&&v(e,i)?\"fr-to-remove\":\"\";c=\"isPasted\"===i.getAttribute(\"id\")?g.node.openTagString(C(i).clone().attr(\"style\",\"\").addClass(p).get(0))+c:g.node.openTagString(C(i).clone().addClass(p).get(0))+c}}while(i!==o);a=l+a+c+(e.parentNode===o&&g.node.isBlock(o)?\"\":V.INVISIBLE_SPACE)+V.MARKERS,g.node.isBlock(o)&&!C(o).find(\"*\").last().is(\"br\")&&C(o).append(\"<br/>\"),C(e).after('<span id=\"fr-break\"></span>'),C(e).remove(),o.nextSibling&&!g.node.isBlock(o.nextSibling)||g.node.isBlock(o)||C(o).after(\"<br>\"),s=(s=!t&&g.node.isBlock(o)?g.node.openTagString(o)+C(o).html()+f:g.node.openTagString(o)+C(o).html()+g.node.closeTagString(o)).replace(/<span id=\"fr-break\"><\\/span>/g,a),C(o).replaceWith(s)}}function S(e,t,n){var r=g.node.deepestParent(e,[],!n);if(null===r)g.html.defaultTag()&&e.parentNode===g.el?C(e).replaceWith(\"<\".concat(g.html.defaultTag(),\">\").concat(V.MARKERS,\"<br></\").concat(g.html.defaultTag(),\">\")):(e.nextSibling&&!g.node.isBlock(e.nextSibling)||C(e).after(\"<br>\"),C(e).replaceWith(\"<br>\".concat(V.MARKERS)));else if(e.previousSibling&&\"IMG\"==e.previousSibling.tagName||e.nextSibling&&\"IMG\"==e.nextSibling.tagName)C(e).replaceWith(\"<\"+g.html.defaultTag()+\">\"+V.MARKERS+\"<br></\"+g.html.defaultTag()+\">\");else{var o=e,i=\"\";\"PRE\"===r.tagName&&(t=!0),g.node.isBlock(r)&&!t||(i=\"<br>\");var a=\"\",s=\"\";do{var l=o;if(o=o.parentNode,\"BLOCKQUOTE\"===r.tagName&&g.node.isEmpty(l)&&!g.node.hasClass(l,\"fr-marker\")&&C(l).contains(e)&&C(l).after(e),\"BLOCKQUOTE\"!==r.tagName||!v(e,o)&&!m(e,o))if(!t||o!==r||t&&!g.node.isBlock(r)){a+=g.node.closeTagString(o);var c=\"A\"==o.tagName&&v(e,o)||g.node.hasClass(o,\"fa\")?\"fr-to-remove\":\"\";s=g.node.openTagString(C(o).clone().addClass(c).removeAttr(\"id\").get(0))+s,g.opts.enter!==V.ENTER_DIV&&o===r&&\"DIV\"===r.tagName&&(a=\"<br>\",s=\"\")}else\"BLOCKQUOTE\"==r.tagName&&t&&(s=a=\"\")}while(o!==r);var d=r===e.parentNode&&g.node.isBlock(r)||e.nextSibling;if(\"BLOCKQUOTE\"===r.tagName)if(e.previousSibling&&g.node.isBlock(e.previousSibling)&&e.nextSibling&&\"BR\"===e.nextSibling.tagName&&(C(e.nextSibling).after(e),e.nextSibling&&\"BR\"===e.nextSibling.tagName&&C(e.nextSibling).remove()),t)i=a+i+V.MARKERS+s;else{var f=g.html.defaultTag();i=\"\".concat(a+i+(f?\"<\".concat(f,\">\"):\"\")+V.MARKERS,\"<br>\").concat(f?\"</\".concat(f,\">\"):\"\").concat(s)}else i=a+i+s+(d?\"\":V.INVISIBLE_SPACE)+V.MARKERS;C(e).replaceWith('<span id=\"fr-break\"></span>');var p=g.node.openTagString(r)+C(r).html()+g.node.closeTagString(r);p=p.replace(/<span id=\"fr-break\"><\\/span>/g,i),C(r).replaceWith(p)}}function N(e){var t=e.getBoundingClientRect(),n=window.pageXOffset||document.documentElement.scrollLeft,r=window.pageYOffset||document.documentElement.scrollTop;return{top:t.top+r,left:t.left+n}}function T(){var e=g.selection.get(),t=null;if(g.selection.inEditor()&&e.rangeCount)for(var n=g.selection.ranges(),r=0;r<n.length;r++){var o=n[r];t=g.selection.rangeElement(o.startContainer,o.startOffset);break}return t}return{enter:function M(e){var t=g.markers.insert();if(!t)return!0;for(var n=t.parentNode;n&&!g.node.isElement(n);){if(\"false\"===n.getAttribute(\"contenteditable\"))return C(t).replaceWith(V.MARKERS),g.selection.restore(),!1;if(\"true\"===n.getAttribute(\"contenteditable\"))break;n=n.parentNode}g.el.normalize();var r=!1;0<C(t).parentsUntil(g.$el,\"BLOCKQUOTE\").length&&(r=!0),C(t).parentsUntil(g.$el,\"TD, TH\").length&&(r=!1),h(t)?!b(t)||e||r?y(t,e,r):g.cursorLists._endEnter(t):u(t)?!b(t)||e||r?function f(e,t,n){var r,o=g.node.deepestParent(e,[],!n);if(o&&\"TABLE\"===o.tagName)return C(o).find(\"td, th\").first().prepend(e),f(e,t,n);if(o&&\"BLOCKQUOTE\"===o.tagName)if(m(e,o)){if(!t)return(r=g.html.defaultTag())?C(o).before(\"<\".concat(r,\">\").concat(V.MARKERS,\"<br></\").concat(r,\">\")):C(o).before(\"\".concat(V.MARKERS,\"<br>\")),C(e).remove(),!1}else v(e,o)?y(e,t,!0):S(e,t,!0);if(null===o)(r=g.html.defaultTag())&&g.node.isElement(e.parentNode)?C(e).replaceWith(\"<\".concat(r,\">\").concat(V.MARKERS,\"<br></\").concat(r,\">\")):C(e).replaceWith(\"<br>\".concat(V.MARKERS));else{if(r=g.html.defaultTag(),g.node.isBlock(o))if(\"PRE\"===o.tagName&&(t=!0),t)C(e).remove(),C(o).prepend(\"<br>\".concat(V.MARKERS));else if(e.nextSibling&&\"IMG\"==e.nextSibling.tagName||e.nextSibling&&e.nextSibling.nextElementSibling&&\"IMG\"==e.nextSibling.nextElementSibling)C(e).replaceWith(\"<\"+g.html.defaultTag()+\">\"+V.MARKERS+\"<br></\"+g.html.defaultTag()+\">\");else{if(g.node.isEmpty(o,!0))return y(e,t,n);if(g.opts.keepFormatOnDelete||\"DIV\"===o.tagName||\"div\"===g.html.defaultTag())if(!g.opts.keepFormatOnDelete&&\"DIV\"===o.tagName||\"div\"===g.html.defaultTag())C(o).before(\"<\"+g.html.defaultTag()+\"><br></\"+g.html.defaultTag()+\">\");else if(g.opts.keepFormatOnDelete&&!g.opts.htmlUntouched&&\"DIV\"!==o.tagName&&\"div\"!==g.html.defaultTag()&&u(g.selection.get().focusNode))C(o).before(\"\".concat(g.node.openTagString(C(o).clone().removeAttr(\"id\").get(0)),\"<br>\").concat(g.node.closeTagString(o)));else{for(var i=e,a=V.INVISIBLE_SPACE;i!==o&&!g.node.isElement(i);)i=i.parentNode,a=g.node.openTagString(i)+a+g.node.closeTagString(i);C(o).before(a)}else C(o).before(\"\".concat(g.node.openTagString(C(o).clone().removeAttr(\"id\").get(0)),\"<br>\").concat(g.node.closeTagString(o)))}else C(o).before(\"<br>\");C(e).remove()}}(t,e,r):g.cursorLists._startEnter(t):!b(t)||e||r?S(t,e,r):g.cursorLists._middleEnter(t),function p(){g.$el.find(\".fr-to-remove\").each(function(){for(var e=g.node.contents(this),t=0;t<e.length;t++)e[t].nodeType===Node.TEXT_NODE&&(e[t].textContent=e[t].textContent.replace(/\\u200B/g,\"\"));C(this).replaceWith(this.innerHTML)})}(),g.html.fillEmptyBlocks(!0),g.opts.htmlUntouched||(g.html.cleanEmptyTags(),g.clean.lists(),g.spaces.normalizeAroundCursor()),g.selection.restore();var o=g.o_win.innerHeight;if(g.$oel[0].offsetHeight>o){var i=T();if(i){var a=N(i);a=a.top;var s=i.getBoundingClientRect().top;g.opts.scrollableContainer&&g.opts.enter!==V.ENTER_BR&&\"BR\"===i.tagName&&s+20===o&&(s=a=i.parentNode.offsetTop),i.parentNode&&\"TD\"===i.parentNode.tagName&&o<s?g.o_win.scroll(0,s-50):s<0?g.o_win.scroll(0,a-80):g.opts.scrollableContainer&&o<s+20?g.o_win.scroll(0,a-o+50):g.opts.scrollableContainer&&s+2*g.$tb.height()>g.$sc[0].scrollTop+C(g.$sc).height()&&g.$sc[0].scroll(0,a-C(g.$sc).height()+2*g.$tb.height())}}else if(g.opts.scrollableContainer&&g.opts.toolbarSticky){var l=T();if(l){var c=N(l);c=c.top;var d=l.getBoundingClientRect().top;g.opts.enter!==V.ENTER_BR&&\"BR\"===l.tagName&&(d=c=l.parentNode.offsetTop),(g.opts.iframe&&d+2*g.$tb.height()>g.$sc[0].scrollTop+C(g.$sc).height()||d+2*g.$tb.height()>C(g.$sc).height())&&g.$sc[0].scroll(0,c-C(g.$sc).height()+2*g.$tb.height())}}},backspace:function s(){var e=!1,t=g.markers.insert();if(!t)return!0;for(var n=t.parentNode;n&&!g.node.isElement(n);){if(\"false\"===n.getAttribute(\"contenteditable\"))return C(t).replaceWith(V.MARKERS),g.selection.restore(),!1;if(n.innerText.length&&\"true\"===n.getAttribute(\"contenteditable\"))break;n=n.parentNode}g.el.normalize();var r=t.previousSibling;if(r){var o=r.textContent;o&&o.length&&8203===o.charCodeAt(o.length-1)&&(1===o.length?C(r).remove():r.textContent=r.textContent.substr(0,o.length-L(o)))}return h(t)?b(t)&&m(t,C(t).parents(\"li\").first().get(0))?g.cursorLists._backspace(t):e=E(t):u(t)?b(t)&&m(t,C(t).parents(\"li\").first().get(0))?g.cursorLists._backspace(t):function c(e){for(var t=0<C(e).parentsUntil(g.$el,\"BLOCKQUOTE\").length,n=g.node.deepestParent(e,[],!t),r=n;n&&!n.previousSibling&&\"BLOCKQUOTE\"!==n.tagName&&n.parentElement!==g.el&&!g.node.hasClass(n.parentElement,\"fr-inner\")&&V.SIMPLE_ENTER_TAGS.indexOf(n.parentElement.tagName)<0;)n=n.parentElement;if(n&&\"BLOCKQUOTE\"===n.tagName){var o=g.node.deepestParent(e,[C(e).parentsUntil(g.$el,\"BLOCKQUOTE\").get(0)]);o&&o.previousSibling&&(r=n=o)}if(null!==n){var i,a=n.previousSibling;if(g.node.isBlock(n)&&g.node.isEditable(n))if(a&&V.NO_DELETE_TAGS.indexOf(a.tagName)<0){if(g.node.isDeletable(a))C(a).remove(),C(e).replaceWith(V.MARKERS);else if(g.node.isEditable(a))if(g.node.isBlock(a))if(g.node.isEmpty(a)&&!g.node.isList(a))C(a).remove(),C(e).after(g.opts.keepFormatOnDelete?V.INVISIBLE_SPACE:\"\");else{if(g.node.isList(a)&&(a=C(a).find(\"li\").last().get(0)),(i=g.node.contents(a)).length&&\"BR\"===i[i.length-1].tagName&&C(i[i.length-1]).remove(),\"BLOCKQUOTE\"===a.tagName&&\"BLOCKQUOTE\"!==n.tagName)for(i=g.node.contents(a);i.length&&g.node.isBlock(i[i.length-1]);)a=i[i.length-1],i=g.node.contents(a);else if(\"BLOCKQUOTE\"!==a.tagName&&\"BLOCKQUOTE\"===r.tagName)for(i=g.node.contents(r);i.length&&g.node.isBlock(i[0]);)r=i[0],i=g.node.contents(r);if(g.node.isEmpty(n))C(e).remove(),g.selection.setAtEnd(a,!0);else{C(e).replaceWith(V.MARKERS);var s=a.childNodes;g.node.isBlock(s[s.length-1])?C(s[s.length-1]).append(r.innerHTML):C(a).append(r.innerHTML)}C(r).remove(),g.node.isEmpty(n)&&C(n).remove()}else C(e).replaceWith(V.MARKERS),\"BLOCKQUOTE\"===n.tagName&&a.nodeType===Node.ELEMENT_NODE?C(a).remove():(C(a).after(g.node.isEmpty(n)?\"\":C(n).html()),C(n).remove(),\"BR\"===a.tagName&&C(a).remove())}else if(a)8203===n.textContent.charCodeAt()&&n.childNodes[1]&&\"BR\"===n.childNodes[1].tagName&&n.tagName.toLowerCase()===g.html.defaultTag()&&n.previousSibling&&\"TABLE\"===n.previousSibling.tagName&&C(n).remove();else if(n&&\"BLOCKQUOTE\"===n.tagName&&0===C(n).text().replace(/\\u200B/g,\"\").length)C(n).remove();else{var l=n.nextSibling;g.node.isEmpty(n)&&n.parentNode&&g.node.isEditable(n.parentNode)&&!l&&(n.parentNode!=g.el&&\"TD\"!==n.parentNode.tagName?C(n.parentNode).remove():n.parentNode!=g.el&&\"TD\"===n.parentNode.tagName&&C(n).remove())}}}(t):e=E(t),C(t).remove(),a(),g.html.fillEmptyBlocks(!0),g.opts.htmlUntouched||(g.html.cleanEmptyTags(),g.clean.lists(),g.spaces.normalizeAroundCursor()),g.selection.restore(),e},del:function r(){var e=g.markers.insert();if(!e)return!1;if(g.el.normalize(),h(e))if(b(e))if(0===C(e).parents(\"li\").first().find(\"ul, ol\").length)g.cursorLists._del(e);else{var t=C(e).parents(\"li\").first().find(\"ul, ol\").first().find(\"li\").first();(t=t.find(g.html.blockTagsQuery()).get(-1)||t).prepend(e),g.cursorLists._backspace(e)}else i(e);else u(e),n(e);C(e).remove(),a(),g.html.fillEmptyBlocks(!0),g.opts.htmlUntouched||(g.html.cleanEmptyTags(),g.clean.lists()),g.spaces.normalizeAroundCursor(),g.selection.restore()},isAtEnd:v,isAtStart:m}},V.MODULES.data=function(f){function p(e){return e}function c(e){for(var t=e.toString(),n=0,r=0;r<t.length;r++)n+=parseInt(t.charAt(r),10);return 10<n?n%9+1:n}function d(e,t,n){for(var r=Math.abs(n);0<r--;)e-=t;return n<0&&(e+=123),e}function h(e){return e&&\"block\"!==e.css(\"display\")?(e.remove(),!0):e&&0===f.helpers.getPX(e.css(\"height\"))?(e.remove(),!0):!(!e||\"absolute\"!==e.css(\"position\")&&\"fixed\"!==e.css(\"position\")||(e.remove(),0))}function u(e){return e&&0===f.$box.find(e).length}function g(){if(10<e&&(f[p(M(\"0ppecjvc==\"))](),setTimeout(function(){L.FE=null},10)),!f.$box)return!1;f.$wp.prepend(M(p(M(N)))),v=f.$wp.find(\"> div\").first(),b=v.find(\"> a\"),\"rtl\"===f.opts.direction&&v.css(\"left\",\"auto\").css(\"right\",0).attr(\"direction\",\"rtl\"),e++}function C(e){for(var t=[M(\"9qqG-7amjlwq==\"),M(\"KA3B3C2A6D1D5H5H1A3==\"),M(\"3B9B3B5F3C4G3E3==\"),M(\"QzbzvxyB2yA-9m==\"),M(\"ji1kacwmgG5bc==\"),M(\"nmA-13aogi1A3c1jd==\"),M(\"BA9ggq==\"),M(\"emznbjbH3fij==\"),M(\"tkC-22d1qC-13sD1wzF-7==\"),M(\"tA3jjf==\"),M(\"1D1brkm==\")],n=0;n<t.length;n++)if(String.prototype.endsWith||(String.prototype.endsWith=function(e,t){return(void 0===t||t>this.length)&&(t=this.length),this.substring(t-e.length,t)===e}),e.endsWith(t[n]))return!0;return!1}function m(){var e=M(p(n)),t=M(p(\"tzgatD-13eD1dtdrvmF3c1nrC-7saQcdav==\")).split(\".\");try{return window.parent.document.querySelector(e)&&window[t[1]][t[2]]}catch(e){return!1}}var v,b,L=f.$,E=\"sC-7OB2fwhVC4vsG-7ohPA4ZD4D-8f1J3stzB-11bFE2FC1A3NB2IF1HE1TH4WB8eB-11zVG2F3I3yYB5ZG4CB2DA15CC5AD3F1A1KG1oLA10B1A6wQF1H3vgale2C4F4XA2qc2A5D5B3pepmriKB3OE1HD1fUC10pjD-11E-11TB4YJ3bC-16zE-11yc1B2CE2BC3jhjKC1pdA-21OA6C1D5B-8vF4QA11pD6sqf1C3lldA-16BD4A2H3qoEA7bB-16rmNH5H1F1vSB7RE2A3TH4YC5A5b1A4d1B3whepyAC3AA2zknC3mbgf1SC4WH4PD8TC5ZB2C3H3jb2A5ZA2EF2aoFC5qqHC4B1H1zeGA7UA5RF4TA29TA6ZC4d1C3hyWA10A3rBB2E3decorationRD3QC10UD3E6E6ZD2F3F3fme2E5uxxrEC9C3E4fB-11azhHB1LD7D6VF4VVTPC6b1C4TYG3qzDD6B3B3AH4I2H2kxbHE1JD1yihfd1QD6WB1D4mhrc1B5rvFG3A14A7cDA2OC1AA1JB5zC-16KA6WB4C-8wvlTB5A5lkZB2C2C7zynBD2D2bI-7C-21d1HE2cubyvPC8A6VB3aroxxZE4C4F4e1I2BE1WjdifH1H4A14NA1GB1YG-10tWA3A14A9sVA2C5XH2A29b2A6gsleGG2jaED2D-13fhE1OA8NjwytyTD4e1sc1D-16ZC3B5C-9e1C2FB6EFF5B2C2JH4E1C2tdLE5A3UG4G-7b2D3B4fA-9oh1G3kqvB4AG3ibnjcAC6D2B1cDA9KC2QA6bRC4VA30RB8hYB2A4A-8h1A21A2B2==\",y=\"7D4YH4fkhHB3pqDC3H2E1fkMD1IB1NF1D3QD9wB5rxqlh1A8c2B4ZA3FD2AA6FB5EB3jJG4D2J-7aC-21GB6PC5RE4TC11QD6XC4XE3XH3mlvnqjbaOA2OC2BE6A1fmI-7ujwbc1G5f1F3e1C11mXF4owBG3E1yD1E4F1D2D-8B-8C-7yC-22HD1MF5UE4cWA3D8D6a1B2C3H3a3I3sZA4B3A2akfwEB3xHD5D1F1wIC11pA-16xdxtVI2C9A6YC4a1A2F3B2GA6B4C3lsjyJB1eMA1D-11MF5PE4ja1D3D7byrf1C3e1C7D-16lwqAF3H2A1B-21wNE1MA1OG1HB2A-16tSE5UD4RB3icRA4F-10wtwzBB3E1C3CC2DA8LA2LA1EB1kdH-8uVB7decorg1J2B7B6qjrqGI2J1C6ijehIB1hkemC-13hqkrH4H-7QD6XF5XF3HLNAC3CB2aD2CD2KB10B4ycg1A-8KA4H4B11jVB5TC4yqpB-21pd1E4pedzGB6MD5B3ncB-7MA4LD2JB6PD5uH-8TB9C7YD5XD2E3I3jmiDB3zeimhLD8E2F2JC1H-9ivkPC5lG-10SB1D3H3A-21rc1A3d1E3fsdqwfGA2KA1OrC-22LA6D1B4afUB16SC7AitC-8qYA11fsxcajGA15avjNE2A-9h1hDB16B9tPC1C5F5UC1G3B8d2A5d1D4RnHJ3C3JB5D3ucMG1yzD-17hafjC-8VD3yWC6e1YD2H3ZE2C8C5oBA3H3D2vFA4WzJC4C2i1A-65fNB8afWA1H4A26mvkC-13ZB3E3h1A21BC4eFB2GD2AA5ghqND2A2B2==\",n=\"MekC-11nB-8tIzpD7pewxvzC6mD-16xerg1==\",S=\"lC4B3A3B2B5A1C2E4G1A2==\",N=\"sC-7OB2fwhVC4vsG-7ohPA4ZD4D-8f1J3stzB-11bFE2EE1MA2ND1KD1IE4cA-21pSD2D5ve1G3h1A8b1E5ZC3CD2FA16mC5OC5E1hpnG1NA10B1D7hkUD4I-7b2C3C5nXD2E3F3whidEC2EH3GI2mJE2E2bxci1WA10VC7pllSG2F3A7xd1A4ZC3DB2aaeGA2DE4H2E1j1ywD-13FD1A3VE4WA3D8C6wuc1A2hf1B5B7vnrrjA1B9ic1mpbD1oMB1iSB7rWC4RI4G-7upB6jd1A2F3H2EA4FD3kDF4A2moc1anJD1TD4VI4b2C7oeQF4c1E3XC7ZA3C3G3uDB2wGB6D1JC4D1JD4C1hTE6QC5pH4pD3C-22D7c1A3textAA4gdlB2mpozkmhNC1mrxA3yWA5edhg1I2H3B7ozgmvAI3I2B5GD1LD2RSNH1KA1XA5SB4PA3sA9tlmC-9tnf1G3nd1coBH4I2I2JC3C-16LE6A1tnUA3vbwQB1G3f1A20a3A8a1C6pxAB2eniuE1F3kH2lnjB2hB-16XA5PF1G4zwtYA5B-11mzTG2B9pHB3BE2hGH3B3B2cMD5C1F1wzPA8E7VG5H5vD3H-7C8tyvsVF2I1G2A5fE3bg1mgajoyxMA4fhuzSD8aQB2B4g1A20ukb1A4B3F3GG2CujjanIC1ObiB11SD1C5pWC1D4YB8YE5FE-11jXE2F-7jB4CC2G-10uLH4E1C2tA-13yjUH5d1H1A7sWD5E4hmjF-7pykafoGA16hDD4joyD-8OA33B3C2tC7cRE4SA31a1B8d1e2A4F4g1A2A22CC5zwlAC2C1A12==\",T=function(){for(var e=0,t=document.domain,n=t.split(\".\"),r=\"_gd\".concat((new Date).getTime());e<n.length-1&&-1===document.cookie.indexOf(\"\".concat(r,\"=\").concat(r));)t=n.slice(-1-++e).join(\".\"),document.cookie=\"\".concat(r,\"=\").concat(r,\";domain=\").concat(t,\";\");return document.cookie=\"\".concat(r,\"=;expires=Thu, 01 Jan 1970 00:00:01 GMT;domain=\").concat(t,\";\"),(t||\"\").replace(/(^\\.*)|(\\.*$)/g,\"\")}(),M=p(function A(e){if(!e)return e;for(var t=\"\",n=p(\"charCodeAt\"),r=p(\"fromCharCode\"),o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".indexOf(e[0]),i=1;i<e.length-2;i++){for(var a=c(++o),s=e[n](i),l=\"\";/[0-9-]/.test(e[i+1]);)l+=e[++i];s=d(s,a,l=parseInt(l,10)||0),s^=o-1&31,t+=String[r](s)}return t}),e=0;return{_init:function x(){var e=f.opts.key||[\"\"],t=M(p(\"ziRA1E3B9pA5B-11D-11xg1A3ZB5D1D4B-11ED2EG2pdeoC1clIH4wB-22yQD5uF4YE3E3A9==\"));\"string\"==typeof e&&(e=[e]);for(var n,r,o,i=!(f.ul=!0),a=0,s=0;s<e.length;s++){var l=(r=e[s],4===(o=(M(r)||\"\").split(\"|\")).length&&\"V3\"===o[0]?[o[1],o[3],o[2]]:[null,null,\"\"]),c=l[2];if(c===M(p(M(\"LGnD1KNZf1CPBYCAZB-8F3UDSLLSG1VFf1A3C2==\")))||0<=c.indexOf(T,c.length-T.length)||C(T)||m()){if(null!==(n=l[1])&&!(0==n.indexOf(\"TRIAL\")?(n=new Date(n.replace(/TRIAL/,\"\")),new Date(n)<new Date&&(E=y,1)):new Date(n)<new Date(M(S)))||!(0<(T||\"\").length)||C(T)||m()){f.ul=!1;break}i=!0,N=E,a=l[0]||-1}}var d=new Image;!0===f.ul&&(g(),d.src=i?\"\".concat(p(M(t)),\"e=\").concat(a):\"\".concat(p(M(t)),\"u\")),!0===f.ul&&(f.events.on(\"contentChanged\",function(){(function e(){return h(v)||h(b)||u(v)||u(b)})()&&g()}),f.events.on(\"html.get\",function(e){return e+M(\"qD2H-9G3ioD-17qA1tE1B-8qI3A4hA-13C-11E2C1njfldD1E6pg1C-8sC3hfbkcD2G3stC-22gqgB3G2B-7vtoA4nweeD1A31A15B9uC-16A1F5dkykdc1B8dE-11bA3F2D3A9gd1E7F2tlI-8H-7vtxB2A5B2C3B2F2B5A6ldbyC4iqC-22D-17E-13mA3D2dywiB3oxlvfC1H4C2TjqbzlnI3ntB4E3qA2zaqsC6D3pmnkoE3C6D5wvuE3bwifdhB6hch1E4xibD-17dmrC1rG-7pntnF6nB-8F1D2A11C8plrkmF2F3MC-16bocqA2WwA-21ayeA1C4d1isC-22rD-13D6DfjpjtC2E6hB2G2G4A-7D2==\")})),f.events.on(\"html.set\",function(){var e=f.el.querySelector('[data-f-id=\"pbf\"]');e&&L(e).remove()}),f.events.on(\"destroy\",function(){v&&v.length&&v.remove()},!0)}}},V.MODULES.edit=function(t){function e(){if(t.browser.mozilla)try{t.doc.execCommand(\"enableObjectResizing\",!1,\"false\"),t.doc.execCommand(\"enableInlineTableEditing\",!1,\"false\")}catch(e){}if(t.browser.msie)try{t.doc.body.addEventListener(\"mscontrolselect\",function(e){return e.srcElement.focus(),!1})}catch(e){}}var n=!1;function r(){return n}return{_init:function o(){t.events.on(\"focus\",function(){r()?t.edit.off():t.edit.on()})},on:function i(){t.$wp?(t.$el.attr(\"contenteditable\",!0),t.$el.removeClass(\"fr-disabled\").attr(\"aria-disabled\",!1),e()):t.$el.is(\"a\")&&t.$el.attr(\"contenteditable\",!0),t.events.trigger(\"edit.on\",[],!0),n=!1},off:function a(){t.events.disableBlur(),t.$wp?(t.$el.attr(\"contenteditable\",!1),t.$el.addClass(\"fr-disabled\").attr(\"aria-disabled\",!0)):t.$el.is(\"a\")&&t.$el.attr(\"contenteditable\",!1),t.events.trigger(\"edit.off\"),t.events.enableBlur(),n=!0},disableDesign:e,isDisabled:r}},V.MODULES.format=function(x){var O=x.$;function w(e,t){var n=e;for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n+=\"id\"===r?\"#\".concat(t[r]):\"class\"===r?\".\".concat(t[r]):\"[\".concat(r,'=\"').concat(t[r],'\"]'));return n}function k(e,t){return!(!e||e.nodeType!==Node.ELEMENT_NODE)&&(e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector).call(e,t)}function v(e,t,n){var r,o,i,a={strong:{prop:\"font-weight\",val:\"bold\"},em:{prop:\"font-style\",val:\"italic\"}};if(e){var s=\"LI\"===e.tagName?e:O(e).parentsUntil(x.$el,\"li\").get(0),l=O(s).find(\".fr-marker[data-type=false]\").get(0);if(\"LI\"!==e.parentNode.parentNode.tagName||!l||null!=l.previousSibling){if(x.node.isBlock(e)&&e.hasAttribute(\"contenteditable\")&&\"false\"===e.getAttribute(\"contenteditable\")||e.parentNode&&e.parentNode.hasAttribute(\"contenteditable\")&&\"false\"===e.parentNode.getAttribute(\"contenteditable\")){if(e.nextSibling&&O(e.nextSibling).hasClass(\"fr-marker\"))return;if(e.nextSibling)return void v(e.nextSibling,t,n);if(e.parentNode&&x.node.isEditable(e.parentNode))return void v(e.parentNode,t,n)}for(;e&&e.nodeType===Node.COMMENT_NODE;)e=e.nextSibling;if(e){if(x.node.isBlock(e)&&\"HR\"!==e.tagName&&\"LI\"!==e.tagName)return x.node.hasClass(e.firstChild,\"fr-marker\")?v(e.firstChild.nextSibling,t,n):v(e.firstChild,t,n),!1;var c=O(x.doc.createElement(t));c.attr(n),c.insertBefore(e),(r=b(e))&&(0<=[\"strong\",\"em\"].indexOf(t)||\"span\"===t&&n.hasOwnProperty(\"style\"))&&(i=\"span\"===t?(o=(a=n.style.replace(/;$/,\"\").split(\":\"))[0].trim(),a[1].trim()):(o=a[t].prop,a[t].val),\"background-color\"!==o&&(O(r).css(o,i),function u(e,t){var n,r=e.childNodes;for(n=0;n<r.length;n++)0<=[\"UL\",\"OL\",\"LI\"].indexOf(r[n].tagName)&&\"\"===r[n].style[t]&&O(r[n]).css(t,\"initial\")}(r,o)));for(var d=e;d&&!O(d).hasClass(\"fr-marker\")&&0===O(d).find(\".fr-marker\").length&&\"UL\"!==d.tagName&&\"OL\"!==d.tagName;){var f=d;if(\"SPAN\"===d.tagName&&O(d).hasClass(\"fr-tracking-deleted\"))d=d.nextSibling;else{if(x.node.isBlock(d)&&\"HR\"!==e.tagName)return v(d.firstChild,t,n),!1;if(\"SPAN\"===d.tagName&&x.node.isEditable(d))return c.is(\":empty\")&&c.remove(),v(d.firstChild,t,n),!1;if(d.tagName&&d.hasAttribute(\"contenteditable\")&&\"false\"===d.getAttribute(\"contenteditable\"))return void v(d.nextSibling,t,n);if(!x.node.isEditable(d.parentNode))return x.selection.restore(),void x.toolbar.disable();d=d.nextSibling,c.append(f)}}if(d)(O(d).find(\".fr-marker\").length||\"UL\"===d.tagName||\"OL\"===d.tagName)&&v(d.firstChild,t,n);else{for(var p=c.get(0).parentNode;p&&!p.nextSibling&&!x.node.isElement(p);)p=p.parentNode;if(p){var h=p.nextSibling;h&&(x.node.isBlock(h)?\"HR\"===h.tagName?v(h.nextSibling,t,n):v(h.firstChild,t,n):v(h,t,n))}}c.is(\":empty\")&&c.remove()}}}}function l(e,t){var n;if(void 0===t&&(t={}),t.style&&delete t.style,x.selection.isCollapsed()){x.markers.insert();var r=x.$el.find(\".fr-marker\");r.get(0).nextSibling&&x.node.isBlock(r.get(0).nextSibling)&&!r.get(0).previousSibling&&\"LI\"===r.get(0).parentNode.tagName&&r.get(0).nextSibling.prepend(r.get(0)),r.replaceWith(function l(e,t){var n=\"<\".concat(e);for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n+=\" \".concat(r,'=\"').concat(t[r],'\"'));return n+=\">\"}(e,t)+V.INVISIBLE_SPACE+V.MARKERS+function c(e){return\"</\".concat(e,\">\")}(e)),x.selection.restore()}else{x.selection.save();var o,i=x.$el.find('.fr-marker[data-type=\"true\"]').length&&x.$el.find('.fr-marker[data-type=\"true\"]').get(0).nextSibling;v(i,e,t),O(i).parent().find(\"a:empty\").remove();do{for(o=x.$el.find(\"\".concat(w(e,t),\" > \").concat(w(e,t))),n=0;n<o.length;n++)o[n].outerHTML=o[n].innerHTML}while(o.length);x.el.normalize();var a=x.el.querySelectorAll(\".fr-marker\");for(n=0;n<a.length;n++){var s=O(a[n]);!0===s.data(\"type\")?k(s.get(0).nextSibling,w(e,t))&&s.next().prepend(s):k(s.get(0).previousSibling,w(e,t))&&s.prev().append(s)}x.selection.restore()}}function $(e,t,n,r){if(!r){var o=!1;if(!0===e.data(\"type\"))for(;x.node.isFirstSibling(e.get(0))&&!e.parent().is(x.$el)&&!e.parent().is(\"ol\")&&!e.parent().is(\"ul\");)e.parent().before(e),o=!0;else if(!1===e.data(\"type\"))for(;x.node.isLastSibling(e.get(0))&&!e.parent().is(x.$el)&&!e.parent().is(\"ol\")&&!e.parent().is(\"ul\");)e.parent().after(e),o=!0;if(o)return!0}if(e.parents(t).length||void 0===t){var i,a=\"\",s=\"\",l=e.parent();if(\"A\"===l[0].tagName&&(l=l.parent()),l.is(x.$el)||x.node.isBlock(l.get(0)))return!1;for(;!(x.node.isBlock(l.parent().get(0))||void 0!==t&&k(l.get(0),w(t,n)));)a+=x.node.closeTagString(l.get(0)),s=x.node.openTagString(l.get(0))+s,l=l.parent();var c=e.get(0).outerHTML;return e.replaceWith('<span id=\"mark\"></span>'),i=l.html().replace(/<span id=\"mark\"><\\/span>/,a+x.node.closeTagString(l.get(0))+s+c+a+x.node.openTagString(l.get(0))+s),l.replaceWith(x.node.openTagString(l.get(0))+i+x.node.closeTagString(l.get(0))),!0}return!1}function c(e,t){void 0===t&&(t={}),t.style&&delete t.style;var n=x.selection.isCollapsed();x.selection.save();var r=x.$el.find(\".fr-marker\");if(e&&(r[0].parentNode.tagName===e.toUpperCase()||r[1].parentNode.tagName===e.toUpperCase())){var o=r[0];r[0].parentNode.tagName!==e.toUpperCase()&&(o=r[1]);for(var i=o.parentNode.previousSibling;null!=i;)i.nodeType===Node.TEXT_NODE&&(i.textContent=i.textContent.replace(/\\u200B/g,\"\")),i=i.previousSibling;for(var a=o.parentNode.nextSibling;null!=a;)a.nodeType===Node.TEXT_NODE&&(a.textContent=a.textContent.replace(/\\u200B/g,\"\")),a=a.nextSibling}for(var s=!0;s;){s=!1;for(var l=x.$el.find(\".fr-marker\"),c=0;c<l.length;c++){var d=O(l[c]),f=null;if(d.attr(\"data-cloned\")||n||(f=d.clone().removeClass(\"fr-marker\").addClass(\"fr-clone\"),d.data(\"type\")&&\"true\"===d.data(\"type\").toString()?d.attr(\"data-cloned\",!0).after(f):d.attr(\"data-cloned\",!0).before(f)),$(d,e,t,n)){s=!0;break}}}!function M(e,t,n,r){for(var o,i={strong:{prop:\"font-weight\",val:\"bold\"},em:{prop:\"font-style\",val:\"italic\"}},a=x.node.contents(e.get(0)),s=0;s<a.length;s++){var l=a[s];if(l.innerHTML&&8203==l.innerHTML.charCodeAt()&&l.tagName.toLocaleLowerCase()==n&&l.childNodes.length<2&&!x.helpers.isMobile()&&(l.outerHTML=l.innerHTML),x.node.hasClass(l,\"fr-marker\"))t=(t+1)%2;else if(t)if(0<O(l).find(\".fr-marker\").length)t=M(O(l),t,n,r);else{(o=\"LI\"===l.tagName?l:O(l).parentsUntil(x.$el,\"li\").get(0))&&(void 0===n||0<=[\"strong\",\"em\"].indexOf(n))&&(n?O(o).css(i[n].prop,\"\"):o.style=\"\"),(o=l.parentNode!==x.el?l.parentNode:null)&&1===o.nodeType&&[\"p\",\"strong\",\"u\",\"em\",\"s\",\"sub\",\"sup\",\"a\"].indexOf(n)<0&&o.hasAttribute(\"style\")&&\"SPAN\"!==o.tagName&&\"LI\"!==o.tagName?o.style=\"\":l&&1===l.nodeType&&l.hasAttribute(\"style\")&&[\"p\",\"strong\",\"u\",\"em\",\"s\",\"sub\",\"sup\",\"a\"].indexOf(n)<0&&(x.browser.msie?O(l).attr(\"style\",\"\"):l.style=\"\");for(var c=O(l).find(n||\"*:not(br)\"),d=c.length-1;0<=d;d--){var f=c[d];(o=\"LI\"===f.tagName?f:O(f).parentsUntil(x.$el,\"li\").get(0))&&(!n||0<=[\"strong\",\"em\"].indexOf(n))&&(n?O(o).css(i[n].prop,\"\"):o.style=\"\"),\"A\"===f.tagName||x.node.isBlock(f)||x.node.isVoid(f)||void 0!==n&&!k(f,w(n,r))?x.node.isBlock(f)&&void 0===n&&\"TABLE\"!==l.tagName&&x.node.clearAttributes(f):x.node.hasClass(f,\"fr-clone\")||x.node.hasClass(f,\"fr-tracking-deleted\")||O(f).data(\"tracking\")||(f.outerHTML=f.innerHTML)}\"A\"!==l.tagName&&void 0===n&&l.nodeType===Node.ELEMENT_NODE&&!x.node.isVoid(l)||k(l,w(n,r))?x.node.isBlock(l)||(x.node.hasClass(l,\"fr-clone\")||x.opts.trackChangesEnabled?!x.node.hasClass(l,\"fr-clone\")&&x.opts.trackChangesEnabled&&l.parentNode&&(l.outerHTML=l.innerHTML):l.outerHTML=l.innerHTML):void 0===n&&l.nodeType===Node.ELEMENT_NODE&&x.node.isBlock(l)&&\"TABLE\"!==l.tagName&&x.node.clearAttributes(l)}else 0<O(l).find(\".fr-marker\").length&&(t=M(O(l),t,n,r))}return t}(x.$el,0,e,t),n||(x.$el.find(\".fr-marker\").remove(),x.$el.find(\".fr-clone\").removeClass(\"fr-clone\").addClass(\"fr-marker\")),n&&x.$el.find(\".fr-marker\").before(V.INVISIBLE_SPACE).after(V.INVISIBLE_SPACE),x.html.cleanEmptyTags(),x.el.normalize(),x.selection.restore();var p=x.win.getSelection()&&x.win.getSelection().anchorNode;if(p){var h=x.node.blockParent(p),u=!!p.textContent.replace(/\\u200B/g,\"\").length,g=x.win.getSelection().getRangeAt(0),C=g.startOffset,m=g.endOffset;x.selection.text().replace(/\\u200B/g,\"\").length||function A(e,t){if(e&&t){if(e.isSameNode(t)?e.textContent=e.textContent.replace(/\\u200B(?=.*\\u200B)/g,\"\"):e.nodeType===Node.TEXT_NODE&&(e.textContent=e.textContent.replace(/\\u200B/g,\"\")),!e.childNodes.length)return!1;Array.isArray(e.childNodes)&&e.childNodes.forEach(function(e){A(e,t)})}}(h,p);var v=x.win.getSelection().getRangeAt(0);if(p.nodeType===Node.TEXT_NODE){if(!u||!x.selection.text().length&&C===m){var b=p.textContent.search(/\\u200B/g)+1;if(x.browser.msie){var L=x.doc.createRange();x.selection.get().removeAllRanges(),L.setStart(p,b),L.setEnd(p,b),x.selection.get().addRange(L)}else\"a\"!==e&&(v.setStart(p,b),v.setEnd(p,b))}}else{var E,y,S=0,N=O(p).contents();if(x.browser.msie){for(;y=N[S];)y.nodeType===Node.TEXT_NODE&&0<=y.textContent.search(/\\u200B/g)&&(E=y),S++;E=O(E)}else E=N.filter(function(e){return e.nodeType===Node.TEXT_NODE&&0<=e.textContent.search(/\\u200B/g)});if(E.length&&!x.opts.trackChangesEnabled){var T=E.text().search(/\\u200B/g)+1;v.setStart(E.get(0),T),v.setEnd(E.get(0),T)}}}}function t(e,t){var n,r,o,i,a,s,l,c=null;if(x.selection.isCollapsed()){x.markers.insert();var d=(r=x.$el.find(\".fr-marker\")).parent();if(x.node.openTagString(d.get(0))==='<span style=\"'.concat(e,\": \").concat(d.css(e),';\">')){if(x.node.isEmpty(d.get(0)))c=O(x.doc.createElement(\"span\")).attr(\"style\",\"\".concat(e,\": \").concat(t,\";\")).html(\"\".concat(V.INVISIBLE_SPACE).concat(V.MARKERS)),d.replaceWith(c);else{var f={};f[\"style*\"]=\"\".concat(e,\":\"),$(r,\"span\",f,!0),r=x.$el.find(\".fr-marker\"),t?(c=O(x.doc.createElement(\"span\")).attr(\"style\",\"\".concat(e,\": \").concat(t,\";\")).html(\"\".concat(V.INVISIBLE_SPACE).concat(V.MARKERS)),r.replaceWith(c)):r.replaceWith(V.INVISIBLE_SPACE+V.MARKERS)}x.html.cleanEmptyTags()}else x.node.isEmpty(d.get(0))&&d.is(\"span\")?(r.replaceWith(V.MARKERS),d.css(e,t)):(r.get(0).nextSibling&&x.node.isBlock(r.get(0).nextSibling)&&!r.get(0).previousSibling&&\"LI\"===r.get(0).parentNode.tagName&&r.get(0).nextSibling.prepend(r.get(0)),c=O('<span style=\"'.concat(e,\": \").concat(t,';\">').concat(V.INVISIBLE_SPACE).concat(V.MARKERS,\"</span>\")),r.replaceWith(c));c&&L(c,e,t)}else{if(x.selection.save(),null===t||\"color\"===e&&0<x.$el.find(\".fr-marker\").parents(\"u, a\").length){var p=x.$el.find(\".fr-marker\");for(n=0;n<p.length;n++)if(!0===(r=O(p[n])).data(\"type\")||\"true\"===r.data(\"type\"))for(;x.node.isFirstSibling(r.get(0))&&!r.parent().is(x.$el)&&!x.node.isElement(r.parent().get(0))&&!x.node.isBlock(r.parent().get(0));)r.parent().before(r);else for(;x.node.isLastSibling(r.get(0))&&!r.parent().is(x.$el)&&!x.node.isElement(r.parent().get(0))&&!x.node.isBlock(r.parent().get(0));)r.parent().after(r)}for(var h=x.$el.find('.fr-marker[data-type=\"true\"]').get(0).nextSibling;h.firstChild;)h=h.firstChild;var u={\"class\":\"fr-unprocessed\"};for(t&&(u.style=\"\".concat(e,\": \").concat(t,\";\")),v(h,\"span\",u),x.$el.find(\".fr-marker + .fr-unprocessed\").each(function(){O(this).prepend(O(this).prev())}),x.$el.find(\".fr-unprocessed + .fr-marker\").each(function(){O(this).prev().append(O(this))}),(t||\"\").match(/\\dem$/)&&x.$el.find(\"span.fr-unprocessed\").removeClass(\"fr-unprocessed\");0<x.$el.find(\"span.fr-unprocessed\").length;){if(o=b(c=x.$el.find(\"span.fr-unprocessed\").first().removeClass(\"fr-unprocessed\")),c.parent().get(0).normalize(),c.parent().is(\"span\")&&1===c.parent().get(0).childNodes.length){var g=t;x.browser.msie&&!t&&(g=\"\"),c.parent().css(e,g);var C=c;c=c.parent(),C.replaceWith(C.html())}for(i=c.find(\"span\"),o&&\"background-color\"!==e&&(o.normalize(),i=O(o).find(\"span:not(.fr-unprocessed)\")),n=i.length-1;0<=n;n--)a=i[n],s=e,l=void 0,(l=O(a)).css(s,\"\"),\"\"===l.attr(\"style\")&&l.replaceWith(l.html());L(c,e,t)}}!function m(){var e;for(;0<x.$el.find(\".fr-split:empty\").length;)x.$el.find(\".fr-split:empty\").remove();x.$el.find(\".fr-split\").removeClass(\"fr-split\"),x.$el.find('[style=\"\"]').removeAttr(\"style\"),x.$el.find('[class=\"\"]').removeAttr(\"class\"),x.html.cleanEmptyTags();for(var t=x.$el.find(\"span\"),n=t.length-1;0<=n;n--){var r=t[n];r.attributes&&0!==r.attributes.length||O(r).replaceWith(r.innerHTML)}x.el.normalize();var o=x.$el.find(\"span[style] + span[style]\");for(e=0;e<o.length;e++){var i=O(o[e]),a=O(o[e]).prev();i.get(0).previousSibling===a.get(0)&&x.node.openTagString(i.get(0))===x.node.openTagString(a.get(0))&&(i.prepend(a.html()),a.remove())}x.$el.find(\"span[style] span[style]\").each(function(){if(0<=O(this).attr(\"style\").indexOf(\"font-size\")){var e=O(this).parents(\"span[style]\");e.attr(\"style\")&&0<=e.attr(\"style\").indexOf(\"background-color\")&&(O(this).attr(\"style\",\"\".concat(O(this).attr(\"style\"),\";\").concat(e.attr(\"style\"))),$(O(this),\"span[style]\",{},!1))}}),x.el.normalize(),x.selection.restore()}()}function b(e){var t,n,r,o,i,a;if(t=\"LI\"===e.tagName?e:O(e).parentsUntil(x.$el,\"li\").get(0)){if((a=x.selection.info(t)).atStart&&a.atEnd)return t;if(a.atStart&&!a.atEnd&&(n=O(t).find(\".fr-marker[data-type=false]\").get(0),r=O(n).parentsUntil(x.$el,\"li\").get(0),o=O(n).parent().get(0),(i=n.nextSibling)&&0<=[\"UL\",\"OL\"].indexOf(i.tagName)||!r.isSameNode(t)||!i&&(\"LI\"===o.tagName||!o.nextSibling||0<=[\"UL\",\"OL\"].indexOf(o.nextSibling.tagName)||x.node.isVoid(o.nextSibling))))return t}}function L(e,t,n){var r,o,i,a=e.parentsUntil(x.$el,\"span[style]\"),s=[];for(r=a.length-1;0<=r;r--)o=a[r],i=t,0===O(o).attr(\"style\").indexOf(\"\".concat(i,\":\"))||0<=O(o).attr(\"style\").indexOf(\";\".concat(i,\":\"))||0<=O(o).attr(\"style\").indexOf(\"; \".concat(i,\":\"))||s.push(a[r]);if((a=a.not(s)).length){for(var l=\"\",c=\"\",d=\"\",f=\"\",p=e.get(0);p=p.parentNode,O(p).addClass(\"fr-split\"),l+=x.node.closeTagString(p),c=x.node.openTagString(O(p).clone().addClass(\"fr-split\").get(0))+c,a.get(0)!==p&&(d+=x.node.closeTagString(p),f=x.node.openTagString(O(p).clone().addClass(\"fr-split\").get(0))+f),a.get(0)!==p;);var h=\"\".concat(l+x.node.openTagString(O(a.get(0)).clone().css(t,n||\"\").get(0))+f+e.css(t,\"\").get(0).outerHTML+d,\"</span>\").concat(c);e.replaceWith('<span id=\"fr-break\"></span>');var u=a.get(0).outerHTML;O(a.get(0)).replaceWith(u.replace(/<span id=\"fr-break\"><\\/span>/g,function(){return h}))}}function d(e,t){void 0===t&&(t={}),t.style&&delete t.style;var n=x.selection.ranges(0),r=n.startContainer;if(r.nodeType===Node.ELEMENT_NODE&&0<r.childNodes.length&&r.childNodes[n.startOffset]&&(r=r.childNodes[n.startOffset]),!n.collapsed&&r.nodeType===Node.TEXT_NODE&&n.startOffset===(r.textContent||\"\").length){for(;!x.node.isBlock(r.parentNode)&&!r.nextSibling;)r=r.parentNode;r.nextSibling&&(r=r.nextSibling)}for(var o=r;o&&o.nodeType===Node.ELEMENT_NODE&&!k(o,w(e,t));)o=o.firstChild;if(o&&o.nodeType===Node.ELEMENT_NODE&&k(o,w(e,t)))return!0;var i=r;for(i&&i.nodeType!==Node.ELEMENT_NODE&&(i=i.parentNode);i&&i.nodeType===Node.ELEMENT_NODE&&i!==x.el&&!k(i,w(e,t));)i=i.parentNode;return!(!i||i.nodeType!==Node.ELEMENT_NODE||i===x.el||!k(i,w(e,t)))}return{is:d,toggle:function f(e,t){if(x.browser.safari&&x.shared.safariSelection){var n=x.shared.safariSelection,r=n.startContainer,o=n.endContainer,i=n.startOffset,a=n.endOffset,s=x.doc.createRange();s.setStart(r,i),s.setEnd(o,a),x.selection.get().removeAllRanges(),x.selection.get().addRange(s),x.shared.safariSelection=null}d(e,t)?c(e,t):l(e,t)},apply:l,remove:c,applyStyle:t,removeStyle:function n(e){t(e,null)}}},V.MODULES.spaces=function(c){function r(e,t){var n=e.previousSibling,r=e.nextSibling,o=e.textContent,i=e.parentNode,a=[V.ENTER_P,V.ENTER_DIV,V.ENTER_BR];if(!c.html.isPreformatted(i)){t&&(o=o.replace(/[\\f\\n\\r\\t\\v ]{2,}/g,\" \"),r&&\"BR\"!==r.tagName&&!c.node.isBlock(r)||!(c.node.isBlock(i)||c.node.isLink(i)&&!i.nextSibling||c.node.isElement(i))||(o=o.replace(/[\\f\\n\\r\\t\\v ]{1,}$/g,\"\")),n&&\"BR\"!==n.tagName&&!c.node.isBlock(n)||!(c.node.isBlock(i)||c.node.isLink(i)&&!i.previousSibling||c.node.isElement(i))||(o=o.replace(/^[\\f\\n\\r\\t\\v ]{1,}/g,\"\")),(c.node.isBlock(r)||c.node.isBlock(n))&&(!n||n&&\"A\"!==n.tagName)&&(o=o.replace(/^[\\f\\n\\r\\t\\v ]{1,}/g,\"\")),\" \"===o&&(n&&c.node.isVoid(n)||r&&c.node.isVoid(r))&&!(n&&r&&c.node.isVoid(n)||r&&n&&c.node.isVoid(r))&&(o=\"\")),(!n&&c.node.isBlock(r)||!r&&c.node.isBlock(n))&&c.node.isBlock(i)&&i!==c.el&&(o=o.replace(/^[\\f\\n\\r\\t\\v ]{1,}/g,\"\")),t||(o=o.replace(new RegExp(V.UNICODE_NBSP,\"g\"),\" \"));for(var s=\"\",l=0;l<o.length;l++)32!=o.charCodeAt(l)||0!==l&&32!=s.charCodeAt(l-1)||!((c.opts.enter===V.ENTER_BR||c.opts.enter===V.ENTER_DIV)&&(n&&\"BR\"===n.tagName||r&&\"BR\"===r.tagName)||n&&r&&n.tagName===r.tagName||!(n&&r&&c.node.isVoid(n)||n&&r&&c.node.isVoid(r))||n&&r&&0<=[\"STRONG\",\"U\",\"EM\"].indexOf(n.tagName)&&\"BR\"===r.tagName)?s+=o[l]:s+=V.UNICODE_NBSP;c.browser.chrome&&1<s.length&&32===s.charCodeAt(s.length-1)&&(r&&r.nextSibling&&r.nextSibling.nextSibling&&\"BR\"===r.nextSibling.nextSibling.tagName||r&&\"BR\"===r.tagName)&&(s=s.substring(0,s.length-1)+V.UNICODE_NBSP),(!r||r&&c.node.isBlock(r)||r&&r.nodeType===Node.ELEMENT_NODE&&c.win.getComputedStyle(r)&&\"block\"===c.win.getComputedStyle(r).display)&&(!c.node.isVoid(n)||n&&-1!==[\"P\",\"DIV\",\"BR\"].indexOf(n.tagName)&&-1!==a.indexOf(c.opts.enter))&&(s=s.replace(/ $/,V.UNICODE_NBSP)),!n||c.node.isVoid(n)||c.node.isBlock(n)||1!==(s=s.replace(/^\\u00A0([^ $])/,\" $1\")).length||160!==s.charCodeAt(0)||!r||c.node.isVoid(r)||c.node.isBlock(r)||c.node.hasClass(n,\"fr-marker\")&&c.node.hasClass(r,\"fr-marker\")||(s=\" \"),t||(s=s.replace(/([^ \\u00A0])\\u00A0([^ \\u00A0])/g,\"$1 $2\")),e.textContent!==s&&(e.textContent=s)}}function l(e,t){if(void 0!==e&&e||(e=c.el),void 0===t&&(t=!1),!e.getAttribute||\"false\"!==e.getAttribute(\"contenteditable\"))if(e.nodeType===Node.TEXT_NODE)r(e,t);else if(e.nodeType===Node.ELEMENT_NODE)for(var n=c.doc.createTreeWalker(e,NodeFilter.SHOW_TEXT,c.node.filter(function(e){for(var t=e.parentNode;t&&t!==c.el;){if(\"STYLE\"===t.tagName||\"IFRAME\"===t.tagName)return!1;if(\"PRE\"===t.tagName)return!1;t=t.parentNode}return null!==e.textContent.match(/([ \\u00A0\\f\\n\\r\\t\\v]{2,})|(^[ \\u00A0\\f\\n\\r\\t\\v]{1,})|([ \\u00A0\\f\\n\\r\\t\\v]{1,}$)/g)&&!c.node.hasClass(e.parentNode,\"fr-marker\")}),!1);n.nextNode();)r(n.currentNode,t)}return{normalize:l,normalizeAroundCursor:function d(){for(var e=[],t=c.el.querySelectorAll(\".fr-marker\"),n=0;n<t.length;n++){for(var r=null,o=c.node.blockParent(t[n]),i=(r=o||t[n]).nextSibling,a=r.previousSibling;i&&\"BR\"===i.tagName;)i=i.nextSibling;for(;a&&\"BR\"===a.tagName;)a=a.previousSibling;r&&e.indexOf(r)<0&&e.push(r),a&&e.indexOf(a)<0&&e.push(a),i&&e.indexOf(i)<0&&e.push(i)}for(var s=0;s<e.length;s++)l(e[s])}}},V.INVISIBLE_SPACE=\"​\",V.HAIR_SPACE=\" \",V.START_MARKER='<span class=\"fr-marker\" data-id=\"0\" data-type=\"true\" style=\"display: none; line-height: 0;\">'.concat(V.INVISIBLE_SPACE,\"</span>\"),V.END_MARKER='<span class=\"fr-marker\" data-id=\"0\" data-type=\"false\" style=\"display: none; line-height: 0;\">'.concat(V.INVISIBLE_SPACE,\"</span>\"),V.MARKERS=V.START_MARKER+V.END_MARKER,V.MODULES.markers=function(d){var f=d.$;function l(){if(!d.$wp)return null;try{var e=d.selection.ranges(0),t=e.commonAncestorContainer;if(t!==d.el&&!d.$el.contains(t))return null;var n=e.cloneRange(),r=e.cloneRange();n.collapse(!0);var o=f(d.doc.createElement(\"SPAN\")).addClass(\"fr-marker\").attr(\"style\",\"display: none; line-height: 0;\").html(V.INVISIBLE_SPACE).get(0);if(n.insertNode(o),o=d.$el.find(\"span.fr-marker\").get(0)){for(var i=o.nextSibling;i&&i.nodeType===Node.TEXT_NODE&&0===i.textContent.length;)f(i).remove(),i=d.$el.find(\"span.fr-marker\").get(0).nextSibling;return d.selection.clear(),d.selection.get().addRange(r),o}return null}catch(a){}}function c(){d.$el.find(\".fr-marker\").remove()}return{place:function p(e,t,n){var r,o,i;try{var a=e.cloneRange();if(a.collapse(t),a.insertNode(function l(e,t){var n=f(d.doc.createElement(\"SPAN\"));return n.addClass(\"fr-marker\").attr(\"data-id\",t).attr(\"data-type\",e).attr(\"style\",\"display: \".concat(d.browser.safari?\"none\":\"inline-block\",\"; line-height: 0;\")).html(V.INVISIBLE_SPACE),n.get(0)}(t,n)),!0===t)for(i=(r=d.$el.find('span.fr-marker[data-type=\"true\"][data-id=\"'.concat(n,'\"]')).get(0)).nextSibling;i&&i.nodeType===Node.TEXT_NODE&&0===i.textContent.length;)f(i).remove(),i=r.nextSibling;if(!0===t&&!e.collapsed){for(;!d.node.isElement(r.parentNode)&&!i;)-1</\\bfa\\b/g.test(r.parentNode.className)&&\"I\"===r.parentNode.tagName?f(r.parentNode).before(r):f(r.parentNode).after(r),i=r.nextSibling;if(i&&i.nodeType===Node.ELEMENT_NODE&&d.node.isBlock(i)&&\"HR\"!==i.tagName){for(o=[i];i=o[0],(o=d.node.contents(i))[0]&&d.node.isBlock(o[0]););f(i).prepend(f(r))}}if(!1===t&&!e.collapsed){if((i=(r=d.$el.find('span.fr-marker[data-type=\"false\"][data-id=\"'.concat(n,'\"]')).get(0)).previousSibling)&&i.nodeType===Node.ELEMENT_NODE&&d.node.isBlock(i)&&\"HR\"!==i.tagName){for(o=[i];i=o[o.length-1],(o=d.node.contents(i))[o.length-1]&&d.node.isBlock(o[o.length-1]););f(i).append(f(r))}(r.parentNode&&0<=[\"TD\",\"TH\"].indexOf(r.parentNode.tagName)||!r.previousSibling&&d.node.isBlock(r.parentElement))&&(r.parentNode.previousSibling&&!r.previousSibling?f(r.parentNode.previousSibling).append(r):0<=[\"TD\",\"TH\"].indexOf(r.parentNode.tagName)&&r.parentNode.firstChild===r&&(r.parentNode.previousSibling?f(r.parentNode.previousSibling).append(r):r.parentNode.parentNode&&r.parentNode.parentNode.previousSibling&&f(r.parentNode.parentNode.previousSibling).append(r)))}var s=d.$el.find('span.fr-marker[data-type=\"'.concat(t,'\"][data-id=\"').concat(n,'\"]')).get(0);return s&&(s.style.display=\"none\"),s}catch(c){return null}},insert:l,split:function a(){d.selection.isCollapsed()||d.selection.remove();var e=d.$el.find(\".fr-marker\").get(0);if(e||(e=l()),!e)return null;var t=d.node.deepestParent(e);if(t||(t=d.node.blockParent(e))&&\"LI\"!==t.tagName&&(t=null),t)if(d.node.isBlock(t)&&d.node.isEmpty(t))\"LI\"!==t.tagName||t.parentNode.firstElementChild!==t||d.node.isEmpty(t.parentNode)?f(t).replaceWith('<span class=\"fr-marker\"></span>'):f(t).append('<span class=\"fr-marker\"></span>');else if(d.cursor.isAtStart(e,t))f(t).before('<span class=\"fr-marker\"></span>'),f(e).remove();else if(d.cursor.isAtEnd(e,t))f(t).after('<span class=\"fr-marker\"></span>'),f(e).remove();else{for(var n=e,r=\"\",o=\"\";n=n.parentNode,r+=d.node.closeTagString(n),o=d.node.openTagString(n)+o,n!==t;);f(e).replaceWith('<span id=\"fr-break\"></span>');var i=d.node.openTagString(t)+f(t).html()+d.node.closeTagString(t);i=i.replace(/<span id=\"fr-break\"><\\/span>/g,\"\".concat(r,'<span class=\"fr-marker\"></span>').concat(o)),f(t).replaceWith(i)}return d.$el.find(\".fr-marker\").get(0)},insertAtPoint:function h(e){var t,n=e.clientX,r=e.clientY;c();var o=null;if(\"undefined\"!=typeof d.doc.caretPositionFromPoint?(t=d.doc.caretPositionFromPoint(n,r),(o=d.doc.createRange()).setStart(t.offsetNode,t.offset),o.setEnd(t.offsetNode,t.offset)):\"undefined\"!=typeof d.doc.caretRangeFromPoint&&(t=d.doc.caretRangeFromPoint(n,r),(o=d.doc.createRange()).setStart(t.startContainer,t.startOffset),o.setEnd(t.startContainer,t.startOffset)),null!==o&&\"undefined\"!=typeof d.win.getSelection){var i=d.win.getSelection();i.removeAllRanges(),i.addRange(o)}else if(\"undefined\"!=typeof d.doc.body.createTextRange)try{(o=d.doc.body.createTextRange()).moveToPoint(n,r);var a=o.duplicate();a.moveToPoint(n,r),o.setEndPoint(\"EndToEnd\",a),o.select()}catch(s){return!1}l()},remove:c}},V.MODULES.selection=function(E){var y=E.$;function s(){var e=\"\";return E.win.getSelection?e=E.win.getSelection():E.doc.getSelection?e=E.doc.getSelection():E.doc.selection&&(e=E.doc.selection.createRange().text),e.toString()}function L(){return E.win.getSelection?E.win.getSelection():E.doc.getSelection?E.doc.getSelection():E.doc.selection.createRange()}function f(e){var t=L(),n=[];if(t&&t.getRangeAt&&t.rangeCount){n=[];for(var r=0;r<t.rangeCount;r++)n.push(t.getRangeAt(r))}else n=E.doc.createRange?[E.doc.createRange()]:[];return void 0!==e?n[e]:n}function S(){var e=L();try{e.removeAllRanges?e.removeAllRanges():e.empty?e.empty():e.clear&&e.clear()}catch(t){}}function p(e,t){var n=e;return n.nodeType===Node.ELEMENT_NODE&&0<n.childNodes.length&&n.childNodes[t]&&(n=n.childNodes[t]),n.nodeType===Node.TEXT_NODE&&(n=n.parentNode),n}function N(){if(E.$wp){E.markers.remove();var e,t,n=f(),r=[];for(t=0;t<n.length;t++)if(n[t].startContainer!==E.doc||E.browser.msie){var o=(e=n[t]).collapsed,i=E.markers.place(e,!0,t),a=E.markers.place(e,!1,t);if(void 0!==i&&i||!o||(y(\".fr-marker\").remove(),E.selection.setAtEnd(E.el)),E.el.normalize(),E.browser.safari&&!o)try{(e=E.doc.createRange()).setStartAfter(i),e.setEndBefore(a),r.push(e)}catch(s){}}if(E.browser.safari&&r.length)for(E.selection.clear(),t=0;t<r.length;t++)E.selection.get().addRange(r[t])}}function T(){var e,t=E.el.querySelectorAll('.fr-marker[data-type=\"true\"]');if(!E.$wp)return E.markers.remove(),!1;if(0===t.length)return!1;if(E.browser.msie||E.browser.edge)for(e=0;e<t.length;e++)t[e].style.display=\"inline-block\";E.core.hasFocus()||E.browser.msie||E.browser.webkit||E.$el.focus(),S();var n=L();for(e=0;e<t.length;e++){var r=y(t[e]).data(\"id\"),o=t[e],i=E.doc.createRange(),a=E.$el.find('.fr-marker[data-type=\"false\"][data-id=\"'.concat(r,'\"]'));(E.browser.msie||E.browser.edge)&&a.css(\"display\",\"inline-block\");var s=null;if(0<a.length){a=a[0];try{for(var l=!1,c=o.nextSibling,d=null;c&&c.nodeType===Node.TEXT_NODE&&0===c.textContent.length;)c=(d=c).nextSibling,y(d).remove();for(var f=a.nextSibling;f&&f.nodeType===Node.TEXT_NODE&&0===f.textContent.length;)f=(d=f).nextSibling,y(d).remove();if(o.nextSibling===a||a.nextSibling===o){for(var p=o.nextSibling===a?o:a,h=p===o?a:o,u=p.previousSibling;u&&u.nodeType===Node.TEXT_NODE&&0===u.length;)u=(d=u).previousSibling,y(d).remove();if(u&&u.nodeType===Node.TEXT_NODE)for(;u&&u.previousSibling&&u.previousSibling.nodeType===Node.TEXT_NODE;)u.previousSibling.textContent+=u.textContent,u=u.previousSibling,y(u.nextSibling).remove();for(var g=h.nextSibling;g&&g.nodeType===Node.TEXT_NODE&&0===g.length;)g=(d=g).nextSibling,y(d).remove();if(g&&g.nodeType===Node.TEXT_NODE)for(;g&&g.nextSibling&&g.nextSibling.nodeType===Node.TEXT_NODE;)g.nextSibling.textContent=g.textContent+g.nextSibling.textContent,g=g.nextSibling,y(g.previousSibling).remove();if(u&&(E.node.isVoid(u)||E.node.isBlock(u))&&(u=null),g&&(E.node.isVoid(g)||E.node.isBlock(g))&&(g=null),u&&g&&u.nodeType===Node.TEXT_NODE&&g.nodeType===Node.TEXT_NODE){y(o).remove(),y(a).remove();var C=u.textContent.length;u.textContent+=g.textContent,y(g).remove(),E.spaces.normalize(u),i.setStart(u,C),i.setEnd(u,C),l=!0}else!u&&g&&g.nodeType===Node.TEXT_NODE?(y(o).remove(),y(a).remove(),E.opts.htmlUntouched||E.spaces.normalize(g),s=y(E.doc.createTextNode(\"\\u200b\")).get(0),y(g).before(s),i.setStart(g,0),i.setEnd(g,0),l=!0):!g&&u&&u.nodeType===Node.TEXT_NODE&&(y(o).remove(),y(a).remove(),E.opts.htmlUntouched||E.spaces.normalize(u),s=y(E.doc.createTextNode(\"\\u200b\")).get(0),y(u).after(s),i.setStart(u,u.textContent.length),i.setEnd(u,u.textContent.length),l=!0)}if(!l){var m=void 0,v=void 0;v=(E.browser.chrome||E.browser.edge)&&o.nextSibling===a?(m=M(a,i,!0)||i.setStartAfter(a),M(o,i,!1)||i.setEndBefore(o)):(o.previousSibling===a&&(a=(o=a).nextSibling),a.nextSibling&&\"BR\"===a.nextSibling.tagName||!a.nextSibling&&E.node.isBlock(o.previousSibling)||o.previousSibling&&\"BR\"===o.previousSibling.tagName||(o.style.display=\"inline\",a.style.display=\"inline\",s=y(E.doc.createTextNode(\"\\u200b\")).get(0)),m=M(o,i,!0)||y(o).before(s)&&i.setStartBefore(o),M(a,i,!1)||y(a).after(s)&&i.setEndAfter(a)),\"function\"==typeof m&&m(),\"function\"==typeof v&&v()}}catch(b){}}s&&y(s).remove();try{n.addRange(i)}catch(b){}}E.markers.remove()}function M(e,t,n){var r,o=e.previousSibling,i=e.nextSibling;return o&&i&&o.nodeType===Node.TEXT_NODE&&i.nodeType===Node.TEXT_NODE?(r=o.textContent.length,n?(i.textContent=o.textContent+i.textContent,y(o).remove(),y(e).remove(),E.opts.htmlUntouched||E.spaces.normalize(i),function(){t.setStart(i,r)}):(o.textContent+=i.textContent,y(i).remove(),y(e).remove(),E.opts.htmlUntouched||E.spaces.normalize(o),function(){t.setEnd(o,r)})):o&&!i&&o.nodeType===Node.TEXT_NODE?(r=o.textContent.length,n?(E.opts.htmlUntouched||E.spaces.normalize(o),function(){t.setStart(o,r)}):(E.opts.htmlUntouched||E.spaces.normalize(o),function(){t.setEnd(o,r)})):!(!i||o||i.nodeType!==Node.TEXT_NODE)&&(n?(E.opts.htmlUntouched||E.spaces.normalize(i),function(){t.setStart(i,0)}):(E.opts.htmlUntouched||E.spaces.normalize(i),function(){t.setEnd(i,0)}))}function A(){for(var e=f(),t=0;t<e.length;t++)if(!e[t].collapsed)return!1;return!0}function o(e){var t,n,r=!1,o=!1;if(E.win.getSelection){var i=E.win.getSelection();i.rangeCount&&((n=(t=i.getRangeAt(0)).cloneRange()).selectNodeContents(e),n.setEnd(t.startContainer,t.startOffset),r=a(n),n.selectNodeContents(e),n.setStart(t.endContainer,t.endOffset),o=a(n))}else E.doc.selection&&\"Control\"!==E.doc.selection.type&&((n=(t=E.doc.selection.createRange()).duplicate()).moveToElementText(e),n.setEndPoint(\"EndToStart\",t),r=a(n),n.moveToElementText(e),n.setEndPoint(\"StartToEnd\",t),o=a(n));return{atStart:r,atEnd:o}}function a(e){return\"\"===e.toString().replace(/[\\u200B-\\u200D\\uFEFF]/g,\"\")}function x(e,t){void 0===t&&(t=!0);var n=y(e).html();n&&n.replace(/\\u200b/g,\"\").length!==n.length&&y(e).html(n.replace(/\\u200b/g,\"\"));for(var r=E.node.contents(e),o=0;o<r.length;o++)r[o].nodeType!==Node.ELEMENT_NODE?y(r[o]).remove():(x(r[o],0===o),0===o&&(t=!1));if(e.nodeType===Node.TEXT_NODE){var i=y(document.createElement(\"span\")).attr(\"data-first\",\"true\").attr(\"data-text\",\"true\");y(e)[0].replaceWith(i[0])}else t&&y(e).attr(\"data-first\",!0)}function O(){return 0===y(this).find(\"fr-inner\").length}function h(){try{if(!E.$wp)return!1;for(var e=f(0).commonAncestorContainer;e&&!E.node.isElement(e);)e=e.parentNode;return!!E.node.isElement(e)}catch(t){return!1}}function r(e,t){if(!e||0<e.getElementsByClassName(\"fr-marker\").length)return!1;for(var n=e.firstChild;n&&(E.node.isBlock(n)||t&&!E.node.isVoid(n)&&n.nodeType===Node.ELEMENT_NODE);)n=(e=n).firstChild;e.innerHTML=V.MARKERS+e.innerHTML}function i(e,t){if(!e||0<e.getElementsByClassName(\"fr-marker\").length)return!1;for(var n=e.lastChild;n&&(E.node.isBlock(n)||t&&!E.node.isVoid(n)&&n.nodeType===Node.ELEMENT_NODE);)n=(e=n).lastChild;var r=E.doc.createElement(\"SPAN\");for(r.setAttribute(\"id\",\"fr-sel-markers\"),r.innerHTML=V.MARKERS;e.parentNode&&E.opts.htmlAllowedEmptyTags&&0<=E.opts.htmlAllowedEmptyTags.indexOf(e.tagName.toLowerCase());)e=e.parentNode;e.appendChild(r);var o=e.querySelector(\"#fr-sel-markers\");o.outerHTML=o.innerHTML}return{text:s,get:L,ranges:f,clear:S,element:function l(){var e=L();try{if(e.rangeCount){var t,n=f(0),r=n.startContainer;if(E.node.isElement(r)&&0===n.startOffset&&r.childNodes.length)for(;r.childNodes.length&&r.childNodes[0].nodeType===Node.ELEMENT_NODE;)r=r.childNodes[0];if(r.nodeType===Node.TEXT_NODE&&n.startOffset===(r.textContent||\"\").length&&r.nextSibling&&(r=r.nextSibling),r.nodeType===Node.ELEMENT_NODE){var o=!1;if(E.node.isElement(r)&&\"\"==r.textContent&&\"IMG\"==r.childNodes[0].tagName&&r.childNodes.length)for(;r.childNodes.length&&r.childNodes[0].nodeType===Node.ELEMENT_NODE;)r=r.childNodes[0];if(0<r.childNodes.length&&r.childNodes[n.startOffset]){for(t=r.childNodes[n.startOffset];t&&t.nodeType===Node.TEXT_NODE&&0===t.textContent.length;)t=t.nextSibling;if(t&&t.textContent.replace(/\\u200B/g,\"\")===s().replace(/\\u200B/g,\"\")&&(r=t,o=!0),!o&&1<r.childNodes.length&&0<n.startOffset&&r.childNodes[n.startOffset-1]){for(t=r.childNodes[n.startOffset-1];t&&t.nodeType===Node.TEXT_NODE&&0===t.textContent.length;)t=t.nextSibling;t&&t.textContent.replace(/\\u200B/g,\"\")===s().replace(/\\u200B/g,\"\")&&(r=t,o=!0)}}else!n.collapsed&&r.nextSibling&&r.nextSibling.nodeType===Node.ELEMENT_NODE&&(t=r.nextSibling)&&t.textContent.replace(/\\u200B/g,\"\")===s().replace(/\\u200B/g,\"\")&&(r=t,o=!0);!o&&0<r.childNodes.length&&y(r.childNodes[0]).text().replace(/\\u200B/g,\"\")===s().replace(/\\u200B/g,\"\")&&[\"BR\",\"IMG\",\"HR\"].indexOf(r.childNodes[0].tagName)<0&&(r=r.childNodes[0])}for(;r.nodeType!==Node.ELEMENT_NODE&&r.parentNode;)r=r.parentNode;for(var i=r;i&&\"HTML\"!==i.tagName;){if(i===E.el)return r;i=y(i).parent()[0]}}}catch(a){}return E.el},endElement:function c(){var e=L();try{if(e.rangeCount){var t,n=f(0),r=n.endContainer;if(r.nodeType===Node.ELEMENT_NODE){var o=!1;0<r.childNodes.length&&r.childNodes[n.endOffset]&&y(r.childNodes[n.endOffset]).text()===s()?(r=r.childNodes[n.endOffset],o=!0):!n.collapsed&&r.previousSibling&&r.previousSibling.nodeType===Node.ELEMENT_NODE?(t=r.previousSibling)&&t.textContent.replace(/\\u200B/g,\"\")===s().replace(/\\u200B/g,\"\")&&(r=t,o=!0):!n.collapsed&&0<r.childNodes.length&&r.childNodes[n.endOffset]&&(t=r.childNodes[n.endOffset].previousSibling).nodeType===Node.ELEMENT_NODE&&t&&t.textContent.replace(/\\u200B/g,\"\")===s().replace(/\\u200B/g,\"\")&&(r=t,o=!0),!o&&0<r.childNodes.length&&y(r.childNodes[r.childNodes.length-1]).text()===s()&&[\"BR\",\"IMG\",\"HR\"].indexOf(r.childNodes[r.childNodes.length-1].tagName)<0&&(r=r.childNodes[r.childNodes.length-1])}for(r.nodeType===Node.TEXT_NODE&&0===n.endOffset&&r.previousSibling&&r.previousSibling.nodeType===Node.ELEMENT_NODE&&(r=r.previousSibling);r.nodeType!==Node.ELEMENT_NODE&&r.parentNode;)r=r.parentNode;for(var i=r;i&&\"HTML\"!==i.tagName;){if(i===E.el)return r;i=y(i).parent()[0]}}}catch(a){}return E.el},save:N,restore:T,isCollapsed:A,isFull:function d(){if(A())return!1;E.selection.save();var e,t=E.el.querySelectorAll(\"td, th, img, br, iframe\");for(e=0;e<t.length;e++)(t[e].nextSibling||\"IMG\"===t[e].tagName||\"IFRAME\"===t[e].tagName)&&(t[e].innerHTML='<span class=\"fr-mk\" style=\"display: none;\"> </span>'.concat(t[e].innerHTML));var n=!1,r=o(E.el);for(r.atStart&&r.atEnd&&(n=!0),t=E.el.querySelectorAll(\".fr-mk\"),e=0;e<t.length;e++)t[e].parentNode.removeChild(t[e]);return E.selection.restore(),n},inEditor:h,remove:function w(){if(A())return!0;var e;function t(e){for(var t=e.previousSibling;t&&t.nodeType===Node.TEXT_NODE&&0===t.textContent.length;){var n=t;t=t.previousSibling,y(n).remove()}return t}function n(e){for(var t=e.nextSibling;t&&t.nodeType===Node.TEXT_NODE&&0===t.textContent.length;){var n=t;t=t.nextSibling,y(n).remove()}return t}N();var r=E.$el.find('.fr-marker[data-type=\"true\"]');for(e=0;e<r.length;e++)for(var o=r[e];!(t(o)||E.node.isBlock(o.parentNode)||E.$el.is(o.parentNode)||E.node.hasClass(o.parentNode,\"fr-inner\"));)y(o.parentNode).before(o);var i=E.$el.find('.fr-marker[data-type=\"false\"]');for(e=0;e<i.length;e++){for(var a=i[e];!(n(a)||E.node.isBlock(a.parentNode)||E.$el.is(a.parentNode)||E.node.hasClass(a.parentNode,\"fr-inner\"));)y(a.parentNode).after(a);a.parentNode&&E.node.isBlock(a.parentNode)&&E.node.isEmpty(a.parentNode)&&!E.$el.is(a.parentNode)&&!E.node.hasClass(a.parentNode,\"fr-inner\")&&E.opts.keepFormatOnDelete&&y(a.parentNode).after(a)}if(function b(){for(var e=E.$el.find(\".fr-marker\"),t=0;t<e.length;t++)if(y(e[t]).parentsUntil('.fr-element, [contenteditable=\"true\"]','[contenteditable=\"false\"]').length)return!1;return!0}()){!function L(e,t){var n=E.node.contents(e.get(0));0<=[\"TD\",\"TH\"].indexOf(e.get(0).tagName)&&1===e.find(\".fr-marker\").length&&(E.node.hasClass(n[0],\"fr-marker\")||\"BR\"==n[0].tagName&&E.node.hasClass(n[0].nextElementSibling,\"fr-marker\"))&&e.attr(\"data-del-cell\",!0);for(var r=0;r<n.length;r++){var o=n[r];E.node.hasClass(o,\"fr-marker\")?t=(t+1)%2:t?0<y(o).find(\".fr-marker\").length?t=L(y(o),t):[\"TD\",\"TH\"].indexOf(o.tagName)<0&&!E.node.hasClass(o,\"fr-inner\")?!E.opts.keepFormatOnDelete||0<E.$el.find(\"[data-first]\").length||E.node.isVoid(o)?y(o).remove():x(o):E.node.hasClass(o,\"fr-inner\")?0===y(o).find(\".fr-inner\").length?y(o).html(\"<br>\"):y(o).find(\".fr-inner\").filter(O).html(\"<br>\"):(y(o).empty(),y(o).attr(\"data-del-cell\",!0)):0<y(o).find(\".fr-marker\").length&&(t=L(y(o),t))}return t}(E.$el,0);var s=E.$el.find('[data-first=\"true\"]');if(s.length)E.$el.find(\".fr-marker\").remove(),s.append(V.INVISIBLE_SPACE+V.MARKERS).removeAttr(\"data-first\"),s.attr(\"data-text\")&&s.replaceWith(s.html());else for(E.$el.find(\"table\").filter(function(){return 0<y(this).find(\"[data-del-cell]\").length&&y(this).find(\"[data-del-cell]\").length===y(this).find(\"td, th\").length}).remove(),E.$el.find(\"[data-del-cell]\").removeAttr(\"data-del-cell\"),r=E.$el.find('.fr-marker[data-type=\"true\"]'),e=0;e<r.length;e++){var l=r[e],c=l.nextSibling,d=E.$el.find('.fr-marker[data-type=\"false\"][data-id=\"'.concat(y(l).data(\"id\"),'\"]')).get(0);if(d){if(l&&(!c||c!==d)){var f=E.node.blockParent(l),p=E.node.blockParent(d),h=!1,u=!1;if(f&&0<=[\"UL\",\"OL\"].indexOf(f.tagName)&&(h=!(f=null)),p&&0<=[\"UL\",\"OL\"].indexOf(p.tagName)&&(u=!(p=null)),y(l).after(d),f!==p)if(null!==f||h)if(null!==p||u||0!==y(f).parentsUntil(E.$el,\"table\").length)f&&p&&0===y(f).parentsUntil(E.$el,\"table\").length&&0===y(p).parentsUntil(E.$el,\"table\").length&&!y(f).contains(p)&&!y(p).contains(f)&&(y(f).append(y(p).html()),y(p).remove());else{for(c=f;!c.nextSibling&&c.parentNode!==E.el;)c=c.parentNode;for(c=c.nextSibling;c&&\"BR\"!==c.tagName;){var g=c.nextSibling;y(f).append(c),c=g}c&&\"BR\"===c.tagName&&y(c).remove()}else{var C=E.node.deepestParent(l);C?(y(C).after(y(p).html()),y(p).remove()):0===y(p).parentsUntil(E.$el,\"table\").length&&(y(l).next().after(y(p).html()),y(p).remove())}}}else d=y(l).clone().attr(\"data-type\",!1),y(l).after(d)}}E.$el.find(\"li:empty\").remove(),E.opts.keepFormatOnDelete||E.html.fillEmptyBlocks(),E.html.cleanEmptyTags(!0),E.opts.htmlUntouched||(E.clean.lists(),E.$el.find(\"li:empty\").append(\"<br>\"),E.spaces.normalize());var m=E.$el.find(\".fr-marker\").last().get(0),v=E.$el.find(\".fr-marker\").first().get(0);void 0!==m&&void 0!==v&&!m.nextSibling&&v.previousSibling&&\"BR\"===v.previousSibling.tagName&&E.node.isElement(m.parentNode)&&E.node.isElement(v.parentNode)&&E.$el.append(\"<br>\"),T()},blocks:function u(e){var t,n,r=[],o=L();if(h()&&o.rangeCount){var i=f();for(t=0;t<i.length;t++){var a=i[t],s=p(a.startContainer,a.startOffset),l=p(a.endContainer,a.endOffset);(n=E.node.blockParent(s))&&r.indexOf(n)<0&&r.push(n),(E.node.isBlock(s)||E.node.hasClass(s,\"fr-inner\"))&&r.indexOf(s)<0&&r.push(s);for(var c=[],d=s;d!==l&&d!==E.el;)c.indexOf(d)<0&&d.children&&d.children.length?(c.push(d),d=d.children[0]):d.nextSibling?d=d.nextSibling:d.parentNode&&(d=d.parentNode,c.push(d)),E.node.isBlock(d)&&c.indexOf(d)<0&&r.indexOf(d)<0&&(d!==l||0<a.endOffset)&&r.push(d);E.node.isBlock(l)&&r.indexOf(l)<0&&0<a.endOffset&&r.push(l),(n=E.node.blockParent(l))&&r.indexOf(n)<0&&r.push(n)}}for(t=r.length-1;0<t;t--)if(y(r[t-1]).contains(r[t])){if(e&&y(r[t]).find(\"ul, ol\").length)continue;r.splice(t-1,1)}else if(y(r[t]).contains(r[t-1])){if(e&&y(r[t]).find(\"ul, ol\").length)continue;r.splice(t,1)}return r},info:o,setAtEnd:i,setAtStart:r,setBefore:function g(e,t){void 0===t&&(t=!0);for(var n=e.previousSibling;n&&n.nodeType===Node.TEXT_NODE&&0===n.textContent.length;)n=n.previousSibling;return n?(E.node.isBlock(n)?i(n):\"BR\"===n.tagName?y(n).before(V.MARKERS):y(n).after(V.MARKERS),!0):!!t&&(E.node.isBlock(e)?r(e):y(e).before(V.MARKERS),!0)},setAfter:function C(e,t){void 0===t&&(t=!0);for(var n=e.nextSibling;n&&n.nodeType===Node.TEXT_NODE&&0===n.textContent.length;)n=n.nextSibling;return n?(E.node.isBlock(n)?r(n):y(n).before(V.MARKERS),!0):!!t&&(E.node.isBlock(e)?i(e):y(e).after(V.MARKERS),!0)},rangeElement:p}},Object.assign(V.DEFAULTS,{language:null}),V.LANGUAGE={},V.MODULES.language=function(e){var t;return{_init:function n(){V.LANGUAGE&&(t=V.LANGUAGE[e.opts.language]),t&&t.direction&&(e.opts.direction=t.direction)},translate:function r(e){return t&&t.translation[e]&&t.translation[e].length?t.translation[e]:e}}},Object.assign(V.DEFAULTS,{placeholderText:\"Type something\"}),V.MODULES.placeholder=function(f){var p=f.$;function e(){f.$placeholder||function d(){f.$placeholder=p(f.doc.createElement(\"SPAN\")).addClass(\"fr-placeholder\"),f.$wp.append(f.$placeholder)}();var e=f.opts.iframe?f.$iframe.prev().outerHeight(!0):f.$el.prev().outerHeight(!0),t=0,n=0,r=0,o=0,i=0,a=0,s=f.node.contents(f.el),l=p(f.selection.element()).css(\"text-align\");if(s.length&&s[0].nodeType===Node.ELEMENT_NODE){var c=p(s[0]);(0<f.$wp.prev().length||0<f.$el.prev().length)&&f.ready&&(t=f.helpers.getPX(c.css(\"margin-top\")),o=f.helpers.getPX(c.css(\"padding-top\")),n=f.helpers.getPX(c.css(\"margin-left\")),r=f.helpers.getPX(c.css(\"margin-right\")),i=f.helpers.getPX(c.css(\"padding-left\")),a=f.helpers.getPX(c.css(\"padding-right\"))),f.$placeholder.css(\"font-size\",c.css(\"font-size\")),f.$placeholder.css(\"line-height\",c.css(\"line-height\"))}else f.$placeholder.css(\"font-size\",f.$el.css(\"font-size\")),f.$placeholder.css(\"line-height\",f.$el.css(\"line-height\"));f.$wp.addClass(\"show-placeholder\"),f.$placeholder.css({marginTop:Math.max(f.helpers.getPX(f.$el.css(\"margin-top\")),t)+(e||0),paddingTop:Math.max(f.helpers.getPX(f.$el.css(\"padding-top\")),o),paddingLeft:Math.max(f.helpers.getPX(f.$el.css(\"padding-left\")),i),marginLeft:Math.max(f.helpers.getPX(f.$el.css(\"margin-left\")),n),paddingRight:Math.max(f.helpers.getPX(f.$el.css(\"padding-right\")),a),marginRight:Math.max(f.helpers.getPX(f.$el.css(\"margin-right\")),r),textAlign:l}).text(f.language.translate(f.opts.placeholderText||f.$oel.attr(\"placeholder\")||\"\")),f.$placeholder.html(f.$placeholder.text().replace(/\\n/g,\"<br>\"))}function t(){f.$wp.removeClass(\"show-placeholder\")}function n(){if(!f.$wp)return!1;f.core.isEmpty()?e():t()}return{_init:function r(){if(!f.$wp)return!1;f.events.on(\"init input keydown keyup contentChanged initialized\",n)},show:e,hide:t,refresh:n,isVisible:function o(){return!f.$wp||f.node.hasClass(f.$wp.get(0),\"show-placeholder\")}}},V.UNICODE_NBSP=String.fromCharCode(160),V.VOID_ELEMENTS=[\"area\",\"base\",\"br\",\"col\",\"embed\",\"hr\",\"img\",\"input\",\"keygen\",\"link\",\"menuitem\",\"meta\",\"param\",\"source\",\"track\",\"wbr\"],V.BLOCK_TAGS=[\"address\",\"article\",\"aside\",\"audio\",\"blockquote\",\"canvas\",\"details\",\"dd\",\"div\",\"dl\",\"dt\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"hr\",\"li\",\"main\",\"nav\",\"noscript\",\"ol\",\"output\",\"p\",\"pre\",\"section\",\"table\",\"tbody\",\"td\",\"tfoot\",\"th\",\"thead\",\"tr\",\"ul\",\"video\"],Object.assign(V.DEFAULTS,{htmlAllowedEmptyTags:[\"textarea\",\"a\",\"iframe\",\"object\",\"video\",\"style\",\"script\",\".fa\",\".fr-emoticon\",\".fr-inner\",\"path\",\"line\",\"hr\"],htmlDoNotWrapTags:[\"script\",\"style\"],htmlSimpleAmpersand:!1,htmlIgnoreCSSProperties:[],htmlExecuteScripts:!0}),V.MODULES.html=function(w){var u=w.$;function d(){return w.opts.enter===V.ENTER_P?\"p\":w.opts.enter===V.ENTER_DIV?\"div\":w.opts.enter===V.ENTER_BR?null:void 0}function s(e,t){return!(!e||e===w.el)&&(t?-1!=[\"PRE\",\"SCRIPT\",\"STYLE\"].indexOf(e.tagName)||s(e.parentNode,t):-1!==[\"PRE\",\"SCRIPT\",\"STYLE\"].indexOf(e.tagName))}function i(e){var t,n=[],r=[];if(e){var o=w.el.querySelectorAll(\".fr-marker\");for(t=0;t<o.length;t++){var i=w.node.blockParent(o[t])||o[t];if(i){var a=i.nextSibling,s=i.previousSibling;i&&r.indexOf(i)<0&&w.node.isBlock(i)&&r.push(i),s&&w.node.isBlock(s)&&r.indexOf(s)<0&&r.push(s),a&&w.node.isBlock(a)&&r.indexOf(a)<0&&r.push(a)}}}else r=w.el.querySelectorAll(p());var l=p();for(l+=\",\".concat(V.VOID_ELEMENTS.join(\",\")),l+=\", .fr-inner\",l+=\",\".concat(w.opts.htmlAllowedEmptyTags.join(\":not(.fr-marker),\"),\":not(.fr-marker)\"),t=r.length-1;0<=t;t--)if(!(r[t].textContent&&0<r[t].textContent.replace(/\\u200B|\\n/g,\"\").length||0<r[t].querySelectorAll(l).length)){for(var c=w.node.contents(r[t]),d=!1,f=0;f<c.length;f++)if(c[f].nodeType!==Node.COMMENT_NODE&&c[f].textContent&&0<c[f].textContent.replace(/\\u200B|\\n/g,\"\").length){d=!0;break}d||n.push(r[t])}return n}function p(){return V.BLOCK_TAGS.join(\", \")}function e(e){var t,n,r=u.merge([],V.VOID_ELEMENTS);r=u.merge(r,w.opts.htmlAllowedEmptyTags),r=void 0===e?u.merge(r,V.BLOCK_TAGS):u.merge(r,V.NO_DELETE_TAGS),t=w.el.querySelectorAll(\"*:empty:not(\".concat(r.join(\"):not(\"),\"):not(.fr-marker):not(template)\"));do{n=!1;for(var o=0;o<t.length;o++)0!==t[o].attributes.length&&void 0===t[o].getAttribute(\"href\")||(t[o].parentNode.removeChild(t[o]),n=!0);(t=w.el.querySelectorAll(\"*:empty:not(\".concat(r.join(\"):not(\"),\"):not(.fr-marker):not(template)\"))).length||(t=w.el.querySelectorAll(\"a[href]:not([name]):empty\"))}while(t.length&&n)}function a(e,t){var n=d();if(t&&(n=\"div\"),n){for(var r=w.doc.createDocumentFragment(),o=null,i=!1,a=e.firstChild,s=!1;a;){var l=a.nextSibling;if(a.nodeType===Node.ELEMENT_NODE&&(w.node.isBlock(a)||0<=w.opts.htmlDoNotWrapTags.indexOf(a.tagName.toLowerCase())&&!w.node.hasClass(a,\"fr-marker\")))o=null,r.appendChild(a.cloneNode(!0));else if(a.nodeType!==Node.ELEMENT_NODE&&a.nodeType!==Node.TEXT_NODE)o=null,r.appendChild(a.cloneNode(!0));else if(\"BR\"===a.tagName)null===o?(o=w.doc.createElement(n),s=!0,t&&(o.setAttribute(\"class\",\"fr-temp-div\"),o.setAttribute(\"data-empty\",!0)),o.appendChild(a.cloneNode(!0)),r.appendChild(o)):!1===i&&(o.appendChild(w.doc.createElement(\"br\")),t&&(o.setAttribute(\"class\",\"fr-temp-div\"),o.setAttribute(\"data-empty\",!0))),o=null;else{var c=a.textContent;if(a.nodeType!==Node.TEXT_NODE||0<c.replace(/\\n/g,\"\").replace(/(^ *)|( *$)/g,\"\").length||c.replace(/(^ *)|( *$)/g,\"\").length&&c.indexOf(\"\\n\")<0){if(\"SPAN\"===a.tagName&&u(a).hasClass(\"fr-marker\")&&!a.previousSibling&&(a.nextSibling&&\"TABLE\"==a.nextSibling.tagName||a.nextSibling&&a.nextSibling.nextSibling&&\"TABLE\"==a.nextSibling.nextSibling.tagName)){r.appendChild(a),a=l;continue}if(\"SPAN\"===a.tagName&&u(a).hasClass(\"fr-marker\")&&a.previousSibling&&a.previousSibling.nodeType===Node.ELEMENT_NODE&&(a.nextSibling&&\"TABLE\"==a.nextSibling.tagName||a.nextSibling&&a.nextSibling.nextSibling&&\"TABLE\"==a.nextSibling.nextSibling.tagName)){r.appendChild(a),s=!0,a=l;continue}null===o&&(o=w.doc.createElement(n),s=!0,t&&o.setAttribute(\"class\",\"fr-temp-div\"),r.appendChild(o),i=!1),o.appendChild(a.cloneNode(!0)),i||w.node.hasClass(a,\"fr-marker\")||a.nodeType===Node.TEXT_NODE&&0===c.replace(/ /g,\"\").length||(i=!0)}else s=!0}a=l}s&&(e.innerHTML=\"\",e.appendChild(r))}}function l(e,t){for(var n=e.length-1;0<=n;n--)a(e[n],t)}function t(e,t,n,r,o){if(!w.$wp)return!1;void 0===e&&(e=!1),void 0===t&&(t=!1),void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===o&&(o=!1);var i=w.$wp.scrollTop();a(w.el,e),r&&l(w.el.querySelectorAll(\".fr-inner\"),e),t&&l(w.el.querySelectorAll(\"td, th\"),e),n&&l(w.el.querySelectorAll(\"blockquote\"),e),o&&l(w.el.querySelectorAll(\"li\"),e),i!==w.$wp.scrollTop()&&w.$wp.scrollTop(i)}function n(e){if(void 0===e&&(e=w.el),e&&0<=[\"SCRIPT\",\"STYLE\",\"PRE\"].indexOf(e.tagName))return!1;for(var t=w.doc.createTreeWalker(e,NodeFilter.SHOW_TEXT,w.node.filter(function(e){return null!==e.textContent.match(/([ \\n]{2,})|(^[ \\n]{1,})|([ \\n]{1,}$)/g)}),!1);t.nextNode();){var n=t.currentNode;if(!s(n.parentNode,!0)){var r=w.node.isBlock(n.parentNode)||w.node.isElement(n.parentNode),o=n.textContent.replace(/(?!^)( ){2,}(?!$)/g,\" \").replace(/\\n/g,\" \").replace(/^[ ]{2,}/g,\" \").replace(/[ ]{2,}$/g,\" \");if(r){var i=n.previousSibling,a=n.nextSibling;i&&a&&\" \"===o?o=w.node.isBlock(i)&&w.node.isBlock(a)?\"\":\" \":(i||(o=o.replace(/^ */,\"\")),a||(o=o.replace(/ *$/,\"\")))}n.textContent=o}}}function r(e,t,n){var r=new RegExp(t,\"gi\").exec(e);return r?r[n]:null}function k(e){var t=e.doctype,n=\"<!DOCTYPE html>\";return t&&(n=\"<!DOCTYPE \".concat(t.name).concat(t.publicId?' PUBLIC \"'.concat(t.publicId,'\"'):\"\").concat(!t.publicId&&t.systemId?\" SYSTEM\":\"\").concat(t.systemId?' \"'.concat(t.systemId,'\"'):\"\",\">\")),n}function c(e){var t=e.parentNode;if(t&&(w.node.isBlock(t)||w.node.isElement(t))&&[\"TD\",\"TH\"].indexOf(t.tagName)<0){for(var n=e.previousSibling,r=e.nextSibling;n&&(n.nodeType===Node.TEXT_NODE&&0===n.textContent.replace(/\\n|\\r/g,\"\").length||w.node.hasClass(n,\"fr-tmp\"));)n=n.previousSibling;if(r)return!1;n&&t&&\"BR\"!==n.tagName&&!w.node.isBlock(n)&&!r&&0<t.textContent.replace(/\\u200B/g,\"\").length&&0<n.textContent.length&&!w.node.hasClass(n,\"fr-marker\")&&(w.el===t&&!r&&w.opts.enter===V.ENTER_BR&&w.browser.msie||e.parentNode.removeChild(e))}else!t||w.node.isBlock(t)||w.node.isElement(t)||e.previousSibling||e.nextSibling||!w.node.isDeletable(e.parentNode)||c(e.parentNode)}function g(){w.opts.htmlUntouched||(e(),t(),n(),w.spaces.normalize(null,!0),w.html.fillEmptyBlocks(),w.clean.lists(),w.clean.tables(),w.clean.toHTML5(),w.html.cleanBRs()),w.selection.restore(),o(),w.placeholder.refresh()}function o(){w.node.isEmpty(w.el)&&(null!==d()?w.el.querySelector(p())||w.el.querySelector(\"\".concat(w.opts.htmlDoNotWrapTags.join(\":not(.fr-marker),\"),\":not(.fr-marker)\"))||(w.core.hasFocus()?(w.$el.html(\"<\".concat(d(),\">\").concat(V.MARKERS,\"<br/></\").concat(d(),\">\")),w.selection.restore()):w.$el.html(\"<\".concat(d(),\"><br/></\").concat(d(),\">\"))):w.el.querySelector(\"*:not(.fr-marker):not(br)\")||(w.core.hasFocus()?(w.$el.html(\"\".concat(V.MARKERS,\"<br/>\")),w.selection.restore()):w.$el.html(\"<br/>\")))}function C(e,t){return r(e,\"<\".concat(t,\"[^>]*?>([\\\\w\\\\W]*)</\").concat(t,\">\"),1)}function m(e,t){var n=u(\"<div \".concat(r(e,\"<\".concat(t,\"([^>]*?)>\"),1)||\"\",\">\"));return w.node.rawAttributes(n.get(0))}function v(e){return(r(e,\"<!DOCTYPE([^>]*?)>\",0)||\"<!DOCTYPE html>\").replace(/\\n/g,\" \").replace(/ {2,}/g,\" \")}function b(e,t){w.opts.htmlExecuteScripts?e.html(t):e.get(0).innerHTML=t}function $(e){var t;(t=/:not\\(([^)]*)\\)/g).test(e)&&(e=e.replace(t,\" $1 \"));var n=100*(e.match(/(#[^\\s+>~.[:]+)/g)||[]).length+10*(e.match(/(\\[[^]]+\\])/g)||[]).length+10*(e.match(/(\\.[^\\s+>~.[:]+)/g)||[]).length+10*(e.match(/(:[\\w-]+\\([^)]*\\))/gi)||[]).length+10*(e.match(/(:[^\\s+>~.[:]+)/g)||[]).length+(e.match(/(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi)||[]).length;return n+=((e=(e=e.replace(/[*\\s+>~]/g,\" \")).replace(/[#.]/g,\" \")).match(/([^\\s+>~.[:]+)/g)||[]).length}function H(e){if(w.events.trigger(\"html.processGet\",[e]),e&&e.getAttribute&&\"\"===e.getAttribute(\"class\")&&e.removeAttribute(\"class\"),e&&e.getAttribute&&\"\"===e.getAttribute(\"style\")&&e.removeAttribute(\"style\"),e&&e.nodeType===Node.ELEMENT_NODE){var t,n=e.querySelectorAll('[class=\"\"],[style=\"\"]');for(t=0;t<n.length;t++){var r=n[t];\"\"===r.getAttribute(\"class\")&&r.removeAttribute(\"class\"),\"\"===r.getAttribute(\"style\")&&r.removeAttribute(\"style\")}if(\"BR\"===e.tagName)c(e);else{var o=e.querySelectorAll(\"br\");for(t=0;t<o.length;t++)c(o[t])}}}function D(e,t){return e[3]-t[3]}function _(){for(var e=w.el.querySelectorAll(\"input, textarea\"),t=0;t<e.length;t++)\"checkbox\"!==e[t].type&&\"radio\"!==e[t].type||(e[t].checked?e[t].setAttribute(\"checked\",e[t].checked):w.$(e[t]).removeAttr(\"checked\")),e[t].getAttribute(\"value\")&&e[t].setAttribute(\"value\",e[t].value)}function f(e){var t=w.doc.createElement(\"div\");return t.innerHTML=e,null!==t.querySelector(p())}function h(e){var t=null;if(void 0===e&&(t=w.selection.element()),w.opts.keepFormatOnDelete)return!1;var n,r,o=t?(t.textContent.match(/\\u200B/g)||[]).length-t.querySelectorAll(\".fr-marker\").length:0;if((w.el.textContent.match(/\\u200B/g)||[]).length-w.el.querySelectorAll(\".fr-marker\").length===o)return!1;do{r=!1,n=w.el.querySelectorAll(\"*:not(.fr-marker)\");for(var i=0;i<n.length;i++){var a=n[i];if(t!==a){var s=a.textContent;0===a.children.length&&1===s.length&&8203===s.charCodeAt(0)&&[\"TD\",\"STRONG\",\"SPAN\",\"EM\",\"U\",\"S\",\"SUB\",\"SUP\"].indexOf(a.tagName)<0&&(u(a).remove(),r=!0)}}}while(r)}function L(){h(),w.placeholder&&setTimeout(w.placeholder.refresh,0)}return{defaultTag:d,isPreformatted:s,emptyBlocks:i,emptyBlockTagsQuery:function E(){return\"\".concat(V.BLOCK_TAGS.join(\":empty, \"),\":empty\")},blockTagsQuery:p,fillEmptyBlocks:function y(e){var t=i(e);w.node.isEmpty(w.el)&&w.opts.enter===V.ENTER_BR&&t.push(w.el);for(var n=0;n<t.length;n++){var r=t[n];\"false\"===r.getAttribute(\"contenteditable\")||r.querySelector(\"\".concat(w.opts.htmlAllowedEmptyTags.join(\":not(.fr-marker),\"),\":not(.fr-marker)\"))||w.node.isVoid(r)||\"TABLE\"===r.tagName||\"TBODY\"===r.tagName||\"TR\"===r.tagName||\"UL\"===r.tagName||\"OL\"===r.tagName||r.querySelector(\"br\")||r.appendChild(w.doc.createElement(\"br\"))}if(w.browser.msie&&w.opts.enter===V.ENTER_BR){var o=w.node.contents(w.el);o.length&&o[o.length-1].nodeType===Node.TEXT_NODE&&w.$el.append(\"<br>\")}},cleanEmptyTags:e,cleanWhiteTags:h,cleanBlankSpaces:n,blocks:function S(){return w.$el.get(0).querySelectorAll(p())},getDoctype:k,set:function N(e){var t=w.clean.html((e||\"\").trim(),[],[],w.opts.fullPage),n=new RegExp(\"%3A//\",\"g\"),r=t.replace(n,\"://\");if(w.opts.fullPage){var o=C(r,\"body\")||(0<=r.indexOf(\"<body\")?\"\":r),i=m(r,\"body\"),a=C(r,\"head\")||\"<title></title>\",s=m(r,\"head\"),l=u(\"<div>\");l.append(a).contents().each(function(){(this.nodeType===Node.COMMENT_NODE||0<=[\"BASE\",\"LINK\",\"META\",\"NOSCRIPT\",\"SCRIPT\",\"STYLE\",\"TEMPLATE\",\"TITLE\"].indexOf(this.tagName))&&this.parentNode.removeChild(this)});var c=l.html().trim();a=u(\"<div>\").append(a).contents().map(function(){return this.nodeType===Node.COMMENT_NODE?\"\\x3c!--\".concat(this.nodeValue,\"--\\x3e\"):0<=[\"BASE\",\"LINK\",\"META\",\"NOSCRIPT\",\"SCRIPT\",\"STYLE\",\"TEMPLATE\",\"TITLE\"].indexOf(this.tagName)?this.outerHTML:\"\"}).toArray().join(\"\");var d=v(r),f=m(r,\"html\");b(w.$el,\"\".concat(c,\"\\n\").concat(o)),w.node.clearAttributes(w.el),w.$el.attr(i),w.$el.addClass(\"fr-view\"),w.$el.attr(\"spellcheck\",w.opts.spellcheck),w.$el.attr(\"dir\",w.opts.direction),b(w.$head,a),w.node.clearAttributes(w.$head.get(0)),w.$head.attr(s),w.node.clearAttributes(w.$html.get(0)),w.$html.attr(f),w.iframe_document.doctype.parentNode.replaceChild(function h(e,t){var n=e.match(/<!DOCTYPE ?([^ ]*) ?([^ ]*) ?\"?([^\"]*)\"? ?\"?([^\"]*)\"?>/i);return n?t.implementation.createDocumentType(n[1],n[3],n[4]):t.implementation.createDocumentType(\"html\")}(d,w.iframe_document),w.iframe_document.doctype)}else b(w.$el,r);var p=w.edit.isDisabled();w.edit.on(),w.core.injectStyle(w.opts.iframeDefaultStyle+w.opts.iframeStyle),g(),w.opts.useClasses||(w.$el.find(\"[fr-original-class]\").each(function(){this.setAttribute(\"class\",this.getAttribute(\"fr-original-class\")),this.removeAttribute(\"fr-original-class\")}),w.$el.find(\"[fr-original-style]\").each(function(){this.setAttribute(\"style\",this.getAttribute(\"fr-original-style\")),this.removeAttribute(\"fr-original-style\")})),p&&w.edit.off(),w.events.trigger(\"html.set\"),w.events.trigger(\"charCounter.update\")},syncInputs:_,get:function B(e,t){if(!w.$wp)return w.$oel.clone().removeClass(\"fr-view\").removeAttr(\"contenteditable\").get(0).outerHTML;var n=\"\";w.events.trigger(\"html.beforeGet\");var r,o,i=[],a={},s=[];if(_(),!w.opts.useClasses&&!t){var l=new RegExp(\"^\".concat(w.opts.htmlIgnoreCSSProperties.join(\"$|^\"),\"$\"),\"gi\");for(r=0;r<w.doc.styleSheets.length;r++){var c=void 0,d=0;try{c=w.doc.styleSheets[r].cssRules,w.doc.styleSheets[r].ownerNode&&\"STYLE\"===w.doc.styleSheets[r].ownerNode.nodeType&&(d=1)}catch(O){}if(c)for(var f=0,p=c.length;f<p;f++)if(c[f].selectorText&&0<c[f].style.cssText.length){var h=c[f].selectorText.replace(/body \\s tbody \\.fr-view /g,\"\").replace(/::/g,\":\"),u=void 0;try{u=w.el.querySelectorAll(h)}catch(O){u=[]}for(o=0;o<u.length;o++){!u[o].getAttribute(\"fr-original-style\")&&u[o].getAttribute(\"style\")?(u[o].setAttribute(\"fr-original-style\",u[o].getAttribute(\"style\")),i.push(u[o])):u[o].getAttribute(\"fr-original-style\")||(u[o].setAttribute(\"fr-original-style\",\"\"),i.push(u[o])),a[u[o]]||(a[u[o]]={});for(var g=1e3*d+$(c[f].selectorText),C=c[f].style.cssText.split(\";\"),m=0;m<C.length;m++){var v=C[m].trim().split(\":\")[0];if(v&&!v.match(l)&&(a[u[o]][v]||(a[u[o]][v]=0)<=(u[o].getAttribute(\"fr-original-style\")||\"\").indexOf(\"\".concat(v,\":\"))&&(a[u[o]][v]=1e4),g>=a[u[o]][v]&&(a[u[o]][v]=g,C[m].trim().length))){var b=C[m].trim().split(\":\");b.splice(0,1);var L=b.join(\":\").trim();-1<L.indexOf(\"!important\")&&(g+=1),s.push([u[o],v.trim(),L,g])}}}}}for(s.sort(D),r=0;r<s.length;r++){var E=s[r];E[0].style[E[1]]=E[2].replace(/!important/,\"\")}for(r=0;r<i.length;r++)if(i[r].getAttribute(\"class\")&&(i[r].setAttribute(\"fr-original-class\",i[r].getAttribute(\"class\")),i[r].removeAttribute(\"class\")),0<(i[r].getAttribute(\"fr-original-style\")||\"\").trim().length){var y=i[r].getAttribute(\"fr-original-style\").split(\";\");for(o=0;o<y.length;o++)if(0<y[o].indexOf(\":\")){var S=y[o].split(\":\"),N=S[0];S.splice(0,1),i[r].style[N.trim()]=S.join(\":\").trim()}}}if(w.node.isEmpty(w.el))w.opts.fullPage&&(n=k(w.iframe_document),n+=\"<html\".concat(w.node.attributes(w.$html.get(0)),\">\").concat(w.$html.find(\"head\").get(0).outerHTML,\"<body></body></html>\"));else if(void 0===e&&(e=!1),w.opts.fullPage){n=k(w.iframe_document),w.$el.removeClass(\"fr-view\");var T=w.opts.heightMin,M=w.opts.height,A=w.opts.heightMax;w.opts.heightMin=null,w.opts.height=null,w.opts.heightMax=null,w.size.refresh(),n+=\"<html\".concat(w.node.attributes(w.$html.get(0)),\">\").concat(w.$html.html(),\"</html>\"),w.opts.heightMin=T,w.opts.height=M,w.opts.heightMax=A,w.size.refresh(),w.$el.addClass(\"fr-view\")}else n=w.$el.html();if(!w.opts.useClasses&&!t)for(r=0;r<i.length;r++)i[r].getAttribute(\"fr-original-class\")&&(i[r].setAttribute(\"class\",i[r].getAttribute(\"fr-original-class\")),i[r].removeAttribute(\"fr-original-class\")),null!==i[r].getAttribute(\"fr-original-style\")&&void 0!==i[r].getAttribute(\"fr-original-style\")?(0!==i[r].getAttribute(\"fr-original-style\").length?i[r].setAttribute(\"style\",i[r].getAttribute(\"fr-original-style\")):i[r].removeAttribute(\"style\"),i[r].removeAttribute(\"fr-original-style\")):i[r].removeAttribute(\"style\");w.opts.fullPage&&(n=(n=(n=(n=(n=(n=(n=(n=n.replace(/<style data-fr-style=\"true\">(?:[\\w\\W]*?)<\\/style>/g,\"\")).replace(/<link([^>]*)data-fr-style=\"true\"([^>]*)>/g,\"\")).replace(/<style(?:[\\w\\W]*?)class=\"firebugResetStyles\"(?:[\\w\\W]*?)>(?:[\\w\\W]*?)<\\/style>/g,\"\")).replace(/<body((?:[\\w\\W]*?)) spellcheck=\"true\"((?:[\\w\\W]*?))>((?:[\\w\\W]*?))<\\/body>/g,\"<body$1$2>$3</body>\")).replace(/<body((?:[\\w\\W]*?)) contenteditable=\"(true|false)\"((?:[\\w\\W]*?))>((?:[\\w\\W]*?))<\\/body>/g,\"<body$1$3>$4</body>\")).replace(/<body((?:[\\w\\W]*?)) dir=\"([\\w]*)\"((?:[\\w\\W]*?))>((?:[\\w\\W]*?))<\\/body>/g,\"<body$1$3>$4</body>\")).replace(/<body((?:[\\w\\W]*?))class=\"([\\w\\W]*?)(fr-rtl|fr-ltr)([\\w\\W]*?)\"((?:[\\w\\W]*?))>((?:[\\w\\W]*?))<\\/body>/g,'<body$1class=\"$2$4\"$5>$6</body>')).replace(/<body((?:[\\w\\W]*?)) class=\"\"((?:[\\w\\W]*?))>((?:[\\w\\W]*?))<\\/body>/g,\"<body$1$2>$3</body>\")),w.opts.htmlSimpleAmpersand&&(n=n.replace(/&/gi,\"&\")),w.events.trigger(\"html.afterGet\"),e||(n=n.replace(/<span[^>]*? class\\s*=\\s*[\"']?fr-marker[\"']?[^>]+>\\u200b<\\/span>/gi,\"\")),n=w.clean.invisibleSpaces(n),n=w.clean.exec(n,H);var x=w.events.chainTrigger(\"html.get\",n);return\"string\"==typeof x&&(n=x),n=(n=n.replace(/<pre(?:[\\w\\W]*?)>(?:[\\w\\W]*?)<\\/pre>/g,function(e){return e.replace(/<br>/g,\"\\n\")})).replace(/<meta((?:[\\w\\W]*?)) data-fr-http-equiv=\"/g,'<meta$1 http-equiv=\"')},getSelected:function T(){function e(e,t){for(;t&&(t.nodeType===Node.TEXT_NODE||!w.node.isBlock(t))&&!w.node.isElement(t)&&!w.node.hasClass(t,\"fr-inner\")&&(w.opts.enter!==V.ENTER_BR||t!==w.$el[0]);)t&&t.nodeType!==Node.TEXT_NODE&&u(e).wrapContent(t),t=t.parentNode;t&&e.innerHTML===t.innerHTML?e.innerHTML=t.outerHTML:t&&\"DIV\"!==t.tagName&&t.innerText&&-1!=t.innerText.indexOf(e.innerHTML)&&t!==w.$el.get(0)&&(e.innerHTML=w.node.openTagString(t)+e.innerHTML+w.node.closeTagString(t))}var t,n,r=\"\";if(\"undefined\"!=typeof w.win.getSelection){w.browser.mozilla&&(w.selection.save(),1<w.$el.find('.fr-marker[data-type=\"false\"]').length&&(w.$el.find('.fr-marker[data-type=\"false\"][data-id=\"0\"]').remove(),w.$el.find('.fr-marker[data-type=\"false\"]:last').attr(\"data-id\",\"0\"),w.$el.find(\".fr-marker\").not('[data-id=\"0\"]').remove()),w.selection.restore());for(var o=w.selection.ranges(),i=0;i<o.length;i++){var a=document.createElement(\"div\");a.appendChild(o[i].cloneContents()),e(a,(n=t=void 0,n=null,w.win.getSelection?(t=w.win.getSelection())&&t.rangeCount&&((n=t.getRangeAt(0).commonAncestorContainer).nodeType===Node.ELEMENT_NODE||w.opts.enter===V.ENTER_BR&&n.parentNode===w.$el[0]||(n=n.parentNode)):(t=w.doc.selection)&&\"Control\"!==t.type&&(n=t.createRange().parentElement()),null!==n&&(0<=u(n).parents().toArray().indexOf(w.el)||n===w.el)?n:null)),0<u(a).find(\".fr-element\").length&&(a=w.el),r+=a.innerHTML}}else\"undefined\"!=typeof w.doc.selection&&\"Text\"===w.doc.selection.type&&(r=w.doc.selection.createRange().htmlText);return r},insert:function M(e,t,n){var r;if(w.selection.isCollapsed()||w.selection.remove(),r=t?e:w.clean.html(e),0===e.indexOf('<i class=\"fa ')&&(r=\"<span> \".concat(r,\"</span>\")),e.indexOf('class=\"fr-marker\"')<0&&(r=function a(e){var t=w.doc.createElement(\"div\");return t.innerHTML=e,w.selection.setAtEnd(t,!0),t.innerHTML}(r)),w.node.isEmpty(w.el)&&!w.opts.keepFormatOnDelete&&f(r))w.opts.trackChangesEnabled?w.track_changes.pasteInEmptyEdior(r):w.el.innerHTML=r;else{(function s(){var e=w.selection.ranges(0).commonAncestorContainer;return e!==w.el&&!w.$el.contains(e)})()&&w.selection.restore();var o=w.markers.insert();if(o)if(w.opts.trackChangesEnabled)w.track_changes.pasteInEdior(r);else{w.node.isLastSibling(o)&&u(o).parent().hasClass(\"fr-deletable\")&&u(o).insertAfter(u(o).parent());var i=w.node.blockParent(o);if((f(r)||n)&&(w.node.deepestParent(o)||i&&\"LI\"===i.tagName)){if(i&&\"LI\"===i.tagName&&(r=function l(e){if(!w.html.defaultTag())return e;var t=w.doc.createElement(\"div\");t.innerHTML=e;for(var n=t.querySelectorAll(\":scope > \".concat(w.html.defaultTag())),r=n.length-1;0<=r;r--){var o=n[r];w.node.isBlock(o.previousSibling)||(o.previousSibling&&!w.node.isEmpty(o)&&u(\"<br>\").insertAfter(o.previousSibling),o.outerHTML=o.innerHTML)}return t.innerHTML}(r)),!(o=w.markers.split()))return!1;o.outerHTML=r}else o.outerHTML=r}else w.el.innerHTML+=r}g(),w.keys.positionCaret(),w.events.trigger(\"html.inserted\")},wrap:t,unwrap:function A(){w.$el.find(\"div.fr-temp-div\").each(function(){this.previousSibling&&this.previousSibling.nodeType===Node.TEXT_NODE&&u(this).before(\"<br>\"),u(this).attr(\"data-empty\")||!this.nextSibling||w.node.isBlock(this.nextSibling)&&!u(this.nextSibling).hasClass(\"fr-temp-div\")?u(this).replaceWith(u(this).html()):u(this).replaceWith(\"\".concat(u(this).html(),\"<br>\"))}),w.$el.find(\".fr-temp-div\").removeClass(\"fr-temp-div\").filter(function(){return\"\"===u(this).attr(\"class\")}).removeAttr(\"class\")},escapeEntities:function x(e){return e.replace(/</gi,\"<\").replace(/>/gi,\">\").replace(/\"/gi,\""\").replace(/'/gi,\"'\")},checkIfEmpty:o,extractNode:C,extractNodeAttrs:m,extractDoctype:v,cleanBRs:function O(){for(var e=w.el.getElementsByTagName(\"br\"),t=0;t<e.length;t++)c(e[t])},_init:function R(){w.events.$on(w.$el,\"mousemove\",\"span.fr-word-select\",function(e){var t=window.getSelection();t=window.getSelection();var n=document.createRange();n.selectNodeContents(e.target),t.removeAllRanges(),t.addRange(n)}),w.$wp&&(w.events.on(\"mouseup\",L),w.events.on(\"keydown\",L),w.events.on(\"contentChanged\",o))},_setHtml:b}},V.ENTER_P=0,V.ENTER_DIV=1,V.ENTER_BR=2,V.KEYCODE={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,ARROW_LEFT:37,ARROW_UP:38,ARROW_RIGHT:39,ARROW_DOWN:40,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,FF_SEMICOLON:59,FF_EQUALS:61,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,FF_HYPHEN:173,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,HYPHEN:189,PERIOD:190,SLASH:191,APOSTROPHE:192,TILDE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,IME:229},Object.assign(V.DEFAULTS,{enter:V.ENTER_P,multiLine:!0,tabSpaces:0}),V.MODULES.keys=function(p){var h,n,r,i=p.$,u=!1;function g(e){if(p.selection.isCollapsed())if([\"INPUT\",\"BUTTON\",\"TEXTAREA\"].indexOf(e.target&&e.target.tagName)<0&&p.cursor.backspace(),p.helpers.isIOS()){var t=p.selection.ranges(0);t.deleteContents(),t.insertNode(document.createTextNode(\"\\u200b\")),p.selection.get().modify(\"move\",\"forward\",\"character\")}else[\"INPUT\",\"BUTTON\",\"TEXTAREA\"].indexOf(e.target&&e.target.tagName)<0&&e.preventDefault(),e.stopPropagation();else e.preventDefault(),e.stopPropagation(),p.selection.remove();p.placeholder.refresh()}function C(e){[\"INPUT\",\"BUTTON\",\"TEXTAREA\"].indexOf(e.target&&e.target.tagName)<0&&e.preventDefault(),e.stopPropagation(),\"\"!==p.selection.text()||p.selection.element().hasAttribute(\"contenteditable\")&&\"false\"===p.selection.element().getAttribute(\"contenteditable\")||!p.selection.isCollapsed()&&\"IMG\"==p.selection.element().tagName?p.selection.remove():p.cursor.del(),p.placeholder.refresh()}function e(){if(p.browser.mozilla&&p.selection.isCollapsed()&&!u){var e=p.selection.ranges(0),t=e.startContainer,n=e.startOffset;t&&t.nodeType===Node.TEXT_NODE&&n<=t.textContent.length&&0<n&&32===t.textContent.charCodeAt(n-1)&&(p.selection.save(),p.spaces.normalize(),p.selection.restore())}}function t(){p.selection.isFull()&&setTimeout(function(){var e=p.html.defaultTag();e?p.$el.html(\"<\".concat(e,\">\").concat(V.MARKERS,\"<br/></\").concat(e,\">\")):p.$el.html(\"\".concat(V.MARKERS,\"<br/>\")),p.selection.restore(),p.placeholder.refresh(),p.button.bulkRefresh(),p.undo.saveStep()},0)}function o(){u=!1}function a(){u=!1}function m(){var e=p.html.defaultTag();e?p.$el.html(\"<\".concat(e,\">\").concat(V.MARKERS,\"<br/></\").concat(e,\">\")):p.$el.html(\"\".concat(V.MARKERS,\"<br/>\")),p.selection.restore()}function v(e,t){var n=(e&&e.parentElement).parentElement;if(e.parentElement&&(-1<e.innerHTML.indexOf(\"<span\")||-1<e.parentElement.innerHTML.indexOf(\"<span\")||n&&-1<e.parentElement.parentElement.innerHTML.indexOf(\"<span\"))&&(e.classList.contains(\"fr-img-space-wrap\")||e.parentElement.classList.contains(\"fr-img-space-wrap\")||n&&e.parentElement.parentElement.classList.contains(\"fr-img-space-wrap\"))){if(i(e.parentElement).is(\"p\")){var r=e.parentElement.innerHTML;return(r=r.replace(/<br>/g,\"\")).length<1?e.parentElement.insertAdjacentHTML(\"afterbegin\",\" \"):\" \"!=r&&\" \"!=r&&\"Backspace\"==t.key?g(t):\" \"!=r&&\" \"!=r&&\"Delete\"==t.key&&C(t),!0}if(i(e).is(\"p\")){var o=e.innerHTML.replace(/<br>/g,\"\");return o.length<1?e.insertAdjacentHTML(\"afterbegin\",\" \"):\" \"!=o&&\" \"!=o&&\"Backspace\"==t.key?g(t):\" \"!=o&&\" \"!=o&&\"Delete\"==t.key&&C(t),!0}}return!1}function s(e){var t=p.selection.element();if(t&&0<=[\"INPUT\",\"TEXTAREA\"].indexOf(t.tagName))return!0;if(e&&E(e.which)){var n=p.selection.element();p.selection.save();var r=p.$el.find(\".fr-marker\")[0];return r.previousSibling&&r.previousSibling.nodeType===Node.TEXT_NODE&&1<r.previousSibling.textContent.length&&8203===r.previousSibling.textContent.charCodeAt(r.previousSibling.textContent.length-1)&&b(n),p.selection.restore(),!0}p.events.disableBlur();var o=e.which;if(16===o)return!0;if((h=o)===V.KEYCODE.IME)return u=!0;if(u=!1,L(e))return!0;var i=y(o)&&!L(e)&&!e.altKey,a=o===V.KEYCODE.BACKSPACE||o===V.KEYCODE.DELETE;if((p.selection.isFull()&&!p.opts.keepFormatOnDelete&&!p.placeholder.isVisible()||a&&p.placeholder.isVisible()&&p.opts.keepFormatOnDelete)&&(i||a)&&(m(),!y(o)))return e.preventDefault(),!0;if(o===V.KEYCODE.ENTER)!p.helpers.isIOS()&&e.shiftKey||t.classList.contains(\"fr-inner\")||t.parentElement.classList.contains(\"fr-inner\")?function s(e){e.preventDefault(),e.stopPropagation(),p.opts.multiLine&&(p.selection.isCollapsed()||p.selection.remove(),p.cursor.enter(!0))}(e):function l(e){p.opts.multiLine?(p.helpers.isIOS()||(e.preventDefault(),e.stopPropagation()),p.selection.isCollapsed()||p.selection.remove(),p.cursor.enter()):(e.preventDefault(),e.stopPropagation())}(e);else if(o===V.KEYCODE.BACKSPACE&&(e.metaKey||e.ctrlKey))!function c(){setTimeout(function(){p.events.disableBlur(),p.events.focus()},0)}();else if(o!==V.KEYCODE.BACKSPACE||L(e)||e.altKey)if(o!==V.KEYCODE.DELETE||L(e)||e.altKey||e.shiftKey)o===V.KEYCODE.SPACE?function d(e){var t=p.selection.element();if(!p.helpers.isMobile()&&t&&\"A\"===t.tagName){e.preventDefault(),e.stopPropagation(),p.selection.isCollapsed()||p.selection.remove();var n=p.markers.insert();if(n){var r=n.previousSibling;!n.nextSibling&&n.parentNode&&\"A\"===n.parentNode.tagName?(n.parentNode.insertAdjacentHTML(\"afterend\",\" \".concat(V.MARKERS)),n.parentNode.removeChild(n)):(r&&r.nodeType===Node.TEXT_NODE&&1===r.textContent.length&&160===r.textContent.charCodeAt(0)?r.textContent+=\" \":n.insertAdjacentHTML(\"beforebegin\",\" \"),n.outerHTML=V.MARKERS),p.selection.restore()}}}(e):o===V.KEYCODE.TAB?function f(e){if(0<p.opts.tabSpaces)if(p.selection.isCollapsed()){p.undo.saveStep(),e.preventDefault(),e.stopPropagation();for(var t=\"\",n=0;n<p.opts.tabSpaces;n++)t+=\" \";p.html.insert(t),p.placeholder.refresh(),p.undo.saveStep()}else e.preventDefault(),e.stopPropagation(),e.shiftKey?p.commands.outdent():p.commands.indent()}(e):L(e)||!y(e.which)||p.selection.isCollapsed()||e.ctrlKey||e.altKey||p.browser.mozilla||p.selection.remove();else{if(v(t,e))return e.preventDefault(),void e.stopPropagation();p.placeholder.isVisible()?(p.opts.keepFormatOnDelete||m(),e.preventDefault(),e.stopPropagation()):C(e)}else{if(v(t,e))return e.preventDefault(),void e.stopPropagation();p.placeholder.isVisible()?(p.opts.keepFormatOnDelete||m(),e.preventDefault(),e.stopPropagation()):g(e)}p.events.enableBlur()}function b(e){var t=e;-1<[\"STRONG\",\"U\",\"EM\"].indexOf(e.nodeName)&&e.parentNode&&(t=e.parentNode);for(var n=p.doc.createTreeWalker(t,NodeFilter.SHOW_TEXT,p.node.filter(function(e){return/\\u200B/gi.test(e.textContent)}),!1);n.nextNode();){var r=n.currentNode;r.textContent=r.textContent.replace(/\\u200B/gi,\"\")}}function l(){if(!p.$wp)return!0;var e;if(p.opts.height||p.opts.heightMax){e=p.position.getBoundingRect().top,(p.helpers.isIOS()||p.helpers.isAndroid())&&(e-=p.helpers.scrollTop()),p.opts.iframe&&(e+=p.$iframe.offset().top);var t=p.selection.blocks(),n=null;t&&0<t.length&&t[0].offsetTop&&(n=t[0].getBoundingClientRect().top),!p.opts.iframe&&e>p.$wp.offset().top-p.helpers.scrollTop()+p.$wp.height()-20?p.$wp.scrollTop(e+p.$wp.scrollTop()-(p.$wp.height()+p.$wp.offset().top)+p.helpers.scrollTop()+20):p.opts.iframe&&e>p.$wp.height()&&e&&p.$wp.scrollTop(n-p.$wp.height()+80)}else e=p.position.getBoundingRect().top,p.opts.toolbarBottom&&(e+=p.opts.toolbarStickyOffset),(p.helpers.isIOS()||p.helpers.isAndroid())&&(e-=p.helpers.scrollTop()),p.opts.iframe&&(e+=p.$iframe.offset().top,e-=p.helpers.scrollTop()),(e+=p.opts.toolbarStickyOffset)>p.o_win.innerHeight-20&&i(p.o_win).scrollTop(e+p.helpers.scrollTop()-p.o_win.innerHeight+20),e=p.position.getBoundingRect().top,p.opts.toolbarBottom||(e-=p.opts.toolbarStickyOffset),(p.helpers.isIOS()||p.helpers.isAndroid())&&(e-=p.helpers.scrollTop()),p.opts.iframe&&(e+=p.$iframe.offset().top,e-=p.helpers.scrollTop()),e<100&&i(p.o_win).scrollTop(e+p.helpers.scrollTop()-100)}function c(e){var t=p.selection.element();if(t&&0<=[\"INPUT\",\"TEXTAREA\"].indexOf(t.tagName))return!0;if(e&&0===e.which&&h&&(e.which=h),p.helpers.isAndroid()&&p.browser.mozilla)return!0;if(u)return!1;if(e&&p.helpers.isIOS()&&e.which===V.KEYCODE.ENTER&&p.doc.execCommand(\"undo\"),!p.selection.isCollapsed())return!0;if(e&&(e.which===V.KEYCODE.META||e.which===V.KEYCODE.CTRL))return!0;if(e&&E(e.which))return!0;if(e&&!p.helpers.isIOS()&&(e.which===V.KEYCODE.ENTER||e.which===V.KEYCODE.BACKSPACE||37<=e.which&&e.which<=40&&!p.browser.msie))try{l()}catch(o){}var n=p.selection.element();if(function i(e){if(!e)return!1;var t=e.innerHTML;return!!((t=t.replace(/<span[^>]*? class\\s*=\\s*[\"']?fr-marker[\"']?[^>]+>\\u200b<\\/span>/gi,\"\"))&&/\\u200B/.test(t)&&0<t.replace(/\\u200B/gi,\"\").length)}(n)&&!p.node.hasClass(n,\"fr-marker\")&&\"IFRAME\"!==n.tagName&&function a(e){return!p.helpers.isIOS()||0===((e.textContent||\"\").match(/[\\u3041-\\u3096\\u30A0-\\u30FF\\u4E00-\\u9FFF\\u3130-\\u318F\\uAC00-\\uD7AF]/gi)||[]).length}(n)){p.selection.save();var r=p.$el.find(\".fr-marker\")[1];p.opts.enter===V.ENTER_BR&&n===p.$el.get(0)&&8===e.which&&null==r.nextSibling||b(n),p.selection.restore()}}function L(e){if(-1!==navigator.userAgent.indexOf(\"Mac OS X\")){if(e.metaKey&&!e.altKey)return!0}else if(e.ctrlKey&&!e.altKey)return!0;return!1}function E(e){if(e>=V.KEYCODE.ARROW_LEFT&&e<=V.KEYCODE.ARROW_DOWN)return!0}function y(e){if(e>=V.KEYCODE.ZERO&&e<=V.KEYCODE.NINE)return!0;if(e>=V.KEYCODE.NUM_ZERO&&e<=V.KEYCODE.NUM_MULTIPLY)return!0;if(e>=V.KEYCODE.A&&e<=V.KEYCODE.Z)return!0;if(p.browser.webkit&&0===e)return!0;switch(e){case V.KEYCODE.SPACE:case V.KEYCODE.QUESTION_MARK:case V.KEYCODE.NUM_PLUS:case V.KEYCODE.NUM_MINUS:case V.KEYCODE.NUM_PERIOD:case V.KEYCODE.NUM_DIVISION:case V.KEYCODE.SEMICOLON:case V.KEYCODE.FF_SEMICOLON:case V.KEYCODE.DASH:case V.KEYCODE.EQUALS:case V.KEYCODE.FF_EQUALS:case V.KEYCODE.COMMA:case V.KEYCODE.PERIOD:case V.KEYCODE.SLASH:case V.KEYCODE.APOSTROPHE:case V.KEYCODE.SINGLE_QUOTE:case V.KEYCODE.OPEN_SQUARE_BRACKET:case V.KEYCODE.BACKSLASH:case V.KEYCODE.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}function d(e){var t=e.which;if(L(e)||37<=t&&t<=40||!y(t)&&t!==V.KEYCODE.DELETE&&t!==V.KEYCODE.BACKSPACE&&t!==V.KEYCODE.ENTER&&t!==V.KEYCODE.IME)return!0;n||(r=p.snapshot.get(),p.undo.canDo()||p.undo.saveStep()),clearTimeout(n),n=setTimeout(function(){n=null,p.undo.saveStep()},Math.max(250,p.opts.typingTimer))}function f(e){var t=e.which;if(L(e)||37<=t&&t<=40)return!0;r&&n?(p.undo.saveStep(r),r=null):void 0!==t&&0!==t||r||n||p.undo.saveStep()}function S(e){if(e&&\"BR\"===e.tagName)return!1;try{return 0===(e.textContent||\"\").length&&e.querySelector&&!e.querySelector(\":scope > br\")||e.childNodes&&1===e.childNodes.length&&e.childNodes[0].getAttribute&&(\"false\"===e.childNodes[0].getAttribute(\"contenteditable\")||p.node.hasClass(e.childNodes[0],\"fr-img-caption\"))}catch(t){return!1}}function N(e){var t=p.el.childNodes,n=p.html.defaultTag(),r=p.node.blockParent(p.selection.blocks()[0]);return r&&\"TR\"==r.tagName&&r.getAttribute(\"contenteditable\")==undefined&&(r=r.closest(\"table\")),!p.node.isEditable(e.target)||r&&\"false\"===r.getAttribute(\"contenteditable\")?p.toolbar.disable():p.toolbar.enable(),!(!e.target||e.target===p.el)||(0===t.length||void(t[0].offsetHeight+t[0].offsetTop<=e.offsetY?S(t[t.length-1])&&(n?p.$el.append(\"<\".concat(n,\">\").concat(V.MARKERS,\"<br></\").concat(n,\">\")):p.$el.append(\"\".concat(V.MARKERS,\"<br>\")),p.selection.restore(),l()):e.offsetY<=10&&S(t[0])&&(n?p.$el.prepend(\"<\".concat(n,\">\").concat(V.MARKERS,\"<br></\").concat(n,\">\")):p.$el.prepend(\"\".concat(V.MARKERS,\"<br>\")),p.selection.restore(),l())))}function T(){n&&clearTimeout(n)}return{_init:function M(){p.events.on(\"keydown\",d),p.events.on(\"input\",e),p.events.on(\"mousedown\",a),p.events.on(\"keyup input\",f),p.events.on(\"keypress\",o),p.events.on(\"keydown\",s),p.events.on(\"keyup\",c),p.events.on(\"destroy\",T),p.events.on(\"html.inserted\",c),p.events.on(\"cut\",t),p.opts.multiLine&&p.events.on(\"click\",N),p.events.on(\"initialized\",function(){p.el.addEventListener(\"compositionstart\",function(){if(p.selection.isCollapsed()){var e=p.selection.ranges(0),t=e.startContainer,n=e.startOffset;if(t&&t.nodeType===Node.TEXT_NODE&&n<=t.textContent.length&&0<n&&8203===t.textContent.charCodeAt(n-1)){p.selection.save();var r=p.$el.find(\".fr-marker\");i(r.get(0).previousSibling).before(V.HAIR_SPACE),r.get(0).previousSibling.textContent=r.get(0).previousSibling.textContent.replace(/\\u200B/gi,\"\"),p.selection.restore()}}}),p.el.addEventListener(\"compositionend\",function(){if(p.selection.isCollapsed()){var e=p.selection.ranges(0),t=e.startContainer,n=e.startOffset;if(t&&t.nodeType===Node.TEXT_NODE&&n<=t.textContent.length&&0<n&&8202===t.textContent.charCodeAt(0)){p.selection.save();var r=p.$el.find(\".fr-marker\");r.get(0).previousSibling.textContent=r.get(0).previousSibling.textContent.replace(/\\u200A/gi,\"\"),p.selection.restore()}}})})},ctrlKey:L,isCharacter:y,isArrow:E,forceUndo:function A(){n&&(clearTimeout(n),p.undo.saveStep(),r=null)},isIME:function x(){return u},isBrowserAction:function O(e){var t=e.which;return L(e)||t===V.KEYCODE.F5},positionCaret:l}},Object.assign(V.DEFAULTS,{pastePlain:!1,pasteDeniedTags:[\"colgroup\",\"col\",\"meta\"],pasteDeniedAttrs:[\"class\",\"id\"],pasteAllowedStyleProps:[\".*\"],pasteAllowLocalImages:!1}),V.MODULES.paste=function(A){var a,s,x,O,l,w,k=A.$;function n(e,t){try{A.win.localStorage.setItem(\"fr-copied-html\",e),A.win.localStorage.setItem(\"fr-copied-text\",t)}catch(n){}}function e(e){var t=A.html.getSelected();n(t,k(A.doc.createElement(\"div\")).html(t).text()),\"cut\"===e.type&&(A.undo.saveStep(),setTimeout(function(){A.selection.save(),A.html.wrap(),A.selection.restore(),A.events.focus(),A.undo.saveStep()},0))}var r=!1;function t(e){if(\"INPUT\"===e.target.nodeName&&\"text\"===e.target.type)return!0;if(A.edit.isDisabled())return!1;if(c(e.target))return!1;if(r)return!1;if((e.originalEvent&&(e=e.originalEvent),e&&e.clipboardData&&e.clipboardData.getData)&&((e.clipboardData||window.clipboardData).getData(\"text/html\")||\"\").match('content=\"Microsoft OneNote'))return!1;if(!1===A.events.trigger(\"paste.before\",[e]))return e.preventDefault(),!1;if(e&&e.clipboardData&&e.clipboardData.getData){var t=\"\";if(O=e.clipboardData.types,A.helpers.isArray(O))for(var n=0;n<O.length;n++)t+=\"\".concat(O[n],\";\");else t=O;if(a=\"\",/text\\/rtf/.test(t)&&(s=e.clipboardData.getData(\"text/rtf\")),/text\\/html/.test(t)?(a=e.clipboardData.getData(\"text/html\"),A.browser.mozilla&&(\"<p></p>\"===a||\"\"===a||/<!--StartFragment-->([ ])<!--EndFragment-->/.test(a)||/<!--StartFragment-->([<p></p>]*)<!--EndFragment-->/.test(a))&&(a=A.win.localStorage.getItem(\"fr-copied-html\"))):/text\\/rtf/.test(t)&&A.browser.safari?a=s:/public.rtf/.test(t)&&A.browser.safari&&(a=e.clipboardData.getData(\"text/rtf\")),x=e.clipboardData.getData(\"text\"),\"\"!==a)return f(),e.preventDefault&&(e.stopPropagation(),e.preventDefault()),!1;a=null}return function i(){if(A.selection.save(),A.events.disableBlur(),a=null,l){l.html(\"\");var e=d(A.selection.get().anchorNode)+A.$wp.offset().top;l.css(\"top\",e),A.browser.edge&&A.opts.iframe&&A.$el.append(l)}else{var t=document.getElementsByTagName(\"BODY\")[0],n=window.getComputedStyle(t).transform;if(\"none\"!==n){var r=d(A.selection.get().anchorNode)+A.$wp.offset().top;l=k('<div contenteditable=\"true\" style=\"position: fixed; top: '+r+'px; left: -9999px; height: 100%; width: 0; word-break: break-all; overflow:hidden; z-index: 2147483647; line-height: 140%; -moz-user-select: text; -webkit-user-select: text; -ms-user-select: text; user-select: text;\" tabIndex=\"-1\"></div>')}else l=k('<div contenteditable=\"true\" style=\"position: fixed; top: 0; left: -9999px; height: 100%; width: 0; word-break: break-all; overflow:hidden; z-index: 2147483647; line-height: 140%; -moz-user-select: text; -webkit-user-select: text; -ms-user-select: text; user-select: text;\" tabIndex=\"-1\"></div>');A.browser.webkit||A.browser.mozilla?(\"none\"===n&&l.css(\"top\",A.$sc.scrollTop()),A.$el.after(l)):A.browser.edge&&A.opts.iframe?A.$el.append(l):A.$box.after(l),A.events.on(\"destroy\",function(){l.remove()})}var o;A.helpers.isIOS()&&A.$sc&&(o=A.$sc.scrollTop());A.opts.iframe&&A.$el.attr(\"contenteditable\",\"false\");l.focus(),A.helpers.isIOS()&&A.$sc&&A.$sc.scrollTop(o);A.win.setTimeout(f,1)}(),!1}function c(e){return e&&\"false\"===e.contentEditable}function o(e){if(e.originalEvent&&(e=e.originalEvent),c(e.target))return!1;if(e&&e.dataTransfer&&e.dataTransfer.getData){var t=\"\";if(O=e.dataTransfer.types,A.helpers.isArray(O))for(var n=0;n<O.length;n++)t+=\"\".concat(O[n],\";\");else t=O;if(a=\"\",/text\\/rtf/.test(t)&&(s=e.dataTransfer.getData(\"text/rtf\")),/text\\/html/.test(t)?a=e.dataTransfer.getData(\"text/html\"):/text\\/rtf/.test(t)&&A.browser.safari?a=s:/text\\/plain/.test(t)&&!this.browser.mozilla&&(a=A.html.escapeEntities(e.dataTransfer.getData(\"text/plain\")).replace(/\\n/g,\"<br>\")),\"\"!==a){A.keys.forceUndo(),w=A.snapshot.get(),A.selection.save(),A.$el.find(\".fr-marker\").removeClass(\"fr-marker\").addClass(\"fr-marker-helper\");var r=A.markers.insertAtPoint(e);if(A.$el.find(\".fr-marker\").removeClass(\"fr-marker\").addClass(\"fr-marker-placeholder\"),A.$el.find(\".fr-marker-helper\").addClass(\"fr-marker\").removeClass(\"fr-marker-helper\"),A.selection.restore(),A.selection.remove(),A.$el.find(\".fr-marker-placeholder\").addClass(\"fr-marker\").removeClass(\"fr-marker-placeholder\"),!1!==r){var o=A.el.querySelector(\".fr-marker\");return k(o).replaceWith(V.MARKERS),A.selection.restore(),f(),e.preventDefault&&(e.stopPropagation(),e.preventDefault()),!1}}else a=null}}function d(e){return e.nodeType===Node.TEXT_NODE?e.parentNode.offsetTop:e.offsetTop}function f(){A.opts.iframe&&A.$el.attr(\"contenteditable\",\"true\"),A.browser.edge&&A.opts.iframe&&A.$box.after(l),w||(A.keys.forceUndo(),w=A.snapshot.get()),a||(a=l.get(0).innerHTML,x=l.text(),A.$el[0].setAttribute(\"plainpaste\",!0),A.selection.restore(),A.events.enableBlur());var e=a.match(/(class=\"?Mso|class='?Mso|class=\"?Xl|class='?Xl|class=Xl|style=\"[^\"]*\\bmso-|style='[^']*\\bmso-|w:WordDocument|LibreOffice)/gi),t=A.events.chainTrigger(\"paste.beforeCleanup\",a);if(t&&\"string\"==typeof t){a=t;var n=(new DOMParser).parseFromString(t,\"text/html\");x=n.body.innerText}(!e||e&&!1!==A.events.trigger(\"paste.wordPaste\",[a]))&&i(a,e)}function $(e){for(var t=\"\",n=0;n++<e;)t+=\" \";return t}function i(e,t,n){var r,o=null,i=null;if(0<=e.toLowerCase().indexOf(\"<body\")){var a=\"\";0<=e.indexOf(\"<style\")&&(a=e.replace(/[.\\s\\S\\w\\W<>]*(<style[^>]*>[\\s]*[.\\s\\S\\w\\W<>]*[\\s]*<\\/style>)[.\\s\\S\\w\\W<>]*/gi,\"$1\")),e=(e=(e=a+e.replace(/[.\\s\\S\\w\\W<>]*<body[^>]*>[\\s]*([.\\s\\S\\w\\W<>]*)[\\s]*<\\/body>[.\\s\\S\\w\\W<>]*/gi,\"$1\")).replace(/<pre(?:[\\w\\W]*?)>(?:[\\w\\W]*?)<\\/pre>/g,function(e){return e.replace(/\\n/g,\"<br />\")})).replace(/ \\n/g,\" \").replace(/\\n /g,\" \").replace(/([^>])\\n([^<])/g,\"$1 $2\")}var s=!1;0<=e.indexOf('id=\"docs-internal-guid')&&(e=e.replace(/^[\\w\\W\\s\\S]* id=\"docs-internal-guid[^>]*>([\\w\\W\\s\\S]*)<\\/b>[\\w\\W\\s\\S]*$/g,\"$1\"),s=!0),(0<=e.indexOf('content=\"Sheets\"')||0<=e.indexOf(\"google-sheets-html-origin\"))&&(e=e.replace(/width:0px;/g,\"\"));var l=!1;if(!t)if((l=function y(){var e=null;try{e=A.win.localStorage.getItem(\"fr-copied-text\")}catch(t){}return!(!e||!x||O&&-1===O.indexOf(\"text/html\")||x.replace(/\\u00A0/gi,\" \").replace(/\\r|\\n/gi,\"\")!==e.replace(/\\u00A0/gi,\" \").replace(/\\r|\\n/gi,\"\")&&x.replace(/\\s/g,\"\")!==e.replace(/\\s/g,\"\"))}())&&(e=A.win.localStorage.getItem(\"fr-copied-html\")),l)e=A.clean.html(e,A.opts.pasteDeniedTags,A.opts.pasteDeniedAttrs);else{var c=A.opts.htmlAllowedStyleProps;A.opts.htmlAllowedStyleProps=A.opts.pasteAllowedStyleProps,A.opts.htmlAllowComments=!1,e=(e=(e=e.replace(/<span class=\"Apple-tab-span\">\\s*<\\/span>/g,$(A.opts.tabSpaces||4))).replace(/<span class=\"Apple-tab-span\" style=\"white-space:pre\">(\\t*)<\\/span>/g,function(e,t){return $(t.length*(A.opts.tabSpaces||4))})).replace(/\\t/g,$(A.opts.tabSpaces||4)),e=A.clean.html(e,A.opts.pasteDeniedTags,A.opts.pasteDeniedAttrs),A.opts.htmlAllowedStyleProps=c,A.opts.htmlAllowComments=!0,A.html.defaultTag()&&\"div\"===A.html.defaultTag()||(e=H(e)),e=(e=e.replace(/\\r/g,\"\")).replace(/^ */g,\"\").replace(/ *$/g,\"\")}!t||A.wordPaste&&n||(0===(e=e.replace(/^\\n*/g,\"\").replace(/^ /g,\"\")).indexOf(\"<colgroup>\")&&(e=\"<table>\".concat(e,\"</table>\")),e=H(e=function S(e){var t;e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/<p(.*?)class=\"?'?MsoListParagraph\"?'? ([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<ul><li>$3</li></ul>\")).replace(/<p(.*?)class=\"?'?NumberedText\"?'? ([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<ol><li>$3</li></ol>\")).replace(/<p(.*?)class=\"?'?MsoListParagraphCxSpFirst\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<ul><li$3>$5</li>\")).replace(/<p(.*?)class=\"?'?NumberedTextCxSpFirst\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<ol><li$3>$5</li>\")).replace(/<p(.*?)class=\"?'?MsoListParagraphCxSpMiddle\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<li$3>$5</li>\")).replace(/<p(.*?)class=\"?'?NumberedTextCxSpMiddle\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<li$3>$5</li>\")).replace(/<p(.*?)class=\"?'?MsoListBullet\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<li$3>$5</li>\")).replace(/<p(.*?)class=\"?'?MsoListParagraphCxSpLast\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<li$3>$5</li></ul>\")).replace(/<p(.*?)class=\"?'?NumberedTextCxSpLast\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<li$3>$5</li></ol>\")).replace(/<span([^<]*?)style=\"?'?mso-list:Ignore\"?'?([\\s\\S]*?)>([\\s\\S]*?)<span/gi,\"<span><span\")).replace(/<!--\\[if !supportLists\\]-->([\\s\\S]*?)<!--\\[endif\\]-->/gi,\"\")).replace(/<!\\[if !supportLists\\]>([\\s\\S]*?)<!\\[endif\\]>/gi,\"\")).replace(/(\\n|\\r| class=(\")?Mso[a-zA-Z0-9]+(\")?)/gi,\" \")).replace(/<!--[\\s\\S]*?-->/gi,\"\")).replace(/<(\\/)*(meta|link|span|\\\\?xml:|st1:|o:|font)(.*?)>/gi,\"\");var n,r=[\"style\",\"script\",\"applet\",\"embed\",\"noframes\",\"noscript\"];for(t=0;t<r.length;t++){var o=new RegExp(\"<\".concat(r[t],\".*?\").concat(r[t],\"(.*?)>\"),\"gi\");e=e.replace(o,\"\")}for(e=(e=(e=e.replace(/ /gi,\" \")).replace(/<td([^>]*)><\\/td>/g,\"<td$1><br></td>\")).replace(/<th([^>]*)><\\/th>/g,\"<th$1><br></th>\");(e=(n=e).replace(/<[^/>][^>]*><\\/[^>]+>/gi,\"\"))!==n;);e=(e=e.replace(/<lilevel([^1])([^>]*)>/gi,'<li data-indent=\"true\"$2>')).replace(/<lilevel1([^>]*)>/gi,\"<li$1>\"),e=(e=(e=A.clean.html(e,A.opts.pasteDeniedTags,A.opts.pasteDeniedAttrs)).replace(/<a>(.[^<]+)<\\/a>/gi,\"$1\")).replace(/<br> */g,\"<br>\");var i=A.o_doc.createElement(\"div\");i.innerHTML=e;var a=i.querySelectorAll(\"li[data-indent]\");for(t=0;t<a.length;t++){var s=a[t],l=s.previousElementSibling;if(l&&\"LI\"===l.tagName){var c=l.querySelector(\":scope > ul, :scope > ol\");c||(c=document.createElement(\"ul\"),l.appendChild(c)),c.appendChild(s)}else s.removeAttribute(\"data-indent\")}return A.html.cleanBlankSpaces(i),e=i.innerHTML}(e))),A.opts.pastePlain&&(e=function N(e){var t,n=null,r=A.doc.createElement(\"div\");r.innerHTML=e;var o=r.querySelectorAll(\"p, div, h1, h2, h3, h4, h5, h6, pre, blockquote\");for(t=0;t<o.length;t++)(n=o[t]).innerText&&(n.outerHTML=\"<\".concat(A.html.defaultTag()||\"DIV\",\">\").concat(n.innerText,\"</\").concat(A.html.defaultTag()||\"DIV\",\">\"));for(t=(o=r.querySelectorAll(\"*:not(\".concat(\"p, div, h1, h2, h3, h4, h5, h6, pre, blockquote, ul, ol, li, table, tbody, thead, tr, td, br, img\".split(\",\").join(\"):not(\"),\")\"))).length-1;0<=t;t--)(n=o[t]).outerHTML=n.innerHTML;return function i(e){for(var t=A.node.contents(e),n=0;n<t.length;n++)t[n].nodeType!==Node.TEXT_NODE&&t[n].nodeType!==Node.ELEMENT_NODE?t[n].parentNode.removeChild(t[n]):i(t[n])}(r),r.innerHTML}(e));var d=A.events.chainTrigger(\"paste.afterCleanup\",e);if(A.$el[0].removeAttribute(\"plainpaste\",!0),\"string\"==typeof d&&(e=d),\"\"!==e){var f=A.o_doc.createElement(\"div\");0<=(f.innerHTML=e).indexOf(\"<body>\")?(A.html.cleanBlankSpaces(f),A.spaces.normalize(f,!0)):A.spaces.normalize(f);var p=f.getElementsByTagName(\"span\");for(r=p.length-1;0<=r;r--){var h=p[r];0===h.attributes.length&&(h.outerHTML=h.innerHTML)}if(!0===A.opts.linkAlwaysBlank){var u=f.getElementsByTagName(\"a\");for(r=u.length-1;0<=r;r--){var g=u[r];g.getAttribute(\"target\")||g.setAttribute(\"target\",\"_blank\")}}var C=A.selection.element(),m=!1;if(C&&k(C).parentsUntil(A.el,\"ul, ol\").length&&(m=!0),m){var v=f.children;1===v.length&&0<=[\"OL\",\"UL\"].indexOf(v[0].tagName)&&(v[0].outerHTML=v[0].innerHTML)}if(!s){var b=f.getElementsByTagName(\"br\");for(r=b.length-1;0<=r;r--){var L=b[r];A.node.isBlock(L.previousSibling)&&L.parentNode.removeChild(L)}}if(A.opts.enter===V.ENTER_BR)for(r=(o=f.querySelectorAll(\"p, div\")).length-1;0<=r;r--)0===(i=o[r]).attributes.length&&(i.outerHTML=i.innerHTML+(i.nextSibling&&!A.node.isEmpty(i)?\"<br>\":\"\"));else if(A.opts.enter===V.ENTER_DIV)for(r=(o=f.getElementsByTagName(\"p\")).length-1;0<=r;r--)0===(i=o[r]).attributes.length&&(i.outerHTML=\"<div>\".concat(i.innerHTML,\"</div>\"));else A.opts.enter===V.ENTER_P&&1===f.childNodes.length&&\"P\"===f.childNodes[0].tagName&&0===f.childNodes[0].attributes.length&&(f.childNodes[0].outerHTML=f.childNodes[0].innerHTML);if(f.children&&0<f.children.length)if(A.opts.trackChangesEnabled)for(var E=0;E<f.children.length;E++)f.children[E].setAttribute(\"id\",\"isPasted\");else f.children[0].setAttribute(\"id\",\"isPasted\");e=(e=f.innerHTML).replace(/\\n/g,\"\"),l&&(e=function T(e){var t,n=A.o_doc.createElement(\"div\");n.innerHTML=e;var r=n.querySelectorAll(\"*:empty:not(td):not(th):not(tr):not(iframe):not(svg):not(\".concat(V.VOID_ELEMENTS.join(\"):not(\"),\"):not(\").concat(A.opts.htmlAllowedEmptyTags.join(\"):not(\"),\")\"));for(;r.length;){for(t=0;t<r.length;t++)r[t].parentNode.removeChild(r[t]);r=n.querySelectorAll(\"*:empty:not(td):not(th):not(tr):not(iframe):not(svg):not(\".concat(V.VOID_ELEMENTS.join(\"):not(\"),\"):not(\").concat(A.opts.htmlAllowedEmptyTags.join(\"):not(\"),\")\"))}return n.innerHTML}(e)),A.html.insert(e,!0)}!function M(){A.events.trigger(\"paste.after\")}(),A.undo.saveStep(w),w=null,A.undo.saveStep()}function p(e){for(var t=e.length-1;0<=t;t--)e[t].attributes&&e[t].attributes.length&&e.splice(t,1);return e}function H(e){var t,n=A.o_doc.createElement(\"div\");n.innerHTML=e;for(var r=p(Array.prototype.slice.call(n.querySelectorAll(\":scope > div:not([style]), td > div:not([style]), th > div:not([style]), li > div:not([style])\")));r.length;){var o=r[r.length-1];if(A.html.defaultTag()&&\"div\"!==A.html.defaultTag())o.querySelector(A.html.blockTagsQuery())?o.outerHTML=o.innerHTML:o.outerHTML=\"<\".concat(A.html.defaultTag(),\">\").concat(o.innerHTML,\"</\").concat(A.html.defaultTag(),\">\");else{var i=o.querySelectorAll(\"*\");!i.length||\"BR\"!==i[i.length-1].tagName&&0===o.innerText.length?o.outerHTML=o.innerHTML+(o.nextSibling?\"<br>\":\"\"):!i.length||\"BR\"!==i[i.length-1].tagName||i[i.length-1].nextSibling?o.outerHTML=o.innerHTML+(o.nextSibling?\"<br>\":\"\"):o.outerHTML=o.innerHTML}r=p(Array.prototype.slice.call(n.querySelectorAll(\":scope > div:not([style]), td > div:not([style]), th > div:not([style]), li > div:not([style])\")))}for(r=p(Array.prototype.slice.call(n.querySelectorAll(\"div:not([style])\")));r.length;){for(t=0;t<r.length;t++){var a=r[t],s=a.innerHTML.replace(/\\u0009/gi,\"\").trim();a.outerHTML=s}r=p(Array.prototype.slice.call(n.querySelectorAll(\"div:not([style])\")))}return n.innerHTML}function h(){A.el.removeEventListener(\"copy\",e),A.el.removeEventListener(\"cut\",e),A.el.removeEventListener(\"paste\",t)}return{_init:function u(){A.el.addEventListener(\"copy\",e),A.el.addEventListener(\"cut\",e),A.el.addEventListener(\"paste\",t,{capture:!0}),A.events.on(\"drop\",o),A.browser.msie&&A.browser.version<11&&(A.events.on(\"mouseup\",function(e){2===e.button&&(setTimeout(function(){r=!1},50),r=!0)},!0),A.events.on(\"beforepaste\",t)),A.events.on(\"destroy\",h)},cleanEmptyTagsAndDivs:H,getRtfClipboard:function g(){return s},saveCopiedText:n,clean:i}},Object.assign(V.DEFAULTS,{shortcutsEnabled:[],shortcutsHint:!0}),V.SHORTCUTS_MAP={},V.RegisterShortcut=function(e,t,n,r,o,i){V.SHORTCUTS_MAP[(o?\"^\":\"\")+(i?\"@\":\"\")+e]={cmd:t,val:n,letter:r,shift:o,option:i},V.DEFAULTS.shortcutsEnabled.push(t)},V.RegisterShortcut(V.KEYCODE.E,\"show\",null,\"E\",!1,!1),V.RegisterShortcut(V.KEYCODE.B,\"bold\",null,\"B\",!1,!1),V.RegisterShortcut(V.KEYCODE.I,\"italic\",null,\"I\",!1,!1),V.RegisterShortcut(V.KEYCODE.U,\"underline\",null,\"U\",!1,!1),V.RegisterShortcut(V.KEYCODE.S,\"strikeThrough\",null,\"S\",!1,!1),V.RegisterShortcut(V.KEYCODE.CLOSE_SQUARE_BRACKET,\"indent\",null,\"]\",!1,!1),V.RegisterShortcut(V.KEYCODE.OPEN_SQUARE_BRACKET,\"outdent\",null,\"[\",!1,!1),V.RegisterShortcut(V.KEYCODE.Z,\"undo\",null,\"Z\",!1,!1),V.RegisterShortcut(V.KEYCODE.Z,\"redo\",null,\"Z\",!0,!1),V.RegisterShortcut(V.KEYCODE.Y,\"redo\",null,\"Y\",!1,!1),V.MODULES.shortcuts=function(s){var r=null;var l=!1;function e(e){if(!s.core.hasFocus())return!0;var t=e.which,n=-1!==navigator.userAgent.indexOf(\"Mac OS X\")?e.metaKey:e.ctrlKey;if(\"keyup\"===e.type&&l&&t!==V.KEYCODE.META)return l=!1;\"keydown\"===e.type&&(l=!1);var r=(e.shiftKey?\"^\":\"\")+(e.altKey?\"@\":\"\")+t,o=s.node.blockParent(s.selection.blocks()[0]);if(o&&\"TR\"==o.tagName&&o.getAttribute(\"contenteditable\")==undefined&&(o=o.closest(\"table\")),n&&V.SHORTCUTS_MAP[r]&&(!o||\"false\"!==o.getAttribute(\"contenteditable\"))){var i=V.SHORTCUTS_MAP[r].cmd;if(i&&0<=s.opts.shortcutsEnabled.indexOf(i)){var a=V.SHORTCUTS_MAP[r].val;if(!1===s.events.trigger(\"shortcut\",[e,i,a]))return!(l=!0);if(i&&(s.commands[i]||V.COMMANDS[i]&&V.COMMANDS[i].callback))return e.preventDefault(),e.stopPropagation(),\"keydown\"===e.type&&((s.commands[i]||V.COMMANDS[i].callback)(),l=!0),!1}}}return{_init:function t(){s.events.on(\"keydown\",e,!0),s.events.on(\"keyup\",e,!0)},get:function o(e){if(!s.opts.shortcutsHint)return null;if(!r)for(var t in r={},V.SHORTCUTS_MAP)Object.prototype.hasOwnProperty.call(V.SHORTCUTS_MAP,t)&&0<=s.opts.shortcutsEnabled.indexOf(V.SHORTCUTS_MAP[t].cmd)&&(r[\"\".concat(V.SHORTCUTS_MAP[t].cmd,\".\").concat(V.SHORTCUTS_MAP[t].val||\"\")]={shift:V.SHORTCUTS_MAP[t].shift,option:V.SHORTCUTS_MAP[t].option,letter:V.SHORTCUTS_MAP[t].letter});var n=r[e];return n?(s.helpers.isMac()?String.fromCharCode(8984):\"\".concat(s.language.translate(\"Ctrl\"),\"+\"))+(n.shift?s.helpers.isMac()?String.fromCharCode(8679):\"\".concat(s.language.translate(\"Shift\"),\"+\"):\"\")+(n.option?s.helpers.isMac()?String.fromCharCode(8997):\"\".concat(s.language.translate(\"Alt\"),\"+\"):\"\")+n.letter:null}}},V.MODULES.snapshot=function(l){function n(e){for(var t=e.parentNode.childNodes,n=0,r=null,o=0;o<t.length;o++){if(r){var i=t[o].nodeType===Node.TEXT_NODE&&\"\"===t[o].textContent,a=r.nodeType===Node.TEXT_NODE&&t[o].nodeType===Node.TEXT_NODE,s=r.nodeType===Node.TEXT_NODE&&\"\"===r.textContent;i||a||s||n++}if(t[o]===e)return n;r=t[o]}}function o(e){var t=[];if(!e.parentNode)return[];for(;!l.node.isElement(e);)t.push(n(e)),e=e.parentNode;return t.reverse()}function i(e,t){for(;e&&e.nodeType===Node.TEXT_NODE;){var n=e.previousSibling;n&&n.nodeType===Node.TEXT_NODE&&(t+=n.textContent.length),e=n}return t}function c(e){for(var t=l.el,n=0;n<e.length;n++)t=t.childNodes[e[n]];return t}function r(e,t){try{var n=c(t.scLoc),r=t.scOffset,o=c(t.ecLoc),i=t.ecOffset,a=l.doc.createRange();a.setStart(n,r),a.setEnd(o,i),e.addRange(a)}catch(s){}}return{get:function a(){var e,t={};if(l.events.trigger(\"snapshot.before\"),t.html=(l.$wp?l.$el.html():l.$oel.get(0).outerHTML).replace(/ style=\"\"/g,\"\"),t.ranges=[],l.$wp&&l.selection.inEditor()&&l.core.hasFocus())for(var n=l.selection.ranges(),r=0;r<n.length;r++)t.ranges.push({scLoc:o((e=n[r]).startContainer),scOffset:i(e.startContainer,e.startOffset),ecLoc:o(e.endContainer),ecOffset:i(e.endContainer,e.endOffset)});return l.events.trigger(\"snapshot.after\",[t]),t},restore:function s(e){l.$el.html()!==e.html&&(l.opts.htmlExecuteScripts?l.$el.html(e.html):l.el.innerHTML=e.html);var t=l.selection.get();l.selection.clear(),l.events.focus(!0);for(var n=0;n<e.ranges.length;n++)r(t,e.ranges[n])},equal:function d(e,t){return e.html===t.html&&(!l.core.hasFocus()||JSON.stringify(e.ranges)===JSON.stringify(t.ranges))}}},V.MODULES.undo=function(n){function e(e){var t=e.which;n.keys.ctrlKey(e)&&(t===V.KEYCODE.Z&&e.shiftKey&&e.preventDefault(),t===V.KEYCODE.Z&&e.preventDefault())}var t=null;function r(){if(n.undo_stack&&!n.undoing)for(;n.undo_stack.length>n.undo_index;)n.undo_stack.pop()}function o(){n.undo_index=0,n.undo_stack=[]}function i(){n.undo_stack=[]}return{_init:function a(){o(),n.events.on(\"initialized\",function(){t=(n.$wp?n.$el.html():n.$oel.get(0).outerHTML).replace(/ style=\"\"/g,\"\")}),n.events.on(\"blur\",function(){n.el.querySelector(\".fr-dragging\")||n.undo.saveStep()}),n.events.on(\"keydown\",e),n.events.on(\"destroy\",i)},run:function s(){if(1<n.undo_index){n.undoing=!0;var e=n.undo_stack[--n.undo_index-1];clearTimeout(n._content_changed_timer),n.snapshot.restore(e),t=e.html,n.popups.hideAll(),n.toolbar.enable(),n.events.trigger(\"contentChanged\"),n.events.trigger(\"commands.undo\"),n.undoing=!1,n.selection.restore()}},redo:function l(){if(n.undo_index<n.undo_stack.length){n.undoing=!0;var e=n.undo_stack[n.undo_index++];clearTimeout(n._content_changed_timer),n.snapshot.restore(e),t=e.html,n.popups.hideAll(),n.toolbar.enable(),n.events.trigger(\"contentChanged\"),n.events.trigger(\"commands.redo\"),n.undoing=!1}},canDo:function c(){return!(0===n.undo_stack.length||n.undo_index<=1)},canRedo:function d(){return n.undo_index!==n.undo_stack.length},dropRedo:r,reset:o,saveStep:function f(e){if(n.undo_stack&&!n.undoing&&!n.el.querySelector(\".fr-marker\"))if(void 0===e){if((e=n.snapshot.get())&&e.html&&n.undo_stack[n.undo_stack.length-1]&&e.html===n.undo_stack[n.undo_stack.length-1].html)return;n.undo_stack[n.undo_index-1]&&n.snapshot.equal(n.undo_stack[n.undo_index-1],e)||(r(),n.undo_stack.push(e),n.undo_index++,function o(e,t){var n=t.split(\"fr-selected-cell\").join(\"\");n=n.split(' class=\"\"').join(\"\");var r=e.split(\"fr-selected-cell\").join(\"\");return n===(r=r.split(' class=\"\"').join(\"\"))}(t,e.html)||(n.events.trigger(\"contentChanged\"),t=e.html))}else r(),0<n.undo_index?n.undo_stack[n.undo_index-1]=e:(n.undo_stack.push(e),n.undo_index++)}}},Object.assign(V.DEFAULTS,{height:null,heightMax:null,heightMin:null,width:null}),V.MODULES.size=function(r){function e(){o(),r.opts.height&&r.$el.css(\"minHeight\",r.opts.height-r.helpers.getPX(r.$el.css(\"padding-top\"))-r.helpers.getPX(r.$el.css(\"padding-bottom\")));var e=!1;if(r.opts.fullPage)for(var t=r.$el.find(\"span,p,div\"),n=0;n<t.length;n++)if(t[n].style.height&&t[n].style.height.includes(\"vh\")){e=!0;break}r.opts.fullPage&&e&&(r.opts.heightMin&&r.$iframe.css(\"minHeight\",r.opts.heightMin),r.opts.heightMax&&r.$iframe.css(\"maxHeight\",r.opts.heightMax),r.$el.css(\"overflow-y\",\"auto\")),r.$iframe.height(r.$el.outerHeight(!0))}function o(){r.opts.heightMin?r.$el.css(\"minHeight\",r.opts.heightMin):r.$el.css(\"minHeight\",\"\"),r.opts.heightMax?(r.$wp.css(\"maxHeight\",r.opts.heightMax),r.$wp.css(\"overflow\",\"auto\")):(r.$wp.css(\"maxHeight\",\"\"),r.$wp.css(\"overflow\",\"\")),r.opts.height?(r.$wp.css(\"height\",r.opts.height),r.$wp.css(\"overflow\",\"auto\"),r.$el.css(\"minHeight\",r.opts.height-r.helpers.getPX(r.$el.css(\"padding-top\"))-r.helpers.getPX(r.$el.css(\"padding-bottom\")))):(r.$wp.css(\"height\",\"\"),r.opts.heightMin||r.$el.css(\"minHeight\",\"\"),r.opts.heightMax||r.$wp.css(\"overflow\",\"\")),r.opts.width&&r.$box.width(r.opts.width)}return{_init:function t(){if(!r.$wp)return!1;o(),r.$iframe&&(r.events.on(\"keyup keydown\",function(){setTimeout(e,0)},!0),r.events.on(\"commands.after html.set init initialized paste.after\",e))},syncIframe:e,refresh:o}},Object.assign(V.DEFAULTS,{documentReady:!1,editorClass:null,typingTimer:500,iframe:!1,requestWithCORS:!0,requestWithCredentials:!1,requestHeaders:{},useClasses:!0,spellcheck:!0,iframeDefaultStyle:'html{margin:0px;height:auto;}body{height:auto;padding:20px;background:transparent;color:#000000;position:relative;z-index: 2;-webkit-user-select:auto;margin:0px;overflow:hidden;min-height:20px;}body:after{content:\"\";display:block;clear:both;}body::-moz-selection{background:#b5d6fd;color:#000;}body::selection{background:#b5d6fd;color:#000;}',iframeStyle:\"\",iframeStyleFiles:[],direction:\"auto\",zIndex:1,tabIndex:null,disableRightClick:!1,scrollableContainer:\"body\",keepFormatOnDelete:!1,theme:null}),V.MODULES.core=function(a){var r=a.$;function n(){if(a.$box.addClass(\"fr-box\".concat(a.opts.editorClass?\" \".concat(a.opts.editorClass):\"\")),a.$box.attr(\"role\",\"application\"),a.$wp.addClass(\"fr-wrapper\"),a.opts.documentReady&&a.$box.addClass(\"fr-document\"),function o(){a.opts.iframe||a.$el.addClass(\"fr-element fr-view\"),(a.opts.height&&a.opts.height<window.innerHeight||a.opts.heightMax&&a.opts.heightMax<window.innerHeight)&&a.$el.addClass(\"fr-element-scroll-visible\")}(),a.opts.iframe){a.$iframe.addClass(\"fr-iframe\"),a.$el.addClass(\"fr-view\");for(var e=0;e<a.o_doc.styleSheets.length;e++){var t=void 0;try{t=a.o_doc.styleSheets[e].cssRules}catch(i){}if(t)for(var n=0,r=t.length;n<r;n++)!t[n].selectorText||0!==t[n].selectorText.indexOf(\".fr-view\")&&0!==t[n].selectorText.indexOf(\".fr-element\")||0<t[n].style.cssText.length&&(0===t[n].selectorText.indexOf(\".fr-view\")?a.opts.iframeStyle+=\"\".concat(t[n].selectorText.replace(/\\.fr-view/g,\"body\"),\"{\").concat(t[n].style.cssText,\"}\"):a.opts.iframeStyle+=\"\".concat(t[n].selectorText.replace(/\\.fr-element/g,\"body\"),\"{\").concat(t[n].style.cssText,\"}\"))}}\"auto\"!==a.opts.direction&&a.$box.removeClass(\"fr-ltr fr-rtl\").addClass(\"fr-\".concat(a.opts.direction)),a.$el.attr(\"dir\",a.opts.direction),a.$wp.attr(\"dir\",a.opts.direction),1<a.opts.zIndex&&a.$box.css(\"z-index\",a.opts.zIndex),a.opts.theme&&a.$box.addClass(\"\".concat(a.opts.theme,\"-theme\")),a.opts.tabIndex=a.opts.tabIndex||a.$oel.attr(\"tabIndex\"),a.opts.tabIndex&&a.$el.attr(\"tabIndex\",a.opts.tabIndex)}return{_init:function o(){if(V.INSTANCES.push(a),function e(){a.drag_support={filereader:\"undefined\"!=typeof FileReader,formdata:Boolean(a.win.FormData),progress:\"upload\"in new XMLHttpRequest}}(),a.$wp){n(),a.html.set(a._original_html),a.$el.attr(\"spellcheck\",a.opts.spellcheck),a.helpers.isMobile()&&(a.$el.attr(\"autocomplete\",a.opts.spellcheck?\"on\":\"off\"),a.$el.attr(\"autocorrect\",a.opts.spellcheck?\"on\":\"off\"),a.$el.attr(\"autocapitalize\",a.opts.spellcheck?\"on\":\"off\")),a.opts.disableRightClick&&a.events.$on(a.$el,\"contextmenu\",function(e){if(2===e.button)return e.preventDefault(),e.stopPropagation(),!1});try{a.doc.execCommand(\"styleWithCSS\",!1,!1)}catch(t){}}\"TEXTAREA\"===a.$oel.get(0).tagName&&(a.events.on(\"contentChanged\",function(){a.$oel.val(a.html.get())}),a.events.on(\"form.submit\",function(){a.$oel.val(a.html.get())}),a.events.on(\"form.reset\",function(){a.html.set(a._original_html)}),a.$oel.val(a.html.get())),a.helpers.isIOS()&&a.events.$on(a.$doc,\"selectionchange\",function(){a.$doc.get(0).hasFocus()||a.$win.get(0).focus()}),a.events.trigger(\"init\"),a.opts.autofocus&&!a.opts.initOnClick&&a.$wp&&a.events.on(\"initialized\",function(){a.events.focus(!0)})},destroy:function t(e){\"TEXTAREA\"===a.$oel.get(0).tagName&&a.$oel.val(e),a.$box&&a.$box.removeAttr(\"role\"),a.$wp&&(\"TEXTAREA\"===a.$oel.get(0).tagName?(a.$el.html(\"\"),a.$wp.html(\"\"),a.$box.replaceWith(a.$oel),a.$oel.show()):(a.$wp.replaceWith(e),a.$el.html(\"\"),a.$box.removeClass(\"fr-view fr-ltr fr-box \".concat(a.opts.editorClass||\"\")),a.opts.theme&&a.$box.addClass(\"\".concat(a.opts.theme,\"-theme\")))),this.$wp=null,this.$el=null,this.el=null,this.$box=null},isEmpty:function e(){return a.node.isEmpty(a.el)},getXHR:function i(e,t){var n=new XMLHttpRequest;for(var r in n.open(t,e,!0),a.opts.requestWithCredentials&&(n.withCredentials=!0),a.opts.requestHeaders)Object.prototype.hasOwnProperty.call(a.opts.requestHeaders,r)&&n.setRequestHeader(r,a.opts.requestHeaders[r]);return n},injectStyle:function s(e){if(a.opts.iframe){a.$head.find(\"style[data-fr-style], link[data-fr-style]\").remove(),a.$head.append('<style data-fr-style=\"true\">'.concat(e,\"</style>\"));for(var t=0;t<a.opts.iframeStyleFiles.length;t++){var n=r('<link data-fr-style=\"true\" rel=\"stylesheet\" href=\"'.concat(a.opts.iframeStyleFiles[t],'\">'));n.get(0).addEventListener(\"load\",a.size.syncIframe),a.$head.append(n)}}},hasFocus:function l(){return a.browser.mozilla&&a.helpers.isMobile()?a.selection.inEditor():a.node.hasFocus(a.el)||0<a.$el.find(\"*:focus\").length},sameInstance:function c(e){if(!e)return!1;var t=e.data(\"instance\");return!!t&&t.id===a.id}}},V.POPUP_TEMPLATES={\"text.edit\":\"[_EDIT_]\"},V.RegisterTemplate=function(e,t){V.POPUP_TEMPLATES[e]=t},V.MODULES.popups=function(h){var r,d=h.$;h.shared.popups||(h.shared.popups={});var u,g=h.shared.popups;function C(e,t){t.isVisible()||(t=h.$sc),t.is(g[e].data(\"container\"))||(g[e].data(\"container\",t),t.append(g[e]))}function o(e){var t;e.find(\".fr-upload-progress\").addClass(\"fr-height-set\"),e.find(\".fr-upload-progress\").removeClass(\"fr-height-auto\"),h.popups.get(\"filesManager.insert\").removeClass(\"fr-height-auto\"),e.find(\".fr-files-upload-layer\").hasClass(\"fr-active\")&&(t=1),e.find(\".fr-files-by-url-layer\").hasClass(\"fr-active\")&&(t=2),e.find(\".fr-files-embed-layer\").hasClass(\"fr-active\")&&(t=3),e.find(\".fr-upload-progress-layer\").get(0).clientHeight+10<e.find(\".fr-upload-progress\").get(0).clientHeight&&e.find(\".fr-upload-progress\").addClass(\"fr-height-auto\"),400<e[0].clientHeight&&(e[0].childNodes[4].style.height=\"\".concat(e[0].clientHeight-(e[0].childNodes[0].clientHeight+e[0].childNodes[t].clientHeight)-80,\"px\"))}var i=2e3;function a(){d(this).toggleClass(\"fr-not-empty\",!0)}function s(){var e=d(this);e.toggleClass(\"fr-not-empty\",\"\"!==e.val())}function m(e){return g[e]&&h.node.hasClass(g[e],\"fr-active\")&&h.core.sameInstance(g[e])||!1}function v(e){for(var t in g)if(Object.prototype.hasOwnProperty.call(g,t)&&m(t)&&(void 0===e||g[t].data(\"instance\")===e))return g[t];return!1}function n(e){var t=null;if(t=\"string\"!=typeof e?e:g[e],\"filesManager.insert\"===e&&h.filesManager!==undefined&&h.filesManager.isChildWindowOpen())return!1;if(t&&h.node.hasClass(t,\"fr-active\")&&(t.removeClass(\"fr-active fr-above\"),h.events.trigger(\"popups.hide.\".concat(e)),h.$tb&&(1<h.opts.zIndex?h.$tb.css(\"zIndex\",h.opts.zIndex+1):h.$tb.css(\"zIndex\",\"\")),h.events.disableBlur(),t.find(\"input, textarea, button\").each(function(){this===this.ownerDocument.activeElement&&this.blur()}),t.find(\"input, textarea\").attr(\"disabled\",\"disabled\"),u))for(var n=0;n<u.length;n++)d(u[n]).removeClass(\"fr-btn-active-popup\")}function b(e){for(var t in void 0===e&&(e=[]),g)Object.prototype.hasOwnProperty.call(g,t)&&e.indexOf(t)<0&&n(t)}function t(){h.shared.exit_flag=!0}function L(){h.shared.exit_flag=!1}function l(){return h.shared.exit_flag}function c(e,t){var n,r=function c(e,t){var n=V.POPUP_TEMPLATES[e];if(!n)return null;for(var r in\"function\"==typeof n&&(n=n.apply(h)),t)Object.prototype.hasOwnProperty.call(t,r)&&(n=n.replace(\"[_\".concat(r.toUpperCase(),\"_]\"),t[r]));return n}(e,t),o=d(h.doc.createElement(\"DIV\"));if(!r)return\"filesManager.insert\"===e?o.addClass(\"fr-popup fr-files-manager fr-empty\"):o.addClass(\"fr-popup fr-empty\"),(n=d(\"body\").first()).append(o),o.data(\"container\",n),g[e]=o;\"filesManager.insert\"===e?o.addClass(\"fr-popup fr-files-manager\".concat(h.helpers.isMobile()?\" fr-mobile\":\" fr-desktop\").concat(h.opts.toolbarInline?\" fr-inline\":\"\")):o.addClass(\"fr-popup\".concat(h.helpers.isMobile()?\" fr-mobile\":\" fr-desktop\").concat(h.opts.toolbarInline?\" fr-inline\":\"\")),o.html(r),h.opts.theme&&o.addClass(\"\".concat(h.opts.theme,\"-theme\")),1<h.opts.zIndex&&(!h.opts.editInPopup&&h.$tb?h.$tb.css(\"z-index\",h.opts.zIndex+2):o.css(\"z-index\",h.opts.zIndex+2)),\"auto\"!==h.opts.direction&&o.removeClass(\"fr-ltr fr-rtl\").addClass(\"fr-\".concat(h.opts.direction)),o.find(\"input, textarea\").attr(\"dir\",h.opts.direction).attr(\"disabled\",\"disabled\"),(n=d(\"body\").first()).append(o),o.data(\"container\",n);var i=(g[e]=o).find(\".fr-color-hex-layer\");if(0<i.length){var a=h.helpers.getPX(o.find(\".fr-color-set > span\").css(\"width\")),s=h.helpers.getPX(i.css(\"paddingLeft\")),l=h.helpers.getPX(i.css(\"paddingRight\"));i.css(\"width\",a*h.opts.colorsStep+s+l)}return h.button.bindCommands(o,!1),o}function E(a){var s=g[a];return{_windowResize:function(){var e=s.data(\"instance\")||h;if(!e.helpers.isMobile()&&s.isVisible()){var t=s.find(\".fr-file-progress-bar-layer\");if(\"file.insert\"===a&&0<t.length&&t.hasClass(\"fr-active\")){var n=h.$tb.find('.fr-command[data-cmd=\"insertFile\"]');e.events.disableBlur();var r=h.button.getPosition(n),o=r.left,i=r.top;h.position.at(o,i,g[a],0),e.events.enableBlur()}else e.events.disableBlur(),e.popups.hide(a),e.events.enableBlur()}},_inputFocus:function(e){var t=s.data(\"instance\")||h,n=d(e.currentTarget);if(n.is(\"input:file\")&&n.closest(\".fr-layer\").addClass(\"fr-input-focus\"),e.preventDefault(),e.stopPropagation(),setTimeout(function(){t.events.enableBlur()},100),t.helpers.isMobile()){var r=d(t.o_win).scrollTop();setTimeout(function(){d(t.o_win).scrollTop(r)},0)}},_inputBlur:function(e){var t=s.data(\"instance\")||h,n=d(e.currentTarget);n.is(\"input:file\")&&n.closest(\".fr-layer\").removeClass(\"fr-input-focus\"),document.activeElement!==this&&d(this).isVisible()&&(t.events.blurActive()&&t.events.trigger(\"blur\"),t.events.enableBlur())},_editorKeydown:function(e){var t=s.data(\"instance\")||h;t.keys.ctrlKey(e)||e.which===V.KEYCODE.ALT||e.which===V.KEYCODE.ESC||(m(a)&&s.findVisible(\".fr-back\").length?t.button.exec(s.findVisible(\".fr-back\").first()):e.which!==V.KEYCODE.ALT&&t.popups.hide(a))},_preventFocus:function(e){var t=s.data(\"instance\")||h,n=e.originalEvent?e.originalEvent.target||e.originalEvent.originalTarget:null;\"mouseup\"===e.type||d(n).is(\":focus\")||t.events.disableBlur(),\"mouseup\"!==e.type||d(n).hasClass(\"fr-command\")||0<d(n).parents(\".fr-command\").length||d(n).hasClass(\"fr-dropdown-content\")||d(n).hasClass(\"fr-dropdown-menu\")||h.button.hideActiveDropdowns(s),(h.browser.safari||h.browser.mozilla)&&\"mousedown\"===e.type&&d(n).is(\"input[type=file]\")&&t.events.disableBlur();var r=\"input, textarea, button, select, label, .fr-command\";if(n&&!d(n).is(r)&&0===d(n).parents(r).length)return e.stopPropagation(),!1;n&&d(n).is(r)&&e.stopPropagation(),L()},_editorMouseup:function(){s.isVisible()&&l()&&0<s.findVisible(\"input:focus, textarea:focus, button:focus, select:focus\").length&&h.events.disableBlur()},_windowMouseup:function(e){if(!h.core.sameInstance(s))return!0;var t=s.data(\"instance\")||h;s.isVisible()&&l()&&(e.stopPropagation(),t.markers.remove(),t.popups.hide(a),L())},_windowKeydown:function(e){if(!h.core.sameInstance(s))return!0;var t=s.data(\"instance\")||h,n=e.which;if(V.KEYCODE.ESC===n){if(t.popups.isVisible(a)&&t.opts.toolbarInline)return e.stopPropagation(),t.popups.isVisible(a)&&(s.findVisible(\".fr-back\").length?(t.button.exec(s.findVisible(\".fr-back\").first()),t.accessibility.focusPopupButton(s)):s.findVisible(\".fr-dismiss\").length?t.button.exec(s.findVisible(\".fr-dismiss\").first()):(t.popups.hide(a),t.toolbar.showInline(null,!0),t.accessibility.focusPopupButton(s))),!1;if(t.popups.isVisible(a))return s.findVisible(\".fr-back\").length?(t.button.exec(s.findVisible(\".fr-back\").first),t.accessibility.focusPopupButton(s)):s.findVisible(\".fr-dismiss\").length?t.button.exec(s.findVisible(\".fr-dismiss\").first()):(t.popups.hide(a),t.accessibility.focusPopupButton(s)),!1}},_repositionPopup:function(){if(!h.opts.height&&!h.opts.heightMax||h.opts.toolbarInline)return!0;if(h.$wp&&m(a)&&s.parent().get(0)===h.$sc.get(0)){var e=s.offset().top-h.$wp.offset().top,t=h.$wp.outerHeight();h.node.hasClass(s.get(0),\"fr-above\")&&(e+=s.outerHeight()),t<e||e<0?s.addClass(\"fr-hidden\"):s.removeClass(\"fr-hidden\")}},handleWindowClick:function(e){if(!h.core.sameInstance(s))return!0;var t=s.data(\"instance\")||h;s.isVisible()&&e.target&&(0<d(e.target).find(\"body\").length||\"BODY\"===d(e.target)[0].tagName)&&(e.stopPropagation(),t.popups.hide(a))}}}function f(e,t){h.events.on(\"mouseup\",e._editorMouseup,!0),h.$wp&&h.events.on(\"keydown\",e._editorKeydown),h.events.on(\"focus\",function(){g[t].removeClass(\"focused\")}),h.events.on(\"blur\",function(){v()&&h.markers.remove(),h.helpers.isMobile()?g[t].hasClass(\"focused\")?(b(),g[t].removeClass(\"focused\")):g[t].addClass(\"focused\"):g[t].find(\"iframe\").length||b()}),h.$wp&&!h.helpers.isMobile()&&h.events.$on(h.$wp,\"scroll.popup\".concat(t),e._repositionPopup),h.events.on(\"window.mouseup\",e._windowMouseup,!0),h.events.on(\"window.keydown\",e._windowKeydown,!0),h.opts.iframe&&window.addEventListener(\"click\",e.handleWindowClick),g[t].data(\"inst\".concat(h.id),!0),h.events.on(\"destroy\",function(){h.core.sameInstance(g[t])&&(d(\"body\").first().append(g[t]),g[t].removeClass(\"fr-active\"))},!0)}function p(){var e=d(this).prev().children().first();e.attr(\"checked\",!e.attr(\"checked\"))}function e(){for(var e in g)if(Object.prototype.hasOwnProperty.call(g,e)){var t=g[e];t&&(t.html(\"\").removeData().remove(),g[e]=null)}g=[]}return h.shared.exit_flag=!1,{_init:function y(){r=window.innerHeight,h.events.on(\"shared.destroy\",e,!0),h.events.on(\"window.mousedown\",t),h.events.on(\"window.touchmove\",L),h.events.$on(d(h.o_win),\"scroll\",L),h.events.on(\"mousedown\",function(e){v()&&(e.stopPropagation(),h.$el.find(\".fr-marker\").remove(),t(),h.events.disableBlur())})},create:function S(e,t){var n=c(e,t),r=E(e);f(r,e),h.events.$on(n,\"mousedown mouseup touchstart touchend touch\",\"*\",r._preventFocus,!0),h.events.$on(n,\"focus\",\"input, textarea, button, select\",r._inputFocus,!0),h.events.$on(n,\"blur\",\"input, textarea, button, select\",r._inputBlur,!0);var o=n.find(\"input, textarea\");return function i(e){for(var t=0;t<e.length;t++){var n=e[t],r=d(n);0===r.next().length&&r.attr(\"placeholder\")&&(r.after('<label for=\"'.concat(r.attr(\"id\"),'\">').concat(r.attr(\"placeholder\"),\"</label>\")),r.attr(\"placeholder\",\"\"))}}(o),h.events.$on(o,\"focus\",a),h.events.$on(o,\"blur change\",s),h.events.$on(n,\"click\",\".fr-checkbox + label\",p),h.accessibility.registerPopup(e),h.helpers.isIOS()&&h.events.$on(n,\"touchend\",\"label\",function(){d(\"#\".concat(d(this).attr(\"for\"))).prop(\"checked\",function(e,t){return!t})},!0),h.events.$on(d(h.o_win),\"resize\",r._windowResize,!0),\"filesManager.insert\"===e&&g[\"filesManager.insert\"].css(\"zIndex\",2147483641),n},get:function N(e){var t=g[e];return t&&!t.data(\"inst\".concat(h.id))&&f(E(e),e),t},show:function T(e,t,n,r,o){if(m(e)||(v()&&0<h.$el.find(\".fr-marker\").length?(h.events.disableBlur(),h.selection.restore()):v()||(h.events.disableBlur(),h.events.focus(),h.events.enableBlur())),b([e]),!g[e])return!1;var i=h.button.getButtons(\".fr-dropdown.fr-active\");i.removeClass(\"fr-active\").attr(\"aria-expanded\",!1).parents(\".fr-toolbar\").css(\"zIndex\",\"\").find(\"> .fr-dropdown-wrapper\").css(\"height\",\"\"),i.next().attr(\"aria-hidden\",!0).css(\"overflow\",\"\").find(\"> .fr-dropdown-wrapper\").css(\"height\",\"\"),g[e].data(\"instance\",h),h.$tb&&h.$tb.data(\"instance\",h);var a=m(e);g[e].addClass(\"fr-active\").removeClass(\"fr-hidden\").find(\"input, textarea\").removeAttr(\"disabled\");var s=g[e].data(\"container\");if(function p(e,t){t.isVisible()||(t=h.$sc),t.contains([g[e].get(0)])||t.append(g[e])}(e,s),h.opts.toolbarInline&&s&&h.$tb&&s.get(0)===h.$tb.get(0)&&(C(e,h.$sc),n=h.$tb.offset().top-h.helpers.getPX(h.$tb.css(\"margin-top\")),t=h.$tb.offset().left+h.$tb.outerWidth()/2,h.node.hasClass(h.$tb.get(0),\"fr-above\")&&n&&(n+=h.$tb.outerHeight()),r=0),s=g[e].data(\"container\"),h.opts.iframe&&!r&&!a){var l=h.helpers.getPX(h.$wp.find(\".fr-iframe\").css(\"padding-top\")),c=h.helpers.getPX(h.$wp.find(\".fr-iframe\").css(\"padding-left\"));t&&(t-=h.$iframe.offset().left+c),n&&(n-=h.$iframe.offset().top+l)}s.is(h.$tb)?h.$tb.css(\"zIndex\",(h.opts.zIndex||1)+4):g[e].css(\"zIndex\",(h.opts.zIndex||1)+3),h.opts.toolbarBottom&&s&&h.$tb&&s.get(0)===h.$tb.get(0)&&(g[e].addClass(\"fr-above\"),n&&(n-=g[e].outerHeight())),o&&(t-=g[e].width()/2),t+g[e].outerWidth()>h.$sc.offset().left+h.$sc.width()&&(t-=t+g[e].outerWidth()-h.$sc.offset().left-h.$sc.width()),t<h.$sc.offset().left&&\"rtl\"===h.opts.direction&&(t=h.$sc.offset().left),g[e].removeClass(\"fr-active\"),h.position.at(t,n,g[e],r||0);var d=h.node.blockParent(h.selection.blocks()[0]);if(d&&\"false\"===d.getAttribute(\"contenteditable\"))g[e].removeClass(\"fr-active\");else{var f=h.selection.element().parentElement.getAttribute(\"contenteditable\");f&&\"false\"===f?g[e].removeClass(\"fr-active\"):g[e].addClass(\"fr-active\")}a||h.accessibility.focusPopup(g[e]),h.opts.toolbarInline&&h.toolbar.hide(),h.$tb&&(u=h.$tb.find(\".fr-btn-active-popup\")),h.events.trigger(\"popups.show.\".concat(e)),E(e)._repositionPopup(),L()},hide:n,onHide:function M(e,t){h.events.on(\"popups.hide.\".concat(e),t)},hideAll:b,setContainer:C,refresh:function A(e){g[e].data(\"instance\",h),h.events.trigger(\"popups.refresh.\".concat(e));for(var t=g[e].find(\".fr-command\"),n=0;n<t.length;n++){var r=d(t[n]);0===r.parents(\".fr-dropdown-menu\").length&&h.button.refresh(r)}},onRefresh:function x(e,t){h.events.on(\"popups.refresh.\".concat(e),t)},onShow:function O(e,t){h.events.on(\"popups.show.\".concat(e),t)},isVisible:m,setFileListHeight:o,areVisible:v,setPopupDimensions:function w(e,t){t&&e.find(\".fr-upload-progress-layer\").get(0).clientHeight<i&&(e.find(\".fr-upload-progress\").addClass(\"fr-height-auto\"),h.popups.get(\"filesManager.insert\").addClass(\"fr-height-auto\"),e.find(\".fr-upload-progress\").removeClass(\"fr-height-set\"),i=2e3),e.get(0).clientHeight>window.innerHeight/2&&(window.innerWidth<500?e.get(0).clientHeight>.6*r&&o(e):400<e.get(0).clientHeight&&o(e),i=e.find(\".fr-upload-progress-layer\").get(0).clientHeight);var n=window.innerWidth;switch(!0){case n<=320:e.width(200);break;case n<=420:e.width(250);break;case n<=520:e.width(300);break;case n<=720:e.width(400);break;case 720<n:e.width(530)}}}},V.MODULES.accessibility=function(f){var l,p=f.$,i=!0;function c(t){for(var e=f.$el.find('[contenteditable=\"true\"]'),n=!1,r=0;e.get(r);)p(e.get(r)).is(\":focus\")&&(n=!0),r++;if(t&&t.length&&!n){t.data(\"blur-event-set\")||t.parents(\".fr-popup\").length||(f.events.$on(t,\"blur\",function(){var e=t.parents(\".fr-toolbar, .fr-popup\").data(\"instance\")||f;e.events.blurActive()&&!f.core.hasFocus()&&e.events.trigger(\"blur\"),setTimeout(function(){e.events.enableBlur()},100)},!0),t.data(\"blur-event-set\",!0));var o=t.parents(\".fr-toolbar, .fr-popup\").data(\"instance\")||f;!f.browser.safari||l&&null!=f.shared.safariSelection||(f.shared.safariSelection=f.selection.get().getRangeAt(0).cloneRange()),o.events.disableBlur(),t.get(0).focus(),f.shared.$f_el=t}}function h(e,t){var n=t?\"last\":\"first\",r=s(C(e))[n]();if(r.length)return c(r),!0}function a(e){return e.is(\"input, textarea, select\")&&t(),f.events.disableBlur(),e.get(0).focus(),!0}function u(e,t){var n=e.find(\"input, textarea, button, select\").filter(function(){return p(this).isVisible()}).not(\":disabled\");if((n=t?n.last():n.first()).length)return a(n);if(f.shared.with_kb){var r=e.findVisible(\".fr-active-item\").first();if(r.length)return a(r);var o=e.findVisible(\"[tabIndex]\").first();if(o.length)return a(o)}}function t(){0===f.$el.find(\".fr-marker\").length&&f.core.hasFocus()&&f.selection.save()}function d(){var e=f.popups.areVisible();if(e){var t=e.find(\".fr-buttons\");return t.find(\"button:focus, .fr-group span:focus\").length?!h(e.data(\"instance\").$tb):!h(t)}return!h(f.$tb)}function g(){var e=null;return f.shared.$f_el.is(\".fr-dropdown.fr-active\")?e=f.shared.$f_el:f.shared.$f_el.closest(\".fr-dropdown-menu\").prev().is(\".fr-dropdown.fr-active\")&&(e=f.shared.$f_el.closest(\".fr-dropdown-menu\").prev()),e}function s(e){for(var t=-1,n=0;n<e.length;n++)p(e[n]).hasClass(\"fr-open\")&&(t=n);var r=e.index(f.$tb.find(\".fr-more-toolbar.fr-expanded > button.fr-command\").first());if(0<r&&-1!==t){var o=e.slice(r,e.length),i=(e=e.slice(0,r)).slice(0,t+1),a=e.slice(t+1,e.length);e=i;for(var s=0;s<o.length;s++)e.push(o[s]);for(var l=0;l<a.length;l++)e.push(a[l])}return e}function C(e){return e.findVisible(\"button:not(.fr-disabled), .fr-group span.fr-command\").filter(function(e){var t=p(e).parents(\".fr-more-toolbar\");return 0===t.length||0<t.length&&t.hasClass(\"fr-expanded\")})}function n(e,t,n){if(f.shared.$f_el){var r=g();r&&(f.button.click(r),f.shared.$f_el=r);var o=s(C(e)),i=o.index(f.shared.$f_el);if(0===i&&!n||i===o.length-1&&n){var a;if(t){if(e.parent().is(\".fr-popup\"))a=!u(e.parent().children().not(\".fr-buttons\"),!n);!1===a&&(f.shared.$f_el=null)}t&&!1===a||h(e,!n)}else c(p(o.get(i+(n?1:-1))));return!1}}function m(e,t){return n(e,t,!0)}function v(e,t){return n(e,t)}function b(e){if(f.shared.$f_el){var t;if(f.shared.$f_el.is(\".fr-dropdown.fr-active\"))return c(t=e?f.shared.$f_el.next().find(\".fr-command:not(.fr-disabled)\").first():f.shared.$f_el.next().find(\".fr-command:not(.fr-disabled)\").last()),!1;if(f.shared.$f_el.is(\"a.fr-command\"))return(t=e?f.shared.$f_el.closest(\"li\").nextAllVisible().first().find(\".fr-command:not(.fr-disabled)\").first():f.shared.$f_el.closest(\"li\").prevAllVisible().first().find(\".fr-command:not(.fr-disabled)\").first()).length||(t=e?f.shared.$f_el.closest(\".fr-dropdown-menu\").find(\".fr-command:not(.fr-disabled)\").first():f.shared.$f_el.closest(\".fr-dropdown-menu\").find(\".fr-command:not(.fr-disabled)\").last()),c(t),!1}}function L(){if(f.shared.$f_el){if(f.shared.$f_el.hasClass(\"fr-dropdown\"))f.button.click(f.shared.$f_el);else if(f.shared.$f_el.is(\"button.fr-back\")){f.opts.toolbarInline&&(f.events.disableBlur(),f.events.focus());var e=f.popups.areVisible(f);e&&(f.shared.with_kb=!1),f.button.click(f.shared.$f_el),y(e)}else{if(f.events.disableBlur(),f.button.click(f.shared.$f_el),f.shared.$f_el.attr(\"data-group-name\")){var t=f.$tb.find('.fr-more-toolbar[data-name=\"'.concat(f.shared.$f_el.attr(\"data-group-name\"),'\"]')),n=f.shared.$f_el;t.hasClass(\"fr-expanded\")&&(n=t.findVisible(\"button:not(.fr-disabled)\").first()),n&&c(n)}else if(f.shared.$f_el.attr(\"data-popup\")){var r=f.popups.areVisible(f);r&&r.data(\"popup-button\",f.shared.$f_el)}else if(f.shared.$f_el.attr(\"data-modal\")){var o=f.modals.areVisible(f);o&&o.data(\"modal-button\",f.shared.$f_el)}f.shared.$f_el=null}return!1}}function E(){if(f.shared.$f_el&&(f.events.disableBlur(),f.shared.$f_el.blur(),f.shared.$f_el=null),!1!==f.events.trigger(\"toolbar.focusEditor\")&&(f.events.disableBlur(),f.$el.get(0).focus(),f.events.focus(),f.browser.safari&&f.shared.safariSelection)){var e=f.shared.safariSelection,t=e.startContainer,n=e.endContainer,r=e.startOffset,o=e.endOffset,i=f.doc.createRange();i.setStart(t,r),i.setEnd(n,o),f.selection.get().removeAllRanges(),f.selection.get().addRange(i),f.shared.safariSelection=null}}function o(r){r&&r.length&&(f.events.$on(r,\"keydown\",function(e){if(!p(e.target).is(\"a.fr-command, button.fr-command, .fr-group span.fr-command\"))return!0;var t=r.parents(\".fr-popup\").data(\"instance\")||r.data(\"instance\")||f;f.shared.with_kb=!0;var n=t.accessibility.exec(e,r);return f.shared.with_kb=!1,n},!0),f.events.$on(r,\"mouseenter\",\"[tabIndex]\",function(e){var t=r.parents(\".fr-popup\").data(\"instance\")||r.data(\"instance\")||f;if(!i)return e.stopPropagation(),void e.preventDefault();var n=p(e.currentTarget);t.shared.$f_el&&t.shared.$f_el.not(n)&&t.accessibility.focusEditor()},!0),f.$tb&&f.events.$on(f.$tb,\"transitionend\",\".fr-more-toolbar\",function(){f.shared.$f_el=p(document.activeElement)}))}function y(e){var t=e.data(\"popup-button\");t&&setTimeout(function(){c(t),e.data(\"popup-button\",null)},0)}function S(e){var t=f.popups.areVisible(e);t&&t.data(\"popup-button\",null)}function e(e){var t=-1!==navigator.userAgent.indexOf(\"Mac OS X\")?e.metaKey:e.ctrlKey;if(e.which!==V.KEYCODE.F10||t||e.shiftKey||!e.altKey)return!0;f.shared.with_kb=!0;var n=f.popups.areVisible(f),r=!1;return n&&(r=u(n.children().not(\".fr-buttons\"))),r||d(),f.shared.with_kb=!1,e.preventDefault(),e.stopPropagation(),!1}return{_init:function r(){f.$wp?f.events.on(\"keydown\",e,!0):f.events.$on(f.$win,\"keydown\",e,!0),f.events.on(\"mousedown\",function(e){S(f),f.shared.$f_el&&f.el.isSameNode(f.shared.$f_el[0])&&(f.accessibility.restoreSelection(),e.stopPropagation(),f.events.disableBlur(),f.shared.$f_el=null)},!0),f.events.on(\"blur\",function(){f.shared.$f_el=null,S(f)},!0)},registerPopup:function N(e){var t=f.popups.get(e),n=function r(c){var d=f.popups.get(c);return{_tiKeydown:function(e){var t=d.data(\"instance\")||f;if(!1===t.events.trigger(\"popup.tab\",[e]))return!1;var n=e.which,r=d.find(\":focus\").first();if(V.KEYCODE.TAB===n){e.preventDefault();var o=d.children().not(\".fr-buttons\"),i=o.findVisible(\"input, textarea, button, select\").not(\".fr-no-touch input, .fr-no-touch textarea, .fr-no-touch button, .fr-no-touch select, :disabled\").toArray(),a=i.indexOf(this)+(e.shiftKey?-1:1);if(0<=a&&a<i.length)return t.events.disableBlur(),p(i[a]).focus(),e.stopPropagation(),!1;var s=d.find(\".fr-buttons\");if(s.length&&h(s,Boolean(e.shiftKey)))return e.stopPropagation(),!1;if(u(o))return e.stopPropagation(),!1}else{if(V.KEYCODE.ENTER!==n||!e.target||\"TEXTAREA\"===e.target.tagName)return V.KEYCODE.ESC===n?(e.preventDefault(),e.stopPropagation(),t.accessibility.restoreSelection(),t.popups.isVisible(c)&&d.findVisible(\".fr-back\").length?(t.opts.toolbarInline&&(t.events.disableBlur(),t.events.focus()),t.button.exec(d.findVisible(\".fr-back\").first()),y(d)):t.popups.isVisible(c)&&d.findVisible(\".fr-dismiss\").length?t.button.exec(d.findVisible(\".fr-dismiss\").first()):(t.popups.hide(c),t.opts.toolbarInline&&t.toolbar.showInline(null,!0),y(d)),!1):V.KEYCODE.SPACE===n&&(r.is(\".fr-submit\")||r.is(\".fr-dismiss\"))?(e.preventDefault(),e.stopPropagation(),t.events.disableBlur(),t.button.exec(r),!0):t.keys.isBrowserAction(e)?void e.stopPropagation():r.is(\"input[type=text], textarea\")?void e.stopPropagation():V.KEYCODE.SPACE===n&&(r.is(\".fr-link-attr\")||r.is(\"input[type=file]\"))?void e.stopPropagation():(e.stopPropagation(),e.preventDefault(),!1);var l=null;0<d.findVisible(\".fr-submit\").length?l=d.findVisible(\".fr-submit\").first():d.findVisible(\".fr-dismiss\").length&&(l=d.findVisible(\".fr-dismiss\").first()),l&&(e.preventDefault(),e.stopPropagation(),t.events.disableBlur(),t.button.exec(l))}},_tiMouseenter:function(){var e=d.data(\"instance\")||f;S(e)}}}(e);o(t.find(\".fr-buttons\")),f.events.$on(t,\"mouseenter\",\"tabIndex\",n._tiMouseenter,!0),f.events.$on(t.children().not(\".fr-buttons\"),\"keydown\",\"[tabIndex]\",n._tiKeydown,!0),f.popups.onHide(e,function(){(t.data(\"instance\")||f).accessibility.restoreSelection()}),f.popups.onShow(e,function(){i=!1,setTimeout(function(){i=!0},0)})},registerToolbar:o,focusToolbarElement:c,focusToolbar:h,focusContent:u,focusPopup:function T(r){var o=r.children().not(\".fr-buttons\");o.data(\"mouseenter-event-set\")||(f.events.$on(o,\"mouseenter\",\"[tabIndex]\",function(e){var t=r.data(\"instance\")||f;if(!i)return e.stopPropagation(),void e.preventDefault();var n=o.find(\":focus\").first();n.length&&!n.is(\"input, button, textarea, select\")&&(t.events.disableBlur(),n.blur(),t.events.disableBlur(),t.events.focus())}),o.data(\"mouseenter-event-set\",!0)),!u(o)&&f.shared.with_kb&&h(r.find(\".fr-buttons\"))},focusModal:function M(e){f.core.hasFocus()||(f.events.disableBlur(),f.events.focus()),f.accessibility.saveSelection(),f.events.disableBlur(),f.el.blur(),f.selection.clear(),f.events.disableBlur(),f.shared.with_kb?e.find(\".fr-command[tabIndex], [tabIndex]\").first().focus():e.find(\"[tabIndex]\").first().focus()},focusEditor:E,focusPopupButton:y,focusModalButton:function A(e){var t=e.data(\"modal-button\");t&&setTimeout(function(){c(t),e.data(\"modal-button\",null)},0)},hasFocus:function x(){return null!==f.shared.$f_el},exec:function O(e,t){var n=-1!==navigator.userAgent.indexOf(\"Mac OS X\")?e.metaKey:e.ctrlKey,r=e.which,o=!1;return r!==V.KEYCODE.TAB||n||e.shiftKey||e.altKey?r!==V.KEYCODE.ARROW_RIGHT||n||e.shiftKey||e.altKey?r!==V.KEYCODE.TAB||n||!e.shiftKey||e.altKey?r!==V.KEYCODE.ARROW_LEFT||n||e.shiftKey||e.altKey?r!==V.KEYCODE.ARROW_UP||n||e.shiftKey||e.altKey?r!==V.KEYCODE.ARROW_DOWN||n||e.shiftKey||e.altKey?r!==V.KEYCODE.ENTER&&r!==V.KEYCODE.SPACE||n||e.shiftKey||e.altKey?r!==V.KEYCODE.ESC||n||e.shiftKey||e.altKey?r!==V.KEYCODE.F10||n||e.shiftKey||!e.altKey||(o=d()):o=function i(e){if(f.shared.$f_el){var t=g();return t?(f.button.click(t),c(t)):e.parent().findVisible(\".fr-back\").length?(f.shared.with_kb=!1,f.opts.toolbarInline&&(f.events.disableBlur(),f.events.focus()),f.button.exec(e.parent().findVisible(\".fr-back\")).first(),y(e.parent())):f.shared.$f_el.is(\"button, .fr-group span\")&&(e.parent().is(\".fr-popup\")?(f.accessibility.restoreSelection(),f.shared.$f_el=null,!1!==f.events.trigger(\"toolbar.esc\")&&(f.popups.hide(e.parent()),f.opts.toolbarInline&&f.toolbar.showInline(null,!0),y(e.parent()))):E()),!1}}(t):o=L():o=function a(){return f.shared.$f_el&&f.shared.$f_el.is(\".fr-dropdown:not(.fr-active)\")?L():b(!0)}():o=function s(){return b()}():o=v(t):o=v(t,!0):o=m(t):(l=r,o=m(t,!0)),f.shared.$f_el||void 0!==o||(o=!0),!o&&f.keys.isBrowserAction(e)&&(o=!0),!!o||(e.preventDefault(),e.stopPropagation(),!1)},saveSelection:t,restoreSelection:function w(){f.$el.find(\".fr-marker\").length&&(f.events.disableBlur(),f.selection.restore(),f.events.enableBlur())}}},Object.assign(V.DEFAULTS,{tooltips:!0}),V.MODULES.tooltip=function(p){var h=p.$;function r(){p.helpers.isMobile()||p.$tooltip&&p.$tooltip.removeClass(\"fr-visible\").css(\"left\",\"-3000px\").css(\"position\",\"fixed\")}function o(e,t){if(!p.helpers.isMobile()){var n=e.attr(\"id\")&&e.attr(\"id\").split(\"-\")[0],r=e.attr(\"title\"),o=p.opts.trackChangesEnabled,i=p.opts.showChangesEnabled;if(p.opts.toolbarContainer){for(var a=!1,s=0;s<V.INSTANCES.length;s++)if(V.INSTANCES[s].core.hasFocus()){o=V.INSTANCES[s].opts.trackChangesEnabled,i=V.INSTANCES[s].opts.showChangesEnabled,a=!0;break}a||(i=o=e.hasClass(\"fr-active\"))}if(\"trackChanges\"===n)r=o?\"Disable Track Changes\":\"Enable Track Changes\";else if(\"showChanges\"===n)r=i?\"Hide Changes\":\"Show Changes\";else if((\"applyAll\"===n||\"removeAll\"===n||\"applyLast\"===n||\"removeLast\"===n)&&0===p.track_changes.getPendingChanges().length)return;if(e.data(\"title\",r),e.data(\"title\")){p.$tooltip||function f(){if(p.opts.tooltips&&!p.helpers.isMobile()){if(p.shared.$tooltip)p.$tooltip=p.shared.$tooltip;else{p.shared.$tooltip=h(p.doc.createElement(\"DIV\")).addClass(\"fr-tooltip\"),p.$tooltip=p.shared.$tooltip,p.opts.theme&&p.$tooltip.addClass(\"\".concat(p.opts.theme,\"-theme\"));var e=p.$wp.closest(\"dialog\");0<e.length?e.first().append(p.$tooltip):h(p.o_doc).find(\"body\").first().append(p.$tooltip)}p.events.on(\"shared.destroy\",function(){p.$tooltip.html(\"\").removeData().remove(),p.$tooltip=null},!0)}}(),e.removeAttr(\"title\"),p.$tooltip.text(p.language.translate(e.data(\"title\"))),p.$tooltip.addClass(\"fr-visible\");var l=e.offset().left+(e.outerWidth()-p.$tooltip.outerWidth())/2;l<0&&(l=0),l+p.$tooltip.outerWidth()>h(p.o_win).width()&&(l=h(p.o_win).width()-p.$tooltip.outerWidth()),void 0===t&&(t=p.opts.toolbarBottom),e.offset().top-h(window).scrollTop()+e.outerHeight()+10>=h(window).height()&&(t=!0);var c=t?e.offset().top-p.$tooltip.height():e.offset().top+e.outerHeight();p.$tooltip.css(\"position\",\"\"),p.$tooltip.css(\"left\",l),p.$tooltip.css(\"top\",Math.ceil(c));var d=p.$wp.closest(\"dialog\");0<d.length?(p.$tooltip.css(\"margin-left\",-d.first().offset().left),p.$tooltip.css(\"margin-top\",-d.first().offset().top)):\"static\"!==h(p.o_doc).find(\"body\").first().css(\"position\")?(p.$tooltip.css(\"margin-left\",-h(p.o_doc).find(\"body\").first().offset().left),p.$tooltip.css(\"margin-top\",-h(p.o_doc).find(\"body\").first().offset().top)):(p.$tooltip.css(\"margin-left\",\"\"),p.$tooltip.css(\"margin-top\",\"\"))}}}return{hide:r,to:o,bind:function i(e,t,n){p.opts.tooltips&&!p.helpers.isMobile()&&(p.events.$on(e,\"mouseover\",t,function(e){p.node.hasClass(e.currentTarget,\"fr-disabled\")||p.edit.isDisabled()||o(h(e.currentTarget),n)},!0),p.events.$on(e,\"mouseout \".concat(p._mousedown,\" \").concat(p._mouseup),t,function(){r()},!0))}}},V.TOOLBAR_VISIBLE_BUTTONS=3,V.MODULES.button=function(g){var u=g.$,a=[];(g.opts.toolbarInline||g.opts.toolbarContainer)&&(g.shared.buttons||(g.shared.buttons=[]),a=g.shared.buttons);var s=[];function l(e,t,n){for(var r=u(),o=0;o<e.length;o++){var i=u(e[o]);if(i.is(t)&&(r=r.add(i)),n&&i.is(\".fr-dropdown\")){var a=i.next().find(t);r=r.add(a)}}return r}function C(e,t){var n,r=u();if(!e)return r;for(n in r=(r=r.add(l(a,e,t))).add(l(s,e,t)),g.shared.popups)if(Object.prototype.hasOwnProperty.call(g.shared.popups,n)){var o=g.shared.popups[n].children().find(e);r=r.add(o)}for(n in g.shared.modals)if(Object.prototype.hasOwnProperty.call(g.shared.modals,n)){var i=g.shared.modals[n].$modal.find(e);r=r.add(i)}return r}function i(e){var t=e.next(),n=g.node.hasClass(e.get(0),\"fr-active\"),r=C(\".fr-dropdown.fr-active\").not(e),o=e.parents(\".fr-toolbar, .fr-popup\").data(\"instance\")||g;o.helpers.isIOS()&&!o.el.querySelector(\".fr-marker\")&&(o.selection.save(),o.selection.clear(),o.selection.restore()),t.parents(\".fr-more-toolbar\").addClass(\"fr-overflow-visible\");var i=0,a=0,s=t.find(\"> .fr-dropdown-wrapper\");if(!n){var l=e.data(\"cmd\");t.find(\".fr-command\").removeClass(\"fr-active\").attr(\"aria-selected\",!1),V.COMMANDS[l]&&V.COMMANDS[l].refreshOnShow&&V.COMMANDS[l].refreshOnShow.apply(o,[e,t]),t.css(\"left\",e.offset().left-e.parents(\".fr-btn-wrap, .fr-toolbar, .fr-buttons\").offset().left-(\"rtl\"===g.opts.direction?t.width()-e.outerWidth():0)),t.addClass(\"test-height\"),i=t.outerHeight(),a=g.helpers.getPX(s.css(\"max-height\")),t.removeClass(\"test-height\"),t.css(\"top\",\"\").css(\"bottom\",\"\");var c=e.outerHeight()/10;if(!g.opts.toolbarBottom&&t.offset().top+e.outerHeight()+i<u(g.o_doc).height())t.css(\"top\",e.position().top+e.outerHeight()-c);else{var d=0,f=e.parents(\".fr-more-toolbar\");0<f.length&&(d=f.first().height()),t.css(\"bottom\",e.parents(\".fr-popup, .fr-toolbar\").first().height()-d-e.position().top)}}(e.addClass(\"fr-blink\").toggleClass(\"fr-active\"),e.hasClass(\"fr-options\"))&&e.prev().toggleClass(\"fr-expanded\");e.hasClass(\"fr-active\")?(t.attr(\"aria-hidden\",!1),e.attr(\"aria-expanded\",!0),function h(e,t,n){n<=t&&(e.parent().css(\"overflow\",\"auto\"),e.parent().css(\"overflow-x\",\"hidden\")),e.css(\"height\",Math.min(t,n))}(s,i,a)):(t.attr(\"aria-hidden\",!0).css(\"overflow\",\"\"),e.attr(\"aria-expanded\",!1),s.css(\"height\",\"\")),setTimeout(function(){e.removeClass(\"fr-blink\")},300),t.css(\"margin-left\",\"\"),t.offset().left+t.outerWidth()>g.$sc.offset().left+g.$sc.width()&&t.css(\"margin-left\",-(t.offset().left+t.outerWidth()-g.$sc.offset().left-g.$sc.width())),t.offset().left<g.$sc.offset().left&&\"rtl\"===g.opts.direction&&t.css(\"margin-left\",g.$sc.offset().left),r.removeClass(\"fr-active\").attr(\"aria-expanded\",!1).next().attr(\"aria-hidden\",!0).css(\"overflow\",\"\").find(\"> .fr-dropdown-wrapper\").css(\"height\",\"\"),r.prev(\".fr-expanded\").removeClass(\"fr-expanded\"),r.parents(\".fr-toolbar:not(.fr-inline)\").css(\"zIndex\",\"\"),0!==e.parents(\".fr-popup\").length||g.opts.toolbarInline||(g.node.hasClass(e.get(0),\"fr-active\")?g.$tb.css(\"zIndex\",(g.opts.zIndex||1)+4):g.$tb.css(\"zIndex\",\"\"));var p=t.find(\"a.fr-command.fr-active\").first();g.helpers.isMobile()||(p.length?(g.accessibility.focusToolbarElement(p),s.scrollTop(Math.abs(p.parents(\".fr-dropdown-content\").offset().top-p.offset().top)-p.offset().top)):(g.accessibility.focusToolbarElement(e),s.scrollTop(0)))}function c(e){e.addClass(\"fr-blink\"),setTimeout(function(){e.removeClass(\"fr-blink\")},500);for(var t=e.data(\"cmd\"),n=[];void 0!==e.data(\"param\".concat(n.length+1));)n.push(e.data(\"param\".concat(n.length+1)));var r=C(\".fr-dropdown.fr-active\");r.length&&(r.removeClass(\"fr-active\").attr(\"aria-expanded\",!1).next().attr(\"aria-hidden\",!0).css(\"overflow\",\"\").find(\"> .fr-dropdown-wrapper\").css(\"height\",\"\"),r.prev(\".fr-expanded\").removeClass(\"fr-expanded\"),r.parents(\".fr-toolbar:not(.fr-inline)\").css(\"zIndex\",\"\")),e.parents(\".fr-popup, .fr-toolbar\").data(\"instance\").commands.exec(t,n)}function t(e){var t=e.parents(\".fr-popup, .fr-toolbar\").data(\"instance\"),n=g.popups.get(\"link.insert\");if(0===e.parents(\".fr-popup\").length&&e.data(\"popup\")&&!e.hasClass(\"fr-btn-active-popup\")&&(e.attr(\"id\")===\"insertLink-\".concat(g.id)&&n&&n.hasClass(\"fr-active\")||e.addClass(\"fr-btn-active-popup\")),0!==e.parents(\".fr-popup\").length||e.data(\"popup\")||t.popups.hideAll(),t.popups.areVisible()&&!t.popups.areVisible(t)){for(var r=0;r<V.INSTANCES.length;r++)V.INSTANCES[r]!==t&&V.INSTANCES[r].popups&&V.INSTANCES[r].popups.areVisible()&&V.INSTANCES[r].$el.find(\".fr-marker\").remove();t.popups.hideAll()}g.node.hasClass(e.get(0),\"fr-dropdown\")?i(e):(!function o(e){c(e)}(e),V.COMMANDS[e.data(\"cmd\")]&&!1!==V.COMMANDS[e.data(\"cmd\")].refreshAfterCallback&&t.button.bulkRefresh())}function d(e){t(u(e.currentTarget))}function f(e){var t=e.find(\".fr-dropdown.fr-active\");t.length&&(t.removeClass(\"fr-active\").attr(\"aria-expanded\",!1).next().attr(\"aria-hidden\",!0).css(\"overflow\",\"\").find(\"> .fr-dropdown-wrapper\").css(\"height\",\"\"),t.parents(\".fr-toolbar:not(.fr-inline)\").css(\"zIndex\",\"\"),t.prev().removeClass(\"fr-expanded\"))}function p(e){e.preventDefault(),e.stopPropagation()}function h(e){if(e.stopPropagation(),!g.helpers.isMobile())return!1}function m(e){var t=1<arguments.length&&arguments[1]!==undefined?arguments[1]:{},n=2<arguments.length?arguments[2]:undefined;if(g.helpers.isMobile()&&!1===t.showOnMobile)return\"\";var r=t.displaySelection;\"function\"==typeof r&&(r=r(g));var o=\"\";if(\"options\"!==t.type)if(r){var i=\"function\"==typeof t.defaultSelection?t.defaultSelection(g):t.defaultSelection;o='<span style=\"width:'.concat(t.displaySelectionWidth||100,'px\">').concat(g.language.translate(i||t.title),\"</span>\")}else o=g.icon.create(t.icon||e),o+='<span class=\"fr-sr-only\">'.concat(g.language.translate(t.title)||\"\",\"</span>\");var a=t.popup?' data-popup=\"true\"':\"\",s=t.modal?' data-modal=\"true\"':\"\",l=g.shortcuts.get(\"\".concat(e,\".\"));l=l?\" (\".concat(l,\")\"):\"\";var c=\"\".concat(e,\"-\").concat(g.id),d=\"dropdown-menu-\".concat(c),f='<button id=\"'.concat(c,'\"').concat(t.more_btn?' data-group-name=\"'.concat(c,'\" '):\"\",'type=\"button\" tabIndex=\"-1\" role=\"button\"').concat(t.toggle?' aria-pressed=\"false\"':\"\").concat(\"dropdown\"===t.type||\"options\"===t.type?' aria-controls=\"'.concat(d,'\" aria-expanded=\"false\" aria-haspopup=\"true\"'):\"\").concat(t.disabled?' aria-disabled=\"true\"':\"\",' title=\"').concat(g.language.translate(t.title)||\"\").concat(l,'\" class=\"fr-command fr-btn').concat(\"dropdown\"===t.type||\"options\"==t.type?\" fr-dropdown\":\"\").concat(\"options\"==t.type?\" fr-options\":\"\").concat(\"more\"==t.type?\" fr-more\":\"\").concat(t.displaySelection?\" fr-selection\":\"\").concat(t.back?\" fr-back\":\"\").concat(t.disabled?\" fr-disabled\":\"\").concat(n?\"\":\" fr-hidden\",'\" data-cmd=\"').concat(e,'\"').concat(a).concat(s,\">\").concat(o,\"</button>\");if(\"dropdown\"===t.type||\"options\"===t.type){var p='<div id=\"'.concat(d,'\" class=\"fr-dropdown-menu\" role=\"listbox\" aria-labelledby=\"').concat(c,'\" aria-hidden=\"true\"><div class=\"fr-dropdown-wrapper\" role=\"presentation\"><div class=\"fr-dropdown-content\" role=\"presentation\">');p+=function h(e,t){var n=\"\";if(t.html)\"function\"==typeof t.html?n+=t.html.call(g):n+=t.html;else{var r=t.options;for(var o in\"function\"==typeof r&&(r=r()),n+='<ul class=\"fr-dropdown-list\" role=\"presentation\">',r)if(Object.prototype.hasOwnProperty.call(r,o)){var i=g.shortcuts.get(\"\".concat(e,\".\").concat(o));i=i?'<span class=\"fr-shortcut\">'.concat(i,\"</span>\"):\"\",n+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"'.concat(\"options\"===t.type?e.replace(/Options/g,\"\"):e,'\" data-param1=\"').concat(o,'\" title=\"').concat(r[o],'\">').concat(g.language.translate(r[o]),\"</a></li>\")}n+=\"</ul>\"}return n}(e,t),f+=p+=\"</div></div></div>\"}return t.hasOptions&&t.hasOptions.apply(g)&&(f='<div class=\"fr-btn-wrap\">'.concat(f,\" \").concat(m(e+\"Options\",Object.assign({},t,{type:\"options\",hasOptions:!1}),n),\" </div>\")),f}function e(o){var i=g.$tb&&g.$tb.data(\"instance\")||g;if(!1===g.events.trigger(\"buttons.refresh\"))return!0;setTimeout(function(){for(var e=i.selection.inEditor()&&i.core.hasFocus(),t=0;t<o.length;t++){var n=u(o[t]),r=n.data(\"cmd\");0===n.parents(\".fr-popup\").length?e||V.COMMANDS[r]&&V.COMMANDS[r].forcedRefresh?i.button.refresh(n):g.node.hasClass(n.get(0),\"fr-dropdown\")||(n.removeClass(\"fr-active\"),n.attr(\"aria-pressed\")&&n.attr(\"aria-pressed\",!1)):n.parents(\".fr-popup\").isVisible()&&i.button.refresh(n)}},0)}function n(){e(a),e(s)}function r(){a=[],s=[]}g.shared.popup_buttons||(g.shared.popup_buttons=[]),s=g.shared.popup_buttons;var o=null;function v(){clearTimeout(o),o=setTimeout(n,50)}return{_init:function b(){g.opts.toolbarInline?g.events.on(\"toolbar.show\",n):(g.events.on(\"mouseup\",v),g.events.on(\"keyup\",v),g.events.on(\"blur\",v),g.events.on(\"focus\",v),g.events.on(\"contentChanged\",v),g.helpers.isMobile()&&g.events.$on(g.$doc,\"selectionchange\",n)),g.events.on(\"shared.destroy\",r)},build:m,buildList:function L(e,t){for(var n=\"\",r=0;r<e.length;r++){var o=e[r],i=V.COMMANDS[o];i&&\"undefined\"!=typeof i.plugin&&g.opts.pluginsEnabled.indexOf(i.plugin)<0||(i?n+=m(o,i,void 0===t||0<=t.indexOf(o)):\"|\"===o?n+='<div class=\"fr-separator fr-vs\" role=\"separator\" aria-orientation=\"vertical\"></div>':\"-\"===o&&(n+='<div class=\"fr-separator fr-hs\" role=\"separator\" aria-orientation=\"horizontal\"></div>'))}return n},buildGroup:function E(e){var t=\"\",n=\"\";for(var r in e){var o=e[r];if(o.buttons){for(var i=\"\",a=\"\",s=0,l=\"left\",c=V.TOOLBAR_VISIBLE_BUTTONS,d=0;d<o.buttons.length;d++){var f=o.buttons[d],p=V.COMMANDS[f];p||(\"|\"==f?i+='<div class=\"fr-separator fr-vs\" role=\"separator\" aria-orientation=\"vertical\"></div>':\"-\"==f&&(i+='<div class=\"fr-separator fr-hs\" role=\"separator\" aria-orientation=\"horizontal\"></div>')),!p||p&&\"undefined\"!=typeof p.plugin&&g.opts.pluginsEnabled.indexOf(p.plugin)<0||(e[r].align!==undefined&&(l=e[r].align),e[r].buttonsVisible!==undefined&&(c=e[r].buttonsVisible),e.showMoreButtons&&c<=s?a+=m(f,p,!0):i+=m(f,p,!0),s++)}if(e.showMoreButtons&&c<s){var h=r,u=V.COMMANDS[h];u.more_btn=!0,i+=m(h,u,!0)}\"trackChanges\"!==r&&(t+='<div class=\"fr-btn-grp fr-float-'.concat(l,'\">').concat(i,\"</div>\")),e.showMoreButtons&&0<a.length&&(n+='<div class=\"fr-more-toolbar\" data-name=\"'.concat(r+\"-\"+g.id,'\">').concat(a,\"</div>\"))}}return g.opts.toolbarBottom?g.helpers.isMobile()?'<div class=\"fr-bottom-extended\">'.concat(n,\"</div><div>\").concat(t,\"</div>\"):\"\".concat(n,'<div class=\"fr-newline\"></div>').concat(t):\"\".concat(t,'<div class=\"fr-newline\"></div>').concat(n)},bindCommands:function y(t,e){g.events.bindClick(t,\".fr-command:not(.fr-disabled)\",d),g.events.$on(t,\"\".concat(g._mousedown,\" \").concat(g._mouseup,\" \").concat(g._move),\".fr-dropdown-menu\",p,!0),g.events.$on(t,\"\".concat(g._mousedown,\" \").concat(g._mouseup,\" \").concat(g._move),\".fr-dropdown-menu .fr-dropdown-wrapper\",h,!0);var n=t.get(0).ownerDocument,r=\"defaultView\"in n?n.defaultView:n.parentWindow;function o(e){(!e||e.type===g._mouseup&&e.target!==u(\"html\").get(0)||\"keydown\"===e.type&&(g.keys.isCharacter(e.which)&&!g.keys.ctrlKey(e)||e.which===V.KEYCODE.ESC))&&(f(t),g.opts.iframe&&function r(e){var t=e.find(\".fr-popup.fr-active\");if(t.length){t.removeClass(\"fr-active\").attr(\"aria-expanded\",!1).next().attr(\"aria-hidden\",!0).css(\"overflow\",\"\").find(\"> .fr-dropdown-wrapper\").css(\"height\",\"\"),t.parents(\".fr-toolbar:not(.fr-inline)\").css(\"zIndex\",\"\"),t.prev().removeClass(\"fr-expanded\");var n=g.$tb.find(\".fr-btn-active-popup\");u(n[0]).removeClass(\"fr-btn-active-popup\")}}(t))}g.events.$on(u(r),\"\".concat(g._mouseup,\" resize keydown\"),o,!0),g.opts.iframe&&g.events.$on(g.$win,g._mouseup,o,!0),g.node.hasClass(t.get(0),\"fr-popup\")?u.merge(s,t.find(\".fr-btn\").toArray()):u.merge(a,t.find(\".fr-btn\").toArray()),g.tooltip.bind(t,\".fr-btn, .fr-title\",e)},refresh:function S(e){var t,n=e.parents(\".fr-popup, .fr-toolbar\").data(\"instance\")||g,r=e.data(\"cmd\");g.node.hasClass(e.get(0),\"fr-dropdown\")?t=e.next():(e.removeClass(\"fr-active\"),e.attr(\"aria-pressed\")&&e.attr(\"aria-pressed\",!1)),V.COMMANDS[r]&&V.COMMANDS[r].refresh?V.COMMANDS[r].refresh.apply(n,[e,t]):g.refresh[r]&&n.refresh[r](e,t)},bulkRefresh:n,exec:c,click:t,hideActiveDropdowns:f,addButtons:function N(e){for(var t=0;t<e.length;t++)a.push(e[t])},getButtons:C,getPosition:function T(e){var t=e.offset().left,n=g.opts.toolbarBottom?10:e.outerHeight()-10;return{left:t,top:e.offset().top+n}}}},V.ICON_TEMPLATES={font_awesome:'<i class=\"fa fa-[NAME]\" aria-hidden=\"true\"></i>',font_awesome_5:'<i class=\"fas fa-[FA5NAME]\" aria-hidden=\"true\"></i>',font_awesome_5r:'<i class=\"far fa-[FA5NAME]\" aria-hidden=\"true\"></i>',font_awesome_5l:'<i class=\"fal fa-[FA5NAME]\" aria-hidden=\"true\"></i>',font_awesome_5b:'<i class=\"fab fa-[FA5NAME]\" aria-hidden=\"true\"></i>',text:'<span style=\"text-align: center;\">[NAME]</span>',image:\"<img src=[SRC] alt=[ALT] />\",svg:'<svg class=\"fr-svg\" focusable=\"false\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"[PATH]\"/></svg>',empty:\" \"},V.ICONS={bold:{NAME:\"bold\",SVG_KEY:\"bold\"},italic:{NAME:\"italic\",SVG_KEY:\"italic\"},underline:{NAME:\"underline\",SVG_KEY:\"underline\"},strikeThrough:{NAME:\"strikethrough\",SVG_KEY:\"strikeThrough\"},subscript:{NAME:\"subscript\",SVG_KEY:\"subscript\"},superscript:{NAME:\"superscript\",SVG_KEY:\"superscript\"},cancel:{NAME:\"cancel\",SVG_KEY:\"cancel\"},color:{NAME:\"tint\",SVG_KEY:\"textColor\"},outdent:{NAME:\"outdent\",SVG_KEY:\"outdent\"},indent:{NAME:\"indent\",SVG_KEY:\"indent\"},undo:{NAME:\"rotate-left\",FA5NAME:\"undo\",SVG_KEY:\"undo\"},redo:{NAME:\"rotate-right\",FA5NAME:\"redo\",SVG_KEY:\"redo\"},insert:{NAME:\"insert\",SVG_KEY:\"insert\"},insertAll:{NAME:\"insertAll\",SVG_KEY:\"insertAll\"},insertHR:{NAME:\"minus\",SVG_KEY:\"horizontalLine\"},clearFormatting:{NAME:\"eraser\",SVG_KEY:\"clearFormatting\"},selectAll:{NAME:\"mouse-pointer\",SVG_KEY:\"selectAll\"},minimize:{NAME:\"minimize\",SVG_KEY:\"minimize\"},moreText:{NAME:\"ellipsis-v\",SVG_KEY:\"textMore\"},moreParagraph:{NAME:\"ellipsis-v\",SVG_KEY:\"paragraphMore\"},moreRich:{NAME:\"ellipsis-v\",SVG_KEY:\"insertMore\"},moreMisc:{NAME:\"ellipsis-v\",SVG_KEY:\"more\"}},V.DefineIconTemplate=function(e,t){V.ICON_TEMPLATES[e]=t},V.DefineIcon=function(e,t){V.ICONS[e]=t},Object.assign(V.DEFAULTS,{iconsTemplate:\"svg\"}),V.MODULES.icon=function(o){return{create:function i(n){var e=null,r=V.ICONS[n];if(void 0!==r){var t=r.template||V.ICON_DEFAULT_TEMPLATE||o.opts.iconsTemplate;t&&t.apply&&(t=t.apply(o)),r.FA5NAME||(r.FA5NAME=r.NAME),\"svg\"!==t||r.PATH||(r.PATH=V.SVG[r.SVG_KEY]||\"\"),t&&(t=V.ICON_TEMPLATES[t])&&(e=t.replace(/\\[([a-zA-Z0-9]*)\\]/g,function(e,t){return\"NAME\"===t?r[t]||n:r[t]}))}return e||n},getTemplate:function r(e){var t=V.ICONS[e],n=o.opts.iconsTemplate;return void 0!==t?n=t.template||V.ICON_DEFAULT_TEMPLATE||o.opts.iconsTemplate:n},getFileIcon:function n(e){var t=V.FILEICONS[e];return void 0!==t?t:e}}},V.SVG={add:\"M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6V13z\",advancedImageEditor:\"M3,17v2h6v-2H3z M3,5v2h10V5H3z M13,21v-2h8v-2h-8v-2h-2v6H13z M7,9v2H3v2h4v2h2V9H7z M21,13v-2H11v2H21z M15,9h2V7h4V5h-4 V3h-2V9z\",alignCenter:\"M9,18h6v-2H9V18z M6,11v2h12v-2H6z M3,6v2h18V6H3z\",alignJustify:\"M3,18h18v-2H3V18z M3,11v2h18v-2H3z M3,6v2h18V6H3z\",alignLeft:\"M3,18h6v-2H3V18z M3,11v2h12v-2H3z M3,6v2h18V6H3z\",alignRight:\"M15,18h6v-2h-6V18z M9,11v2h12v-2H9z M3,6v2h18V6H3z\",anchors:\"M16,4h-4H8C6.9,4,6,4.9,6,6v4v10l6-2.6l6,2.6V10V6C18,4.9,17.1,4,16,4z M16,17l-4-1.8L8,17v-7V6h4h4v4V17z\",autoplay:\"M 7.570312 0.292969 C 7.542969 0.292969 7.515625 0.292969 7.488281 0.296875 C 7.203125 0.324219 6.984375 0.539062 6.980469 0.792969 L 6.925781 3.535156 C 2.796875 3.808594 -0.0078125 6.425781 -0.0859375 10.09375 C -0.121094 11.96875 0.710938 13.6875 2.265625 14.921875 C 3.769531 16.117188 5.839844 16.796875 8.097656 16.828125 C 8.140625 16.828125 12.835938 16.898438 13.035156 16.886719 C 15.171875 16.796875 17.136719 16.128906 18.558594 15.003906 C 20.066406 13.816406 20.882812 12.226562 20.917969 10.40625 C 20.960938 8.410156 20.023438 6.605469 18.289062 5.335938 C 18.214844 5.277344 18.128906 5.230469 18.035156 5.203125 C 17.636719 5.074219 17.222656 5.199219 17 5.476562 L 15.546875 7.308594 C 15.304688 7.609375 15.363281 8.007812 15.664062 8.265625 C 16.351562 8.851562 16.707031 9.625 16.6875 10.5 C 16.652344 12.25 15.070312 13.390625 12.757812 13.535156 C 12.59375 13.539062 8.527344 13.472656 8.164062 13.464844 C 5.703125 13.429688 4.101562 12.191406 4.140625 10.3125 C 4.175781 8.570312 5.132812 7.46875 6.847656 7.199219 L 6.796875 9.738281 C 6.792969 9.992188 7 10.214844 7.285156 10.253906 C 7.3125 10.257812 7.339844 10.257812 7.367188 10.257812 C 7.503906 10.261719 7.632812 10.222656 7.738281 10.148438 L 14.039062 5.785156 C 14.171875 5.691406 14.253906 5.558594 14.253906 5.410156 C 14.257812 5.261719 14.1875 5.125 14.058594 5.027344 L 7.941406 0.414062 C 7.835938 0.335938 7.707031 0.292969 7.570312 0.292969 \",back:\"M20 11L7.83 11 11.425 7.405 10.01 5.991 5.416 10.586 5.414 10.584 4 11.998 4.002 12 4 12.002 5.414 13.416 5.416 13.414 10.01 18.009 11.425 16.595 7.83 13 20 13 20 13 20 11 20 11Z\",backgroundColor:\"M9.91752,12.24082l7.74791-5.39017,1.17942,1.29591-6.094,7.20747L9.91752,12.24082M7.58741,12.652l4.53533,4.98327a.93412.93412,0,0,0,1.39531-.0909L20.96943,8.7314A.90827.90827,0,0,0,20.99075,7.533l-2.513-2.76116a.90827.90827,0,0,0-1.19509-.09132L7.809,11.27135A.93412.93412,0,0,0,7.58741,12.652ZM2.7939,18.52772,8.41126,19.5l1.47913-1.34617-3.02889-3.328Z\",blockquote:\"M10.31788,5l.93817,1.3226A12.88271,12.88271,0,0,0,8.1653,9.40125a5.54242,5.54242,0,0,0-.998,3.07866v.33733q.36089-.04773.66067-.084a4.75723,4.75723,0,0,1,.56519-.03691,2.87044,2.87044,0,0,1,2.11693.8427,2.8416,2.8416,0,0,1,.8427,2.09274,3.37183,3.37183,0,0,1-.8898,2.453A3.143,3.143,0,0,1,8.10547,19,3.40532,3.40532,0,0,1,5.375,17.7245,4.91156,4.91156,0,0,1,4.30442,14.453,9.3672,9.3672,0,0,1,5.82051,9.32933,14.75716,14.75716,0,0,1,10.31788,5Zm8.39243,0,.9369,1.3226a12.88289,12.88289,0,0,0-3.09075,3.07865,5.54241,5.54241,0,0,0-.998,3.07866v.33733q.33606-.04773.63775-.084a4.91773,4.91773,0,0,1,.58938-.03691,2.8043,2.8043,0,0,1,2.1042.83,2.89952,2.89952,0,0,1,.80578,2.10547,3.42336,3.42336,0,0,1-.86561,2.453A3.06291,3.06291,0,0,1,16.49664,19,3.47924,3.47924,0,0,1,13.742,17.7245,4.846,4.846,0,0,1,12.64721,14.453,9.25867,9.25867,0,0,1,14.17476,9.3898,15.26076,15.26076,0,0,1,18.71031,5Z\",bold:\"M15.25,11.8h0A3.68,3.68,0,0,0,17,9a3.93,3.93,0,0,0-3.86-4H6.65V19h7a3.74,3.74,0,0,0,3.7-3.78V15.1A3.64,3.64,0,0,0,15.25,11.8ZM8.65,7h4.2a2.09,2.09,0,0,1,2,1.3,2.09,2.09,0,0,1-1.37,2.61,2.23,2.23,0,0,1-.63.09H8.65Zm4.6,10H8.65V13h4.6a2.09,2.09,0,0,1,2,1.3,2.09,2.09,0,0,1-1.37,2.61A2.23,2.23,0,0,1,13.25,17Z\",cancel:\"M13.4,12l5.6,5.6L17.6,19L12,13.4L6.4,19L5,17.6l5.6-5.6L5,6.4L6.4,5l5.6,5.6L17.6,5L19,6.4L13.4,12z\",cellBackground:\"M16.6,12.4L7.6,3.5L6.2,4.9l2.4,2.4l-5.2,5.2c-0.6,0.6-0.6,1.5,0,2.1l5.5,5.5c0.3,0.3,0.7,0.4,1.1,0.4s0.8-0.1,1.1-0.4 l5.5-5.5C17.2,14,17.2,13,16.6,12.4z M5.2,13.5L10,8.7l4.8,4.8H5.2z M19,15c0,0-2,2.2-2,3.5c0,1.1,0.9,2,2,2s2-0.9,2-2 C21,17.2,19,15,19,15z\",cellBorderColor:\"M22,22H2v2h20V22z\",cellOptions:\"M20,5H4C2.9,5,2,5.9,2,7v10c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V7C22,5.9,21.1,5,20,5z M9.5,6.5h5V9h-5V6.5z M8,17.5H4 c-0.3,0-0.5-0.2-0.5-0.4c0,0,0,0,0,0V17v-2H8V17.5z M8,13.5H3.5v-3H8V13.5z M8,9H3.5V7c0-0.3,0.2-0.5,0.4-0.5c0,0,0,0,0,0H8V9z M14.5,17.5h-5V15h5V17.5z M20.5,17c0,0.3-0.2,0.5-0.4,0.5c0,0,0,0,0,0H16V15h4.5V17z M20.5,13.5H16v-3h4.5V13.5z M20.5,9H16V6.5h4 c0.3,0,0.5,0.2,0.5,0.4c0,0,0,0,0,0V9z\",cellStyle:\"M20,19.9l0.9,3.6l-3.2-1.9l-3.3,1.9l0.8-3.6L12.3,17h3.8l1.7-3.5l1.4,3.5H23L20,19.9z M20,5H4C2.9,5,2,5.9,2,7v10 c0,1.1,0.9,2,2,2h7.5l-0.6-0.6L10,17.5H9.5V15h5.4l1.1-2.3v-2.2h4.5v3H20l0.6,1.5H22V7C22,5.9,21.1,5,20,5z M3.5,7 c0-0.3,0.2-0.5,0.4-0.5c0,0,0,0,0.1,0h4V9H3.5V7z M3.5,10.5H8v3H3.5V10.5z M4,17.5c-0.3,0-0.5-0.2-0.5-0.4c0,0,0,0,0-0.1v-2H8v2.5H4 z M14.5,9h-5V6.5h5V9z M20.5,9H16V6.5h4c0.3,0,0.5,0.2,0.5,0.4c0,0,0,0,0,0.1V9z\",clearFormatting:\"M11.48,10.09l-1.2-1.21L8.8,7.41,6.43,5,5.37,6.1,8.25,9,4.66,19h2l1.43-4h5.14l1.43,4h2l-.89-2.51L18.27,19l1.07-1.06L14.59,13.2ZM8.8,13l.92-2.56L12.27,13Zm.56-7.15L9.66,5h2l1.75,4.9Z\",close:\"M13.4,12l5.6,5.6L17.6,19L12,13.4L6.4,19L5,17.6l5.6-5.6L5,6.4L6.4,5l5.6,5.6L17.6,5L19,6.4L13.4,12z\",codeView:\"M9.4,16.6,4.8,12,9.4,7.4,8,6,2,12l6,6Zm5.2,0L19.2,12,14.6,7.4,16,6l6,6-6,6Z\",cogs:\"M18.877 12.907a6.459 6.459 0 0 0 0 -1.814l1.952 -1.526a0.468 0.468 0 0 0 0.111 -0.593l-1.851 -3.2a0.461 0.461 0 0 0 -0.407 -0.231 0.421 0.421 0 0 0 -0.157 0.028l-2.3 0.925a6.755 6.755 0 0 0 -1.563 -0.907l-0.352 -2.452a0.451 0.451 0 0 0 -0.453 -0.388h-3.7a0.451 0.451 0 0 0 -0.454 0.388L9.347 5.588A7.077 7.077 0 0 0 7.783 6.5l-2.3 -0.925a0.508 0.508 0 0 0 -0.166 -0.028 0.457 0.457 0 0 0 -0.4 0.231l-1.851 3.2a0.457 0.457 0 0 0 0.111 0.593l1.952 1.526A7.348 7.348 0 0 0 5.063 12a7.348 7.348 0 0 0 0.064 0.907L3.175 14.433a0.468 0.468 0 0 0 -0.111 0.593l1.851 3.2a0.461 0.461 0 0 0 0.407 0.231 0.421 0.421 0 0 0 0.157 -0.028l2.3 -0.925a6.74 6.74 0 0 0 1.564 0.907L9.7 20.864a0.451 0.451 0 0 0 0.454 0.388h3.7a0.451 0.451 0 0 0 0.453 -0.388l0.352 -2.452a7.093 7.093 0 0 0 1.563 -0.907l2.3 0.925a0.513 0.513 0 0 0 0.167 0.028 0.457 0.457 0 0 0 0.4 -0.231l1.851 -3.2a0.468 0.468 0 0 0 -0.111 -0.593Zm-0.09 2.029l-0.854 1.476 -2.117 -0.852 -0.673 0.508a5.426 5.426 0 0 1 -1.164 0.679l-0.795 0.323 -0.33 2.269h-1.7l-0.32 -2.269 -0.793 -0.322a5.3 5.3 0 0 1 -1.147 -0.662L8.2 15.56l-2.133 0.86 -0.854 -1.475 1.806 -1.411 -0.1 -0.847c-0.028 -0.292 -0.046 -0.5 -0.046 -0.687s0.018 -0.4 0.045 -0.672l0.106 -0.854L5.217 9.064l0.854 -1.475 2.117 0.851 0.673 -0.508a5.426 5.426 0 0 1 1.164 -0.679l0.8 -0.323 0.331 -2.269h1.7l0.321 2.269 0.792 0.322a5.3 5.3 0 0 1 1.148 0.661l0.684 0.526 2.133 -0.859 0.853 1.473 -1.8 1.421 0.1 0.847a5 5 0 0 1 0.046 0.679c0 0.193 -0.018 0.4 -0.045 0.672l-0.106 0.853ZM12 14.544A2.544 2.544 0 1 1 14.546 12 2.552 2.552 0 0 1 12 14.544Z\",columns:\"M20,5H4C2.9,5,2,5.9,2,7v10c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V7C22,5.9,21.1,5,20,5z M8,17.5H4c-0.3,0-0.5-0.2-0.5-0.4 c0,0,0,0,0,0V17v-2H8V17.5z M8,13.5H3.5v-3H8V13.5z M8,9H3.5V7c0-0.3,0.2-0.5,0.4-0.5c0,0,0,0,0,0H8V9z M20.5,17 c0,0.3-0.2,0.5-0.4,0.5c0,0,0,0,0,0H16V15h4.5V17z M20.5,13.5H16v-3h4.5V13.5z M20.5,9H16V6.5h4c0.3,0,0.5,0.2,0.5,0.4c0,0,0,0,0,0 V9z\",edit:\"M17,11.2L12.8,7L5,14.8V19h4.2L17,11.2z M7,16.8v-1.5l5.6-5.6l1.4,1.5l-5.6,5.6H7z M13.5,6.3l0.7-0.7c0.8-0.8,2.1-0.8,2.8,0 c0,0,0,0,0,0L18.4,7c0.8,0.8,0.8,2,0,2.8l-0.7,0.7L13.5,6.3z\",exitFullscreen:\"M5,16H8v3h2V14H5ZM8,8H5v2h5V5H8Zm6,11h2V16h3V14H14ZM16,8V5H14v5h5V8Z\",fileInsert:\"M 8.09375 12.75 L 5.90625 12.75 C 5.542969 12.75 5.25 12.394531 5.25 11.953125 L 5.25 6.375 L 2.851562 6.375 C 2.367188 6.375 2.121094 5.660156 2.464844 5.242188 L 6.625 0.1875 C 6.832031 -0.0585938 7.167969 -0.0585938 7.371094 0.1875 L 11.535156 5.242188 C 11.878906 5.660156 11.632812 6.375 11.148438 6.375 L 8.75 6.375 L 8.75 11.953125 C 8.75 12.394531 8.457031 12.75 8.09375 12.75 Z M 14 12.484375 L 14 16.203125 C 14 16.644531 13.707031 17 13.34375 17 L 0.65625 17 C 0.292969 17 0 16.644531 0 16.203125 L 0 12.484375 C 0 12.042969 0.292969 11.6875 0.65625 11.6875 L 4.375 11.6875 L 4.375 11.953125 C 4.375 12.980469 5.0625 13.8125 5.90625 13.8125 L 8.09375 13.8125 C 8.9375 13.8125 9.625 12.980469 9.625 11.953125 L 9.625 11.6875 L 13.34375 11.6875 C 13.707031 11.6875 14 12.042969 14 12.484375 Z M 10.609375 15.40625 C 10.609375 15.039062 10.363281 14.742188 10.0625 14.742188 C 9.761719 14.742188 9.515625 15.039062 9.515625 15.40625 C 9.515625 15.773438 9.761719 16.070312 10.0625 16.070312 C 10.363281 16.070312 10.609375 15.773438 10.609375 15.40625 Z M 12.359375 15.40625 C 12.359375 15.039062 12.113281 14.742188 11.8125 14.742188 C 11.511719 14.742188 11.265625 15.039062 11.265625 15.40625 C 11.265625 15.773438 11.511719 16.070312 11.8125 16.070312 C 12.113281 16.070312 12.359375 15.773438 12.359375 15.40625 Z M 12.359375 15.40625 \",fileManager:\"M 0 5.625 L 20.996094 5.625 L 21 15.75 C 21 16.371094 20.410156 16.875 19.6875 16.875 L 1.3125 16.875 C 0.585938 16.875 0 16.371094 0 15.75 Z M 0 5.625 M 21 4.5 L 0 4.5 L 0 2.25 C 0 1.628906 0.585938 1.125 1.3125 1.125 L 6.921875 1.125 C 7.480469 1.125 8.015625 1.316406 8.40625 1.652344 L 9.800781 2.847656 C 10.195312 3.183594 10.730469 3.375 11.289062 3.375 L 19.6875 3.375 C 20.414062 3.375 21 3.878906 21 4.5 Z M 21 4.5\",markdown:\"M5.55006 17.75V7.35L8.96006 16.89H10.7101L14.2301 7.37V14.0729C14.3951 14.1551 14.5499 14.265 14.6875 14.4026L14.7001 14.4151V11.64C14.7001 10.8583 15.2127 10.1963 15.9201 9.97171V5H13.6801L10.0401 14.86L6.51006 5H4.00006V17.75H5.55006ZM17.2001 11.64C17.2001 11.2258 16.8643 10.89 16.4501 10.89C16.0359 10.89 15.7001 11.2258 15.7001 11.64V16.8294L13.9804 15.1097C13.6875 14.8168 13.2126 14.8168 12.9197 15.1097C12.6269 15.4026 12.6269 15.8775 12.9197 16.1703L15.9197 19.1703C16.2126 19.4632 16.6875 19.4632 16.9804 19.1703L19.9804 16.1703C20.2733 15.8775 20.2733 15.4026 19.9804 15.1097C19.6875 14.8168 19.2126 14.8168 18.9197 15.1097L17.2001 16.8294V11.64Z\",fontAwesome:\"M18.99018,13.98212V7.52679c-.08038-1.21875-1.33929-.683-1.33929-.683-2.933,1.39282-4.36274.61938-5.85938.15625a6.23272,6.23272,0,0,0-2.79376-.20062l-.00946.004A1.98777,1.98777,0,0,0,7.62189,5.106a.984.984,0,0,0-.17517-.05432c-.02447-.0055-.04882-.01032-.0736-.0149A.9565.9565,0,0,0,7.1908,5H6.82539a.9565.9565,0,0,0-.18232.0368c-.02472.00458-.04907.0094-.07348.01484a.985.985,0,0,0-.17523.05438,1.98585,1.98585,0,0,0-.573,3.49585v9.394A1.004,1.004,0,0,0,6.82539,19H7.1908a1.00406,1.00406,0,0,0,1.00409-1.00409V15.52234c3.64221-1.09827,5.19709.64282,7.09888.57587a5.57291,5.57291,0,0,0,3.25446-1.05805A1.2458,1.2458,0,0,0,18.99018,13.98212Z\",fontFamily:\"M16,19h2L13,5H11L6,19H8l1.43-4h5.14Zm-5.86-6L12,7.8,13.86,13Z\",fontSize:\"M20.75,19h1.5l-3-10h-1.5l-3,10h1.5L17,16.5h3Zm-3.3-4,1.05-3.5L19.55,15Zm-5.7,4h2l-5-14h-2l-5,14h2l1.43-4h5.14ZM5.89,13,7.75,7.8,9.61,13Z\",fullscreen:\"M7,14H5v5h5V17H7ZM5,10H7V7h3V5H5Zm12,7H14v2h5V14H17ZM14,5V7h3v3h2V5Z\",help:\"M11,17h2v2h-2V17z M12,5C9.8,5,8,6.8,8,9h2c0-1.1,0.9-2,2-2s2,0.9,2,2c0,2-3,1.7-3,5v1h2v-1c0-2.2,3-2.5,3-5 C16,6.8,14.2,5,12,5z\",horizontalLine:\"M5,12h14 M19,11H5v2h14V11z\",imageAltText:\"M19,7h-6v12h-2V7H5V5h6h2h6V7z\",imageCaption:\"M14.2,11l3.8,5H6l3-3.9l2.1,2.7L14,11H14.2z M8.5,11c0.8,0,1.5-0.7,1.5-1.5S9.3,8,8.5,8S7,8.7,7,9.5C7,10.3,7.7,11,8.5,11z M22,6v12c0,1.1-0.9,2-2,2H4c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h16C21.1,4,22,4.9,22,6z M20,8.8V6H4v12h16V8.8z M22,22H2v2h20V22z\",imageClass:\"M9.5,13.4l-2.9-2.9h3.8L12.2,7l1.4,3.5h3.8l-3,2.9l0.9,3.6L12,15.1L8.8,17L9.5,13.4z M22,6v12c0,1.1-0.9,2-2,2H4 c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h16C21.1,4,22,4.9,22,6z M20,6H4v12h16V8.8V6z\",imageDisplay:\"M3,5h18v2H3V5z M13,9h8v2h-8V9z M13,13h8v2h-8V13z M3,17h18v2H3V17z M3,9h8v6H3V9z\",imageManager:\"M20,6h-7l-2-2H4C2.9,4,2,4.9,2,6v12c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V8C22,6.9,21.1,6,20,6z M20,18H4V6h6.2l2,2H20V18z M18,16l-3.8-5H14l-2.9,3.8L9,12.1L6,16H18z M10,9.5C10,8.7,9.3,8,8.5,8S7,8.7,7,9.5S7.7,11,8.5,11S10,10.3,10,9.5z\",imageSize:\"M16.9,4c-0.3,0-0.5,0.2-0.8,0.3L3.3,13c-0.9,0.6-1.1,1.9-0.5,2.8l2.2,3.3c0.4,0.7,1.2,1,2,0.8c0.3,0,0.5-0.2,0.8-0.3 L20.7,11c0.9-0.6,1.1-1.9,0.5-2.8l-2.2-3.3C18.5,4.2,17.7,3.9,16.9,4L16.9,4z M16.9,9.9L18.1,9l-2-2.9L17,5.6c0.1,0,0.1-0.1,0.2-0.1 c0.2,0,0.4,0,0.5,0.2L19.9,9c0.2,0.2,0.1,0.5-0.1,0.7L7,18.4c-0.1,0-0.1,0.1-0.2,0.1c-0.2,0-0.4,0-0.5-0.2L4.1,15 c-0.2-0.2-0.1-0.5,0.1-0.7L5,13.7l2,2.9l1.2-0.8l-2-2.9L7.5,12l1.1,1.7l1.2-0.8l-1.1-1.7l1.2-0.8l2,2.9l1.2-0.8l-2-2.9l1.2-0.8 l1.1,1.7l1.2-0.8l-1.1-1.7L14.9,7L16.9,9.9z\",indent:\"M3,9v6l3-3L3,9z M3,19h18v-2H3V19z M3,7h18V5H3V7z M9,11h12V9H9V11z M9,15h12v-2H9V15z\",inlineClass:\"M9.9,13.313A1.2,1.2,0,0,1,9.968,13H6.277l1.86-5.2,1.841,5.148A1.291,1.291,0,0,1,11.212,12h.426l-2.5-7h-2l-5,14h2l1.43-4H9.9Zm2.651,6.727a2.884,2.884,0,0,1-.655-2.018v-2.71A1.309,1.309,0,0,1,13.208,14h3.113a3.039,3.039,0,0,1,2,1.092s1.728,1.818,2.964,2.928a1.383,1.383,0,0,1,.318,1.931,1.44,1.44,0,0,1-.19.215l-3.347,3.31a1.309,1.309,0,0,1-1.832.258h0a1.282,1.282,0,0,1-.258-.257l-1.71-1.728Zm2.48-3.96a.773.773,0,1,0,.008,0Z\",inlineStyle:\"M11.88,15h.7l.7-1.7-3-8.3h-2l-5,14h2l1.4-4Zm-4.4-2,1.9-5.2,1.9,5.2ZM15.4,21.545l3.246,1.949-.909-3.637L20.72,17H16.954l-1.429-3.506L13.837,17H10.071l2.857,2.857-.779,3.637Z\",insert:\"M13.889,11.611c-0.17,0.17-0.443,0.17-0.612,0l-3.189-3.187l-3.363,3.36c-0.171,0.171-0.441,0.171-0.612,0c-0.172-0.169-0.172-0.443,0-0.611l3.667-3.669c0.17-0.17,0.445-0.172,0.614,0l3.496,3.493C14.058,11.167,14.061,11.443,13.889,11.611 M18.25,10c0,4.558-3.693,8.25-8.25,8.25c-4.557,0-8.25-3.692-8.25-8.25c0-4.557,3.693-8.25,8.25-8.25C14.557,1.75,18.25,5.443,18.25,10 M17.383,10c0-4.07-3.312-7.382-7.383-7.382S2.618,5.93,2.618,10S5.93,17.381,10,17.381S17.383,14.07,17.383,10\",insertEmbed:\"M20.73889,15.45929a3.4768,3.4768,0,0,0-5.45965-.28662L9.5661,12.50861a3.49811,3.49811,0,0,0-.00873-1.01331l5.72174-2.66809a3.55783,3.55783,0,1,0-.84527-1.81262L8.70966,9.6839a3.50851,3.50851,0,1,0,.0111,4.63727l5.7132,2.66412a3.49763,3.49763,0,1,0,6.30493-1.526ZM18.00745,5.01056A1.49993,1.49993,0,1,1,16.39551,6.3894,1.49994,1.49994,0,0,1,18.00745,5.01056ZM5.99237,13.49536a1.49989,1.49989,0,1,1,1.61194-1.37878A1.49982,1.49982,0,0,1,5.99237,13.49536Zm11.78211,5.494a1.49993,1.49993,0,1,1,1.61193-1.37885A1.49987,1.49987,0,0,1,17.77448,18.98932Z\",insertFile:\"M7,3C5.9,3,5,3.9,5,5v14c0,1.1,0.9,2,2,2h10c1.1,0,2-0.9,2-2V7.6L14.4,3H7z M17,19H7V5h6v4h4V19z\",insertImage:\"M14.2,11l3.8,5H6l3-3.9l2.1,2.7L14,11H14.2z M8.5,11c0.8,0,1.5-0.7,1.5-1.5S9.3,8,8.5,8S7,8.7,7,9.5C7,10.3,7.7,11,8.5,11z M22,6v12c0,1.1-0.9,2-2,2H4c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h16C21.1,4,22,4.9,22,6z M20,8.8V6H4v12h16V8.8z\",insertLink:\"M11,17H7A5,5,0,0,1,7,7h4V9H7a3,3,0,0,0,0,6h4ZM17,7H13V9h4a3,3,0,0,1,0,6H13v2h4A5,5,0,0,0,17,7Zm-1,4H8v2h8Z\",insertMore:\"M16.5,13h-6v6h-2V13h-6V11h6V5h2v6h6Zm5,4.5A1.5,1.5,0,1,1,20,16,1.5,1.5,0,0,1,21.5,17.5Zm0-4A1.5,1.5,0,1,1,20,12,1.5,1.5,0,0,1,21.5,13.5Zm0-4A1.5,1.5,0,1,1,20,8,1.5,1.5,0,0,1,21.5,9.5Z\",insertTable:\"M20,5H4C2.9,5,2,5.9,2,7v2v1.5v3V15v2c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2v-2v-1.5v-3V9V7C22,5.9,21.1,5,20,5z M9.5,13.5v-3 h5v3H9.5z M14.5,15v2.5h-5V15H14.5z M9.5,9V6.5h5V9H9.5z M3.5,7c0-0.3,0.2-0.5,0.5-0.5h4V9H3.5V7z M3.5,10.5H8v3H3.5V10.5z M3.5,17 v-2H8v2.5H4C3.7,17.5,3.5,17.3,3.5,17z M20.5,17c0,0.3-0.2,0.5-0.5,0.5h-4V15h4.5V17z M20.5,13.5H16v-3h4.5V13.5z M16,9V6.5h4 c0.3,0,0.5,0.2,0.5,0.5v2H16z\",insertVideo:\"M15,8v8H5V8H15m2,2.5V7a1,1,0,0,0-1-1H4A1,1,0,0,0,3,7V17a1,1,0,0,0,1,1H16a1,1,0,0,0,1-1V13.5l2.29,2.29A1,1,0,0,0,21,15.08V8.91a1,1,0,0,0-1.71-.71Z\",upload:\"M12 6.66667a4.87654 4.87654 0 0 1 4.77525 3.92342l0.29618 1.50268 1.52794 0.10578a2.57021 2.57021 0 0 1 -0.1827 5.13478H6.5a3.49774 3.49774 0 0 1 -0.3844 -6.97454l1.06682 -0.11341L7.678 9.29387A4.86024 4.86024 0 0 1 12 6.66667m0 -2A6.871 6.871 0 0 0 5.90417 8.37 5.49773 5.49773 0 0 0 6.5 19.33333H18.41667a4.57019 4.57019 0 0 0 0.32083 -9.13A6.86567 6.86567 0 0 0 12 4.66667Zm0.99976 7.2469h1.91406L11.99976 9 9.08618 11.91357h1.91358v3H11V16h2V14h-0.00024Z\",uploadFiles:\"M12 6.66667a4.87654 4.87654 0 0 1 4.77525 3.92342l0.29618 1.50268 1.52794 0.10578a2.57021 2.57021 0 0 1 -0.1827 5.13478H6.5a3.49774 3.49774 0 0 1 -0.3844 -6.97454l1.06682 -0.11341L7.678 9.29387A4.86024 4.86024 0 0 1 12 6.66667m0 -2A6.871 6.871 0 0 0 5.90417 8.37 5.49773 5.49773 0 0 0 6.5 19.33333H18.41667a4.57019 4.57019 0 0 0 0.32083 -9.13A6.86567 6.86567 0 0 0 12 4.66667Zm0.99976 7.2469h1.91406L11.99976 9 9.08618 11.91357h1.91358v3H11V16h2V14h-0.00024Z\",italic:\"M11.76,9h2l-2.2,10h-2Zm1.68-4a1,1,0,1,0,1,1,1,1,0,0,0-1-1Z\",search:\"M15.5 14h-0.79l-0.28 -0.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09 -0.59 4.23 -1.57l0.27 0.28v0.79l5 4.99L20.49 19l-4.99 -5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\",lineHeight:\"M6.25,7h2.5L5.25,3.5,1.75,7h2.5V17H1.75l3.5,3.5L8.75,17H6.25Zm4-2V7h12V5Zm0,14h12V17h-12Zm0-6h12V11h-12Z\",linkStyles:\"M19,17.9l0.9,3.6l-3.2-1.9l-3.3,1.9l0.8-3.6L11.3,15h3.8l1.7-3.5l1.4,3.5H22L19,17.9z M20,12c0,0.3-0.1,0.7-0.2,1h2.1 c0.1-0.3,0.1-0.6,0.1-1c0-2.8-2.2-5-5-5h-4v2h4C18.7,9,20,10.3,20,12z M14.8,11H8v2h3.3h2.5L14.8,11z M9.9,16.4L8.5,15H7 c-1.7,0-3-1.3-3-3s1.3-3,3-3h4V7H7c-2.8,0-5,2.2-5,5s2.2,5,5,5h3.5L9.9,16.4z\",mention:\"M12.4,5c-4.1,0-7.5,3.4-7.5,7.5S8.3,20,12.4,20h3.8v-1.5h-3.8c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6v1.1 c0,0.6-0.5,1.2-1.1,1.2s-1.1-0.6-1.1-1.2v-1.1c0-2.1-1.7-3.8-3.8-3.8s-3.7,1.7-3.7,3.8s1.7,3.8,3.8,3.8c1,0,2-0.4,2.7-1.1 c0.5,0.7,1.3,1.1,2.2,1.1c1.5,0,2.6-1.2,2.6-2.7v-1.1C19.9,8.4,16.6,5,12.4,5z M12.4,14.7c-1.2,0-2.3-1-2.3-2.2s1-2.3,2.3-2.3 s2.3,1,2.3,2.3S13.6,14.7,12.4,14.7z\",minimize:\"M5,12h14 M19,11H5v2h14V11z\",more:\"M13.5,17c0,0.8-0.7,1.5-1.5,1.5s-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5S13.5,16.2,13.5,17z M13.5,12c0,0.8-0.7,1.5-1.5,1.5 s-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5S13.5,11.2,13.5,12z M13.5,7c0,0.8-0.7,1.5-1.5,1.5S10.5,7.8,10.5,7s0.7-1.5,1.5-1.5 S13.5,6.2,13.5,7z\",openLink:\"M17,17H7V7h3V5H7C6,5,5,6,5,7v10c0,1,1,2,2,2h10c1,0,2-1,2-2v-3h-2V17z M14,5v2h1.6l-5.8,5.8l1.4,1.4L17,8.4V10h2V5H14z\",orderedList:\"M2.5,16h2v.5h-1v1h1V18h-2v1h3V15h-3Zm1-7h1V5h-2V6h1Zm-1,2H4.3L2.5,13.1V14h3V13H3.7l1.8-2.1V10h-3Zm5-5V8h14V6Zm0,12h14V16H7.5Zm0-5h14V11H7.5Z\",outdent:\"M3,12l3,3V9L3,12z M3,19h18v-2H3V19z M3,7h18V5H3V7z M9,11h12V9H9V11z M9,15h12v-2H9V15z\",pageBreaker:\"M3,9v6l3-3L3,9z M21,9H8V4h2v3h9V4h2V9z M21,20h-2v-3h-9v3H8v-5h13V20z M11,13H8v-2h3V13z M16,13h-3v-2h3V13z M21,13h-3v-2 h3V13z\",paragraphFormat:\"M10.15,5A4.11,4.11,0,0,0,6.08,8.18,4,4,0,0,0,10,13v6h2V7h2V19h2V7h2V5ZM8,9a2,2,0,0,1,2-2v4A2,2,0,0,1,8,9Z\",paragraphMore:\"M7.682,5a4.11,4.11,0,0,0-4.07,3.18,4,4,0,0,0,3.11,4.725h0l.027.005a3.766,3.766,0,0,0,.82.09v6h2V7h2V19h2V7h2V5ZM5.532,9a2,2,0,0,1,2-2v4A2,2,0,0,1,5.532,9Zm14.94,8.491a1.5,1.5,0,1,1-1.5-1.5A1.5,1.5,0,0,1,20.472,17.491Zm0-4a1.5,1.5,0,1,1-1.5-1.5A1.5,1.5,0,0,1,20.472,13.491Zm0-4a1.5,1.5,0,1,1-1.5-1.5A1.5,1.5,0,0,1,20.472,9.491Z\",paragraphStyle:\"M4,9c0-1.1,0.9-2,2-2v4C4.9,11,4,10.1,4,9z M16.7,20.5l3.2,1.9L19,18.8l3-2.9h-3.7l-1.4-3.5L15.3,16h-3.8l2.9,2.9l-0.9,3.6 L16.7,20.5z M10,17.4V19h1.6L10,17.4z M6.1,5c-1.9,0-3.6,1.3-4,3.2c-0.5,2.1,0.8,4.2,2.9,4.7c0,0,0,0,0,0h0.2C5.5,13,5.8,13,6,13v6 h2V7h2v7h2V7h2V5H6.1z\",pdfExport:\"M7,3C5.9,3,5,3.9,5,5v14c0,1.1,0.9,2,2,2h10c1.1,0,2-0.9,2-2V7.6L14.4,3H7z M17,19H7V5h6v4h4V19z M16.3,13.5 c-0.2-0.6-1.1-0.8-2.6-0.8c-0.1,0-0.1,0-0.2,0c-0.3-0.3-0.8-0.9-1-1.2c-0.2-0.2-0.3-0.3-0.4-0.6c0.2-0.7,0.2-1,0.3-1.5 c0.1-0.9,0-1.6-0.2-1.8c-0.4-0.2-0.7-0.2-0.9-0.2c-0.1,0-0.3,0.2-0.7,0.7c-0.2,0.7-0.1,1.8,0.6,2.8c-0.2,0.8-0.7,1.6-1,2.4 c-0.8,0.2-1.5,0.7-1.9,1.1c-0.7,0.7-0.9,1.1-0.7,1.6c0,0.3,0.2,0.6,0.7,0.6c0.3-0.1,0.3-0.2,0.7-0.3c0.6-0.3,1.2-1.7,1.7-2.4 c0.8-0.2,1.7-0.3,2-0.3c0.1,0,0.3,0,0.6,0c0.8,0.8,1.2,1.1,1.8,1.2c0.1,0,0.2,0,0.3,0c0.3,0,0.8-0.1,1-0.6 C16.4,14.1,16.4,13.9,16.3,13.5z M8.3,15.7c-0.1,0.1-0.2,0.1-0.2,0.1c0-0.1,0-0.3,0.6-0.8c0.2-0.2,0.6-0.3,0.9-0.7 C9,15,8.6,15.5,8.3,15.7z M11.3,9c0-0.1,0.1-0.2,0.1-0.2S11.6,9,11.5,10c0,0.1,0,0.3-0.1,0.7C11.3,10.1,11,9.5,11.3,9z M10.9,13.1 c0.2-0.6,0.6-1,0.7-1.5c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.2,0.3,0.7,0.7,0.9C12.2,12.8,11.6,13,10.9,13.1z M15.2,14.1 c-0.1,0-0.1,0-0.2,0c-0.2,0-0.7-0.2-1-0.7c1.1,0,1.6,0.2,1.6,0.6C15.5,14.1,15.4,14.1,15.2,14.1z\",print:\"M16.1,17c0-0.6,0.4-1,1-1c0.6,0,1,0.4,1,1s-0.4,1-1,1C16.5,18,16.1,17.6,16.1,17z M22,15v4c0,1.1-0.9,2-2,2H4 c-1.1,0-2-0.9-2-2v-4c0-1.1,0.9-2,2-2h1V5c0-1.1,0.9-2,2-2h7.4L19,7.6V13h1C21.1,13,22,13.9,22,15z M7,13h10V9h-4V5H7V13z M20,15H4 v4h16V15z\",redo:\"M13.6,9.4c1.7,0.3,3.2,0.9,4.6,2L21,8.5v7h-7l2.7-2.7C13,10.1,7.9,11,5.3,14.7c-0.2,0.3-0.4,0.5-0.5,0.8L3,14.6 C5.1,10.8,9.3,8.7,13.6,9.4z\",removeTable:\"M15,10v8H9v-8H15 M14,4H9.9l-1,1H6v2h12V5h-3L14,4z M17,8H7v10c0,1.1,0.9,2,2,2h6c1.1,0,2-0.9,2-2V8z\",insertAll:\"M 9.25 12 L 6.75 12 C 6.335938 12 6 11.664062 6 11.25 L 6 6 L 3.257812 6 C 2.703125 6 2.425781 5.328125 2.820312 4.933594 L 7.570312 0.179688 C 7.804688 -0.0546875 8.191406 -0.0546875 8.425781 0.179688 L 13.179688 4.933594 C 13.574219 5.328125 13.296875 6 12.742188 6 L 10 6 L 10 11.25 C 10 11.664062 9.664062 12 9.25 12 Z M 16 11.75 L 16 15.25 C 16 15.664062 15.664062 16 15.25 16 L 0.75 16 C 0.335938 16 0 15.664062 0 15.25 L 0 11.75 C 0 11.335938 0.335938 11 0.75 11 L 5 11 L 5 11.25 C 5 12.214844 5.785156 13 6.75 13 L 9.25 13 C 10.214844 13 11 12.214844 11 11.25 L 11 11 L 15.25 11 C 15.664062 11 16 11.335938 16 11.75 Z M 12.125 14.5 C 12.125 14.15625 11.84375 13.875 11.5 13.875 C 11.15625 13.875 10.875 14.15625 10.875 14.5 C 10.875 14.84375 11.15625 15.125 11.5 15.125 C 11.84375 15.125 12.125 14.84375 12.125 14.5 Z M 14.125 14.5 C 14.125 14.15625 13.84375 13.875 13.5 13.875 C 13.15625 13.875 12.875 14.15625 12.875 14.5 C 12.875 14.84375 13.15625 15.125 13.5 15.125 C 13.84375 15.125 14.125 14.84375 14.125 14.5 Z M 14.125 14.5 \",remove:\"M15,10v8H9v-8H15 M14,4H9.9l-1,1H6v2h12V5h-3L14,4z M17,8H7v10c0,1.1,0.9,2,2,2h6c1.1,0,2-0.9,2-2V8z\",replaceImage:\"M16,5v3H4v2h12v3l4-4L16,5z M8,19v-3h12v-2H8v-3l-4,4L8,19z\",row:\"M20,5H4C2.9,5,2,5.9,2,7v2v1.5v3V15v2c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2v-2v-1.5v-3V9V7C22,5.9,21.1,5,20,5z M16,6.5h4 c0.3,0,0.5,0.2,0.5,0.5v2H16V6.5z M9.5,6.5h5V9h-5V6.5z M3.5,7c0-0.3,0.2-0.5,0.5-0.5h4V9H3.5V7z M8,17.5H4c-0.3,0-0.5-0.2-0.5-0.5 v-2H8V17.5z M14.5,17.5h-5V15h5V17.5z M20.5,17c0,0.3-0.2,0.5-0.5,0.5h-4V15h4.5V17z\",selectAll:\"M5,7h2V5C5.9,5,5,5.9,5,7z M5,11h2V9H5V11z M9,19h2v-2H9V19z M5,11h2V9H5V11z M15,5h-2v2h2V5z M17,5v2h2C19,5.9,18.1,5,17,5 z M7,19v-2H5C5,18.1,5.9,19,7,19z M5,15h2v-2H5V15z M11,5H9v2h2V5z M13,19h2v-2h-2V19z M17,11h2V9h-2V11z M17,19c1.1,0,2-0.9,2-2h-2 V19z M17,11h2V9h-2V11z M17,15h2v-2h-2V15z M13,19h2v-2h-2V19z M13,7h2V5h-2V7z M9,15h6V9H9V15z M11,11h2v2h-2V11z\",smile:\"M11.991,3A9,9,0,1,0,21,12,8.99557,8.99557,0,0,0,11.991,3ZM12,19a7,7,0,1,1,7-7A6.99808,6.99808,0,0,1,12,19Zm3.105-5.2h1.503a4.94542,4.94542,0,0,1-9.216,0H8.895a3.57808,3.57808,0,0,0,6.21,0ZM7.5,9.75A1.35,1.35,0,1,1,8.85,11.1,1.35,1.35,0,0,1,7.5,9.75Zm6.3,0a1.35,1.35,0,1,1,1.35,1.35A1.35,1.35,0,0,1,13.8,9.75Z\",spellcheck:\"M19.1,13.6l-5.6,5.6l-2.7-2.7l-1.4,1.4l4.1,4.1l7-7L19.1,13.6z M10.8,13.7l2.7,2.7l0.8-0.8L10.5,5h-2l-5,14h2l1.4-4h2.6 L10.8,13.7z M9.5,7.8l1.9,5.2H7.6L9.5,7.8z\",star:\"M12.1,7.7l1,2.5l0.4,0.9h1h2.4l-2.1,2l-0.6,0.6l0.2,0.9l0.6,2.3l-2.2-1.3L12,15.2l-0.8,0.5L9,17l0.5-2.5l0.1-0.8L9,13.1 l-2-2h2.5h0.9l0.4-0.8L12.1,7.7 M12.2,4L9.5,9.6H3.4L8,14.2L6.9,20l5.1-3.1l5.3,3.1l-1.5-5.8l4.8-4.6h-6.1L12.2,4L12.2,4z\",strikeThrough:\"M3,12.20294H21v1.5H16.63422a3.59782,3.59782,0,0,1,.34942,1.5929,3.252,3.252,0,0,1-1.31427,2.6997A5.55082,5.55082,0,0,1,12.20251,19a6.4421,6.4421,0,0,1-2.62335-.539,4.46335,4.46335,0,0,1-1.89264-1.48816,3.668,3.668,0,0,1-.67016-2.15546V14.704h.28723v-.0011h.34149v.0011H9.02v.11334a2.18275,2.18275,0,0,0,.85413,1.83069,3.69,3.69,0,0,0,2.32836.67926,3.38778,3.38778,0,0,0,2.07666-.5462,1.73346,1.73346,0,0,0,.7013-1.46655,1.69749,1.69749,0,0,0-.647-1.43439,3.00525,3.00525,0,0,0-.27491-.17725H3ZM16.34473,7.05981A4.18163,4.18163,0,0,0,14.6236,5.5462,5.627,5.627,0,0,0,12.11072,5,5.16083,5.16083,0,0,0,8.74719,6.06213,3.36315,3.36315,0,0,0,7.44006,8.76855a3.22923,3.22923,0,0,0,.3216,1.42786h2.59668c-.08338-.05365-.18537-.10577-.25269-.16064a1.60652,1.60652,0,0,1-.65283-1.30036,1.79843,1.79843,0,0,1,.68842-1.5108,3.12971,3.12971,0,0,1,1.96948-.55243,3.04779,3.04779,0,0,1,2.106.6687,2.35066,2.35066,0,0,1,.736,1.83258v.11341h2.00317V9.17346A3.90013,3.90013,0,0,0,16.34473,7.05981Z\",subscript:\"M10.4,12l3.6,3.6L12.6,17L9,13.4L5.4,17L4,15.6L7.6,12L4,8.4L5.4,7L9,10.6L12.6,7L14,8.4L10.4,12z M18.31234,19.674 l1.06812-1.1465c0.196-0.20141,0.37093-0.40739,0.5368-0.6088c0.15975-0.19418,0.30419-0.40046,0.432-0.617 c0.11969-0.20017,0.21776-0.41249,0.29255-0.6334c0.07103-0.21492,0.10703-0.43986,0.10662-0.66621 c0.00297-0.28137-0.04904-0.56062-0.1531-0.82206c-0.09855-0.24575-0.25264-0.46534-0.45022-0.6416 c-0.20984-0.18355-0.45523-0.32191-0.72089-0.40646c-0.63808-0.19005-1.3198-0.17443-1.94851,0.04465 c-0.28703,0.10845-0.54746,0.2772-0.76372,0.49487c-0.20881,0.20858-0.37069,0.45932-0.47483,0.73548 c-0.10002,0.26648-0.15276,0.54838-0.15585,0.833l-0.00364,0.237H17.617l0.00638-0.22692 c0.00158-0.12667,0.01966-0.25258,0.05377-0.37458c0.03337-0.10708,0.08655-0.20693,0.15679-0.29437 c0.07105-0.08037,0.15959-0.14335,0.25882-0.1841c0.22459-0.08899,0.47371-0.09417,0.7018-0.01458 c0.0822,0.03608,0.15559,0.08957,0.21509,0.15679c0.06076,0.07174,0.10745,0.15429,0.13761,0.24333 c0.03567,0.10824,0.05412,0.22141,0.05469,0.33538c-0.00111,0.08959-0.0118,0.17881-0.0319,0.26612 c-0.02913,0.10428-0.07076,0.20465-0.124,0.29893c-0.07733,0.13621-0.1654,0.26603-0.26338,0.38823 c-0.13438,0.17465-0.27767,0.34226-0.42929,0.50217l-2.15634,2.35315V21H21v-1.326H18.31234z\",superscript:\"M10.4,12,14,15.6,12.6,17,9,13.4,5.4,17,4,15.6,7.6,12,4,8.4,5.4,7,9,10.6,12.6,7,14,8.4Zm8.91234-3.326,1.06812-1.1465c.196-.20141.37093-.40739.5368-.6088a4.85745,4.85745,0,0,0,.432-.617,3.29,3.29,0,0,0,.29255-.6334,2.11079,2.11079,0,0,0,.10662-.66621,2.16127,2.16127,0,0,0-.1531-.82206,1.7154,1.7154,0,0,0-.45022-.6416,2.03,2.03,0,0,0-.72089-.40646,3.17085,3.17085,0,0,0-1.94851.04465,2.14555,2.14555,0,0,0-.76372.49487,2.07379,2.07379,0,0,0-.47483.73548,2.446,2.446,0,0,0-.15585.833l-.00364.237H18.617L18.62338,5.25a1.45865,1.45865,0,0,1,.05377-.37458.89552.89552,0,0,1,.15679-.29437.70083.70083,0,0,1,.25882-.1841,1.00569,1.00569,0,0,1,.7018-.01458.62014.62014,0,0,1,.21509.15679.74752.74752,0,0,1,.13761.24333,1.08893,1.08893,0,0,1,.05469.33538,1.25556,1.25556,0,0,1-.0319.26612,1.34227,1.34227,0,0,1-.124.29893,2.94367,2.94367,0,0,1-.26338.38823,6.41629,6.41629,0,0,1-.42929.50217L17.19709,8.92642V10H22V8.674Z\",symbols:\"M15.77493,16.98885a8.21343,8.21343,0,0,0,1.96753-2.57651,7.34824,7.34824,0,0,0,.6034-3.07618A6.09092,6.09092,0,0,0,11.99515,5a6.13347,6.13347,0,0,0-4.585,1.79187,6.417,6.417,0,0,0-1.756,4.69207,6.93955,6.93955,0,0,0,.622,2.97415,8.06587,8.06587,0,0,0,1.949,2.53076H5.41452V19h5.54114v-.04331h-.00147V16.84107a5.82825,5.82825,0,0,1-2.2052-2.2352A6.40513,6.40513,0,0,1,7.97672,11.447,4.68548,4.68548,0,0,1,9.07785,8.19191a3.73232,3.73232,0,0,1,2.9173-1.22462,3.76839,3.76839,0,0,1,2.91241,1.21489,4.482,4.482,0,0,1,1.11572,3.154,6.71141,6.71141,0,0,1-.75384,3.24732,5.83562,5.83562,0,0,1-2.22357,2.25759v2.11562H13.0444V19h5.54108V16.98885Z\",tags:\"M8.9749 7.47489a1.5 1.5 0 1 1 -1.5 1.5A1.5 1.5 0 0 1 8.9749 7.47489Zm3.78866 -3.12713L16.5362 8.12041l0.33565 0.33564 2.77038 2.77038a2.01988 2.01988 0 0 1 0.59 1.42 1.95518 1.95518 0 0 1 -0.5854 1.40455l0.00044 0.00043 -5.59583 5.59583 -0.00043 -0.00044a1.95518 1.95518 0 0 1 -1.40455 0.5854 1.98762 1.98762 0 0 1 -1.41 -0.58L8.45605 16.87185l-0.33564 -0.33565L4.35777 12.77357a1.99576 1.99576 0 0 1 -0.59 -1.42V9.36358l0 -3.59582a2.00579 2.00579 0 0 1 2 -2l3.59582 0h1.98995A1.98762 1.98762 0 0 1 12.76356 4.34776ZM15.46186 9.866l-0.33564 -0.33564L11.36359 5.76776H5.76776v5.59583L9.866 15.46186l2.7794 2.7794 5.5878 -5.60385 -0.001 -0.001Z\",tableHeader:\"M20,5H4C2.9,5,2,5.9,2,7v10c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V7C22,5.9,21.1,5,20,5z M8,17.5H4c-0.3,0-0.5-0.2-0.5-0.4 l0,0V17v-2H8V17.5z M8,13.5H3.5v-3H8V13.5z M14.5,17.5h-5V15h5V17.5z M14.5,13.5h-5v-3h5V13.5z M20.5,17c0,0.3-0.2,0.5-0.4,0.5l0,0 H16V15h4.5V17z M20.5,13.5H16v-3h4.5V13.5z M20.5,9h-4.4H16h-1.5h-5H8H7.9H3.5V7c0-0.3,0.2-0.5,0.4-0.5l0,0h4l0,0h8.2l0,0H20 c0.3,0,0.5,0.2,0.5,0.4l0,0V9z\",tableFooter:\"M20,19H4a2.006,2.006,0,0,1-2-2V7A2.006,2.006,0,0,1,4,5H20a2.006,2.006,0,0,1,2,2V17A2.006,2.006,0,0,1,20,19ZM8,6.5H4a.458.458,0,0,0-.5.4h0V9H8Zm0,4H3.5v3H8Zm6.5-4h-5V9h5Zm0,4h-5v3h5Zm6-3.5a.458.458,0,0,0-.4-.5H16V9h4.5Zm0,3.5H16v3h4.5Zm0,4.5H3.5v2a.458.458,0,0,0,.4.5H20a.458.458,0,0,0,.5-.4h0Z\",tableStyle:\"M20.0171,19.89752l.9,3.6-3.2-1.9-3.3,1.9.8-3.6-2.9-2.9h3.8l1.7-3.5,1.4,3.5h3.8ZM20,5H4A2.00591,2.00591,0,0,0,2,7V17a2.00591,2.00591,0,0,0,2,2h7.49115l-.58826-.58826L9.99115,17.5H9.5V14.9975h5.36511L16,12.66089V10.5h4.5v3h-.52783l.599,1.4975H22V7A2.00591,2.00591,0,0,0,20,5ZM3.5,7A.4724.4724,0,0,1,4,6.5H8V9H3.5Zm0,3.5H8v3H3.5Zm.5,7a.4724.4724,0,0,1-.5-.5V15H8v2.5Zm10.5-4h-5v-3h5Zm0-4.5h-5V6.5h5Zm6,0H16V6.5h4a.4724.4724,0,0,1,.5.5Z\",textColor:\"M15.2,13.494s-3.6,3.9-3.6,6.3a3.65,3.65,0,0,0,7.3.1v-.1C18.9,17.394,15.2,13.494,15.2,13.494Zm-1.47-1.357.669-.724L12.1,5h-2l-5,14h2l1.43-4h2.943A24.426,24.426,0,0,1,13.726,12.137ZM11.1,7.8l1.86,5.2H9.244Z\",textMore:\"M13.55,19h2l-5-14h-2l-5,14h2l1.4-4h5.1Zm-5.9-6,1.9-5.2,1.9,5.2Zm12.8,4.5a1.5,1.5,0,1,1-1.5-1.5A1.5,1.5,0,0,1,20.45,17.5Zm0-4a1.5,1.5,0,1,1-1.5-1.5A1.5,1.5,0,0,1,20.45,13.5Zm0-4A1.5,1.5,0,1,1,18.95,8,1.5,1.5,0,0,1,20.45,9.5Z\",underline:\"M19,20v2H5V20Zm-3-6.785a4,4,0,0,1-5.74,3.4A3.75,3.75,0,0,1,8,13.085V5.005H6v8.21a6,6,0,0,0,8,5.44,5.851,5.851,0,0,0,4-5.65v-8H16ZM16,5v0h2V5ZM8,5H6v0H8Z\",undo:\"M10.4,9.4c-1.7,0.3-3.2,0.9-4.6,2L3,8.5v7h7l-2.7-2.7c3.7-2.6,8.8-1.8,11.5,1.9c0.2,0.3,0.4,0.5,0.5,0.8l1.8-0.9 C18.9,10.8,14.7,8.7,10.4,9.4z\",unlink:\"M14.4,11l1.6,1.6V11H14.4z M17,7h-4v1.9h4c1.7,0,3.1,1.4,3.1,3.1c0,1.3-0.8,2.4-1.9,2.8l1.4,1.4C21,15.4,22,13.8,22,12 C22,9.2,19.8,7,17,7z M2,4.3l3.1,3.1C3.3,8.1,2,9.9,2,12c0,2.8,2.2,5,5,5h4v-1.9H7c-1.7,0-3.1-1.4-3.1-3.1c0-1.6,1.2-2.9,2.8-3.1 L8.7,11H8v2h2.7l2.3,2.3V17h1.7l4,4l1.4-1.4L3.4,2.9L2,4.3z\",unorderedList:\"M4,10.5c-0.8,0-1.5,0.7-1.5,1.5s0.7,1.5,1.5,1.5s1.5-0.7,1.5-1.5S4.8,10.5,4,10.5z M4,5.5C3.2,5.5,2.5,6.2,2.5,7 S3.2,8.5,4,8.5S5.5,7.8,5.5,7S4.8,5.5,4,5.5z M4,15.5c-0.8,0-1.5,0.7-1.5,1.5s0.7,1.5,1.5,1.5s1.5-0.7,1.5-1.5S4.8,15.5,4,15.5z M7.5,6v2h14V6H7.5z M7.5,18h14v-2h-14V18z M7.5,13h14v-2h-14V13z\",verticalAlignBottom:\"M16,13h-3V3h-2v10H8l4,4L16,13z M3,19v2h18v-2H3z\",verticalAlignMiddle:\"M3,11v2h18v-2H3z M8,18h3v3h2v-3h3l-4-4L8,18z M16,6h-3V3h-2v3H8l4,4L16,6z\",verticalAlignTop:\"M8,11h3v10h2V11h3l-4-4L8,11z M21,5V3H3v2H21z\",trackChanges:\"M17.2 20H12.4599L13.9938 19.2076L14.0305 19.1886L14.0616 19.1612C14.1036 19.1242 14.1373 19.0786 14.1603 19.0275C14.1806 18.9825 14.1923 18.9342 14.1948 18.885H14.2H14.3384L14.4364 18.7874L14.7049 18.52H15.45C15.5747 18.52 15.6942 18.4705 15.7823 18.3823C15.8705 18.2942 15.92 18.1746 15.92 18.05C15.92 17.9253 15.8705 17.8058 15.7823 17.7176C15.7351 17.6704 15.6789 17.6343 15.6177 17.6109L17.33 15.9056V19.87C17.33 19.8871 17.3266 19.904 17.3201 19.9197C17.3136 19.9355 17.304 19.9499 17.2919 19.9619C17.2799 19.974 17.2655 19.9836 17.2497 19.9901C17.234 19.9966 17.2171 20 17.2 20ZM4.13 20H11.2508C11.2396 19.9629 11.2337 19.9242 11.2337 19.885C11.2337 19.8133 11.2533 19.7431 11.29 19.6819L11.2739 19.6734L11.8838 18.52H5C4.87535 18.52 4.7558 18.4705 4.66766 18.3823C4.57952 18.2942 4.53 18.1746 4.53 18.05C4.53 17.9253 4.57952 17.8058 4.66766 17.7176C4.7558 17.6295 4.87535 17.58 5 17.58H12.3809L12.3925 17.5582L12.4187 17.5284C12.4558 17.4864 12.5014 17.4527 12.5525 17.4297C12.5836 17.4156 12.6163 17.4057 12.6498 17.4001C12.6522 17.3065 12.6877 17.2166 12.7503 17.1467L13 17.37C12.9902 17.381 12.9847 17.3952 12.9847 17.41C12.9847 17.4247 12.9902 17.439 13 17.45L14.13 18.55H14.2L19.09 13.68V13.6L17.99 12.5C17.979 12.4902 17.9647 12.4847 17.95 12.4847C17.9352 12.4847 17.921 12.4902 17.91 12.5L13 17.37L12.7641 17.1322L15.1759 14.74H5C4.87535 14.74 4.7558 14.6905 4.66766 14.6023C4.57952 14.5142 4.53 14.3946 4.53 14.27C4.53 14.1453 4.57952 14.0258 4.66766 13.9376C4.7558 13.8495 4.87535 13.8 5 13.8H15.45C15.5747 13.8 15.6942 13.8495 15.7823 13.9376C15.8169 13.9722 15.8454 14.0115 15.8675 14.0541L17.33 12.6034V9.3H13.28C13.207 9.30976 13.133 9.30976 13.06 9.3C12.7697 9.22119 12.5113 9.05343 12.3212 8.82027C12.1311 8.58711 12.0187 8.30026 12 8V4H4.13C4.09552 4 4.06246 4.0137 4.03808 4.03808C4.0137 4.06246 4 4.09552 4 4.13V19.87C4 19.9045 4.0137 19.9375 4.03808 19.9619C4.06246 19.9863 4.09552 20 4.13 20ZM11.7889 20H11.8785C11.8902 19.9746 11.898 19.9475 11.9015 19.9197L11.8661 19.9866L11.8117 19.9578L13.84 18.91C13.8464 18.9044 13.8515 18.8974 13.855 18.8897C13.8585 18.8819 13.8603 18.8735 13.8603 18.865C13.8603 18.8565 13.8585 18.8481 13.855 18.8403C13.8515 18.8325 13.8464 18.8256 13.84 18.82L12.76 17.75C12.7544 17.7436 12.7474 17.7385 12.7397 17.735C12.7319 17.7315 12.7235 17.7297 12.715 17.7297C12.7065 17.7297 12.6981 17.7315 12.6903 17.735C12.6825 17.7385 12.6756 17.7436 12.67 17.75L11.57 19.83L11.5023 19.7942L11.58 19.85C11.5727 19.8602 11.5687 19.8724 11.5687 19.885C11.5687 19.8975 11.5727 19.9098 11.58 19.92L11.67 20H11.73L11.7642 19.9823L11.7889 20ZM13.1 4.65L16.6 8.15C16.6212 8.17232 16.6355 8.20028 16.6412 8.23051C16.6469 8.26075 16.6437 8.29199 16.6321 8.32048C16.6205 8.34898 16.6009 8.37352 16.5757 8.39117C16.5505 8.40882 16.5207 8.41883 16.49 8.42H13.06L12.83 8.19V4.76C12.8312 4.72925 12.8412 4.6995 12.8588 4.67429C12.8765 4.64909 12.901 4.62951 12.9295 4.6179C12.958 4.6063 12.9893 4.60315 13.0195 4.60884C13.0497 4.61453 13.0777 4.62882 13.1 4.65ZM11 6.72C11.0027 6.66089 10.9937 6.60183 10.9735 6.54621C10.9534 6.49058 10.9224 6.43948 10.8825 6.39582C10.8425 6.35216 10.7944 6.31681 10.7408 6.29179C10.6871 6.26677 10.6291 6.25257 10.57 6.25H5C4.88239 6.25773 4.77251 6.3113 4.69397 6.39918C4.61543 6.48707 4.57451 6.60226 4.58 6.72C4.57451 6.83774 4.61543 6.95293 4.69397 7.04082C4.77251 7.12871 4.88239 7.18227 5 7.19H10.6C10.714 7.1774 10.8189 7.12173 10.8933 7.03438C10.9676 6.94702 11.0058 6.83457 11 6.72ZM11.1 8.14001H5C4.87535 8.14001 4.7558 8.18953 4.66766 8.27767C4.57952 8.36582 4.53 8.48536 4.53 8.61001C4.53 8.73467 4.57952 8.85421 4.66766 8.94236C4.7558 9.0305 4.87535 9.08001 5 9.08001H11.1C11.2247 9.08001 11.3442 9.0305 11.4323 8.94236C11.5205 8.85421 11.57 8.73467 11.57 8.61001C11.57 8.48536 11.5205 8.36582 11.4323 8.27767C11.3442 8.18953 11.2247 8.14001 11.1 8.14001ZM5 11H15.45C15.5826 11 15.7098 10.9473 15.8036 10.8536C15.8973 10.7598 15.95 10.6326 15.95 10.5C15.95 10.3674 15.8973 10.2402 15.8036 10.1464C15.7098 10.0527 15.5826 10 15.45 10H5C4.86739 10 4.74021 10.0527 4.64645 10.1464C4.55268 10.2402 4.5 10.3674 4.5 10.5C4.5 10.6326 4.55268 10.7598 4.64645 10.8536C4.74021 10.9473 4.86739 11 5 11ZM5 12.86H11.1C11.2211 12.8523 11.3346 12.798 11.4166 12.7085C11.4986 12.6191 11.5428 12.5013 11.54 12.38C11.5427 12.2597 11.4982 12.1431 11.4159 12.0552C11.3337 11.9673 11.2202 11.9152 11.1 11.91H5C4.94089 11.9126 4.88286 11.9268 4.82924 11.9518C4.77562 11.9768 4.72746 12.0122 4.68752 12.0558C4.64758 12.0995 4.61664 12.1506 4.59648 12.2062C4.57631 12.2618 4.56731 12.3209 4.57 12.38C4.56451 12.5004 4.60649 12.6181 4.6869 12.7079C4.76731 12.7976 4.87974 12.8523 5 12.86ZM11.1 16.63H5C4.87535 16.63 4.7558 16.5805 4.66766 16.4923C4.57952 16.4042 4.53 16.2846 4.53 16.16C4.53 16.0353 4.57952 15.9158 4.66766 15.8276C4.7558 15.7395 4.87535 15.69 5 15.69H11.1C11.2247 15.69 11.3442 15.7395 11.4323 15.8276C11.5205 15.9158 11.57 16.0353 11.57 16.16C11.57 16.2846 11.5205 16.4042 11.4323 16.4923C11.3442 16.5805 11.2247 16.63 11.1 16.63ZM18.8503 11.592C18.7991 11.6175 18.7545 11.6544 18.72 11.7L18.26 12.14C18.2501 12.151 18.2447 12.1652 18.2447 12.18C18.2447 12.1947 18.2501 12.209 18.26 12.22L19.37 13.32C19.381 13.3298 19.3952 13.3353 19.41 13.3353C19.4247 13.3353 19.439 13.3298 19.45 13.32L19.86 12.91C19.9057 12.867 19.9421 12.8151 19.967 12.7575C19.9919 12.6998 20.0047 12.6377 20.0047 12.575C20.0047 12.5122 19.9919 12.4501 19.967 12.3925C19.9421 12.3349 19.9057 12.283 19.86 12.24L19.31 11.7C19.2755 11.6544 19.2309 11.6175 19.1797 11.592C19.1285 11.5666 19.0721 11.5533 19.015 11.5533C18.9578 11.5533 18.9014 11.5666 18.8503 11.592Z\",showTrackChanges:\"M17.2421 13.6048C17.2631 13.6136 17.2841 13.6226 17.305 13.6317V9.29505H13.2626C13.1897 9.30481 13.1159 9.30481 13.043 9.29505C12.7532 9.21632 12.4953 9.04872 12.3056 8.81577C12.1158 8.58283 12.0037 8.29625 11.985 7.99627V4H4.12976C4.09534 4 4.06234 4.01368 4.038 4.03804C4.01367 4.0624 4 4.09543 4 4.12988V19.8552C4 19.8896 4.01367 19.9227 4.038 19.947C4.06234 19.9714 4.09534 19.9851 4.12976 19.9851H13.4875C13.0501 19.8216 12.6281 19.6155 12.2277 19.3686C11.8529 19.1551 11.4911 18.9196 11.1442 18.6632C11.0697 18.6152 10.9982 18.5628 10.9302 18.5065H4.99812C4.87371 18.5065 4.75438 18.457 4.66641 18.3689C4.57843 18.2809 4.529 18.1614 4.529 18.0369C4.529 17.9124 4.57843 17.7929 4.66641 17.7049C4.75438 17.6168 4.87371 17.5673 4.99812 17.5673H10.4396C10.4472 17.4488 10.4756 17.3324 10.5235 17.2235C10.5939 17.017 10.6761 16.8149 10.7694 16.6182H4.99812C4.87371 16.6182 4.75438 16.5687 4.66641 16.4807C4.57843 16.3926 4.529 16.2732 4.529 16.1487C4.529 16.0241 4.57843 15.9047 4.66641 15.8166C4.75438 15.7286 4.87371 15.6791 4.99812 15.6791H11.0867C11.1576 15.6791 11.2268 15.6952 11.2895 15.7253C11.5204 15.361 11.7938 15.027 12.1033 14.73H4.99812C4.87371 14.73 4.75438 14.6805 4.66641 14.5924C4.57843 14.5044 4.529 14.385 4.529 14.2604C4.529 14.1359 4.57843 14.0164 4.66641 13.9284C4.75438 13.8403 4.87371 13.7909 4.99812 13.7909H13.4434C13.9833 13.525 14.5656 13.3516 15.166 13.2795L15.1923 13.2763H15.2189H15.4925C16.0923 13.2609 16.6886 13.3728 17.2421 13.6048ZM13.0829 4.64939L16.5764 8.14613C16.5975 8.16843 16.6118 8.19636 16.6174 8.22657C16.6231 8.25677 16.62 8.28798 16.6084 8.31645C16.5968 8.34492 16.5773 8.36944 16.5521 8.38707C16.527 8.40471 16.4973 8.41471 16.4666 8.41587H13.043L12.8134 8.18609V4.75929C12.8146 4.72857 12.8246 4.69884 12.8422 4.67366C12.8598 4.64849 12.8843 4.62893 12.9128 4.61733C12.9412 4.60573 12.9724 4.60259 13.0026 4.60827C13.0328 4.61396 13.0607 4.62824 13.0829 4.64939ZM10.9869 6.71746C10.9896 6.65841 10.9806 6.59941 10.9604 6.54383C10.9403 6.48825 10.9094 6.4372 10.8696 6.39358C10.8297 6.34997 10.7816 6.31465 10.7281 6.28965C10.6746 6.26466 10.6167 6.25047 10.5577 6.2479H4.99813C4.88074 6.25562 4.77106 6.30914 4.69267 6.39694C4.61428 6.48475 4.57343 6.59983 4.57891 6.71746C4.57343 6.83509 4.61428 6.95017 4.69267 7.03798C4.77106 7.12579 4.88074 7.1793 4.99813 7.18702H10.5876C10.7014 7.17444 10.8061 7.11882 10.8803 7.03154C10.9545 6.94427 10.9927 6.83192 10.9869 6.71746ZM11.0867 8.13614H4.99812C4.87371 8.13614 4.75438 8.18561 4.66641 8.27367C4.57843 8.36173 4.529 8.48116 4.529 8.6057C4.529 8.73023 4.57843 8.84967 4.66641 8.93773C4.75438 9.02579 4.87371 9.07526 4.99812 9.07526H11.0867C11.2111 9.07526 11.3304 9.02579 11.4184 8.93773C11.5064 8.84967 11.5558 8.73023 11.5558 8.6057C11.5558 8.48116 11.5064 8.36173 11.4184 8.27367C11.3304 8.18561 11.2111 8.13614 11.0867 8.13614ZM4.99812 10.9935H15.4285C15.5609 10.9935 15.6878 10.9408 15.7814 10.8472C15.875 10.7535 15.9276 10.6264 15.9276 10.4939C15.9276 10.3614 15.875 10.2344 15.7814 10.1407C15.6878 10.047 15.5609 9.9944 15.4285 9.9944H4.99812C4.86576 9.9944 4.73883 10.047 4.64523 10.1407C4.55164 10.2344 4.49906 10.3614 4.49906 10.4939C4.49906 10.6264 4.55164 10.7535 4.64523 10.8472C4.73883 10.9408 4.86576 10.9935 4.99812 10.9935ZM4.99812 12.8517H11.0867C11.2076 12.844 11.3208 12.7898 11.4027 12.7004C11.4845 12.611 11.5287 12.4934 11.5259 12.3722C11.5286 12.252 11.4841 12.1355 11.402 12.0477C11.3199 11.9599 11.2067 11.9078 11.0867 11.9026H4.99812C4.93912 11.9052 4.8812 11.9194 4.82769 11.9444C4.77417 11.9694 4.7261 12.0047 4.68623 12.0483C4.64637 12.0919 4.61549 12.143 4.59536 12.1985C4.57523 12.2541 4.56625 12.3131 4.56893 12.3722C4.56345 12.4925 4.60535 12.6101 4.68561 12.6998C4.76587 12.7894 4.87809 12.844 4.99812 12.8517ZM19.97 17.4974C19.5787 16.5636 19.0431 15.6971 18.383 14.9298C18.0152 14.5351 17.5679 14.2233 17.0706 14.0148C16.5732 13.8064 16.0373 13.7062 15.4984 13.7209H15.2189C14.4787 13.8098 13.7684 14.0666 13.1423 14.4717C12.5162 14.8769 11.9906 15.4196 11.6057 16.0587C11.3211 16.4677 11.0959 16.9151 10.937 17.3875C10.9006 17.464 10.8817 17.5476 10.8817 17.6323C10.8817 17.717 10.9006 17.8006 10.937 17.877C11.0642 18.0428 11.2196 18.1849 11.3961 18.2967C11.7346 18.5476 12.0879 18.7778 12.4541 18.986C13.4096 19.5767 14.497 19.92 15.6182 19.9851C16.4392 20.0504 17.2632 19.9005 18.0088 19.5501C18.7544 19.1998 19.3959 18.661 19.8702 17.9869C19.9311 17.923 19.9729 17.8432 19.9905 17.7566C20.0082 17.67 20.0011 17.5801 19.97 17.4974ZM15.9775 19.1758C14.3849 19.068 12.8507 18.5331 11.5358 17.6273C11.5788 17.5678 11.6255 17.5111 11.6756 17.4574C12.3061 16.569 13.1295 15.8359 14.0832 15.3126C13.8003 15.7406 13.6785 16.2566 13.7417 16.7681C13.7676 17.0339 13.8465 17.2918 13.9737 17.5265C14.1009 17.7613 14.2739 17.9681 14.4823 18.1348C14.6907 18.3016 14.9304 18.4248 15.1872 18.4972C15.4441 18.5696 15.7128 18.5897 15.9775 18.5564C16.305 18.4971 16.6137 18.3609 16.8785 18.159C17.1432 17.9572 17.3564 17.6954 17.5005 17.3951C17.6446 17.0949 17.7156 16.7647 17.7077 16.4317C17.6997 16.0987 17.613 15.7723 17.4547 15.4793C17.2614 15.3391 17.0533 15.2235 16.8351 15.1339C17.0715 15.226 17.2966 15.3485 17.5046 15.4993C18.0049 15.8976 18.4424 16.3691 18.8022 16.898L18.8927 17.0137L18.8927 17.0137C19.0823 17.2564 19.2729 17.5004 19.4709 17.7072C18.5404 18.6311 17.288 19.1576 15.9775 19.1758ZM16.3168 15.769C16.2085 15.8106 16.1171 15.8873 16.0574 15.9869C15.9977 16.0865 15.9731 16.2032 15.9875 16.3185C15.9949 16.3856 16.0156 16.4505 16.0483 16.5096C16.081 16.5686 16.1251 16.6206 16.178 16.6624C16.2309 16.7042 16.2916 16.7351 16.3566 16.7532C16.4216 16.7714 16.4895 16.7764 16.5564 16.7681H16.6063C16.5618 16.9495 16.4637 17.1132 16.3248 17.238C16.186 17.3627 16.0127 17.4427 15.8278 17.4674H15.6481C15.4335 17.4396 15.2337 17.3427 15.0789 17.1913C14.924 17.04 14.8226 16.8423 14.7897 16.6282C14.7628 16.3782 14.8311 16.1271 14.981 15.9253C15.1305 15.7238 15.3504 15.5861 15.5968 15.5395C15.3446 15.5862 15.12 15.7284 14.9697 15.9364C14.8191 16.1448 14.7547 16.4034 14.7897 16.6582C14.8226 16.8723 14.924 17.0699 15.0789 17.2213C15.2337 17.3727 15.4335 17.4696 15.6481 17.4974H15.8377C16.0209 17.4708 16.1919 17.39 16.3289 17.2654C16.4658 17.1408 16.5625 16.978 16.6063 16.7981C16.7293 16.7633 16.8359 16.686 16.9072 16.5799C16.9785 16.4737 17.0098 16.3457 16.9956 16.2186C16.9882 16.1515 16.9675 16.0865 16.9348 16.0275C16.9021 15.9685 16.858 15.9165 16.805 15.8747C16.7521 15.8329 16.6914 15.802 16.6264 15.7838C16.5615 15.7657 16.4936 15.7607 16.4266 15.769H16.3168Z\",acceptAllChanges:\"M9.36499 16.7348C9.38499 16.7547 9.41212 16.7659 9.44041 16.7659H10.9881C10.9028 16.6008 10.9289 16.3933 11.0663 16.2541L11.7266 15.585H10.1444C10.0549 15.5701 9.97363 15.5238 9.91498 15.4547C9.85639 15.3856 9.82422 15.298 9.82422 15.2074C9.82422 15.1169 9.85639 15.0292 9.91498 14.9601C9.97363 14.891 10.0549 14.8448 10.1444 14.8298H12.4879C12.5584 14.785 12.6407 14.7607 12.7257 14.7607C12.8106 14.7607 12.893 14.785 12.9635 14.8298H16.5295L18.3303 13.0091C18.4135 12.925 18.5271 12.8776 18.6456 12.8777C18.7642 12.8777 18.8777 12.9252 18.9609 13.0094L20 14.0621V8.25532H16.8001C16.7301 8.27288 16.6568 8.27288 16.5868 8.25532C16.3485 8.1935 16.1367 8.0565 15.9829 7.86478C15.8292 7.67306 15.7416 7.43688 15.7335 7.19149V4H9.44041C9.41293 4.0024 9.38718 4.01437 9.36767 4.03383C9.34816 4.05329 9.33615 4.07897 9.33375 4.10638V16.6596C9.33375 16.6878 9.34499 16.7148 9.36499 16.7348ZM10.0744 17.2979H11.4803L12.259 18.0957H5.06727C5.01734 18.0957 4.96838 18.1057 4.9232 18.1246C4.8788 18.1431 4.83798 18.1702 4.80335 18.2048C4.7333 18.2746 4.69398 18.3693 4.69398 18.468C4.69398 18.5668 4.7333 18.6615 4.80335 18.7313C4.87333 18.8011 4.96832 18.8404 5.06727 18.8404H12.9857L13.7947 19.6693L14.0836 19.9574H4.10733C4.09291 19.9591 4.07829 19.9576 4.06457 19.9528C4.05085 19.9481 4.03838 19.9403 4.02812 19.9301C4.01785 19.9198 4.01004 19.9074 4.00529 19.8937C4.00054 19.88 3.99896 19.8654 4.00067 19.8511V7.29787C4.00067 7.26966 4.01191 7.2426 4.03191 7.22265C4.05192 7.2027 4.07905 7.19149 4.10733 7.19149H8.70447V9.05319H5.06727C4.97294 9.05867 4.88453 9.10069 4.8208 9.17019C4.757 9.23973 4.72302 9.33135 4.72594 9.42553C4.72289 9.52082 4.75654 9.61364 4.82002 9.6849C4.88356 9.75613 4.97203 9.80038 5.06727 9.8085H8.70447V10.5638H5.06727C5.01968 10.5652 4.97274 10.5759 4.92932 10.5954C4.88583 10.6148 4.84664 10.6426 4.8139 10.6772C4.78122 10.7118 4.7557 10.7525 4.73877 10.7969C4.72184 10.8413 4.7139 10.8887 4.71527 10.9361C4.7139 10.9837 4.72184 11.031 4.73877 11.0754C4.74424 11.0897 4.75055 11.1037 4.75778 11.1171C4.76162 11.1243 4.76566 11.1313 4.76995 11.1382C4.78265 11.1585 4.79736 11.1776 4.8139 11.1951C4.84664 11.2297 4.88583 11.2575 4.92932 11.2769C4.95491 11.2884 4.98173 11.2968 5.0092 11.3021C5.02834 11.3058 5.04774 11.3079 5.06727 11.3085H8.70447V12.0638H5.06734C4.97782 12.0789 4.89651 12.1251 4.83792 12.1942C4.77926 12.2633 4.7471 12.351 4.7471 12.4415C4.7471 12.5321 4.77926 12.6197 4.83792 12.6888C4.89651 12.758 4.97782 12.8041 5.06734 12.8192H8.70447V13.5745H5.06734C4.97782 13.5895 4.89651 13.6357 4.83792 13.7048C4.81383 13.7332 4.79424 13.7647 4.77946 13.7983C4.7583 13.8465 4.7471 13.8988 4.7471 13.9522C4.7471 14.0427 4.77926 14.1303 4.83792 14.1994C4.89651 14.2686 4.97782 14.3147 5.06734 14.3298H8.70447V15.0744H5.06727C4.97776 15.0895 4.89651 15.1357 4.83785 15.2048C4.77926 15.2739 4.7471 15.3616 4.7471 15.4521C4.7471 15.5043 4.75778 15.5556 4.77809 15.6029C4.793 15.6376 4.81305 15.6701 4.83785 15.6994C4.89651 15.7685 4.97776 15.8147 5.06727 15.8298H8.70447V16.5851H5.06727C4.97776 16.6001 4.89651 16.6463 4.83785 16.7154C4.79489 16.7661 4.76618 16.8267 4.75387 16.8912C4.74938 16.9146 4.7471 16.9386 4.7471 16.9628C4.7471 17.0533 4.77926 17.1409 4.83785 17.21C4.89651 17.2792 4.97776 17.3253 5.06727 17.3404H9.95241C9.99552 17.3331 10.0367 17.3187 10.0744 17.2979ZM20 15.3204L18.5709 16.7659H19.8933C19.9216 16.7659 19.9487 16.7547 19.9687 16.7348C19.9887 16.7148 20 16.6878 20 16.6596V15.3204ZM14.7526 16.6264L13.7248 15.585H15.7825L14.7526 16.6264ZM14.9498 6.08721C14.9465 6.06854 14.9416 6.05023 14.9353 6.03244C14.9202 5.98939 14.897 5.94929 14.8665 5.91442C14.8145 5.85488 14.7444 5.81394 14.6669 5.79787H10.1337C10.0348 5.79787 9.93978 5.83709 9.8698 5.90693C9.79975 5.97676 9.76043 6.07146 9.76043 6.17022C9.76043 6.19463 9.76283 6.21879 9.76752 6.24239C9.77462 6.2782 9.78692 6.31268 9.80398 6.34479C9.82123 6.37716 9.8433 6.40709 9.8698 6.43348C9.93978 6.50332 10.0348 6.54257 10.1337 6.54257H14.6669C14.6811 6.54023 14.6951 6.53702 14.7088 6.53299C14.7206 6.52955 14.7322 6.52549 14.7436 6.52082C14.7624 6.51309 14.7806 6.50371 14.7979 6.4928C14.8378 6.46764 14.8722 6.43468 14.8991 6.39599C14.9259 6.35729 14.9447 6.31359 14.9543 6.26749C14.9554 6.26232 14.9563 6.25716 14.9571 6.25197C14.9579 6.24739 14.9586 6.24281 14.9591 6.23824C14.9612 6.22129 14.962 6.20424 14.9616 6.18723C14.961 6.16727 14.9588 6.14733 14.9549 6.12766C14.9539 6.11406 14.9523 6.10055 14.9498 6.08721ZM15.0189 7.29788H10.1445C10.0549 7.31291 9.97363 7.35911 9.91504 7.42823C9.85639 7.49738 9.82422 7.585 9.82422 7.67555C9.82422 7.76609 9.85639 7.85369 9.91504 7.92284C9.97363 7.99196 10.0549 8.03815 10.1445 8.05319H15.0189C15.0321 8.05241 15.0451 8.05095 15.058 8.04877C15.0745 8.04601 15.0906 8.04212 15.1064 8.03718C15.1669 8.01822 15.2219 7.98361 15.2654 7.93618C15.3291 7.86664 15.3632 7.77502 15.3602 7.68084C15.3606 7.67392 15.3608 7.66701 15.3608 7.66009C15.3609 7.65087 15.3606 7.64165 15.3599 7.63247C15.3592 7.62263 15.358 7.61279 15.3565 7.60302C15.3532 7.58188 15.3479 7.56104 15.3409 7.54072C15.3254 7.49575 15.301 7.45426 15.2693 7.41868C15.2492 7.39621 15.2265 7.37638 15.2017 7.35959C15.1872 7.34979 15.172 7.34102 15.1562 7.33339C15.1132 7.31265 15.0665 7.3006 15.0189 7.29788ZM10.1445 9.56381H18.496C18.5856 9.54877 18.6669 9.50258 18.7255 9.43346C18.7841 9.3643 18.8163 9.27671 18.8163 9.18617C18.8163 9.09562 18.7841 9.008 18.7255 8.93884C18.6669 8.86973 18.5856 8.82353 18.496 8.8085H10.1445C10.0549 8.82353 9.97363 8.86973 9.91504 8.93884C9.85639 9.008 9.82422 9.09562 9.82422 9.18617C9.82422 9.24412 9.83738 9.30087 9.86224 9.35236C9.87624 9.38132 9.89395 9.40859 9.91504 9.43346C9.97363 9.50258 10.0549 9.54877 10.1445 9.56381ZM10.1445 11.0638H15.0189C15.1084 11.0488 15.1897 11.0026 15.2483 10.9335C15.2854 10.8898 15.3118 10.8387 15.3263 10.7842C15.3347 10.7525 15.3391 10.7195 15.3391 10.6861C15.3391 10.5956 15.3069 10.508 15.2483 10.4389C15.1897 10.3697 15.1084 10.3235 15.0189 10.3085H10.1445C10.0549 10.3235 9.97363 10.3697 9.91504 10.4389C9.85639 10.508 9.82422 10.5956 9.82422 10.6861C9.82422 10.7424 9.83666 10.7976 9.8601 10.8478C9.87442 10.8785 9.89284 10.9073 9.91504 10.9335C9.97363 11.0026 10.0549 11.0488 10.1445 11.0638ZM18.496 12.5745H10.1444C10.0549 12.5594 9.97363 12.5132 9.91498 12.4441C9.85639 12.3749 9.82422 12.2873 9.82422 12.1968C9.82422 12.1062 9.85639 12.0186 9.91498 11.9495C9.97363 11.8803 10.0549 11.8342 10.1444 11.8191H18.496C18.5856 11.8342 18.6669 11.8803 18.7255 11.9495C18.7841 12.0186 18.8163 12.1062 18.8163 12.1968C18.8163 12.2873 18.7841 12.3749 18.7255 12.4441C18.6971 12.4776 18.6633 12.5058 18.6259 12.5276C18.5861 12.5507 18.5421 12.5667 18.496 12.5745ZM15.0189 14.0744H10.1444C10.0968 14.0731 10.0499 14.0624 10.0064 14.0429C9.96296 14.0234 9.92376 13.9956 9.89102 13.961C9.85834 13.9265 9.83282 13.8857 9.81589 13.8413C9.79897 13.7969 9.79102 13.7496 9.79239 13.7021C9.79102 13.6546 9.79897 13.6073 9.81589 13.5628C9.83282 13.5184 9.85834 13.4778 9.89102 13.4432C9.92376 13.4086 9.96296 13.3808 10.0064 13.3613C10.0499 13.3419 10.0968 13.3311 10.1444 13.3297H15.0189C15.0661 13.3311 15.1125 13.3419 15.1554 13.3615C15.1983 13.381 15.2368 13.4091 15.2686 13.4438C15.3005 13.4785 15.325 13.5193 15.3407 13.5637C15.3564 13.608 15.363 13.6551 15.3602 13.7021C15.3631 13.7963 15.3291 13.8879 15.2653 13.9574C15.2016 14.027 15.1132 14.0689 15.0189 14.0744ZM16.6188 4.52128L19.4133 7.30852C19.4293 7.32624 19.4401 7.34808 19.4443 7.37157C19.4485 7.39506 19.446 7.41925 19.4371 7.4414C19.4282 7.46356 19.4133 7.48278 19.394 7.4969C19.3747 7.51102 19.3518 7.51947 19.328 7.52128H16.5868L16.4054 7.34043V4.60639C16.4073 4.5826 16.4157 4.55979 16.4299 4.54056C16.444 4.52133 16.4633 4.50644 16.4855 4.49757C16.5077 4.48871 16.532 4.48624 16.5556 4.49043C16.5791 4.49462 16.601 4.50531 16.6188 4.52128ZM18.6454 13.3192L20 14.6915L14.7522 20L14.7416 19.9894L14.1123 19.3617L13.3976 18.6277L11.3817 16.5638L12.7257 15.2021L14.7522 17.2553L18.6454 13.3192Z\",rejectAllChanges:\"M9.54637 16.5847H8.96997V15.8295H12.786C12.8024 15.8265 12.8186 15.8223 12.8343 15.817C12.8535 15.8105 12.8719 15.8023 12.8897 15.7926C12.9315 15.7697 12.969 15.738 12.9997 15.6991C13.0268 15.6649 13.0478 15.6261 13.0621 15.5847H13.571V16.7656H9.79386C9.78396 16.7479 9.77269 16.731 9.76011 16.7151C9.70552 16.6459 9.62976 16.5998 9.54637 16.5847ZM13.4717 12.9573V13.3295H9.72523C9.6809 13.3309 9.63716 13.3416 9.59671 13.361C9.57578 13.3711 9.55595 13.3834 9.53745 13.3977C9.5201 13.411 9.50391 13.4262 9.48917 13.4429C9.45872 13.4775 9.43494 13.5182 9.41917 13.5626C9.41778 13.5664 9.41644 13.5703 9.41523 13.5742H8.96997V12.8189H12.786C12.8694 12.8039 12.9452 12.7577 12.9997 12.6886C13.0078 12.6784 13.0153 12.6677 13.0223 12.6568L13.029 12.6458L13.033 12.6389L13.0397 12.6266C13.0452 12.6157 13.0503 12.6046 13.055 12.5931C13.0576 12.5869 13.0599 12.5806 13.0621 12.5742H13.6872C13.6453 12.5965 13.607 12.6269 13.5746 12.6644C13.5059 12.7439 13.469 12.849 13.4717 12.9573ZM9.82598 14.0742H13.4758C13.4809 14.0932 13.4904 14.1108 13.5037 14.1251C13.5242 14.147 13.552 14.1593 13.581 14.1593H13.6008L13.571 14.1912V14.8295H9.72523C9.64183 14.8445 9.56614 14.8907 9.51149 14.9598C9.4845 14.994 9.46351 15.0328 9.4492 15.0741H8.96997V14.3295H9.54637C9.62976 14.3145 9.70552 14.2683 9.76011 14.1992C9.78947 14.162 9.81166 14.1195 9.82598 14.0742ZM18.9075 8.2552V12.5317H17.7846V12.323C17.7978 12.2827 17.8047 12.2399 17.8047 12.1965C17.8047 12.106 17.7747 12.0184 17.7201 11.9493C17.6655 11.8801 17.5897 11.834 17.5063 11.8189H9.72523C9.64183 11.834 9.56614 11.8801 9.51149 11.9493C9.48444 11.9835 9.46351 12.0222 9.4492 12.0636H8.96997V11.3083H9.54637C9.63425 11.3028 9.71662 11.2608 9.776 11.1913C9.80687 11.1551 9.83029 11.113 9.84527 11.0676L9.84654 11.0637H14.2667C14.3501 11.0486 14.4258 11.0024 14.4805 10.9333C14.5231 10.8794 14.5507 10.8142 14.5607 10.7452C14.5636 10.7258 14.565 10.706 14.565 10.686C14.565 10.6658 14.5635 10.6458 14.5606 10.626C14.5572 10.6026 14.5516 10.5796 14.5442 10.5573C14.5299 10.5144 14.5084 10.4741 14.4805 10.4387C14.4258 10.3696 14.3501 10.3234 14.2667 10.3083H9.72529C9.6832 10.3159 9.64299 10.3314 9.60653 10.3538C9.57081 10.3759 9.5386 10.4045 9.51155 10.4387C9.49639 10.4579 9.4831 10.4785 9.47182 10.5002C9.46133 10.5205 9.45259 10.5417 9.44568 10.5636H8.96997V9.80838H9.16873C9.25656 9.80286 9.33899 9.76085 9.39837 9.69131C9.45775 9.62177 9.48947 9.53022 9.48674 9.43601C9.48711 9.42951 9.48735 9.42302 9.48741 9.41653C9.48741 9.41049 9.48729 9.40445 9.48705 9.39848C9.49457 9.41055 9.50269 9.42218 9.51155 9.43334C9.56614 9.50249 9.64189 9.54866 9.72529 9.56372H17.5063C17.5897 9.54866 17.6655 9.50249 17.7201 9.43334C17.7747 9.36419 17.8047 9.2766 17.8047 9.18603C17.8047 9.09552 17.7747 9.00786 17.7201 8.93878C17.6655 8.86963 17.5897 8.82346 17.5063 8.8084H9.72529C9.64189 8.82346 9.56614 8.86963 9.51155 8.93878C9.4569 9.00786 9.42694 9.09552 9.42694 9.18603L9.427 9.19707L9.42754 9.20875C9.41972 9.19661 9.41123 9.18499 9.40201 9.17389C9.38478 9.15311 9.36537 9.1346 9.34427 9.11863C9.33735 9.11344 9.33026 9.1085 9.32298 9.10383C9.31855 9.10097 9.31406 9.09824 9.30951 9.09565L9.30424 9.09266L9.29659 9.08857C9.28792 9.08402 9.27906 9.07993 9.27009 9.07623C9.2616 9.07279 9.25298 9.06974 9.24431 9.06701C9.21974 9.05935 9.19439 9.05461 9.16873 9.05305H8.96997V4.10638C8.97221 4.07897 8.9834 4.05328 9.00157 4.03383C9.01975 4.01437 9.04374 4.0024 9.06935 4H14.9325V7.1914C14.9401 7.43679 15.0216 7.67296 15.1649 7.86468C15.3082 8.0564 15.5055 8.19338 15.7275 8.2552C15.7927 8.27277 15.861 8.27277 15.9262 8.2552H18.9075ZM13.571 17.2975V19.4251L13.5722 19.4615C13.5835 19.6376 13.6323 19.8068 13.7133 19.957H4.10061C4.08718 19.9587 4.07355 19.9571 4.06077 19.9524C4.04799 19.9477 4.03637 19.9399 4.02681 19.9296C4.01724 19.9194 4.00997 19.907 4.00554 19.8933C4.00111 19.8796 3.99964 19.865 4.00124 19.8506V7.29778C4.00124 7.26957 4.01171 7.24251 4.03034 7.22256C4.04898 7.20261 4.07426 7.1914 4.10061 7.1914H8.38368V9.05305H4.99497C4.90708 9.05857 4.82471 9.10052 4.76533 9.17006C4.70589 9.2396 4.67423 9.33121 4.67696 9.42536C4.67411 9.52067 4.70547 9.61346 4.76461 9.68475C4.8238 9.75598 4.90623 9.80026 4.99497 9.80838H8.38368V10.5636H4.99497C4.96682 10.5645 4.93898 10.5692 4.91199 10.5774C4.89647 10.5821 4.88124 10.588 4.86644 10.5952C4.8494 10.6034 4.83308 10.613 4.81762 10.6241C4.79627 10.6393 4.77655 10.657 4.7589 10.6771C4.72846 10.7116 4.70468 10.7523 4.68891 10.7967C4.67314 10.8411 4.66574 10.8885 4.66701 10.9359C4.66641 10.9597 4.66792 10.9834 4.67156 11.0067C4.6752 11.03 4.68102 11.053 4.68891 11.0752C4.70468 11.1196 4.72846 11.1603 4.7589 11.1949C4.7731 11.211 4.78862 11.2256 4.80524 11.2386C4.81452 11.2459 4.82417 11.2527 4.83417 11.259C4.84461 11.2655 4.85534 11.2714 4.86644 11.2767C4.9069 11.2962 4.95063 11.3069 4.99497 11.3083H8.38368V12.0636H4.99503C4.91163 12.0787 4.83587 12.1249 4.78128 12.194C4.7526 12.2303 4.7307 12.2717 4.71639 12.3159C4.70347 12.3559 4.69667 12.3983 4.69667 12.4413C4.69667 12.5318 4.72664 12.6194 4.78128 12.6886C4.809 12.7237 4.84218 12.7529 4.87906 12.7751C4.89416 12.7842 4.90993 12.7921 4.92619 12.7988C4.94833 12.8079 4.97137 12.8147 4.99503 12.8189H8.38368V13.5742H4.99503C4.95275 13.5819 4.91242 13.5975 4.87584 13.62C4.8403 13.642 4.80822 13.6705 4.78128 13.7046C4.72664 13.7737 4.69667 13.8613 4.69667 13.9519C4.69667 14.0424 4.72664 14.13 4.78128 14.1992C4.83587 14.2683 4.91163 14.3145 4.99503 14.3295H8.38368V15.0741H4.99497C4.94644 15.0829 4.90047 15.1022 4.85977 15.1304C4.83878 15.145 4.81919 15.162 4.80136 15.1811C4.79439 15.1885 4.78765 15.1964 4.78122 15.2045C4.77188 15.2163 4.76327 15.2287 4.75539 15.2416C4.74441 15.2594 4.73495 15.2781 4.727 15.2975C4.71924 15.3163 4.71293 15.3358 4.70808 15.3558C4.70407 15.3723 4.7011 15.389 4.69922 15.4061C4.69752 15.4212 4.69667 15.4364 4.69667 15.4518C4.69667 15.5423 4.72664 15.6299 4.78122 15.6991C4.83587 15.7682 4.91157 15.8144 4.99497 15.8295H8.38368V16.5847H4.99497C4.91157 16.5998 4.83587 16.6459 4.78122 16.7151C4.72664 16.7842 4.69667 16.8718 4.69667 16.9624C4.69667 17.0529 4.72664 17.1405 4.78122 17.2097C4.83587 17.2788 4.91157 17.325 4.99497 17.34H9.54637C9.58655 17.3328 9.62496 17.3183 9.66008 17.2975H13.571ZM15.7573 4.52124L18.3609 7.30839C18.3758 7.32612 18.3858 7.34796 18.3897 7.37145C18.3937 7.39493 18.3914 7.41913 18.3831 7.44128C18.3748 7.46343 18.3609 7.48266 18.3429 7.49678C18.325 7.51089 18.3036 7.51934 18.2814 7.52115H15.7275L15.5585 7.34031V4.60634C15.5602 4.58255 15.5681 4.55975 15.5813 4.54051C15.5945 4.52128 15.6125 4.50639 15.6332 4.49753C15.6539 4.48867 15.6765 4.48619 15.6984 4.49038C15.7203 4.49457 15.7407 4.50526 15.7573 4.52124ZM14.1248 5.91437C14.1732 5.97391 14.2021 6.04884 14.2071 6.1276C14.2157 6.17377 14.2155 6.22129 14.2065 6.26739C14.2045 6.27778 14.2021 6.28804 14.1992 6.29817L14.1944 6.31388C14.1847 6.34291 14.1715 6.3705 14.1551 6.39595C14.13 6.43465 14.098 6.46757 14.0608 6.49276C14.0354 6.5099 14.008 6.52328 13.9794 6.53244C13.9661 6.53672 13.9525 6.5401 13.9387 6.5425H9.71529C9.62309 6.5425 9.5346 6.50328 9.4694 6.43342C9.40413 6.36362 9.3675 6.26889 9.3675 6.17013C9.3675 6.07144 9.40413 5.97671 9.4694 5.90691C9.5346 5.83704 9.62309 5.79783 9.71529 5.79783H13.9387C13.9718 5.80516 14.0034 5.81769 14.0326 5.83484C14.0672 5.85522 14.0984 5.88204 14.1248 5.91437ZM14.2667 7.29776H9.72529C9.69606 7.30302 9.66773 7.31211 9.64092 7.3247C9.62612 7.33171 9.61175 7.33977 9.59798 7.34879C9.56565 7.36996 9.53642 7.39664 9.51155 7.42813C9.4569 7.49722 9.42694 7.58487 9.42694 7.67538C9.42694 7.70155 9.42942 7.72752 9.43434 7.75285C9.44635 7.81505 9.47273 7.87355 9.51155 7.9227C9.55292 7.9751 9.60647 8.01432 9.66628 8.03678C9.67762 8.04107 9.6892 8.04477 9.70097 8.04775C9.70898 8.04983 9.71711 8.05158 9.72529 8.05308H14.2667C14.3546 8.04756 14.437 8.00555 14.4964 7.93601C14.5558 7.86647 14.5875 7.77492 14.5847 7.68071C14.5874 7.63318 14.5813 7.58559 14.5667 7.54059C14.5522 7.4956 14.5296 7.45417 14.5 7.41859C14.4704 7.38301 14.4346 7.35398 14.3946 7.33327C14.3546 7.31256 14.3111 7.30048 14.2667 7.29776ZM4.99497 18.84H12.786C12.8783 18.84 12.9667 18.8008 13.032 18.731C13.0972 18.6611 13.1338 18.5664 13.1338 18.4677C13.1338 18.3689 13.0972 18.2742 13.032 18.2044C12.9667 18.1346 12.8783 18.0954 12.786 18.0954H4.99497C4.90277 18.0954 4.81428 18.1346 4.74908 18.2044C4.68381 18.2742 4.64718 18.3689 4.64718 18.4677C4.64718 18.5664 4.68381 18.6611 4.74908 18.731C4.81428 18.8008 4.90277 18.84 4.99497 18.84ZM17.5858 12.7444H19.5733H19.623C19.7249 12.7499 19.821 12.7971 19.8913 12.8764C19.9616 12.9556 20.0007 13.0607 20.0006 13.17V13.8295C20.0007 13.8458 19.9976 13.862 19.9914 13.8769C19.9853 13.8918 19.9764 13.9052 19.9652 13.9163C19.9539 13.9273 19.9407 13.9357 19.9262 13.9409C19.9118 13.9461 19.8965 13.948 19.8814 13.9465H13.7797C13.7507 13.9465 13.7229 13.9342 13.7024 13.9123C13.6819 13.8903 13.6704 13.8606 13.6704 13.8295V13.17C13.6677 13.0617 13.7046 12.9566 13.7733 12.8771C13.842 12.7976 13.9371 12.75 14.0381 12.7444H16.0256V12.5104C16.0352 12.439 16.0687 12.3737 16.1199 12.3268C16.1711 12.2798 16.2365 12.2544 16.3039 12.2551H17.2976C17.3667 12.2517 17.4345 12.276 17.4878 12.3232C17.541 12.3704 17.576 12.4371 17.5858 12.5104V12.7444ZM14.0679 19.4251V14.1912H19.5037V19.4251C19.4935 19.585 19.4256 19.7344 19.3143 19.8416C19.203 19.9488 19.0571 20.0055 18.9075 19.9996H14.6642C14.5146 20.0055 14.3687 19.9488 14.2574 19.8416C14.1461 19.7344 14.0781 19.585 14.0679 19.4251ZM15.5983 15.1593H15.2505C15.0969 15.1593 14.9723 15.2926 14.9723 15.4572V18.7336C14.9723 18.8981 15.0969 19.0315 15.2505 19.0315H15.5983C15.752 19.0315 15.8766 18.8981 15.8766 18.7336V15.4572C15.8766 15.2926 15.752 15.1593 15.5983 15.1593ZM16.9598 15.1593H16.612C16.4583 15.1593 16.3337 15.2926 16.3337 15.4572V18.7336C16.3337 18.8981 16.4583 19.0315 16.612 19.0315H16.9598C17.1135 19.0315 17.238 18.8981 17.238 18.7336V15.4572C17.238 15.2926 17.1135 15.1593 16.9598 15.1593ZM17.9635 15.1593H18.3113C18.465 15.1593 18.5895 15.2926 18.5895 15.4572V18.7336C18.5895 18.8981 18.465 19.0315 18.3113 19.0315H17.9635C17.8098 19.0315 17.6852 18.8981 17.6852 18.7336V15.4572C17.6852 15.2926 17.8098 15.1593 17.9635 15.1593Z\",acceptSingleChange:\"M17.2 20H15.6628L17.33 18.3091V19.87C17.33 19.8871 17.3266 19.904 17.3201 19.9197C17.3136 19.9355 17.304 19.9499 17.2919 19.9619C17.2799 19.974 17.2655 19.9836 17.2497 19.9901C17.234 19.9966 17.2171 20 17.2 20ZM4.13 20H14.4978L14.1823 19.6791L13.5135 18.9904L13.5123 18.9891L13.0529 18.52H5C4.87537 18.52 4.75586 18.4705 4.66766 18.3823C4.57953 18.2942 4.53003 18.1747 4.53003 18.05C4.53003 17.9253 4.57953 17.8058 4.66766 17.7177C4.75586 17.6295 4.87537 17.58 5 17.58H12.1323L11.6235 17.0604L11.6231 16.48L12.8831 15.19L13.4765 15.1896L15.0807 16.8276L17.33 14.5413V9.3H13.28C13.207 9.30976 13.133 9.30976 13.06 9.3C12.7697 9.22119 12.5113 9.05343 12.3212 8.82027C12.1311 8.58711 12.0187 8.30026 12 8V4H4.13C4.09552 4 4.06246 4.0137 4.03808 4.03808C4.0137 4.06246 4 4.09552 4 4.13V19.87C4 19.9045 4.0137 19.9375 4.03808 19.9619C4.06246 19.9863 4.09552 20 4.13 20ZM13.1 4.65L16.6 8.15C16.6212 8.17232 16.6355 8.20028 16.6412 8.23051C16.6469 8.26075 16.6437 8.29199 16.6321 8.32048C16.6205 8.34898 16.6009 8.37352 16.5757 8.39117C16.5505 8.40882 16.5208 8.41883 16.49 8.42H13.06L12.83 8.19V4.76C12.8312 4.72925 12.8412 4.6995 12.8588 4.67429C12.8765 4.64909 12.901 4.62951 12.9295 4.6179C12.958 4.6063 12.9893 4.60315 13.0195 4.60884C13.0497 4.61453 13.0777 4.62882 13.1 4.65ZM11 6.72C11.0027 6.66089 10.9937 6.60184 10.9735 6.5462C10.9534 6.49057 10.9224 6.43948 10.8825 6.39581C10.8425 6.35217 10.7944 6.3168 10.7408 6.29178C10.6871 6.26678 10.6292 6.25256 10.57 6.25H5C4.88239 6.25772 4.77252 6.31131 4.69397 6.39917C4.61542 6.48706 4.57452 6.60226 4.58002 6.72C4.57452 6.83774 4.61542 6.95294 4.69397 7.04083C4.77252 7.12869 4.88239 7.18228 5 7.19H10.6C10.7141 7.1774 10.8189 7.12173 10.8933 7.03436C10.9677 6.94702 11.0058 6.83456 11 6.72ZM11.1 8.14001H5C4.87537 8.14001 4.75586 8.18954 4.66766 8.27768C4.57953 8.36581 4.53003 8.48535 4.53003 8.61002C4.53003 8.73468 4.57953 8.85422 4.66766 8.94235C4.71558 8.99023 4.77277 9.02673 4.83496 9.05008C4.86932 9.06296 4.90521 9.07184 4.94189 9.07642C4.96106 9.0788 4.98047 9.08002 5 9.08002H11.1C11.2247 9.08002 11.3442 9.03049 11.4324 8.94235C11.5205 8.85422 11.57 8.73468 11.57 8.61002C11.57 8.48535 11.5205 8.36581 11.4324 8.27768C11.3442 8.18954 11.2247 8.14001 11.1 8.14001ZM5 11H15.45C15.5826 11 15.7098 10.9473 15.8035 10.8535C15.8973 10.7598 15.95 10.6326 15.95 10.5C15.95 10.3674 15.8973 10.2402 15.8035 10.1465C15.7098 10.0527 15.5826 10 15.45 10H5C4.86737 10 4.74023 10.0527 4.64642 10.1465C4.55267 10.2402 4.5 10.3674 4.5 10.5C4.5 10.6326 4.55267 10.7598 4.64642 10.8535C4.74023 10.9473 4.86737 11 5 11ZM5 12.86H11.1C11.2211 12.8523 11.3346 12.798 11.4166 12.7085C11.4986 12.6191 11.5428 12.5013 11.54 12.38C11.5427 12.2597 11.4982 12.1431 11.416 12.0552C11.3337 11.9673 11.2203 11.9152 11.1 11.91H5C4.94086 11.9126 4.88287 11.9268 4.82922 11.9518C4.77563 11.9768 4.72748 12.0122 4.6875 12.0558C4.65833 12.0878 4.63391 12.1237 4.61505 12.1624C4.60809 12.1767 4.60193 12.1913 4.5965 12.2062C4.58264 12.2443 4.5741 12.2841 4.57092 12.3243C4.56946 12.3428 4.56915 12.3614 4.57001 12.38C4.56451 12.5004 4.60651 12.6181 4.68689 12.7079C4.76733 12.7976 4.87976 12.8523 5 12.86ZM15.45 14.74H5C4.87537 14.74 4.75586 14.6905 4.66766 14.6023C4.57953 14.5142 4.53003 14.3947 4.53003 14.27C4.53003 14.1453 4.57953 14.0258 4.66766 13.9377C4.75586 13.8495 4.87537 13.8 5 13.8H15.45C15.5747 13.8 15.6942 13.8495 15.7823 13.9377C15.8705 14.0258 15.92 14.1453 15.92 14.27C15.92 14.3947 15.8705 14.5142 15.7823 14.6023C15.6942 14.6905 15.5747 14.74 15.45 14.74ZM11.1 16.63H5C4.87537 16.63 4.75586 16.5805 4.66766 16.4923C4.57953 16.4042 4.53003 16.2846 4.53003 16.16C4.53003 16.0353 4.57953 15.9158 4.66766 15.8276C4.75586 15.7395 4.87537 15.69 5 15.69H11.1C11.2247 15.69 11.3442 15.7395 11.4324 15.8276C11.5205 15.9158 11.57 16.0353 11.57 16.16C11.57 16.2846 11.5205 16.4042 11.4324 16.4923C11.3442 16.5805 11.2247 16.63 11.1 16.63ZM18.73 13.71L20 15.01L15.08 20L15.07 19.99L14.48 19.39L13.81 18.7L11.92 16.77L13.18 15.48L15.08 17.42L18.73 13.71Z\",rejectSingleChange:\"M17.0495 11.5C17.1461 11.5 17.241 11.5173 17.33 11.5501V9.3H13.28C13.207 9.30976 13.133 9.30976 13.06 9.3C12.7697 9.22119 12.5113 9.05343 12.3212 8.82027C12.1311 8.58711 12.0187 8.30026 12 8V4H4.13C4.09552 4 4.06246 4.0137 4.03808 4.03808C4.0137 4.06246 4 4.09552 4 4.13V19.87C4 19.9045 4.0137 19.9375 4.03808 19.9619C4.06246 19.9863 4.09552 20 4.13 20H13.2305C13.1075 19.8287 13.0338 19.6249 13.0205 19.4112L13.0195 19.3956V18.52H5C4.87537 18.52 4.75586 18.4705 4.66772 18.3823C4.57959 18.2942 4.53003 18.1747 4.53003 18.05C4.53003 18.0119 4.53467 17.9742 4.54358 17.9378C4.56396 17.8552 4.60657 17.7788 4.66772 17.7177C4.75586 17.6295 4.87537 17.58 5 17.58H13.0195V14.74H5C4.87537 14.74 4.75586 14.6905 4.66772 14.6023C4.57959 14.5142 4.53003 14.3947 4.53003 14.27C4.53003 14.1453 4.57959 14.0258 4.66772 13.9377C4.75586 13.8495 4.87537 13.8 5 13.8H12.8393C12.6229 13.6377 12.4998 13.3897 12.4998 13.1032C12.4997 12.8414 12.6008 12.5847 12.7513 12.3911C12.9 12.1998 13.1561 12 13.4994 12L15.2519 12C15.2928 11.8972 15.3589 11.7915 15.4649 11.6992C15.6135 11.5698 15.8041 11.499 16.0011 11.5H17.0495ZM13.1 4.65L16.6 8.15C16.6211 8.17232 16.6354 8.20028 16.6411 8.23051C16.6468 8.26075 16.6437 8.29199 16.6321 8.32048C16.6204 8.34898 16.6009 8.37352 16.5757 8.39117C16.5505 8.40882 16.5207 8.41883 16.49 8.42H13.06L12.83 8.19V4.76C12.8311 4.72925 12.8411 4.6995 12.8588 4.67429C12.8764 4.64909 12.901 4.62951 12.9295 4.6179C12.958 4.6063 12.9892 4.60315 13.0194 4.60884C13.0497 4.61453 13.0776 4.62882 13.1 4.65ZM11 6.72C11.0027 6.66089 10.9937 6.60184 10.9735 6.5462C10.9716 6.5408 10.9695 6.53543 10.9673 6.53012C10.9626 6.51852 10.9575 6.50717 10.9518 6.49603C10.9406 6.47391 10.9275 6.45273 10.9127 6.43274C10.9033 6.41992 10.8932 6.40759 10.8824 6.39581C10.8425 6.35217 10.7943 6.3168 10.7407 6.29178C10.6871 6.26678 10.629 6.25256 10.5699 6.25H5C4.88232 6.25772 4.77246 6.31131 4.69397 6.39917C4.61536 6.48706 4.57446 6.60226 4.57996 6.72C4.57715 6.7811 4.58679 6.84152 4.60767 6.8978C4.61523 6.91803 4.62415 6.93771 4.63452 6.9567C4.65088 6.98669 4.67078 7.01495 4.69397 7.04083C4.77246 7.12869 4.88232 7.18228 5 7.19H10.6C10.714 7.1774 10.8188 7.12173 10.8932 7.03436C10.922 7.00049 10.9454 6.96283 10.9629 6.92273C10.9725 6.9006 10.9805 6.87775 10.9865 6.8544C10.9933 6.82791 10.9977 6.80075 10.9995 6.77325C11.0001 6.76453 11.0004 6.75574 11.0005 6.74695C11.0006 6.73798 11.0005 6.729 11 6.72ZM11.1 8.14001H5C4.97534 8.14001 4.95081 8.14194 4.92676 8.14575C4.89587 8.15063 4.8656 8.15857 4.83643 8.1694C4.77368 8.19272 4.71606 8.2294 4.66772 8.27768C4.57959 8.36581 4.53003 8.48535 4.53003 8.61002C4.53003 8.73468 4.57959 8.85422 4.66772 8.94235C4.75586 9.03049 4.87537 9.08002 5 9.08002H11.1C11.2247 9.08002 11.3442 9.03049 11.4324 8.94235C11.4617 8.91306 11.4867 8.88028 11.5071 8.845C11.5349 8.79691 11.554 8.74414 11.5634 8.68915C11.5677 8.66318 11.5701 8.63672 11.5701 8.61002C11.5701 8.48535 11.5205 8.36581 11.4324 8.27768C11.3929 8.23831 11.3474 8.20663 11.2979 8.18365C11.2365 8.15518 11.1689 8.14001 11.1 8.14001ZM5 11H15.45C15.5826 11 15.7098 10.9473 15.8036 10.8535C15.8973 10.7598 15.95 10.6326 15.95 10.5C15.95 10.3674 15.8973 10.2402 15.8036 10.1465C15.7098 10.0527 15.5826 10 15.45 10H5C4.86743 10 4.74023 10.0527 4.64648 10.1465C4.55273 10.2402 4.5 10.3674 4.5 10.5C4.5 10.6326 4.55273 10.7598 4.64648 10.8535C4.74023 10.9473 4.86743 11 5 11ZM5 12.86H11.1C11.2211 12.8523 11.3346 12.798 11.4166 12.7085C11.4987 12.6191 11.5428 12.5013 11.54 12.38C11.5427 12.2597 11.4982 12.1431 11.4159 12.0552C11.3336 11.9673 11.2202 11.9152 11.1 11.91H5C4.94092 11.9126 4.88281 11.9268 4.82922 11.9518C4.77563 11.9768 4.72742 12.0122 4.6875 12.0558C4.64758 12.0995 4.6167 12.1506 4.59644 12.2062C4.58899 12.2266 4.58313 12.2475 4.57874 12.2687C4.57129 12.3052 4.56824 12.3426 4.56995 12.38C4.56445 12.5004 4.60645 12.6181 4.68689 12.7079C4.76733 12.7976 4.87976 12.8523 5 12.86ZM11.1 16.63H5C4.87537 16.63 4.75586 16.5805 4.66772 16.4923C4.57959 16.4042 4.53003 16.2846 4.53003 16.16C4.53003 16.0353 4.57959 15.9158 4.66772 15.8276C4.75586 15.7395 4.87537 15.69 5 15.69H11.1C11.2247 15.69 11.3442 15.7395 11.4324 15.8276C11.5205 15.9158 11.5701 16.0353 11.5701 16.16C11.5701 16.2846 11.5205 16.4042 11.4324 16.4923C11.3442 16.5805 11.2247 16.63 11.1 16.63ZM19.59 12.53H17.36V12.3C17.3574 12.2195 17.3236 12.1432 17.2657 12.0872C17.2078 12.0313 17.1305 12 17.05 12H16C15.9242 11.9994 15.8509 12.0265 15.7938 12.0762C15.7367 12.126 15.6997 12.1949 15.69 12.27V12.5H13.44C13.3768 12.4994 13.3142 12.5125 13.2565 12.5382C13.1988 12.564 13.1473 12.6019 13.1055 12.6493C13.0638 12.6968 13.0327 12.7526 13.0145 12.8132C12.9963 12.8737 12.9913 12.9374 13 13V13.67C13 13.6871 13.0033 13.704 13.0099 13.7198C13.0164 13.7355 13.026 13.7499 13.038 13.7619C13.0501 13.774 13.0644 13.7836 13.0802 13.7901C13.096 13.7966 13.1129 13.8 13.13 13.8H19.84C19.8611 13.8054 19.8834 13.8054 19.9045 13.8C19.9257 13.7946 19.9452 13.7839 19.9611 13.7689C19.9771 13.754 19.989 13.7352 19.9958 13.7144C20.0026 13.6937 20.004 13.6715 20 13.65V13C20.0028 12.8866 19.9617 12.7765 19.8853 12.6927C19.809 12.6088 19.7031 12.5577 19.59 12.55V12.53ZM13.52 14V19.38C13.5303 19.5454 13.6054 19.7 13.7289 19.8105C13.8525 19.9209 14.0145 19.9782 14.18 19.97H18.84C19.0055 19.9782 19.1676 19.9209 19.2911 19.8105C19.4146 19.7 19.4897 19.5454 19.5 19.38V14H13.52ZM15.52 18.67C15.52 18.7522 15.4874 18.8311 15.4292 18.8892C15.3711 18.9473 15.2922 18.98 15.21 18.98H14.83C14.7478 18.98 14.669 18.9473 14.6108 18.8892C14.5527 18.8311 14.52 18.7522 14.52 18.67V15.33C14.52 15.2893 14.528 15.249 14.5436 15.2114C14.5592 15.1738 14.582 15.1396 14.6108 15.1108C14.6396 15.082 14.6738 15.0592 14.7114 15.0436C14.749 15.028 14.7893 15.02 14.83 15.02H15.21C15.2507 15.02 15.291 15.028 15.3287 15.0436C15.3663 15.0592 15.4004 15.082 15.4292 15.1108C15.458 15.1396 15.4808 15.1738 15.4964 15.2114C15.512 15.249 15.52 15.2893 15.52 15.33V18.67ZM17.01 18.67C17.01 18.7522 16.9774 18.8311 16.9192 18.8892C16.8611 18.9473 16.7822 18.98 16.7 18.98H16.32C16.2798 18.98 16.2399 18.9719 16.2029 18.9562C16.1658 18.9405 16.1323 18.9176 16.1043 18.8886C16.0763 18.8597 16.0544 18.8254 16.0399 18.7879C16.0254 18.7503 16.0187 18.7102 16.02 18.67V15.33C16.0187 15.2898 16.0254 15.2497 16.0399 15.2121C16.0544 15.1746 16.0763 15.1403 16.1043 15.1114C16.1323 15.0824 16.1658 15.0595 16.2029 15.0438C16.2399 15.0281 16.2798 15.02 16.32 15.02H16.7C16.7407 15.02 16.781 15.028 16.8187 15.0436C16.8563 15.0592 16.8904 15.082 16.9192 15.1108C16.948 15.1396 16.9708 15.1738 16.9864 15.2114C17.002 15.249 17.01 15.2893 17.01 15.33V18.67ZM18.51 18.67C18.51 18.7107 18.502 18.751 18.4864 18.7886C18.4708 18.8262 18.448 18.8604 18.4192 18.8892C18.3904 18.918 18.3563 18.9408 18.3187 18.9564C18.281 18.972 18.2407 18.98 18.2 18.98H17.82C17.7378 18.98 17.659 18.9473 17.6008 18.8892C17.5427 18.8311 17.51 18.7522 17.51 18.67V15.33C17.51 15.2893 17.518 15.249 17.5336 15.2114C17.5492 15.1738 17.572 15.1396 17.6008 15.1108C17.6296 15.082 17.6638 15.0592 17.7014 15.0436C17.739 15.028 17.7793 15.02 17.82 15.02H18.2C18.2407 15.02 18.281 15.028 18.3187 15.0436C18.3563 15.0592 18.3904 15.082 18.4192 15.1108C18.448 15.1396 18.4708 15.1738 18.4864 15.2114C18.502 15.249 18.51 15.2893 18.51 15.33V18.67Z\"},V.FILEICONS={docIcon:{extension:\".doc\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 9.617188 46.875 C 13.234375 46.875 16.160156 43.929688 16.160156 40.292969 C 16.160156 36.695312 13.234375 33.75 9.617188 33.75 L 7.402344 33.75 C 6.820312 33.75 6.371094 34.199219 6.371094 34.78125 L 6.371094 45.84375 C 6.371094 46.335938 6.714844 46.757812 7.191406 46.855469 L 7.402344 46.875 Z M 9.617188 44.792969 L 8.453125 44.792969 L 8.453125 35.832031 L 9.617188 35.832031 C 12.089844 35.832031 14.078125 37.835938 14.078125 40.292969 C 14.078125 42.789062 12.089844 44.773438 9.617188 44.792969 Z M 24.816406 46.875 C 26.539062 46.875 28.191406 46.085938 29.296875 44.867188 C 30.460938 43.648438 31.191406 41.980469 31.191406 40.125 C 31.191406 38.269531 30.460938 36.617188 29.296875 35.382812 C 28.191406 34.144531 26.539062 33.375 24.816406 33.375 C 23.015625 33.375 21.367188 34.144531 20.222656 35.382812 C 19.058594 36.617188 18.367188 38.269531 18.367188 40.125 C 18.367188 41.980469 19.058594 43.648438 20.222656 44.867188 C 21.367188 46.085938 23.015625 46.875 24.816406 46.875 Z M 24.816406 44.738281 C 23.617188 44.738281 22.566406 44.230469 21.777344 43.386719 C 20.992188 42.582031 20.503906 41.398438 20.503906 40.125 C 20.503906 38.851562 20.992188 37.667969 21.777344 36.84375 C 22.566406 36 23.617188 35.511719 24.816406 35.511719 C 25.941406 35.511719 26.992188 36 27.777344 36.84375 C 28.546875 37.667969 29.054688 38.851562 29.054688 40.125 C 29.054688 41.398438 28.546875 42.582031 27.777344 43.386719 C 26.992188 44.230469 25.941406 44.738281 24.816406 44.738281 Z M 39.996094 46.875 C 41.648438 46.875 43.148438 46.332031 44.328125 45.414062 C 44.777344 45.054688 44.851562 44.382812 44.515625 43.914062 C 44.140625 43.460938 43.445312 43.386719 43.015625 43.707031 C 42.171875 44.382812 41.160156 44.738281 39.996094 44.738281 C 38.703125 44.738281 37.503906 44.210938 36.621094 43.386719 C 35.777344 42.5625 35.253906 41.398438 35.253906 40.125 C 35.253906 38.851562 35.777344 37.726562 36.621094 36.863281 C 37.503906 36.039062 38.703125 35.511719 39.996094 35.511719 C 41.160156 35.511719 42.191406 35.867188 43.015625 36.542969 C 43.445312 36.882812 44.140625 36.804688 44.515625 36.335938 C 44.851562 35.867188 44.777344 35.210938 44.328125 34.835938 C 43.148438 33.917969 41.648438 33.375 39.996094 33.375 C 36.246094 33.394531 33.132812 36.414062 33.117188 40.125 C 33.132812 43.855469 36.246094 46.875 39.996094 46.875 Z M 39.996094 46.875 \"/>\\n </g>'},gifIcon:{extension:\".gif\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 17.394531 46.875 C 18.988281 46.875 20.46875 46.332031 21.648438 45.414062 C 21.835938 45.28125 21.949219 45.132812 22.003906 44.960938 L 22.003906 44.945312 C 22.023438 44.90625 22.023438 44.886719 22.042969 44.851562 C 22.0625 44.738281 22.097656 44.664062 22.097656 44.53125 L 22.097656 40.386719 C 22.097656 39.789062 21.613281 39.335938 21.011719 39.335938 L 17.28125 39.335938 C 16.699219 39.335938 16.210938 39.789062 16.210938 40.386719 C 16.210938 40.96875 16.699219 41.457031 17.28125 41.457031 L 19.960938 41.457031 L 19.960938 44.023438 C 19.210938 44.457031 18.332031 44.738281 17.394531 44.738281 C 16.042969 44.738281 14.863281 44.230469 14.019531 43.367188 C 13.136719 42.523438 12.613281 41.382812 12.613281 40.144531 C 12.613281 38.867188 13.136719 37.726562 14.019531 36.882812 C 14.863281 36.019531 16.042969 35.511719 17.394531 35.511719 C 18.519531 35.511719 19.550781 35.90625 20.355469 36.523438 C 20.824219 36.898438 21.519531 36.804688 21.875 36.355469 C 22.230469 35.886719 22.15625 35.195312 21.667969 34.835938 C 20.503906 33.917969 18.988281 33.375 17.394531 33.375 C 13.585938 33.375 10.472656 36.375 10.472656 40.144531 C 10.472656 43.894531 13.585938 46.875 17.394531 46.875 Z M 26.945312 46.875 C 27.507812 46.875 27.996094 46.425781 27.996094 45.84375 L 27.996094 34.78125 C 27.996094 34.199219 27.507812 33.75 26.945312 33.75 C 26.363281 33.75 25.914062 34.199219 25.914062 34.78125 L 25.914062 45.84375 C 25.914062 46.425781 26.363281 46.875 26.945312 46.875 Z M 33.066406 46.875 C 33.648438 46.875 34.117188 46.40625 34.117188 45.84375 L 34.117188 41.34375 L 38.488281 41.34375 C 39.050781 41.34375 39.519531 40.875 39.519531 40.292969 C 39.519531 39.75 39.050781 39.261719 38.488281 39.261719 L 34.117188 39.261719 L 34.117188 35.832031 L 39.199219 35.832031 C 39.742188 35.832031 40.230469 35.363281 40.230469 34.78125 C 40.230469 34.21875 39.742188 33.75 39.199219 33.75 L 33.066406 33.75 C 32.488281 33.75 32.035156 34.21875 32.035156 34.78125 L 32.035156 45.84375 C 32.035156 46.40625 32.488281 46.875 33.066406 46.875 Z M 33.066406 46.875 \"/>\\n </g>'},jpegIcon:{extension:\".jpeg\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 9 43.75 C 11.140625 43.75 12.890625 42.015625 12.890625 39.875 L 12.890625 33.671875 C 12.890625 33.1875 12.5 32.8125 12.03125 32.8125 C 11.546875 32.8125 11.15625 33.1875 11.15625 33.671875 L 11.15625 39.875 C 11.15625 41.046875 10.1875 42.015625 9 42.015625 C 8.046875 42.015625 7.234375 41.390625 6.953125 40.53125 C 6.8125 40.078125 6.328125 39.828125 5.859375 39.984375 C 5.421875 40.109375 5.15625 40.59375 5.3125 41.0625 C 5.8125 42.625 7.28125 43.75 9 43.75 Z M 15.640625 43.75 C 16.125 43.75 16.515625 43.359375 16.515625 42.890625 L 16.515625 39.5 L 18.4375 39.5 C 20.296875 39.5 21.796875 38 21.796875 36.171875 C 21.796875 34.3125 20.296875 32.8125 18.4375 32.8125 L 15.640625 32.8125 C 15.171875 32.8125 14.78125 33.1875 14.78125 33.671875 L 14.78125 42.890625 C 14.78125 43.359375 15.171875 43.75 15.640625 43.75 Z M 18.4375 37.765625 L 16.515625 37.765625 L 16.515625 34.546875 L 18.4375 34.546875 C 19.34375 34.546875 20.046875 35.265625 20.0625 36.171875 C 20.046875 37.046875 19.34375 37.765625 18.4375 37.765625 Z M 29.234375 43.75 C 29.6875 43.75 30.09375 43.359375 30.09375 42.890625 C 30.09375 42.40625 29.6875 42.015625 29.234375 42.015625 L 25 42.015625 L 25 39.140625 L 28.640625 39.140625 C 29.109375 39.140625 29.5 38.75 29.5 38.265625 C 29.5 37.8125 29.109375 37.40625 28.640625 37.40625 L 25 37.40625 L 25 34.546875 L 29.234375 34.546875 C 29.6875 34.546875 30.09375 34.15625 30.09375 33.671875 C 30.09375 33.1875 29.6875 32.8125 29.234375 32.8125 L 24.125 32.8125 C 23.640625 32.8125 23.265625 33.1875 23.265625 33.671875 L 23.265625 42.890625 C 23.265625 43.359375 23.640625 43.75 24.125 43.75 C 24.125 43.75 24.140625 43.734375 24.140625 43.734375 C 24.140625 43.734375 24.140625 43.75 24.171875 43.75 Z M 37.1875 43.75 C 38.515625 43.75 39.75 43.296875 40.734375 42.53125 C 40.890625 42.421875 40.984375 42.296875 41.03125 42.15625 L 41.03125 42.140625 C 41.046875 42.109375 41.046875 42.09375 41.0625 42.0625 C 41.078125 41.96875 41.109375 41.90625 41.109375 41.796875 L 41.109375 38.34375 C 41.109375 37.914062 40.8125 37.578125 40.410156 37.492188 L 40.203125 37.46875 L 37.09375 37.46875 C 36.609375 37.46875 36.203125 37.84375 36.203125 38.34375 C 36.203125 38.828125 36.609375 39.234375 37.09375 39.234375 L 39.328125 39.234375 L 39.328125 41.375 C 38.703125 41.734375 37.96875 41.96875 37.1875 41.96875 C 36.0625 41.96875 35.078125 41.546875 34.375 40.828125 C 33.640625 40.125 33.203125 39.171875 33.203125 38.140625 C 33.203125 37.078125 33.640625 36.125 34.375 35.421875 C 35.078125 34.703125 36.0625 34.28125 37.1875 34.28125 C 38.125 34.28125 38.984375 34.609375 39.65625 35.125 C 40.046875 35.4375 40.625 35.359375 40.921875 34.984375 C 41.21875 34.59375 41.15625 34.015625 40.75 33.71875 C 39.78125 32.953125 38.515625 32.5 37.1875 32.5 C 34.015625 32.5 31.421875 35 31.421875 38.140625 C 31.421875 41.265625 34.015625 43.75 37.1875 43.75 Z M 37.1875 43.75 \"/>\\n </g>'},logIcon:{extension:\".log\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 13.542969 46.875 C 14.085938 46.875 14.574219 46.40625 14.574219 45.84375 C 14.574219 45.261719 14.085938 44.792969 13.542969 44.792969 L 8.460938 44.792969 L 8.460938 34.78125 C 8.460938 34.21875 7.992188 33.75 7.410156 33.75 C 6.828125 33.75 6.378906 34.21875 6.378906 34.78125 L 6.378906 45.84375 C 6.378906 46.40625 6.828125 46.875 7.410156 46.875 Z M 21.742188 46.875 C 23.46875 46.875 25.117188 46.085938 26.222656 44.867188 C 27.386719 43.648438 28.117188 41.980469 28.117188 40.125 C 28.117188 38.269531 27.386719 36.617188 26.222656 35.382812 C 25.117188 34.144531 23.46875 33.375 21.742188 33.375 C 19.941406 33.375 18.292969 34.144531 17.148438 35.382812 C 15.984375 36.617188 15.292969 38.269531 15.292969 40.125 C 15.292969 41.980469 15.984375 43.648438 17.148438 44.867188 C 18.292969 46.085938 19.941406 46.875 21.742188 46.875 Z M 21.742188 44.738281 C 20.542969 44.738281 19.492188 44.230469 18.703125 43.386719 C 17.917969 42.582031 17.429688 41.398438 17.429688 40.125 C 17.429688 38.851562 17.917969 37.667969 18.703125 36.84375 C 19.492188 36 20.542969 35.511719 21.742188 35.511719 C 22.867188 35.511719 23.917969 36 24.703125 36.84375 C 25.472656 37.667969 25.980469 38.851562 25.980469 40.125 C 25.980469 41.398438 25.472656 42.582031 24.703125 43.386719 C 23.917969 44.230469 22.867188 44.738281 21.742188 44.738281 Z M 37.300781 46.875 C 38.894531 46.875 40.375 46.332031 41.558594 45.414062 C 41.746094 45.28125 41.855469 45.132812 41.914062 44.960938 L 41.914062 44.945312 L 41.949219 44.851562 C 41.96875 44.738281 42.007812 44.664062 42.007812 44.53125 L 42.007812 40.386719 C 42.007812 39.789062 41.519531 39.335938 40.917969 39.335938 L 37.1875 39.335938 C 36.605469 39.335938 36.121094 39.789062 36.121094 40.386719 C 36.121094 40.96875 36.605469 41.457031 37.1875 41.457031 L 39.871094 41.457031 L 39.871094 44.023438 C 39.121094 44.457031 38.238281 44.738281 37.300781 44.738281 C 35.949219 44.738281 34.769531 44.230469 33.925781 43.367188 C 33.042969 42.523438 32.519531 41.382812 32.519531 40.144531 C 32.519531 38.867188 33.042969 37.726562 33.925781 36.882812 C 34.769531 36.019531 35.949219 35.511719 37.300781 35.511719 C 38.425781 35.511719 39.457031 35.90625 40.261719 36.523438 C 40.730469 36.898438 41.425781 36.804688 41.78125 36.355469 C 42.136719 35.886719 42.0625 35.195312 41.574219 34.835938 C 40.414062 33.917969 38.894531 33.375 37.300781 33.375 C 33.496094 33.375 30.382812 36.375 30.382812 40.144531 C 30.382812 43.894531 33.496094 46.875 37.300781 46.875 Z M 37.300781 46.875 \"/>\\n </g>'},movIcon:{extension:\".mov\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 15.472656 46.875 C 16.035156 46.875 16.523438 46.40625 16.523438 45.84375 L 16.523438 34.78125 C 16.523438 34.289062 16.152344 33.882812 15.679688 33.777344 L 15.472656 33.75 L 15.453125 33.75 C 15.117188 33.75 14.816406 33.898438 14.609375 34.179688 L 10.878906 39.355469 L 7.148438 34.179688 C 6.960938 33.898438 6.625 33.75 6.324219 33.75 L 6.265625 33.75 C 5.703125 33.75 5.234375 34.21875 5.234375 34.78125 L 5.234375 45.84375 C 5.234375 46.40625 5.703125 46.875 6.265625 46.875 C 6.847656 46.875 7.316406 46.40625 7.316406 45.84375 L 7.316406 37.949219 L 10 41.699219 C 10.203125 41.980469 10.523438 42.132812 10.859375 42.132812 L 10.898438 42.132812 C 11.234375 42.132812 11.535156 41.980469 11.742188 41.699219 L 14.441406 37.949219 L 14.441406 45.84375 C 14.441406 46.40625 14.890625 46.875 15.472656 46.875 Z M 25.460938 46.875 C 27.1875 46.875 28.835938 46.085938 29.941406 44.867188 C 31.105469 43.648438 31.835938 41.980469 31.835938 40.125 C 31.835938 38.269531 31.105469 36.617188 29.941406 35.382812 C 28.835938 34.144531 27.1875 33.375 25.460938 33.375 C 23.660156 33.375 22.011719 34.144531 20.867188 35.382812 C 19.703125 36.617188 19.011719 38.269531 19.011719 40.125 C 19.011719 41.980469 19.703125 43.648438 20.867188 44.867188 C 22.011719 46.085938 23.660156 46.875 25.460938 46.875 Z M 25.460938 44.738281 C 24.261719 44.738281 23.210938 44.230469 22.421875 43.386719 C 21.636719 42.582031 21.148438 41.398438 21.148438 40.125 C 21.148438 38.851562 21.636719 37.667969 22.421875 36.84375 C 23.210938 36 24.261719 35.511719 25.460938 35.511719 C 26.585938 35.511719 27.636719 36 28.421875 36.84375 C 29.191406 37.667969 29.699219 38.851562 29.699219 40.125 C 29.699219 41.398438 29.191406 42.582031 28.421875 43.386719 C 27.636719 44.230469 26.585938 44.738281 25.460938 44.738281 Z M 38.683594 46.855469 L 38.71875 46.855469 C 38.777344 46.835938 38.8125 46.820312 38.871094 46.820312 C 38.886719 46.800781 38.886719 46.800781 38.90625 46.800781 C 38.964844 46.78125 39.019531 46.726562 39.058594 46.707031 L 39.09375 46.6875 L 39.207031 46.59375 C 39.226562 46.574219 39.226562 46.574219 39.246094 46.539062 L 39.339844 46.425781 C 39.355469 46.425781 39.355469 46.425781 39.355469 46.40625 C 39.394531 46.367188 39.414062 46.292969 39.433594 46.257812 L 44.0625 35.304688 C 44.269531 34.800781 44.027344 34.179688 43.5 33.976562 C 42.996094 33.75 42.375 33.992188 42.152344 34.519531 L 38.496094 43.199219 L 34.839844 34.519531 C 34.613281 33.992188 34.011719 33.75 33.507812 33.976562 C 32.964844 34.179688 32.71875 34.800781 32.945312 35.304688 L 37.539062 46.257812 C 37.574219 46.292969 37.613281 46.367188 37.632812 46.40625 C 37.632812 46.425781 37.652344 46.425781 37.652344 46.425781 C 37.667969 46.460938 37.707031 46.5 37.746094 46.539062 C 37.746094 46.574219 37.761719 46.574219 37.761719 46.59375 C 37.820312 46.632812 37.855469 46.648438 37.894531 46.6875 L 37.914062 46.6875 C 37.96875 46.726562 38.042969 46.78125 38.082031 46.800781 L 38.101562 46.800781 C 38.101562 46.800781 38.121094 46.800781 38.121094 46.820312 C 38.15625 46.820312 38.230469 46.835938 38.269531 46.855469 L 38.308594 46.855469 L 38.402344 46.871094 L 38.496094 46.875 C 38.550781 46.875 38.605469 46.875 38.683594 46.855469 Z M 38.683594 46.855469 \"/>\\n </g>'},ogvIcon:{extension:\".ogv\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 11.511719 46.875 C 13.238281 46.875 14.886719 46.085938 15.996094 44.867188 C 17.15625 43.648438 17.886719 41.980469 17.886719 40.125 C 17.886719 38.269531 17.15625 36.617188 15.996094 35.382812 C 14.886719 34.144531 13.238281 33.375 11.511719 33.375 C 9.714844 33.375 8.0625 34.144531 6.917969 35.382812 C 5.757812 36.617188 5.0625 38.269531 5.0625 40.125 C 5.0625 41.980469 5.757812 43.648438 6.917969 44.867188 C 8.0625 46.085938 9.714844 46.875 11.511719 46.875 Z M 11.511719 44.738281 C 10.3125 44.738281 9.261719 44.230469 8.476562 43.386719 C 7.6875 42.582031 7.199219 41.398438 7.199219 40.125 C 7.199219 38.851562 7.6875 37.667969 8.476562 36.84375 C 9.261719 36 10.3125 35.511719 11.511719 35.511719 C 12.636719 35.511719 13.6875 36 14.476562 36.84375 C 15.246094 37.667969 15.75 38.851562 15.75 40.125 C 15.75 41.398438 15.246094 42.582031 14.476562 43.386719 C 13.6875 44.230469 12.636719 44.738281 11.511719 44.738281 Z M 27.25 46.875 C 28.84375 46.875 30.324219 46.332031 31.507812 45.414062 C 31.695312 45.28125 31.804688 45.132812 31.863281 44.960938 L 31.863281 44.945312 C 31.882812 44.90625 31.882812 44.886719 31.898438 44.851562 C 31.917969 44.738281 31.957031 44.664062 31.957031 44.53125 L 31.957031 40.386719 C 31.957031 39.789062 31.46875 39.335938 30.867188 39.335938 L 27.136719 39.335938 C 26.554688 39.335938 26.070312 39.789062 26.070312 40.386719 C 26.070312 40.96875 26.554688 41.457031 27.136719 41.457031 L 29.820312 41.457031 L 29.820312 44.023438 C 29.070312 44.457031 28.1875 44.738281 27.25 44.738281 C 25.898438 44.738281 24.71875 44.230469 23.875 43.367188 C 22.992188 42.523438 22.46875 41.382812 22.46875 40.144531 C 22.46875 38.867188 22.992188 37.726562 23.875 36.882812 C 24.71875 36.019531 25.898438 35.511719 27.25 35.511719 C 28.375 35.511719 29.40625 35.90625 30.210938 36.523438 C 30.679688 36.898438 31.375 36.804688 31.730469 36.355469 C 32.085938 35.886719 32.011719 35.195312 31.523438 34.835938 C 30.363281 33.917969 28.84375 33.375 27.25 33.375 C 23.445312 33.375 20.332031 36.375 20.332031 40.144531 C 20.332031 43.894531 23.445312 46.875 27.25 46.875 Z M 40.191406 46.855469 L 40.230469 46.855469 C 40.285156 46.835938 40.324219 46.820312 40.378906 46.820312 C 40.398438 46.800781 40.398438 46.800781 40.417969 46.800781 C 40.472656 46.78125 40.53125 46.726562 40.566406 46.707031 C 40.605469 46.6875 40.605469 46.6875 40.605469 46.6875 L 40.71875 46.59375 C 40.738281 46.574219 40.738281 46.574219 40.753906 46.539062 L 40.847656 46.425781 C 40.867188 46.425781 40.867188 46.425781 40.867188 46.40625 C 40.90625 46.367188 40.925781 46.292969 40.941406 46.257812 L 45.574219 35.304688 C 45.78125 34.800781 45.535156 34.179688 45.011719 33.976562 C 44.503906 33.75 43.886719 33.992188 43.660156 34.519531 L 40.003906 43.199219 L 36.347656 34.519531 C 36.125 33.992188 35.523438 33.75 35.019531 33.976562 C 34.472656 34.179688 34.230469 34.800781 34.457031 35.304688 L 39.050781 46.257812 C 39.085938 46.292969 39.125 46.367188 39.144531 46.40625 C 39.144531 46.425781 39.160156 46.425781 39.160156 46.425781 C 39.179688 46.460938 39.21875 46.5 39.253906 46.539062 C 39.253906 46.574219 39.273438 46.574219 39.273438 46.59375 C 39.332031 46.632812 39.367188 46.648438 39.40625 46.6875 L 39.425781 46.6875 C 39.480469 46.726562 39.554688 46.78125 39.59375 46.800781 L 39.613281 46.800781 C 39.613281 46.800781 39.628906 46.800781 39.628906 46.820312 C 39.667969 46.820312 39.742188 46.835938 39.78125 46.855469 L 39.816406 46.855469 L 39.910156 46.871094 L 40.003906 46.875 C 40.0625 46.875 40.117188 46.875 40.191406 46.855469 Z M 40.191406 46.855469 \"/>\\n </g>'},pngIcon:{extension:\".png\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 7.523438 46.875 C 8.105469 46.875 8.574219 46.40625 8.574219 45.84375 L 8.574219 41.773438 L 10.878906 41.773438 C 13.109375 41.773438 14.910156 39.976562 14.910156 37.78125 C 14.910156 35.550781 13.109375 33.75 10.878906 33.75 L 7.523438 33.75 C 6.960938 33.75 6.492188 34.199219 6.492188 34.78125 L 6.492188 45.84375 C 6.492188 46.40625 6.960938 46.875 7.523438 46.875 Z M 10.878906 39.695312 L 8.574219 39.695312 L 8.574219 35.832031 L 10.878906 35.832031 C 11.964844 35.832031 12.808594 36.695312 12.828125 37.78125 C 12.808594 38.832031 11.964844 39.695312 10.878906 39.695312 Z M 26.75 46.875 C 27.3125 46.875 27.78125 46.40625 27.78125 45.84375 L 27.78125 34.949219 C 27.78125 34.40625 27.3125 33.9375 26.75 33.9375 C 26.1875 33.9375 25.738281 34.40625 25.738281 34.949219 L 25.738281 42.675781 L 19.679688 34.292969 C 19.363281 33.84375 18.722656 33.75 18.253906 34.070312 C 17.972656 34.273438 17.824219 34.613281 17.84375 34.929688 L 17.84375 45.84375 C 17.84375 46.40625 18.292969 46.875 18.875 46.875 C 19.417969 46.875 19.886719 46.40625 19.886719 45.84375 L 19.886719 38.0625 L 25.886719 46.386719 C 25.90625 46.425781 25.941406 46.460938 25.980469 46.5 C 26.167969 46.726562 26.449219 46.875 26.75 46.875 Z M 38.082031 46.875 C 39.675781 46.875 41.15625 46.332031 42.339844 45.414062 C 42.527344 45.28125 42.636719 45.132812 42.695312 44.960938 L 42.695312 44.945312 C 42.714844 44.90625 42.714844 44.886719 42.730469 44.851562 C 42.75 44.738281 42.789062 44.664062 42.789062 44.53125 L 42.789062 40.386719 C 42.789062 39.789062 42.300781 39.335938 41.699219 39.335938 L 37.96875 39.335938 C 37.386719 39.335938 36.902344 39.789062 36.902344 40.386719 C 36.902344 40.96875 37.386719 41.457031 37.96875 41.457031 L 40.652344 41.457031 L 40.652344 44.023438 C 39.902344 44.457031 39.019531 44.738281 38.082031 44.738281 C 36.730469 44.738281 35.550781 44.230469 34.707031 43.367188 C 33.824219 42.523438 33.300781 41.382812 33.300781 40.144531 C 33.300781 38.867188 33.824219 37.726562 34.707031 36.882812 C 35.550781 36.019531 36.730469 35.511719 38.082031 35.511719 C 39.207031 35.511719 40.238281 35.90625 41.042969 36.523438 C 41.511719 36.898438 42.207031 36.804688 42.5625 36.355469 C 42.917969 35.886719 42.84375 35.195312 42.355469 34.835938 C 41.195312 33.917969 39.675781 33.375 38.082031 33.375 C 34.277344 33.375 31.164062 36.375 31.164062 40.144531 C 31.164062 43.894531 34.277344 46.875 38.082031 46.875 Z M 38.082031 46.875 \"/>\\n </g>'},txtIcon:{extension:\".txt\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 12.847656 46.875 C 13.429688 46.875 13.878906 46.425781 13.878906 45.84375 L 13.878906 35.832031 L 16.859375 35.832031 C 17.421875 35.832031 17.890625 35.34375 17.890625 34.78125 C 17.890625 34.199219 17.421875 33.75 16.859375 33.75 L 8.855469 33.75 C 8.273438 33.75 7.824219 34.199219 7.824219 34.78125 C 7.824219 35.34375 8.273438 35.832031 8.855469 35.832031 L 11.816406 35.832031 L 11.816406 45.84375 C 11.816406 46.425781 12.285156 46.875 12.847656 46.875 Z M 29.019531 46.875 C 29.222656 46.875 29.429688 46.800781 29.617188 46.667969 C 30.085938 46.351562 30.160156 45.695312 29.84375 45.242188 L 26.28125 40.367188 L 29.84375 35.53125 C 30.160156 35.0625 30.085938 34.425781 29.617188 34.105469 C 29.148438 33.75 28.53125 33.84375 28.175781 34.332031 L 25.023438 38.644531 L 21.855469 34.332031 C 21.535156 33.84375 20.878906 33.75 20.429688 34.105469 C 19.960938 34.425781 19.867188 35.0625 20.1875 35.53125 L 23.75 40.367188 L 20.1875 45.242188 C 19.867188 45.695312 19.960938 46.351562 20.429688 46.667969 C 20.597656 46.800781 20.804688 46.875 21.03125 46.875 C 21.347656 46.875 21.648438 46.707031 21.855469 46.445312 L 25.023438 42.113281 L 28.175781 46.445312 C 28.378906 46.707031 28.679688 46.875 29.019531 46.875 Z M 37.464844 46.875 C 38.042969 46.875 38.496094 46.425781 38.496094 45.84375 L 38.496094 35.832031 L 41.476562 35.832031 C 42.039062 35.832031 42.507812 35.34375 42.507812 34.78125 C 42.507812 34.199219 42.039062 33.75 41.476562 33.75 L 33.46875 33.75 C 32.886719 33.75 32.4375 34.199219 32.4375 34.78125 C 32.4375 35.34375 32.886719 35.832031 33.46875 35.832031 L 36.433594 35.832031 L 36.433594 45.84375 C 36.433594 46.425781 36.902344 46.875 37.464844 46.875 Z M 37.464844 46.875 \"/>\\n </g>'},webmIcon:{extension:\".webm\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 7.195312 43.734375 L 7.242188 43.734375 C 7.273438 43.71875 7.304688 43.703125 7.367188 43.703125 C 7.367188 43.6875 7.382812 43.6875 7.382812 43.6875 L 7.398438 43.6875 C 7.429688 43.671875 7.476562 43.625 7.523438 43.59375 L 7.554688 43.59375 C 7.585938 43.5625 7.617188 43.53125 7.648438 43.515625 C 7.648438 43.5 7.664062 43.5 7.664062 43.46875 L 7.757812 43.375 C 7.757812 43.375 7.757812 43.359375 7.773438 43.359375 C 7.789062 43.328125 7.820312 43.265625 7.835938 43.21875 L 9.882812 38.375 L 11.929688 43.21875 C 11.945312 43.265625 11.960938 43.328125 11.992188 43.359375 C 11.992188 43.359375 11.992188 43.375 12.023438 43.375 L 12.085938 43.46875 C 12.101562 43.5 12.101562 43.5 12.117188 43.515625 C 12.148438 43.53125 12.179688 43.5625 12.226562 43.59375 L 12.242188 43.59375 C 12.273438 43.625 12.320312 43.671875 12.382812 43.6875 C 12.398438 43.6875 12.398438 43.6875 12.414062 43.703125 C 12.445312 43.703125 12.476562 43.71875 12.523438 43.734375 L 12.570312 43.734375 L 12.640625 43.746094 L 12.710938 43.75 C 12.773438 43.75 12.820312 43.75 12.867188 43.734375 L 12.898438 43.734375 C 12.945312 43.71875 12.992188 43.703125 13.023438 43.703125 C 13.023438 43.6875 13.039062 43.6875 13.039062 43.6875 L 13.054688 43.6875 C 13.117188 43.671875 13.148438 43.625 13.195312 43.59375 L 13.210938 43.59375 C 13.242188 43.5625 13.289062 43.53125 13.320312 43.515625 C 13.320312 43.5 13.335938 43.5 13.335938 43.46875 C 13.367188 43.4375 13.398438 43.40625 13.414062 43.375 C 13.414062 43.375 13.429688 43.359375 13.429688 43.359375 C 13.460938 43.328125 13.492188 43.265625 13.507812 43.21875 L 17.335938 34.109375 C 17.523438 33.6875 17.320312 33.171875 16.898438 33 C 16.445312 32.8125 15.945312 33.015625 15.757812 33.453125 L 12.710938 40.6875 L 10.695312 35.890625 C 10.539062 35.546875 10.210938 35.359375 9.882812 35.359375 C 9.539062 35.359375 9.210938 35.546875 9.070312 35.890625 L 7.054688 40.6875 L 3.992188 33.453125 C 3.820312 33.015625 3.304688 32.8125 2.882812 33 C 2.429688 33.171875 2.242188 33.6875 2.414062 34.109375 L 6.257812 43.21875 C 6.289062 43.265625 6.304688 43.328125 6.335938 43.359375 L 6.335938 43.375 C 6.367188 43.40625 6.382812 43.4375 6.414062 43.46875 C 6.429688 43.5 6.429688 43.5 6.445312 43.515625 C 6.492188 43.53125 6.507812 43.5625 6.554688 43.59375 L 6.570312 43.59375 C 6.601562 43.625 6.664062 43.671875 6.710938 43.6875 C 6.726562 43.6875 6.726562 43.6875 6.742188 43.703125 C 6.773438 43.703125 6.804688 43.71875 6.851562 43.734375 L 6.898438 43.734375 L 6.976562 43.746094 L 7.054688 43.75 C 7.101562 43.75 7.148438 43.75 7.195312 43.734375 Z M 25.179688 43.75 C 25.632812 43.75 26.039062 43.359375 26.039062 42.890625 C 26.039062 42.40625 25.632812 42.015625 25.179688 42.015625 L 20.945312 42.015625 L 20.945312 39.140625 L 24.585938 39.140625 C 25.054688 39.140625 25.445312 38.75 25.445312 38.265625 C 25.445312 37.8125 25.054688 37.40625 24.585938 37.40625 L 20.945312 37.40625 L 20.945312 34.546875 L 25.179688 34.546875 C 25.632812 34.546875 26.039062 34.15625 26.039062 33.671875 C 26.039062 33.1875 25.632812 32.8125 25.179688 32.8125 L 20.070312 32.8125 C 19.585938 32.8125 19.210938 33.1875 19.210938 33.671875 L 19.210938 42.890625 C 19.210938 43.359375 19.585938 43.75 20.070312 43.75 C 20.070312 43.75 20.085938 43.734375 20.085938 43.734375 C 20.085938 43.734375 20.085938 43.75 20.117188 43.75 Z M 31.539062 43.75 C 33.382812 43.75 34.882812 42.25 34.882812 40.390625 C 34.882812 39.203125 34.242188 38.15625 33.304688 37.5625 C 33.679688 37.0625 33.898438 36.453125 33.898438 35.78125 C 33.898438 34.140625 32.570312 32.8125 30.929688 32.8125 L 28.710938 32.8125 C 28.242188 32.8125 27.851562 33.1875 27.851562 33.671875 L 27.851562 42.890625 C 27.851562 43.359375 28.242188 43.75 28.710938 43.75 L 28.757812 43.734375 C 28.757812 43.734375 28.757812 43.75 28.773438 43.75 Z M 30.929688 37.046875 L 29.585938 37.046875 L 29.585938 34.546875 L 30.929688 34.546875 C 31.617188 34.546875 32.164062 35.09375 32.164062 35.78125 C 32.164062 36.46875 31.617188 37.046875 30.929688 37.046875 Z M 31.539062 42.015625 L 29.585938 42.015625 L 29.585938 38.78125 L 31.539062 38.78125 C 32.429688 38.796875 33.148438 39.5 33.148438 40.390625 C 33.148438 41.296875 32.429688 42 31.539062 42.015625 Z M 45.664062 43.75 C 46.132812 43.75 46.539062 43.359375 46.539062 42.890625 L 46.539062 33.671875 C 46.539062 33.269531 46.242188 32.9375 45.859375 32.839844 L 45.664062 32.8125 L 45.648438 32.8125 C 45.367188 32.8125 45.117188 32.9375 44.945312 33.171875 L 41.835938 37.484375 L 38.726562 33.171875 C 38.570312 32.9375 38.289062 32.8125 38.039062 32.8125 L 37.992188 32.8125 C 37.523438 32.8125 37.132812 33.203125 37.132812 33.671875 L 37.132812 42.890625 C 37.132812 43.359375 37.523438 43.75 37.992188 43.75 C 38.476562 43.75 38.867188 43.359375 38.867188 42.890625 L 38.867188 36.3125 L 41.101562 39.4375 C 41.273438 39.671875 41.539062 39.796875 41.820312 39.796875 L 41.851562 39.796875 C 42.132812 39.796875 42.382812 39.671875 42.554688 39.4375 L 44.804688 36.3125 L 44.804688 42.890625 C 44.804688 43.359375 45.179688 43.75 45.664062 43.75 Z M 45.664062 43.75 \"/>\\n </g>'},webpIcon:{extension:\".webp\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 9.234375 43.734375 L 9.28125 43.734375 C 9.3125 43.71875 9.34375 43.703125 9.40625 43.703125 L 9.414062 43.6875 C 9.421875 43.6875 9.421875 43.6875 9.4375 43.6875 C 9.46875 43.671875 9.515625 43.625 9.5625 43.59375 L 9.59375 43.59375 C 9.625 43.5625 9.65625 43.53125 9.6875 43.515625 C 9.6875 43.5 9.703125 43.5 9.703125 43.46875 L 9.796875 43.375 C 9.796875 43.375 9.796875 43.359375 9.8125 43.359375 C 9.828125 43.328125 9.859375 43.265625 9.875 43.21875 L 11.921875 38.375 L 13.96875 43.21875 C 13.984375 43.265625 14 43.328125 14.03125 43.359375 C 14.03125 43.359375 14.03125 43.375 14.0625 43.375 L 14.125 43.46875 C 14.140625 43.5 14.140625 43.5 14.15625 43.515625 L 14.203125 43.546875 L 14.265625 43.59375 C 14.265625 43.59375 14.265625 43.59375 14.28125 43.59375 C 14.3125 43.625 14.359375 43.671875 14.421875 43.6875 C 14.4375 43.6875 14.4375 43.6875 14.453125 43.703125 C 14.484375 43.703125 14.515625 43.71875 14.5625 43.734375 L 14.609375 43.734375 L 14.679688 43.746094 L 14.75 43.75 C 14.8125 43.75 14.859375 43.75 14.90625 43.734375 L 14.9375 43.734375 C 14.984375 43.71875 15.03125 43.703125 15.0625 43.703125 C 15.0625 43.6875 15.078125 43.6875 15.078125 43.6875 L 15.09375 43.6875 C 15.15625 43.671875 15.1875 43.625 15.234375 43.59375 L 15.25 43.59375 C 15.28125 43.5625 15.328125 43.53125 15.359375 43.515625 C 15.359375 43.5 15.375 43.5 15.375 43.46875 C 15.40625 43.4375 15.4375 43.40625 15.453125 43.375 L 15.46875 43.359375 C 15.5 43.328125 15.53125 43.265625 15.546875 43.21875 L 19.375 34.109375 C 19.5625 33.6875 19.359375 33.171875 18.9375 33 C 18.484375 32.8125 17.984375 33.015625 17.796875 33.453125 L 14.75 40.6875 L 12.734375 35.890625 C 12.578125 35.546875 12.25 35.359375 11.921875 35.359375 C 11.578125 35.359375 11.25 35.546875 11.109375 35.890625 L 9.09375 40.6875 L 6.03125 33.453125 C 5.859375 33.015625 5.34375 32.8125 4.921875 33 C 4.46875 33.171875 4.28125 33.6875 4.453125 34.109375 L 8.296875 43.21875 C 8.328125 43.265625 8.34375 43.328125 8.375 43.359375 L 8.375 43.375 C 8.40625 43.40625 8.421875 43.4375 8.453125 43.46875 C 8.46875 43.5 8.46875 43.5 8.484375 43.515625 L 8.539062 43.546875 L 8.59375 43.59375 C 8.59375 43.59375 8.59375 43.59375 8.609375 43.59375 C 8.640625 43.625 8.703125 43.671875 8.75 43.6875 C 8.765625 43.6875 8.765625 43.6875 8.78125 43.703125 C 8.8125 43.703125 8.84375 43.71875 8.890625 43.734375 L 8.9375 43.734375 L 9.015625 43.746094 L 9.09375 43.75 C 9.140625 43.75 9.1875 43.75 9.234375 43.734375 Z M 27.21875 43.75 C 27.671875 43.75 28.078125 43.359375 28.078125 42.890625 C 28.078125 42.40625 27.671875 42.015625 27.21875 42.015625 L 22.984375 42.015625 L 22.984375 39.140625 L 26.625 39.140625 C 27.09375 39.140625 27.484375 38.75 27.484375 38.265625 C 27.484375 37.8125 27.09375 37.40625 26.625 37.40625 L 22.984375 37.40625 L 22.984375 34.546875 L 27.21875 34.546875 C 27.671875 34.546875 28.078125 34.15625 28.078125 33.671875 C 28.078125 33.1875 27.671875 32.8125 27.21875 32.8125 L 22.109375 32.8125 C 21.625 32.8125 21.25 33.1875 21.25 33.671875 L 21.25 42.890625 C 21.25 43.359375 21.625 43.75 22.109375 43.75 L 22.125 43.734375 C 22.125 43.734375 22.125 43.75 22.15625 43.75 Z M 33.578125 43.75 C 35.421875 43.75 36.921875 42.25 36.921875 40.390625 C 36.921875 39.203125 36.28125 38.15625 35.34375 37.5625 C 35.71875 37.0625 35.9375 36.453125 35.9375 35.78125 C 35.9375 34.140625 34.609375 32.8125 32.96875 32.8125 L 30.75 32.8125 C 30.28125 32.8125 29.890625 33.1875 29.890625 33.671875 L 29.890625 42.890625 C 29.890625 43.359375 30.28125 43.75 30.75 43.75 C 30.765625 43.75 30.765625 43.734375 30.796875 43.734375 C 30.796875 43.734375 30.796875 43.75 30.8125 43.75 Z M 32.96875 37.046875 L 31.625 37.046875 L 31.625 34.546875 L 32.96875 34.546875 C 33.65625 34.546875 34.203125 35.09375 34.203125 35.78125 C 34.203125 36.46875 33.65625 37.046875 32.96875 37.046875 Z M 33.578125 42.015625 L 31.625 42.015625 L 31.625 38.78125 L 33.578125 38.78125 C 34.46875 38.796875 35.1875 39.5 35.1875 40.390625 C 35.1875 41.296875 34.46875 42 33.578125 42.015625 Z M 40.03125 43.75 C 40.515625 43.75 40.90625 43.359375 40.90625 42.890625 L 40.90625 39.5 L 42.828125 39.5 C 44.6875 39.5 46.1875 38 46.1875 36.171875 C 46.1875 34.3125 44.6875 32.8125 42.828125 32.8125 L 40.03125 32.8125 C 39.5625 32.8125 39.171875 33.1875 39.171875 33.671875 L 39.171875 42.890625 C 39.171875 43.359375 39.5625 43.75 40.03125 43.75 Z M 42.828125 37.765625 L 40.90625 37.765625 L 40.90625 34.546875 L 42.828125 34.546875 C 43.734375 34.546875 44.4375 35.265625 44.453125 36.171875 C 44.4375 37.046875 43.734375 37.765625 42.828125 37.765625 Z M 42.828125 37.765625 \"/>\\n </g>'},wmvIcon:{extension:\".wmv\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 8.484375 43.734375 L 8.53125 43.734375 C 8.5625 43.71875 8.59375 43.703125 8.65625 43.703125 L 8.664062 43.6875 C 8.671875 43.6875 8.671875 43.6875 8.6875 43.6875 C 8.71875 43.671875 8.765625 43.625 8.8125 43.59375 L 8.84375 43.59375 C 8.875 43.5625 8.90625 43.53125 8.9375 43.515625 C 8.9375 43.5 8.953125 43.5 8.953125 43.46875 L 9.046875 43.375 C 9.046875 43.375 9.046875 43.359375 9.0625 43.359375 C 9.078125 43.328125 9.109375 43.265625 9.125 43.21875 L 11.171875 38.375 L 13.21875 43.21875 C 13.234375 43.265625 13.25 43.328125 13.28125 43.359375 C 13.28125 43.359375 13.28125 43.375 13.3125 43.375 L 13.375 43.46875 C 13.390625 43.5 13.390625 43.5 13.40625 43.515625 L 13.453125 43.546875 L 13.515625 43.59375 C 13.515625 43.59375 13.515625 43.59375 13.53125 43.59375 C 13.5625 43.625 13.609375 43.671875 13.671875 43.6875 C 13.6875 43.6875 13.6875 43.6875 13.703125 43.703125 C 13.734375 43.703125 13.765625 43.71875 13.8125 43.734375 L 13.859375 43.734375 L 13.929688 43.746094 L 14 43.75 C 14.0625 43.75 14.109375 43.75 14.15625 43.734375 L 14.1875 43.734375 C 14.234375 43.71875 14.28125 43.703125 14.3125 43.703125 C 14.3125 43.6875 14.328125 43.6875 14.328125 43.6875 L 14.34375 43.6875 C 14.40625 43.671875 14.4375 43.625 14.484375 43.59375 L 14.5 43.59375 C 14.53125 43.5625 14.578125 43.53125 14.609375 43.515625 C 14.609375 43.5 14.625 43.5 14.625 43.46875 C 14.65625 43.4375 14.6875 43.40625 14.703125 43.375 L 14.71875 43.359375 C 14.75 43.328125 14.78125 43.265625 14.796875 43.21875 L 18.625 34.109375 C 18.8125 33.6875 18.609375 33.171875 18.1875 33 C 17.734375 32.8125 17.234375 33.015625 17.046875 33.453125 L 14 40.6875 L 11.984375 35.890625 C 11.828125 35.546875 11.5 35.359375 11.171875 35.359375 C 10.828125 35.359375 10.5 35.546875 10.359375 35.890625 L 8.34375 40.6875 L 5.28125 33.453125 C 5.109375 33.015625 4.59375 32.8125 4.171875 33 C 3.71875 33.171875 3.53125 33.6875 3.703125 34.109375 L 7.546875 43.21875 C 7.578125 43.265625 7.59375 43.328125 7.625 43.359375 L 7.625 43.375 C 7.65625 43.40625 7.671875 43.4375 7.703125 43.46875 C 7.71875 43.5 7.71875 43.5 7.734375 43.515625 L 7.789062 43.546875 L 7.84375 43.59375 C 7.84375 43.59375 7.84375 43.59375 7.859375 43.59375 C 7.890625 43.625 7.953125 43.671875 8 43.6875 C 8.015625 43.6875 8.015625 43.6875 8.03125 43.703125 C 8.0625 43.703125 8.09375 43.71875 8.140625 43.734375 L 8.1875 43.734375 L 8.265625 43.746094 L 8.34375 43.75 C 8.390625 43.75 8.4375 43.75 8.484375 43.734375 Z M 29.03125 43.75 C 29.5 43.75 29.90625 43.359375 29.90625 42.890625 L 29.90625 33.671875 C 29.90625 33.269531 29.609375 32.9375 29.226562 32.839844 L 29.03125 32.8125 L 29.015625 32.8125 C 28.734375 32.8125 28.484375 32.9375 28.3125 33.171875 L 25.203125 37.484375 L 22.09375 33.171875 C 21.9375 32.9375 21.65625 32.8125 21.40625 32.8125 L 21.359375 32.8125 C 20.890625 32.8125 20.5 33.203125 20.5 33.671875 L 20.5 42.890625 C 20.5 43.359375 20.890625 43.75 21.359375 43.75 C 21.84375 43.75 22.234375 43.359375 22.234375 42.890625 L 22.234375 36.3125 L 24.46875 39.4375 C 24.640625 39.671875 24.90625 39.796875 25.1875 39.796875 L 25.21875 39.796875 C 25.5 39.796875 25.75 39.671875 25.921875 39.4375 L 28.171875 36.3125 L 28.171875 42.890625 C 28.171875 43.359375 28.546875 43.75 29.03125 43.75 Z M 37.015625 43.734375 L 37.0625 43.734375 C 37.09375 43.71875 37.125 43.703125 37.1875 43.703125 L 37.195312 43.6875 C 37.203125 43.6875 37.203125 43.6875 37.21875 43.6875 C 37.25 43.671875 37.296875 43.625 37.34375 43.59375 L 37.375 43.59375 C 37.40625 43.5625 37.4375 43.53125 37.46875 43.515625 C 37.46875 43.5 37.484375 43.5 37.484375 43.46875 L 37.578125 43.375 C 37.578125 43.375 37.578125 43.359375 37.59375 43.359375 C 37.609375 43.328125 37.640625 43.265625 37.65625 43.21875 L 39.703125 38.375 L 41.75 43.21875 C 41.765625 43.265625 41.78125 43.328125 41.8125 43.359375 C 41.8125 43.359375 41.8125 43.375 41.84375 43.375 L 41.90625 43.46875 C 41.921875 43.5 41.921875 43.5 41.9375 43.515625 L 41.984375 43.546875 L 42.046875 43.59375 C 42.046875 43.59375 42.046875 43.59375 42.0625 43.59375 C 42.09375 43.625 42.140625 43.671875 42.203125 43.6875 C 42.21875 43.6875 42.21875 43.6875 42.234375 43.703125 C 42.265625 43.703125 42.296875 43.71875 42.34375 43.734375 L 42.390625 43.734375 L 42.460938 43.746094 L 42.53125 43.75 C 42.59375 43.75 42.640625 43.75 42.6875 43.734375 L 42.71875 43.734375 C 42.765625 43.71875 42.8125 43.703125 42.84375 43.703125 C 42.84375 43.6875 42.859375 43.6875 42.859375 43.6875 L 42.875 43.6875 C 42.9375 43.671875 42.96875 43.625 43.015625 43.59375 L 43.03125 43.59375 C 43.0625 43.5625 43.109375 43.53125 43.140625 43.515625 C 43.140625 43.5 43.15625 43.5 43.15625 43.46875 C 43.1875 43.4375 43.21875 43.40625 43.234375 43.375 L 43.25 43.359375 C 43.28125 43.328125 43.3125 43.265625 43.328125 43.21875 L 47.15625 34.109375 C 47.34375 33.6875 47.140625 33.171875 46.71875 33 C 46.265625 32.8125 45.765625 33.015625 45.578125 33.453125 L 42.53125 40.6875 L 40.515625 35.890625 C 40.359375 35.546875 40.03125 35.359375 39.703125 35.359375 C 39.359375 35.359375 39.03125 35.546875 38.890625 35.890625 L 36.875 40.6875 L 33.8125 33.453125 C 33.640625 33.015625 33.125 32.8125 32.703125 33 C 32.25 33.171875 32.0625 33.6875 32.234375 34.109375 L 36.078125 43.21875 C 36.109375 43.265625 36.125 43.328125 36.15625 43.359375 L 36.15625 43.375 C 36.1875 43.40625 36.203125 43.4375 36.234375 43.46875 C 36.25 43.5 36.25 43.5 36.265625 43.515625 L 36.320312 43.546875 L 36.375 43.59375 C 36.375 43.59375 36.375 43.59375 36.390625 43.59375 C 36.421875 43.625 36.484375 43.671875 36.53125 43.6875 C 36.546875 43.6875 36.546875 43.6875 36.5625 43.703125 C 36.59375 43.703125 36.625 43.71875 36.671875 43.734375 L 36.71875 43.734375 L 36.796875 43.746094 L 36.875 43.75 C 36.921875 43.75 36.96875 43.75 37.015625 43.734375 Z M 37.015625 43.734375 \"/>\\n </g>'},xlsIcon:{extension:\".xls\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 17.21875 46.875 C 17.425781 46.875 17.632812 46.800781 17.820312 46.667969 C 18.289062 46.351562 18.363281 45.695312 18.042969 45.242188 L 14.480469 40.367188 L 18.042969 35.53125 C 18.363281 35.0625 18.289062 34.425781 17.820312 34.105469 C 17.351562 33.75 16.730469 33.84375 16.375 34.332031 L 13.226562 38.644531 L 10.054688 34.332031 C 9.738281 33.84375 9.082031 33.75 8.632812 34.105469 C 8.164062 34.425781 8.070312 35.0625 8.386719 35.53125 L 11.949219 40.367188 L 8.386719 45.242188 C 8.070312 45.695312 8.164062 46.351562 8.632812 46.667969 C 8.800781 46.800781 9.007812 46.875 9.230469 46.875 C 9.550781 46.875 9.851562 46.707031 10.054688 46.445312 L 13.226562 42.113281 L 16.375 46.445312 C 16.582031 46.707031 16.882812 46.875 17.21875 46.875 Z M 29.351562 46.875 C 29.894531 46.875 30.382812 46.40625 30.382812 45.84375 C 30.382812 45.261719 29.894531 44.792969 29.351562 44.792969 L 24.269531 44.792969 L 24.269531 34.78125 C 24.269531 34.21875 23.800781 33.75 23.21875 33.75 C 22.636719 33.75 22.1875 34.21875 22.1875 34.78125 L 22.1875 45.84375 C 22.1875 46.335938 22.53125 46.757812 23.007812 46.855469 L 23.222656 46.875 Z M 37.28125 46.855469 C 38.613281 46.855469 39.832031 46.460938 40.75 45.789062 C 41.6875 45.113281 42.363281 44.082031 42.363281 42.882812 C 42.363281 42.300781 42.195312 41.738281 41.914062 41.289062 C 41.480469 40.59375 40.804688 40.105469 40.039062 39.730469 C 39.289062 39.375 38.40625 39.132812 37.449219 38.945312 L 37.414062 38.945312 C 36.398438 38.757812 35.554688 38.457031 35.070312 38.117188 C 34.824219 37.949219 34.65625 37.78125 34.5625 37.632812 C 34.46875 37.480469 34.429688 37.332031 34.429688 37.105469 C 34.429688 36.710938 34.636719 36.300781 35.144531 35.925781 C 35.648438 35.550781 36.398438 35.289062 37.242188 35.289062 C 38.386719 35.289062 39.304688 35.851562 40.261719 36.488281 C 40.710938 36.789062 41.3125 36.65625 41.59375 36.207031 C 41.894531 35.773438 41.761719 35.175781 41.332031 34.875 C 40.375 34.257812 39.042969 33.375 37.242188 33.375 C 36.023438 33.375 34.882812 33.730469 34 34.367188 C 33.136719 35.007812 32.5 35.980469 32.5 37.105469 C 32.5 37.667969 32.648438 38.195312 32.929688 38.644531 C 33.34375 39.300781 33.960938 39.769531 34.675781 40.105469 C 35.386719 40.445312 36.210938 40.667969 37.09375 40.835938 L 37.132812 40.835938 C 38.238281 41.042969 39.15625 41.363281 39.699219 41.71875 C 39.980469 41.90625 40.148438 42.09375 40.261719 42.28125 C 40.375 42.46875 40.429688 42.636719 40.429688 42.882812 C 40.429688 43.351562 40.1875 43.820312 39.625 44.230469 C 39.0625 44.644531 38.21875 44.925781 37.28125 44.925781 C 35.949219 44.945312 34.523438 44.15625 33.699219 43.480469 C 33.289062 43.144531 32.667969 43.199219 32.332031 43.613281 C 32.011719 44.023438 32.070312 44.644531 32.480469 44.980469 C 33.550781 45.824219 35.257812 46.835938 37.28125 46.855469 Z M 37.28125 46.855469 \"/>\\n </g>'},xlsxIcon:{extension:\".xlsx\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 13.070312 43.75 C 13.242188 43.75 13.414062 43.6875 13.570312 43.578125 C 13.960938 43.3125 14.023438 42.765625 13.757812 42.390625 L 10.789062 38.328125 L 13.757812 34.296875 C 14.023438 33.90625 13.960938 33.375 13.570312 33.109375 C 13.179688 32.8125 12.664062 32.890625 12.367188 33.296875 L 9.742188 36.890625 L 7.101562 33.296875 C 6.835938 32.890625 6.289062 32.8125 5.914062 33.109375 C 5.523438 33.375 5.445312 33.90625 5.710938 34.296875 L 8.679688 38.328125 L 5.710938 42.390625 C 5.445312 42.765625 5.523438 43.3125 5.914062 43.578125 C 6.054688 43.6875 6.226562 43.75 6.414062 43.75 C 6.679688 43.75 6.929688 43.609375 7.101562 43.390625 L 9.742188 39.78125 L 12.367188 43.390625 C 12.539062 43.609375 12.789062 43.75 13.070312 43.75 Z M 23.179688 43.75 C 23.632812 43.75 24.039062 43.359375 24.039062 42.890625 C 24.039062 42.40625 23.632812 42.015625 23.179688 42.015625 L 18.945312 42.015625 L 18.945312 33.671875 C 18.945312 33.203125 18.554688 32.8125 18.070312 32.8125 C 17.585938 32.8125 17.210938 33.203125 17.210938 33.671875 L 17.210938 42.890625 C 17.210938 43.359375 17.585938 43.75 18.070312 43.75 Z M 29.789062 43.734375 C 30.898438 43.734375 31.914062 43.40625 32.679688 42.84375 C 33.460938 42.28125 34.023438 41.421875 34.023438 40.421875 C 34.023438 39.9375 33.882812 39.46875 33.648438 39.09375 C 33.289062 38.515625 32.726562 38.109375 32.085938 37.796875 C 31.460938 37.5 30.726562 37.296875 29.929688 37.140625 L 29.898438 37.140625 C 29.054688 36.984375 28.351562 36.734375 27.945312 36.453125 C 27.742188 36.3125 27.601562 36.171875 27.523438 36.046875 C 27.445312 35.921875 27.414062 35.796875 27.414062 35.609375 C 27.414062 35.28125 27.585938 34.9375 28.007812 34.625 C 28.429688 34.3125 29.054688 34.09375 29.757812 34.09375 C 30.710938 34.09375 31.476562 34.5625 32.273438 35.09375 C 32.648438 35.34375 33.148438 35.234375 33.382812 34.859375 C 33.632812 34.5 33.523438 34 33.164062 33.75 C 32.367188 33.234375 31.257812 32.5 29.757812 32.5 C 28.742188 32.5 27.789062 32.796875 27.054688 33.328125 C 26.335938 33.859375 25.804688 34.671875 25.804688 35.609375 C 25.804688 36.078125 25.929688 36.515625 26.164062 36.890625 C 26.507812 37.4375 27.023438 37.828125 27.617188 38.109375 C 28.210938 38.390625 28.898438 38.578125 29.632812 38.71875 L 29.664062 38.71875 C 30.585938 38.890625 31.351562 39.15625 31.804688 39.453125 C 32.039062 39.609375 32.179688 39.765625 32.273438 39.921875 C 32.367188 40.078125 32.414062 40.21875 32.414062 40.421875 C 32.414062 40.8125 32.210938 41.203125 31.742188 41.546875 C 31.273438 41.890625 30.570312 42.125 29.789062 42.125 C 28.679688 42.140625 27.492188 41.484375 26.804688 40.921875 C 26.460938 40.640625 25.945312 40.6875 25.664062 41.03125 C 25.398438 41.375 25.445312 41.890625 25.789062 42.171875 C 26.679688 42.875 28.101562 43.71875 29.789062 43.734375 Z M 43.179688 43.75 C 43.351562 43.75 43.523438 43.6875 43.679688 43.578125 C 44.070312 43.3125 44.132812 42.765625 43.867188 42.390625 L 40.898438 38.328125 L 43.867188 34.296875 C 44.132812 33.90625 44.070312 33.375 43.679688 33.109375 C 43.289062 32.8125 42.773438 32.890625 42.476562 33.296875 L 39.851562 36.890625 L 37.210938 33.296875 C 36.945312 32.890625 36.398438 32.8125 36.023438 33.109375 C 35.632812 33.375 35.554688 33.90625 35.820312 34.296875 L 38.789062 38.328125 L 35.820312 42.390625 C 35.554688 42.765625 35.632812 43.3125 36.023438 43.578125 C 36.164062 43.6875 36.335938 43.75 36.523438 43.75 C 36.789062 43.75 37.039062 43.609375 37.210938 43.390625 L 39.851562 39.78125 L 42.476562 43.390625 C 42.648438 43.609375 42.898438 43.75 43.179688 43.75 Z M 43.179688 43.75 \"/>\\n </g>'},zipIcon:{extension:\".zip\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 20.175781 46.875 C 20.855469 46.875 21.402344 46.351562 21.402344 45.671875 C 21.402344 44.992188 20.855469 44.445312 20.175781 44.445312 L 13.132812 44.445312 L 21.183594 33.488281 L 21.183594 33.445312 C 21.203125 33.421875 21.226562 33.378906 21.25 33.335938 C 21.269531 33.3125 21.269531 33.289062 21.292969 33.269531 C 21.3125 33.203125 21.3125 33.179688 21.335938 33.136719 C 21.335938 33.09375 21.378906 33.070312 21.378906 33.007812 C 21.378906 32.984375 21.378906 32.960938 21.402344 32.917969 L 21.402344 32.679688 C 21.402344 32.632812 21.402344 32.613281 21.378906 32.546875 C 21.378906 32.503906 21.378906 32.480469 21.335938 32.4375 C 21.335938 32.414062 21.3125 32.371094 21.3125 32.304688 C 21.292969 32.285156 21.269531 32.242188 21.269531 32.21875 C 21.25 32.195312 21.226562 32.152344 21.203125 32.109375 C 21.183594 32.066406 21.160156 32.042969 21.117188 32.023438 C 21.09375 32 21.074219 31.957031 21.050781 31.933594 C 21.03125 31.914062 21.007812 31.867188 20.964844 31.847656 C 20.941406 31.824219 20.941406 31.804688 20.898438 31.78125 L 20.875 31.78125 C 20.832031 31.757812 20.8125 31.738281 20.765625 31.714844 C 20.746094 31.695312 20.722656 31.648438 20.65625 31.648438 L 20.570312 31.605469 L 20.4375 31.585938 C 20.417969 31.585938 20.375 31.5625 20.351562 31.5625 L 10.75 31.5625 C 10.070312 31.5625 9.546875 32.085938 9.546875 32.765625 C 9.546875 33.421875 10.070312 33.992188 10.75 33.992188 L 17.8125 33.992188 L 9.785156 44.972656 L 9.765625 44.972656 C 9.742188 45.015625 9.71875 45.058594 9.699219 45.082031 C 9.699219 45.101562 9.675781 45.148438 9.632812 45.167969 C 9.632812 45.210938 9.609375 45.257812 9.609375 45.277344 C 9.589844 45.320312 9.589844 45.367188 9.566406 45.386719 L 9.566406 45.496094 C 9.546875 45.539062 9.546875 45.585938 9.546875 45.648438 L 9.546875 45.738281 C 9.546875 45.78125 9.566406 45.824219 9.566406 45.890625 C 9.566406 45.933594 9.589844 45.957031 9.589844 45.976562 L 9.632812 46.109375 C 9.632812 46.152344 9.675781 46.175781 9.699219 46.21875 C 9.699219 46.242188 9.71875 46.261719 9.742188 46.328125 C 9.765625 46.351562 9.785156 46.394531 9.808594 46.414062 C 9.828125 46.4375 9.851562 46.460938 9.894531 46.480469 L 9.9375 46.542969 L 9.984375 46.589844 C 10.003906 46.613281 10.027344 46.632812 10.046875 46.632812 L 10.046875 46.65625 C 10.070312 46.679688 10.09375 46.679688 10.136719 46.699219 C 10.179688 46.722656 10.222656 46.742188 10.246094 46.742188 C 10.265625 46.789062 10.289062 46.789062 10.3125 46.808594 C 10.375 46.808594 10.421875 46.832031 10.464844 46.832031 C 10.484375 46.851562 10.507812 46.851562 10.53125 46.851562 L 10.648438 46.871094 Z M 26.214844 46.875 C 26.871094 46.875 27.4375 46.351562 27.4375 45.671875 L 27.4375 32.765625 C 27.4375 32.085938 26.871094 31.5625 26.214844 31.5625 C 25.535156 31.5625 25.011719 32.085938 25.011719 32.765625 L 25.011719 45.671875 C 25.011719 46.351562 25.535156 46.875 26.214844 46.875 Z M 32.734375 46.875 C 33.410156 46.875 33.957031 46.328125 33.957031 45.671875 L 33.957031 40.925781 L 36.648438 40.925781 C 39.25 40.925781 41.351562 38.824219 41.351562 36.265625 C 41.351562 33.664062 39.25 31.5625 36.648438 31.5625 L 32.734375 31.5625 C 32.078125 31.5625 31.53125 32.085938 31.53125 32.765625 L 31.53125 45.671875 C 31.53125 46.328125 32.078125 46.875 32.734375 46.875 Z M 36.648438 38.496094 L 33.957031 38.496094 L 33.957031 33.992188 L 36.648438 33.992188 C 37.917969 33.992188 38.902344 34.996094 38.921875 36.265625 C 38.902344 37.492188 37.917969 38.496094 36.648438 38.496094 Z M 36.648438 38.496094 \"/>\\n </g>'},docxIcon:{extension:\".docx\",path:'<g id=\"surface9\" clip-path=\"url(#clip1)\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n </g>\\n </defs>\\n <g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <use xlink:href=\"#surface9\" mask=\"url(#mask0)\"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 7.789062 43.75 C 9.589844 43.75 10.988281 43.269531 11.984375 42.304688 C 12.980469 41.339844 13.476562 39.984375 13.476562 38.234375 C 13.476562 36.496094 12.980469 35.144531 11.984375 34.179688 C 10.988281 33.214844 9.589844 32.734375 7.789062 32.734375 L 4.695312 32.734375 C 4.394531 32.734375 4.15625 32.816406 3.984375 32.984375 C 3.8125 33.152344 3.726562 33.386719 3.726562 33.6875 L 3.726562 42.796875 C 3.726562 43.097656 3.8125 43.332031 3.984375 43.5 C 4.15625 43.667969 4.394531 43.75 4.695312 43.75 Z M 7.664062 42.109375 L 5.742188 42.109375 L 5.742188 34.375 L 7.664062 34.375 C 10.195312 34.375 11.460938 35.660156 11.460938 38.234375 C 11.460938 40.816406 10.195312 42.109375 7.664062 42.109375 Z M 20.414062 43.890625 C 21.476562 43.890625 22.402344 43.660156 23.1875 43.203125 C 23.972656 42.746094 24.582031 42.089844 25.007812 41.234375 C 25.433594 40.378906 25.648438 39.378906 25.648438 38.234375 C 25.648438 37.089844 25.4375 36.089844 25.015625 35.242188 C 24.59375 34.394531 23.988281 33.738281 23.203125 33.28125 C 22.417969 32.824219 21.488281 32.59375 20.414062 32.59375 C 19.339844 32.59375 18.410156 32.824219 17.617188 33.28125 C 16.824219 33.738281 16.21875 34.394531 15.796875 35.242188 C 15.375 36.089844 15.164062 37.089844 15.164062 38.234375 C 15.164062 39.378906 15.378906 40.378906 15.804688 41.234375 C 16.230469 42.089844 16.839844 42.746094 17.625 43.203125 C 18.410156 43.660156 19.339844 43.890625 20.414062 43.890625 Z M 20.414062 42.28125 C 19.394531 42.28125 18.597656 41.933594 18.03125 41.234375 C 17.464844 40.535156 17.179688 39.535156 17.179688 38.234375 C 17.179688 36.933594 17.464844 35.933594 18.03125 35.242188 C 18.597656 34.550781 19.394531 34.203125 20.414062 34.203125 C 21.425781 34.203125 22.214844 34.550781 22.78125 35.242188 C 23.347656 35.933594 23.632812 36.933594 23.632812 38.234375 C 23.632812 39.535156 23.347656 40.535156 22.78125 41.234375 C 22.214844 41.933594 21.425781 42.28125 20.414062 42.28125 Z M 32.601562 43.890625 C 33.289062 43.890625 33.933594 43.789062 34.539062 43.585938 C 35.144531 43.382812 35.679688 43.089844 36.148438 42.703125 C 36.285156 42.597656 36.378906 42.488281 36.429688 42.367188 C 36.480469 42.246094 36.507812 42.109375 36.507812 41.953125 C 36.507812 41.722656 36.445312 41.53125 36.320312 41.375 C 36.195312 41.21875 36.042969 41.140625 35.867188 41.140625 C 35.753906 41.140625 35.644531 41.160156 35.539062 41.203125 C 35.433594 41.246094 35.332031 41.296875 35.226562 41.359375 C 34.746094 41.683594 34.316406 41.910156 33.9375 42.046875 C 33.558594 42.183594 33.144531 42.25 32.695312 42.25 C 31.613281 42.25 30.792969 41.910156 30.234375 41.234375 C 29.675781 40.558594 29.398438 39.558594 29.398438 38.234375 C 29.398438 36.921875 29.675781 35.925781 30.234375 35.25 C 30.792969 34.574219 31.613281 34.234375 32.695312 34.234375 C 33.164062 34.234375 33.589844 34.300781 33.976562 34.429688 C 34.363281 34.558594 34.777344 34.792969 35.226562 35.125 C 35.445312 35.269531 35.660156 35.34375 35.867188 35.34375 C 36.042969 35.34375 36.195312 35.265625 36.320312 35.109375 C 36.445312 34.953125 36.507812 34.761719 36.507812 34.53125 C 36.507812 34.363281 36.480469 34.222656 36.429688 34.109375 C 36.378906 33.996094 36.285156 33.886719 36.148438 33.78125 C 35.679688 33.394531 35.144531 33.101562 34.539062 32.898438 C 33.933594 32.695312 33.289062 32.59375 32.601562 32.59375 C 31.539062 32.59375 30.609375 32.824219 29.8125 33.28125 C 29.015625 33.738281 28.402344 34.394531 27.976562 35.242188 C 27.550781 36.089844 27.335938 37.089844 27.335938 38.234375 C 27.335938 39.378906 27.550781 40.378906 27.976562 41.234375 C 28.402344 42.089844 29.015625 42.746094 29.8125 43.203125 C 30.609375 43.660156 31.539062 43.890625 32.601562 43.890625 Z M 46.132812 43.84375 C 46.382812 43.84375 46.605469 43.75 46.796875 43.5625 C 46.988281 43.375 47.085938 43.15625 47.085938 42.90625 C 47.085938 42.707031 47.003906 42.511719 46.835938 42.3125 L 43.445312 38.15625 L 46.710938 34.171875 C 46.867188 34.003906 46.945312 33.808594 46.945312 33.578125 C 46.945312 33.328125 46.847656 33.113281 46.65625 32.929688 C 46.464844 32.746094 46.242188 32.65625 45.992188 32.65625 C 45.730469 32.65625 45.507812 32.769531 45.320312 33 L 42.273438 36.765625 L 39.226562 33 C 39.027344 32.769531 38.800781 32.65625 38.539062 32.65625 C 38.289062 32.65625 38.070312 32.746094 37.882812 32.929688 C 37.695312 33.113281 37.601562 33.328125 37.601562 33.578125 C 37.601562 33.808594 37.679688 34.003906 37.835938 34.171875 L 41.101562 38.15625 L 37.695312 42.3125 C 37.539062 42.5 37.460938 42.699219 37.460938 42.90625 C 37.460938 43.15625 37.558594 43.371094 37.75 43.554688 C 37.941406 43.738281 38.164062 43.828125 38.414062 43.828125 C 38.675781 43.828125 38.898438 43.71875 39.085938 43.5 L 42.273438 39.5625 L 45.445312 43.5 C 45.644531 43.730469 45.871094 43.84375 46.132812 43.84375 Z M 46.132812 43.84375 \"/>\\n </g>'},jpgIcon:{extension:\".jpg\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <use xlink:href=\"#surface9\" mask=\"url(#mask0)\"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 8.789062 47.007812 L 9.488281 46.960938 C 12.214844 46.757812 13.578125 45.277344 13.578125 42.523438 L 13.578125 32.742188 C 13.578125 32.320312 13.453125 31.980469 13.195312 31.726562 C 12.941406 31.472656 12.59375 31.34375 12.15625 31.34375 C 11.734375 31.34375 11.394531 31.472656 11.140625 31.726562 C 10.886719 31.980469 10.757812 32.320312 10.757812 32.742188 L 10.757812 42.523438 C 10.757812 43.238281 10.605469 43.769531 10.296875 44.117188 C 9.992188 44.46875 9.539062 44.660156 8.941406 44.6875 L 8.242188 44.730469 C 7.847656 44.761719 7.558594 44.867188 7.378906 45.046875 C 7.195312 45.230469 7.105469 45.496094 7.105469 45.847656 C 7.105469 46.664062 7.667969 47.050781 8.789062 47.007812 Z M 18.304688 47.007812 C 18.742188 47.007812 19.089844 46.878906 19.34375 46.625 C 19.597656 46.367188 19.726562 46.023438 19.726562 45.585938 L 19.726562 40.882812 L 23.640625 40.882812 C 25.289062 40.882812 26.574219 40.464844 27.492188 39.632812 C 28.410156 38.804688 28.871094 37.644531 28.871094 36.15625 C 28.871094 34.667969 28.410156 33.511719 27.492188 32.6875 C 26.574219 31.863281 25.289062 31.453125 23.640625 31.453125 L 18.261719 31.453125 C 17.839844 31.453125 17.507812 31.570312 17.265625 31.804688 C 17.023438 32.035156 16.90625 32.363281 16.90625 32.789062 L 16.90625 45.585938 C 16.90625 46.023438 17.03125 46.367188 17.289062 46.625 C 17.542969 46.878906 17.882812 47.007812 18.304688 47.007812 Z M 23.292969 38.714844 L 19.726562 38.714844 L 19.726562 33.640625 L 23.292969 33.640625 C 25.230469 33.640625 26.203125 34.488281 26.203125 36.179688 C 26.203125 37.871094 25.230469 38.714844 23.292969 38.714844 Z M 38.605469 47.070312 C 39.320312 47.070312 40.0625 47.011719 40.835938 46.898438 C 41.609375 46.78125 42.285156 46.621094 42.871094 46.414062 C 43.410156 46.242188 43.765625 46.015625 43.941406 45.738281 C 44.117188 45.460938 44.203125 44.988281 44.203125 44.316406 L 44.203125 39.613281 C 44.203125 39.292969 44.101562 39.03125 43.898438 38.835938 C 43.695312 38.640625 43.425781 38.539062 43.089844 38.539062 L 39.21875 38.539062 C 38.867188 38.539062 38.59375 38.628906 38.398438 38.804688 C 38.199219 38.976562 38.101562 39.226562 38.101562 39.546875 C 38.101562 39.867188 38.199219 40.117188 38.398438 40.289062 C 38.59375 40.464844 38.867188 40.554688 39.21875 40.554688 L 41.6875 40.554688 L 41.6875 44.425781 C 40.699219 44.703125 39.707031 44.839844 38.714844 44.839844 C 35.390625 44.839844 33.726562 42.945312 33.726562 39.152344 C 33.726562 37.300781 34.132812 35.90625 34.941406 34.964844 C 35.75 34.023438 36.949219 33.554688 38.539062 33.554688 C 39.238281 33.554688 39.867188 33.644531 40.421875 33.828125 C 40.972656 34.007812 41.574219 34.324219 42.214844 34.777344 C 42.390625 34.894531 42.542969 34.980469 42.671875 35.03125 C 42.804688 35.082031 42.949219 35.105469 43.109375 35.105469 C 43.359375 35.105469 43.570312 34.996094 43.746094 34.777344 C 43.921875 34.558594 44.007812 34.289062 44.007812 33.96875 C 44.007812 33.75 43.96875 33.558594 43.886719 33.398438 C 43.808594 33.238281 43.679688 33.078125 43.503906 32.917969 C 42.191406 31.808594 40.507812 31.257812 38.453125 31.257812 C 36.90625 31.257812 35.5625 31.574219 34.425781 32.207031 C 33.289062 32.84375 32.410156 33.753906 31.789062 34.941406 C 31.171875 36.128906 30.859375 37.535156 30.859375 39.152344 C 30.859375 40.800781 31.171875 42.21875 31.789062 43.40625 C 32.410156 44.597656 33.304688 45.503906 34.46875 46.132812 C 35.636719 46.757812 37.015625 47.070312 38.605469 47.070312 Z M 38.605469 47.070312 \"/>\\n </g>'},mp3Icon:{extension:\".mp3\",path:'<g id=\"surface9\" clip-path=\"url(#clip1)\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 43.828125 43.710938 C 43.605469 44.28125 43.273438 44.804688 42.84375 45.265625 C 42.40625 45.730469 41.867188 46.113281 41.242188 46.398438 C 40.597656 46.699219 39.851562 46.855469 39.027344 46.855469 C 38.328125 46.855469 37.703125 46.757812 37.160156 46.570312 C 36.609375 46.378906 36.160156 46.136719 35.769531 45.839844 C 35.386719 45.550781 35.050781 45.210938 34.796875 44.832031 C 34.570312 44.507812 34.394531 44.195312 34.265625 43.890625 C 34.140625 43.59375 34.054688 43.335938 33.996094 43.101562 C 33.792969 42.261719 34.304688 41.417969 35.140625 41.210938 C 35.980469 41.007812 36.828125 41.519531 37.03125 42.355469 C 37.039062 42.390625 37.066406 42.488281 37.144531 42.671875 C 37.191406 42.777344 37.265625 42.914062 37.371094 43.0625 C 37.4375 43.160156 37.53125 43.257812 37.65625 43.351562 C 37.792969 43.453125 37.972656 43.542969 38.195312 43.625 C 38.332031 43.667969 38.59375 43.730469 39.027344 43.730469 C 39.390625 43.730469 39.695312 43.675781 39.925781 43.566406 C 40.1875 43.445312 40.398438 43.300781 40.558594 43.132812 C 40.71875 42.957031 40.839844 42.773438 40.914062 42.578125 C 40.996094 42.371094 41.03125 42.195312 41.03125 42.023438 C 41.03125 41.789062 41 41.585938 40.921875 41.398438 C 40.871094 41.257812 40.785156 41.148438 40.660156 41.039062 C 40.515625 40.910156 40.296875 40.792969 40.011719 40.699219 C 39.6875 40.59375 39.253906 40.539062 38.738281 40.535156 C 37.882812 40.527344 37.1875 39.832031 37.1875 38.972656 L 37.1875 38.832031 C 37.1875 37.984375 37.859375 37.292969 38.699219 37.265625 C 39.070312 37.257812 39.398438 37.195312 39.679688 37.101562 C 39.921875 37.011719 40.121094 36.902344 40.273438 36.773438 C 40.40625 36.652344 40.507812 36.519531 40.582031 36.359375 C 40.652344 36.210938 40.6875 36.027344 40.6875 35.8125 C 40.6875 35.523438 40.644531 35.289062 40.574219 35.125 C 40.5 34.96875 40.414062 34.847656 40.304688 34.757812 C 40.1875 34.660156 40.042969 34.582031 39.867188 34.53125 C 39.402344 34.386719 38.878906 34.398438 38.480469 34.542969 C 38.289062 34.617188 38.121094 34.714844 37.976562 34.84375 C 37.820312 34.984375 37.695312 35.148438 37.59375 35.339844 C 37.484375 35.550781 37.40625 35.773438 37.367188 36.039062 C 37.230469 36.890625 36.429688 37.472656 35.574219 37.335938 C 34.722656 37.195312 34.140625 36.398438 34.28125 35.542969 C 34.378906 34.9375 34.5625 34.378906 34.835938 33.871094 C 35.109375 33.355469 35.464844 32.898438 35.890625 32.519531 C 36.320312 32.132812 36.824219 31.828125 37.382812 31.617188 C 38.433594 31.226562 39.667969 31.199219 40.78125 31.539062 C 41.351562 31.714844 41.863281 31.992188 42.308594 32.355469 C 42.777344 32.753906 43.148438 33.242188 43.414062 33.824219 C 43.679688 34.402344 43.8125 35.070312 43.8125 35.8125 C 43.8125 36.476562 43.679688 37.097656 43.421875 37.660156 C 43.25 38.046875 43.023438 38.394531 42.746094 38.707031 C 43.242188 39.148438 43.609375 39.671875 43.835938 40.261719 C 44.046875 40.804688 44.15625 41.398438 44.15625 42.023438 C 44.15625 42.578125 44.046875 43.148438 43.828125 43.710938 Z M 31.445312 38.492188 C 31.148438 39.140625 30.734375 39.703125 30.199219 40.164062 C 29.6875 40.605469 29.078125 40.957031 28.390625 41.199219 C 27.71875 41.4375 26.976562 41.5625 26.191406 41.5625 L 25 41.5625 L 25 45 C 25 45.859375 24.296875 46.5625 23.4375 46.5625 C 22.578125 46.5625 21.875 45.859375 21.875 45 L 21.875 32.8125 C 21.875 31.945312 22.578125 31.25 23.4375 31.25 L 26.191406 31.25 C 27.890625 31.25 29.257812 31.667969 30.253906 32.5 C 31.339844 33.398438 31.886719 34.714844 31.886719 36.40625 C 31.886719 37.148438 31.738281 37.851562 31.445312 38.492188 Z M 18.730469 45.210938 C 18.730469 46.070312 18.03125 46.773438 17.167969 46.773438 C 16.300781 46.773438 15.605469 46.070312 15.605469 45.210938 L 15.605469 39.28125 L 14.015625 43.140625 C 14.007812 43.164062 13.996094 43.191406 13.984375 43.214844 C 13.71875 43.777344 13.15625 44.117188 12.566406 44.117188 L 12.53125 44.117188 C 11.9375 44.117188 11.375 43.777344 11.109375 43.214844 L 11.082031 43.160156 L 9.339844 39.101562 L 9.339844 45.210938 C 9.339844 46.070312 8.640625 46.773438 7.777344 46.773438 C 6.910156 46.773438 6.214844 46.070312 6.214844 45.210938 L 6.214844 32.824219 C 6.214844 31.960938 6.910156 31.261719 7.777344 31.261719 L 7.835938 31.261719 C 8.472656 31.261719 9.046875 31.617188 9.335938 32.1875 L 12.527344 39.09375 L 15.59375 32.207031 C 15.894531 31.617188 16.46875 31.261719 17.105469 31.261719 L 17.167969 31.261719 C 18.03125 31.261719 18.730469 31.960938 18.730469 32.824219 Z M 41.382812 28.125 L 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.136719 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.136719 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 41.382812 28.125 \"/>\\n </g>\\n </defs>\\n <g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <use xlink:href=\"#surface9\" mask=\"url(#mask0)\"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 28.257812 34.902344 C 27.835938 34.550781 27.140625 34.375 26.191406 34.375 L 25 34.375 L 25 38.4375 L 26.191406 38.4375 C 26.621094 38.4375 27.007812 38.375 27.34375 38.253906 C 27.667969 38.140625 27.929688 37.992188 28.148438 37.804688 C 28.34375 37.632812 28.492188 37.4375 28.601562 37.195312 C 28.710938 36.964844 28.757812 36.703125 28.757812 36.40625 C 28.757812 35.324219 28.382812 35.003906 28.257812 34.902344 \"/>\\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(99.607843%,99.607843%,99.607843%);stroke-opacity:1;stroke-miterlimit:4;\" d=\"M 11.34125 13.57875 C 11.345 13.5925 11.3525 13.62375 11.36375 13.67375 C 11.3775 13.7225 11.3975 13.78125 11.42625 13.85 C 11.45375 13.9175 11.49375 13.9875 11.54625 14.0625 C 11.5975 14.13875 11.66625 14.20875 11.75 14.27125 C 11.83375 14.33625 11.9375 14.38875 12.0575 14.43125 C 12.1775 14.4725 12.32 14.49375 12.4875 14.49375 C 12.67875 14.49375 12.845 14.46125 12.9875 14.39375 C 13.13 14.32875 13.24875 14.245 13.34375 14.1425 C 13.43875 14.0425 13.51125 13.93 13.55875 13.8075 C 13.6075 13.6825 13.63125 13.56375 13.63125 13.4475 C 13.63125 13.31125 13.6075 13.1825 13.5625 13.065 C 13.515 12.9475 13.4425 12.845 13.3425 12.7575 C 13.2425 12.67 13.115 12.6 12.96 12.55 C 12.805 12.49875 12.6175 12.4725 12.4 12.4725 L 12.4 12.42625 C 12.57 12.42 12.72375 12.3925 12.8625 12.34375 C 13.0025 12.29625 13.11875 12.2275 13.21625 12.14375 C 13.31375 12.05875 13.3875 11.96 13.44125 11.845 C 13.4925 11.7275 13.52 11.60125 13.52 11.46 C 13.52 11.29375 13.4925 11.1525 13.43875 11.0325 C 13.38375 10.91375 13.31125 10.81625 13.21875 10.74 C 13.1275 10.66375 13.0225 10.6075 12.90375 10.5725 C 12.78625 10.535 12.66375 10.5175 12.5375 10.5175 C 12.395 10.5175 12.26125 10.54 12.14 10.58625 C 12.0175 10.6325 11.91 10.69625 11.81875 10.77875 C 11.72625 10.8625 11.64875 10.96 11.5875 11.07375 C 11.5275 11.18875 11.48625 11.315 11.4625 11.45375 M 7.5 14.4 L 7.5 10.5 L 8.3825 10.5 C 8.8075 10.5 9.13375 10.595 9.3625 10.78375 C 9.59 10.975 9.7025 11.2625 9.7025 11.65 C 9.7025 11.81625 9.6725 11.97125 9.6075 12.11125 C 9.5425 12.2525 9.4525 12.37375 9.335 12.475 C 9.21875 12.5775 9.0775 12.65625 8.9175 12.71375 C 8.75625 12.77125 8.5775 12.8 8.3825 12.8 L 7.6 12.8 M 2.4875 14.4675 L 2.4875 10.50375 L 2.5075 10.50375 C 2.5225 10.50375 2.53375 10.5125 2.5425 10.52625 L 3.9925 13.58625 C 3.99875 13.5975 4.005 13.6075 4.00875 13.6175 M 4.02125 13.6175 C 4.02625 13.6075 4.03125 13.5975 4.0375 13.58625 L 5.44 10.52625 C 5.4475 10.5125 5.45875 10.50375 5.4725 10.50375 L 5.4925 10.50375 L 5.4925 14.4675 \" transform=\"matrix(3.125,0,0,3.125,0,0)\"/>\\n </g>'},mp4Icon:{extension:\".mp4\",path:'<g id=\"surface6\" clip-path=\"url(#clip1)\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 36.898438 40.625 L 40.625 35.480469 L 40.625 40.625 Z M 28.761719 36.40625 C 28.761719 36.703125 28.707031 36.964844 28.605469 37.195312 C 28.496094 37.433594 28.347656 37.632812 28.148438 37.804688 C 27.929688 37.992188 27.667969 38.144531 27.34375 38.257812 C 27.003906 38.375 26.621094 38.4375 26.191406 38.4375 L 25 38.4375 L 25 34.375 L 26.191406 34.375 C 27.140625 34.375 27.835938 34.554688 28.253906 34.902344 C 28.378906 35.007812 28.761719 35.324219 28.761719 36.40625 Z M 44.6875 43.75 L 43.75 43.75 L 43.75 45.3125 C 43.75 46.175781 43.050781 46.875 42.1875 46.875 C 41.324219 46.875 40.625 46.175781 40.625 45.3125 L 40.625 43.75 L 34.066406 43.75 C 33.199219 43.75 32.503906 43.050781 32.503906 42.1875 L 32.503906 41.875 C 32.503906 41.546875 32.605469 41.226562 32.800781 40.957031 L 39.363281 31.898438 C 39.660156 31.492188 40.128906 31.25 40.628906 31.25 L 42.1875 31.25 C 43.050781 31.25 43.75 31.949219 43.75 32.8125 L 43.75 40.625 L 44.6875 40.625 C 45.550781 40.625 46.25 41.324219 46.25 42.1875 C 46.25 43.050781 45.550781 43.75 44.6875 43.75 Z M 31.445312 38.492188 C 31.148438 39.140625 30.730469 39.703125 30.195312 40.167969 C 29.6875 40.605469 29.082031 40.957031 28.390625 41.203125 C 27.71875 41.441406 26.976562 41.5625 26.191406 41.5625 L 25 41.5625 L 25 45 C 25 45.863281 24.300781 46.5625 23.4375 46.5625 C 22.578125 46.5625 21.875 45.863281 21.875 45 L 21.875 32.8125 C 21.875 31.949219 22.578125 31.25 23.4375 31.25 L 26.191406 31.25 C 27.890625 31.25 29.257812 31.671875 30.253906 32.5 C 31.339844 33.398438 31.886719 34.714844 31.886719 36.40625 C 31.886719 37.148438 31.738281 37.851562 31.445312 38.492188 Z M 18.730469 45.210938 C 18.730469 46.070312 18.027344 46.773438 17.167969 46.773438 C 16.300781 46.773438 15.605469 46.070312 15.605469 45.210938 L 15.605469 39.6875 L 14.035156 43.105469 C 14.019531 43.144531 14.003906 43.179688 13.984375 43.214844 C 13.71875 43.78125 13.15625 44.117188 12.566406 44.117188 L 12.53125 44.117188 C 11.941406 44.117188 11.378906 43.78125 11.113281 43.214844 C 11.097656 43.183594 11.078125 43.152344 11.066406 43.125 L 9.339844 39.484375 L 9.339844 45.210938 C 9.339844 46.070312 8.640625 46.773438 7.777344 46.773438 C 6.910156 46.773438 6.214844 46.070312 6.214844 45.210938 L 6.214844 32.824219 C 6.214844 31.960938 6.910156 31.261719 7.777344 31.261719 L 7.835938 31.261719 C 8.472656 31.261719 9.046875 31.617188 9.335938 32.191406 L 9.355469 32.226562 L 12.523438 38.90625 L 15.578125 32.242188 C 15.585938 32.226562 15.597656 32.210938 15.605469 32.191406 C 15.894531 31.617188 16.46875 31.261719 17.105469 31.261719 L 17.164062 31.261719 C 18.027344 31.261719 18.726562 31.960938 18.726562 32.824219 L 18.726562 45.210938 Z M 41.382812 28.125 L 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 41.382812 28.125 \"/>\\n </g>\\n </defs>\\n <g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <use xlink:href=\"#surface6\" mask=\"url(#mask0)\"/>\\n <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(99.607843%,99.607843%,99.607843%);stroke-opacity:1;stroke-miterlimit:4;\" d=\"M 14.3 13.5 L 10.90125 13.5 L 10.90125 13.4 L 13.00125 10.5 L 13.5 10.5 L 13.5 14.5 M 7.5 14.4 L 7.5 10.5 L 8.3825 10.5 C 8.8075 10.5 9.13375 10.595 9.3625 10.78375 C 9.59 10.975 9.7025 11.2625 9.7025 11.65 C 9.7025 11.81625 9.6725 11.97125 9.6075 12.11125 C 9.5425 12.2525 9.4525 12.37375 9.335 12.47625 C 9.21875 12.5775 9.0775 12.65625 8.9175 12.71375 C 8.75625 12.77125 8.5775 12.8 8.3825 12.8 L 7.6 12.8 M 2.4875 14.4675 L 2.4875 10.50375 L 2.5075 10.50375 C 2.5225 10.50375 2.53375 10.5125 2.5425 10.52625 L 3.9925 13.58625 C 3.99875 13.5975 4.005 13.6075 4.00875 13.6175 M 4.02125 13.6175 C 4.02625 13.6075 4.03125 13.5975 4.0375 13.58625 L 5.44 10.52625 C 5.4475 10.5125 5.45875 10.50375 5.4725 10.50375 L 5.4925 10.50375 L 5.4925 14.4675 \" transform=\"matrix(3.125,0,0,3.125,0,0)\"/>\\n </g>'},oggIcon:{extension:\".ogg\",path:'<g id=\"surface9\" clip-path=\"url(#clip1)\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n </g>\\n </defs>\\n <g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n <use xlink:href=\"#surface9\" mask=\"url(#mask0)\"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 8.976562 47.070312 C 10.464844 47.070312 11.757812 46.75 12.859375 46.109375 C 13.960938 45.46875 14.808594 44.550781 15.40625 43.351562 C 16.003906 42.15625 16.304688 40.757812 16.304688 39.152344 C 16.304688 37.550781 16.007812 36.152344 15.417969 34.964844 C 14.828125 33.777344 13.980469 32.859375 12.882812 32.21875 C 11.78125 31.578125 10.480469 31.257812 8.976562 31.257812 C 7.472656 31.257812 6.167969 31.578125 5.0625 32.21875 C 3.953125 32.859375 3.101562 33.777344 2.511719 34.964844 C 1.921875 36.152344 1.625 37.550781 1.625 39.152344 C 1.625 40.757812 1.925781 42.15625 2.523438 43.351562 C 3.121094 44.550781 3.972656 45.46875 5.070312 46.109375 C 6.171875 46.75 7.472656 47.070312 8.976562 47.070312 Z M 8.976562 44.820312 C 7.546875 44.820312 6.433594 44.332031 5.640625 43.351562 C 4.847656 42.375 4.449219 40.976562 4.449219 39.152344 C 4.449219 37.332031 4.847656 35.933594 5.640625 34.964844 C 6.433594 33.996094 7.546875 33.507812 8.976562 33.507812 C 10.390625 33.507812 11.496094 33.996094 12.289062 34.964844 C 13.085938 35.933594 13.484375 37.332031 13.484375 39.152344 C 13.484375 40.976562 13.085938 42.375 12.289062 43.351562 C 11.496094 44.332031 10.390625 44.820312 8.976562 44.820312 Z M 26.410156 47.070312 C 27.125 47.070312 27.871094 47.011719 28.640625 46.898438 C 29.414062 46.78125 30.09375 46.621094 30.675781 46.414062 C 31.214844 46.242188 31.574219 46.015625 31.75 45.738281 C 31.921875 45.460938 32.011719 44.988281 32.011719 44.316406 L 32.011719 39.613281 C 32.011719 39.292969 31.910156 39.03125 31.703125 38.835938 C 31.5 38.640625 31.230469 38.539062 30.894531 38.539062 L 27.023438 38.539062 C 26.671875 38.539062 26.398438 38.628906 26.203125 38.804688 C 26.007812 38.976562 25.90625 39.226562 25.90625 39.546875 C 25.90625 39.867188 26.007812 40.117188 26.203125 40.289062 C 26.398438 40.464844 26.671875 40.554688 27.023438 40.554688 L 29.496094 40.554688 L 29.496094 44.425781 C 28.503906 44.703125 27.511719 44.839844 26.519531 44.839844 C 23.195312 44.839844 21.53125 42.945312 21.53125 39.152344 C 21.53125 37.300781 21.9375 35.90625 22.746094 34.964844 C 23.554688 34.023438 24.753906 33.554688 26.34375 33.554688 C 27.046875 33.554688 27.671875 33.644531 28.226562 33.828125 C 28.78125 34.007812 29.378906 34.324219 30.019531 34.777344 C 30.195312 34.894531 30.347656 34.980469 30.480469 35.03125 C 30.609375 35.082031 30.757812 35.105469 30.917969 35.105469 C 31.164062 35.105469 31.375 34.996094 31.550781 34.777344 C 31.726562 34.558594 31.8125 34.289062 31.8125 33.96875 C 31.8125 33.75 31.773438 33.558594 31.695312 33.398438 C 31.613281 33.238281 31.484375 33.078125 31.3125 32.917969 C 30 31.808594 28.3125 31.257812 26.257812 31.257812 C 24.710938 31.257812 23.371094 31.574219 22.234375 32.207031 C 21.09375 32.84375 20.214844 33.753906 19.597656 34.941406 C 18.976562 36.128906 18.667969 37.535156 18.667969 39.152344 C 18.667969 40.800781 18.976562 42.21875 19.597656 43.40625 C 20.214844 44.597656 21.109375 45.503906 22.277344 46.132812 C 23.441406 46.757812 24.820312 47.070312 26.410156 47.070312 Z M 42.445312 47.070312 C 43.160156 47.070312 43.902344 47.011719 44.675781 46.898438 C 45.449219 46.78125 46.128906 46.621094 46.710938 46.414062 C 47.25 46.242188 47.609375 46.015625 47.78125 45.738281 C 47.957031 45.460938 48.046875 44.988281 48.046875 44.316406 L 48.046875 39.613281 C 48.046875 39.292969 47.941406 39.03125 47.738281 38.835938 C 47.535156 38.640625 47.265625 38.539062 46.929688 38.539062 L 43.058594 38.539062 C 42.707031 38.539062 42.433594 38.628906 42.238281 38.804688 C 42.039062 38.976562 41.941406 39.226562 41.941406 39.546875 C 41.941406 39.867188 42.039062 40.117188 42.238281 40.289062 C 42.433594 40.464844 42.707031 40.554688 43.058594 40.554688 L 45.53125 40.554688 L 45.53125 44.425781 C 44.539062 44.703125 43.546875 44.839844 42.554688 44.839844 C 39.230469 44.839844 37.566406 42.945312 37.566406 39.152344 C 37.566406 37.300781 37.972656 35.90625 38.78125 34.964844 C 39.589844 34.023438 40.789062 33.554688 42.378906 33.554688 C 43.078125 33.554688 43.707031 33.644531 44.261719 33.828125 C 44.816406 34.007812 45.414062 34.324219 46.054688 34.777344 C 46.230469 34.894531 46.382812 34.980469 46.515625 35.03125 C 46.644531 35.082031 46.792969 35.105469 46.953125 35.105469 C 47.199219 35.105469 47.410156 34.996094 47.585938 34.777344 C 47.761719 34.558594 47.847656 34.289062 47.847656 33.96875 C 47.847656 33.75 47.808594 33.558594 47.726562 33.398438 C 47.648438 33.238281 47.519531 33.078125 47.34375 32.917969 C 46.03125 31.808594 44.347656 31.257812 42.292969 31.257812 C 40.746094 31.257812 39.40625 31.574219 38.265625 32.207031 C 37.128906 32.84375 36.25 33.753906 35.632812 34.941406 C 35.011719 36.128906 34.703125 37.535156 34.703125 39.152344 C 34.703125 40.800781 35.011719 42.21875 35.632812 43.40625 C 36.25 44.597656 37.144531 45.503906 38.3125 46.132812 C 39.476562 46.757812 40.855469 47.070312 42.445312 47.070312 Z M 42.445312 47.070312 \"/>\\n </g>'},pdfIcon:{extension:\".pdf\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.59375 25 L 39.4375 25 C 41.476562 25.003906 43.484375 25.472656 45.3125 26.375 L 45.3125 15.375 C 45.347656 14.191406 44.867188 13.054688 44 12.25 L 34.625 2.875 C 33.875 2.003906 32.773438 1.523438 31.625 1.5625 L 6.625 1.5625 C 5.589844 1.5625 4.75 2.402344 4.75 3.4375 L 4.75 26.375 C 6.566406 25.480469 8.566406 25.007812 10.59375 25 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.71875 L 42.15625 12.5 L 34.53125 12.5 C 34.480469 12.511719 34.425781 12.511719 34.375 12.5 Z M 6.25 25.71875 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.300781 13.980469 32.316406 15.253906 33.75 15.625 C 33.957031 15.675781 34.167969 15.675781 34.375 15.625 L 43.75 15.625 L 43.75 25.71875 C 44.859375 26.09375 45.910156 26.621094 46.875 27.28125 L 46.875 15.375 C 46.964844 13.722656 46.3125 12.117188 45.09375 11 L 35.71875 1.625 C 34.648438 0.523438 33.160156 -0.0664062 31.625 0 L 6.625 0 C 5.703125 -0.015625 4.8125 0.339844 4.152344 0.984375 C 3.496094 1.632812 3.125 2.515625 3.125 3.4375 L 3.125 27.28125 C 4.09375 26.625 5.144531 26.101562 6.25 25.71875 Z M 6.25 25.71875 \"/>\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.625 28.125 C 6.335938 28.117188 4.136719 29.023438 2.515625 30.640625 C 0.898438 32.261719 -0.0078125 34.460938 0 36.75 L 0 41.375 C 0 46.136719 3.863281 50 8.625 50 L 41.375 50 C 46.132812 49.984375 49.984375 46.132812 50 41.375 L 50 36.75 C 50 31.988281 46.136719 28.125 41.375 28.125 Z M 8.625 28.125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 14.40625 41.78125 L 12.09375 41.78125 L 12.09375 45.84375 C 12.003906 46.351562 11.5625 46.726562 11.046875 46.726562 C 10.53125 46.726562 10.089844 46.351562 10 45.84375 L 10 34.78125 C 10 34.210938 10.460938 33.75 11.03125 33.75 L 14.40625 33.75 C 15.925781 33.617188 17.390625 34.351562 18.191406 35.648438 C 18.992188 36.945312 18.992188 38.585938 18.191406 39.882812 C 17.390625 41.179688 15.925781 41.914062 14.40625 41.78125 Z M 12.09375 39.6875 L 14.40625 39.6875 C 15.152344 39.78125 15.882812 39.4375 16.289062 38.804688 C 16.691406 38.171875 16.691406 37.359375 16.289062 36.726562 C 15.882812 36.09375 15.152344 35.75 14.40625 35.84375 L 12.09375 35.84375 Z M 12.09375 39.6875 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 20.3125 45.84375 L 20.3125 34.78125 C 20.3125 34.210938 20.773438 33.75 21.34375 33.75 L 23.5625 33.75 C 27.1875 33.75 30.125 36.6875 30.125 40.3125 C 30.125 43.9375 27.1875 46.875 23.5625 46.875 L 21.34375 46.875 C 20.773438 46.875 20.3125 46.414062 20.3125 45.84375 Z M 22.40625 44.78125 L 23.5625 44.78125 C 26.03125 44.78125 28.03125 42.78125 28.03125 40.3125 C 28.03125 37.84375 26.03125 35.84375 23.5625 35.84375 L 22.40625 35.84375 Z M 22.40625 44.78125 \"/>\\n <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 33.1875 45.84375 L 33.1875 34.78125 C 33.183594 34.476562 33.3125 34.1875 33.542969 33.992188 C 33.769531 33.792969 34.074219 33.703125 34.375 33.75 L 40.625 33.75 C 41.132812 33.839844 41.507812 34.28125 41.507812 34.796875 C 41.507812 35.3125 41.132812 35.753906 40.625 35.84375 L 35.25 35.84375 L 35.25 39.28125 L 39.625 39.28125 C 40.195312 39.28125 40.65625 39.742188 40.65625 40.3125 C 40.65625 40.882812 40.195312 41.34375 39.625 41.34375 L 35.25 41.34375 L 35.25 45.84375 C 35.257812 46.359375 34.882812 46.796875 34.375 46.875 C 34.074219 46.921875 33.769531 46.832031 33.542969 46.632812 C 33.3125 46.4375 33.183594 46.148438 33.1875 45.84375 Z M 33.1875 45.84375 \"/>\\n </g>'},defaultIcon:{extension:\".default\",path:'<g id=\"surface1\">\\n <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 3.117188 44.777344 C 1.394531 44.777344 0 43.386719 0 41.671875 L 0 3.484375 C 0 1.769531 1.394531 0.378906 3.117188 0.378906 L 25.792969 0.378906 C 27.164062 0.304688 28.5 0.808594 29.480469 1.765625 L 37.980469 10.230469 C 39.144531 11.242188 39.769531 12.730469 39.683594 14.265625 L 39.683594 41.671875 C 39.683594 43.386719 38.289062 44.777344 36.5625 44.777344 Z M 25.511719 3.203125 L 3.117188 3.203125 C 2.960938 3.203125 2.832031 3.328125 2.832031 3.484375 L 2.832031 41.671875 C 2.832031 41.828125 2.960938 41.957031 3.117188 41.957031 L 36.5625 41.957031 C 36.679688 41.949219 36.785156 41.867188 36.820312 41.757812 L 36.820312 14.492188 L 28.34375 14.492188 C 28.160156 14.539062 27.964844 14.539062 27.777344 14.492188 C 26.480469 14.15625 25.554688 13.007812 25.511719 11.671875 Z M 28.34375 4.640625 L 28.34375 11.671875 C 28.390625 11.683594 28.441406 11.683594 28.488281 11.671875 L 35.402344 11.671875 Z M 28.34375 4.640625 \"/>\\n </g>'}},V.MODULES.modals=function(l){var a=l.$;l.shared.modals||(l.shared.modals={});var o,c=l.shared.modals;function e(){for(var e in c)if(Object.prototype.hasOwnProperty.call(c,e)){var t=c[e];t&&t.$modal&&t.$modal.removeData().remove()}o&&o.removeData().remove(),c={}}function s(e,t){if(c[e]){var n=c[e].$modal,r=n.data(\"instance\")||l;r.events.enableBlur(),n.hide(),o.hide(),a(r.o_doc).find(\"body\").first().removeClass(\"fr-prevent-scroll fr-mobile\"),n.removeClass(\"fr-active\"),t||(r.accessibility.restoreSelection(),r.events.trigger(\"modals.hide\"))}}function n(e){var t;if(\"string\"==typeof e){if(!c[e])return;t=c[e].$modal}else t=e;return t&&l.node.hasClass(t,\"fr-active\")&&l.core.sameInstance(t)||!1}return{_init:function t(){l.events.on(\"shared.destroy\",e,!0)},get:function r(e){return c[e]},create:function d(n,e,t){if(e='<div class=\"fr-modal-head-line\">'.concat(e,\"</div>\"),l.shared.$overlay||(l.shared.$overlay=a(l.doc.createElement(\"DIV\")).addClass(\"fr-overlay\"),a(\"body\").first().append(l.shared.$overlay)),o=l.shared.$overlay,l.opts.theme&&o.addClass(\"\".concat(l.opts.theme,\"-theme\")),!c[n]){var r=function i(e,t){var n='<div tabIndex=\"-1\" class=\"fr-modal'.concat(l.opts.theme?\" \".concat(l.opts.theme,\"-theme\"):\"\",'\"><div class=\"fr-modal-wrapper\">'),r='<button title=\"'.concat(l.language.translate(\"Cancel\"),'\" class=\"fr-command fr-btn fr-modal-close\"><svg xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 24 24\"><path d=\"').concat(V.SVG.close,'\"/></svg></button>');n+='<div class=\"fr-modal-head\">'.concat(e).concat(r,\"</div>\"),n+='<div tabIndex=\"-1\" class=\"fr-modal-body\">'.concat(t,\"</div>\"),n+=\"</div></div>\";var o=a(l.doc.createElement(\"DIV\"));return o.html(n),o.find(\"> .fr-modal\")}(e,t);c[n]={$modal:r,$head:r.find(\".fr-modal-head\"),$body:r.find(\".fr-modal-body\")},l.helpers.isMobile()||r.addClass(\"fr-desktop\"),a(\"body\").first().append(r),l.events.$on(r,\"click\",\".fr-modal-close\",function(){s(n)},!0),c[n].$body.css(\"margin-top\",c[n].$head.outerHeight()),l.events.$on(r,\"keydown\",function(e){var t=e.which;return t===V.KEYCODE.ESC?(s(n),l.accessibility.focusModalButton(r),!1):!(!a(e.currentTarget).is(\"input[type=text], textarea\")&&t!==V.KEYCODE.ARROW_UP&&t!==V.KEYCODE.ARROW_DOWN&&!l.keys.isBrowserAction(e)&&(e.preventDefault(),e.stopPropagation(),1))},!0),s(n,!0)}return c[n]},show:function i(e){if(c[e]){var t=c[e].$modal;t.data(\"instance\",l),t.show(),o.show(),a(l.o_doc).find(\"body\").first().addClass(\"fr-prevent-scroll\"),l.helpers.isMobile()&&a(l.o_doc).find(\"body\").first().addClass(\"fr-mobile\"),t.addClass(\"fr-active\"),l.accessibility.focusModal(t)}},hide:s,resize:function f(e){if(c[e]){var t=c[e],n=t.$modal,r=t.$body,o=l.o_win.innerHeight,i=n.find(\".fr-modal-wrapper\"),a=o-i.outerHeight(!0)+(i.height()-(r.outerHeight(!0)-r.height())),s=\"auto\";a<r.get(0).scrollHeight&&(s=a),r.height(s)}},isVisible:n,areVisible:function p(e){for(var t in c)if(Object.prototype.hasOwnProperty.call(c,t)&&n(t)&&(void 0===e||c[t].$modal.data(\"instance\")===e))return c[t].$modal;return!1}}},V.MODULES.position=function(L){var E=L.$;function o(){var e=L.selection.ranges(0),t=e.getBoundingClientRect();if(0===t.top&&0===t.left&&0===t.width||0===t.height){var n=!1,r=L.opts.toolbarInline&&e.startContainer&&e.startContainer.firstChild&&\"BR\"===e.startContainer.firstChild.tagName;0===L.$el.find(\".fr-marker\").length&&(r?E(e.startContainer.firstChild).after(V.MARKERS):L.selection.save(),n=!0);var o=L.$el.find(\".fr-marker\").first();o.css(\"display\",\"inline\"),o.css(\"line-height\",\"\");var i=o.offset(),a=o.outerHeight();o.css(\"display\",\"none\"),o.css(\"line-height\",0),(t={}).left=i&&i.left,t.width=0,t.height=a,t.top=i&&i.top-(L.helpers.isMobile()&&!L.helpers.isIOS()||L.opts.iframe?0:L.helpers.scrollTop()),o&&0<o.length&&(t.top-=E(o.get(0).parentNode).height()),t.right=1,t.bottom=1,t.ok=!0,n&&(r?L.$el.find(\".fr-marker\").remove():L.selection.restore())}return t}function i(e,t,n,r){var o=n.data(\"container\");if(!o||\"BODY\"===o.get(0).tagName&&\"static\"===o.css(\"position\")||(e&&(e-=o.offset().left),t&&(t-=o.offset().top),\"BODY\"!==o.get(0).tagName?(e&&(e+=o.get(0).scrollLeft),t&&(t+=o.get(0).scrollTop)):\"absolute\"===o.css(\"position\")&&(e&&(e+=o.position().left),t&&(t+=o.position().top))),L.opts.iframe&&o&&L.$tb&&o.get(0)!==L.$tb.get(0)){var i=L.helpers.getPX(L.$wp.find(\".fr-iframe\").css(\"padding-top\")),a=L.helpers.getPX(L.$wp.find(\".fr-iframe\").css(\"padding-left\"));e&&(e+=L.$iframe.offset().left+a),t&&(t+=L.$iframe.offset().top+i)}var s=function l(e,t){var n=e.outerWidth(!0);return t+n>L.$sc.get(0).clientWidth-10&&(t=L.$sc.get(0).clientWidth-n-10),t<0&&(t=10),t}(n,e);e&&n.css(\"left\",s),t&&n.css(\"top\",function c(e,t,n){var r=e.outerHeight(!0);if(!L.helpers.isMobile()&&L.$tb&&e.parent().get(0)!==L.$tb.get(0)){var o=e.parent().offset().top,i=t-r-(n||0);e.parent().get(0)===L.$sc.get(0)&&(o-=e.parent().position().top);var a=L.$sc.get(0).clientHeight;o+t+r>L.$sc.offset().top+a&&0<e.parent().offset().top+i&&0<i?i>L.$wp.scrollTop()&&(t=i,e.addClass(\"fr-above\")):e.removeClass(\"fr-above\")}return t}(n,t,r))}function a(e){var n=E(e),t=n.is(\".fr-sticky-on\"),r=n.data(\"sticky-top\"),o=n.data(\"sticky-scheduled\");if(void 0===r){n.data(\"sticky-top\",0);var i=E('<div class=\"fr-sticky-dummy\" style=\"height: '.concat(n.outerHeight(),'px;\"></div>'));L.$box.prepend(i)}else L.$box.find(\".fr-sticky-dummy\").css(\"height\",n.outerHeight());if(L.core.hasFocus()||0<L.$tb.findVisible(\"input:focus\").length){var a=L.helpers.scrollTop(),s=Math.min(Math.max(a-L.$tb.parent().offset().top,0),L.$tb.parent().outerHeight()-n.outerHeight());if(s!==r&&s!==o&&(clearTimeout(n.data(\"sticky-timeout\")),n.data(\"sticky-scheduled\",s),n.outerHeight()<a-L.$tb.parent().offset().top&&n.addClass(\"fr-opacity-0\"),n.data(\"sticky-timeout\",setTimeout(function(){var e=L.helpers.scrollTop(),t=Math.min(Math.max(e-L.$tb.parent().offset().top,0),L.$tb.parent().outerHeight()-n.outerHeight());0<t&&\"BODY\"===L.$tb.parent().get(0).tagName&&(t+=L.$tb.parent().position().top),t!==r&&(n.css(\"top\",Math.max(t,0)),n.data(\"sticky-top\",t),n.data(\"sticky-scheduled\",t)),n.removeClass(\"fr-opacity-0\")},100))),!t){var l=L.$tb.parent(),c=l.get(0).offsetWidth-l.get(0).clientWidth;n.css(\"top\",\"0\"),n.width(l.width()-c),n.addClass(\"fr-sticky-on\"),L.$box.addClass(\"fr-sticky-box\")}}else clearTimeout(E(e).css(\"sticky-timeout\")),n.css(\"top\",\"0\"),n.css(\"position\",\"\"),n.css(\"width\",\"\"),n.data(\"sticky-top\",0),n.removeClass(\"fr-sticky-on\"),L.$box.removeClass(\"fr-sticky-box\")}function t(e){if(e.offsetWidth){var t=E(e),n=t.outerHeight(),r=t.data(\"sticky-position\"),o=E(\"body\"===L.opts.scrollableContainer?L.o_win:L.opts.scrollableContainer).outerHeight(),i=0,a=0;\"body\"!==L.opts.scrollableContainer&&(i=L.$sc.offset().top,a=E(L.o_win).outerHeight()-i-o);var s=\"body\"===L.opts.scrollableContainer?L.helpers.scrollTop():i,l=t.is(\".fr-sticky-on\");t.data(\"sticky-parent\")||t.data(\"sticky-parent\",t.parent());var c=t.data(\"sticky-parent\"),d=c.offset().top,f=c.outerHeight();if(t.data(\"sticky-offset\")?L.$box.find(\".fr-sticky-dummy\").css(\"height\",\"\".concat(n,\"px\")):(t.data(\"sticky-offset\",!0),t.after('<div class=\"fr-sticky-dummy\" style=\"height: '.concat(n,'px;\"></div>'))),!r){var p=\"auto\"!==t.css(\"top\")||\"auto\"!==t.css(\"bottom\");p||t.css(\"position\",\"fixed\"),r={top:L.node.hasClass(t.get(0),\"fr-top\"),bottom:L.node.hasClass(t.get(0),\"fr-bottom\")},p||t.css(\"position\",\"\"),t.data(\"sticky-position\",r),t.data(\"top\",L.node.hasClass(t.get(0),\"fr-top\")?t.css(\"top\"):\"auto\"),t.data(\"bottom\",L.node.hasClass(t.get(0),\"fr-bottom\")?t.css(\"bottom\"):\"auto\")}var h=L.helpers.getPX(t.data(\"top\")),u=L.helpers.getPX(t.data(\"bottom\")),g=r.top&&function v(){return d<s+h&&s+h<=d+f-n}()&&(L.helpers.isInViewPort(L.$sc.get(0))||\"body\"===L.opts.scrollableContainer),C=r.bottom&&function b(){return d+n<s+o-u&&s+o-u<d+f}();if(g||C){var m=c.get(0).offsetWidth-c.get(0).clientWidth;t.css(\"width\",\"\".concat(c.get(0).getBoundingClientRect().width-m,\"px\")),l||(t.addClass(\"fr-sticky-on\"),t.removeClass(\"fr-sticky-off\"),t.css(\"top\")&&(\"auto\"!==t.data(\"top\")?t.css(\"top\",L.helpers.getPX(t.data(\"top\"))+i):t.data(\"top\",\"auto\")),t.css(\"bottom\")&&(\"auto\"!==t.data(\"bottom\")?t.css(\"bottom\",L.helpers.getPX(t.data(\"bottom\"))+a):t.css(\"bottom\",\"auto\")))}else L.node.hasClass(t.get(0),\"fr-sticky-off\")||(t.css(\"width\",\"\"),t.removeClass(\"fr-sticky-on\"),t.addClass(\"fr-sticky-off\"),t.css(\"top\")&&\"auto\"!==t.data(\"top\")&&r.top&&t.css(\"top\",0),t.css(\"bottom\")&&\"auto\"!==t.data(\"bottom\")&&r.bottom&&t.css(\"bottom\",0))}}function s(){if(L.helpers.requestAnimationFrame()(s),!1!==L.events.trigger(\"position.refresh\"))for(var e=0;e<L._stickyElements.length;e++)if(L.opts.toolbarBottom){var t=L.$tb.parent(),n=t.get(0).offsetWidth-t.get(0).clientWidth,r=E(L._stickyElements[e]);r.width(t.width()-n),r.addClass(\"fr-sticky-on\"),L.$box.addClass(\"fr-sticky-box\")}else a(L._stickyElements[e])}function n(){if(L.opts.toolbarSticky&&setTimeout(function(){if(L.$tb&&0<L.$tb.length){var e=E(L.$tb[0]);if(e.data(\"sticky-parent\")||e.data(\"sticky-parent\",e.parent()),0<document.getElementsByTagName(\"BODY\")[0].querySelectorAll(\"div.modal\").length)e.is(\".fr-sticky-on\")||(L.$box.find(\".fr-sticky-dummy\").remove(),e.addClass(\"fr-sticky-on\"),e.removeClass(\"fr-sticky-off\"))}},0),L._stickyElements)for(var e=0;e<L._stickyElements.length;e++)t(L._stickyElements[e])}return{_init:function r(){!function e(){L._stickyElements=[],L.helpers.isIOS()?(s(),L.events.$on(E(L.o_win),\"scroll\",function(){if(L.core.hasFocus())for(var e=0;e<L._stickyElements.length;e++){var t=E(L._stickyElements[e]),n=t.parent(),r=L.helpers.scrollTop();t.outerHeight()<r-n.offset().top&&(L.opts.toolbarBottom&&L.helpers.isIOS()||(t.addClass(\"fr-opacity-0\"),t.data(\"sticky-top\",-1),t.data(\"sticky-scheduled\",-1)))}},!0)):(\"body\"!==L.opts.scrollableContainer&&L.events.$on(E(L.opts.scrollableContainer),\"scroll\",n,!0),L.events.$on(E(L.o_win),\"scroll\",n,!0),L.events.$on(E(L.o_win),\"resize\",n,!0),L.events.on(\"initialized\",n),L.events.on(\"focus\",n),L.events.$on(E(L.o_win),\"resize\",\"textarea\",n,!0)),L.events.on(\"destroy\",function(){L._stickyElements=[]})}()},forSelection:function l(e){var t=o();if(t.top!=undefined){e.css({top:0,left:0});var n=t.top+t.height,r=t.left+t.width/2-e.get(0).offsetWidth/2+L.helpers.scrollLeft();L.opts.iframe||(n+=L.helpers.scrollTop()),i(r,n,e,t.height)}},addSticky:function c(e){e.addClass(\"fr-sticky\"),L.helpers.isIOS()&&!L.opts.toolbarBottom&&e.addClass(\"fr-sticky-ios\"),e.removeClass(\"fr-sticky\"),L._stickyElements.push(e.get(0))},refresh:n,at:i,getBoundingRect:o}},V.MODULES.refresh=function(l){var c=l.$;function i(e,t){e.toggleClass(\"fr-disabled\",t).attr(\"aria-disabled\",t)}function e(e){var t=l.$tb.find('.fr-more-toolbar[data-name=\"'.concat(e.attr(\"data-group-name\"),'\"]')),n=function s(e,t){var n=0,r=t.find(\"> .fr-command, > .fr-btn-wrap\");r.each(function(e,t){n+=c(t).outerWidth()});var o,i=l.helpers.getPX(c(r[0]).css(\"margin-left\")),a=l.helpers.getPX(c(r[0]).css(\"margin-right\"));o=\"rtl\"===l.opts.direction?l.$tb.outerWidth()-e.offset().left+l.$tb.offset().left-(n+e.outerWidth()+r.length*(i+a))/2:e.offset().left-l.$tb.offset().left-(n-e.outerWidth()+r.length*(i+a))/2;o+n+r.length*(i+a)>l.$tb.outerWidth()&&(o-=(n+r.length*(i+a)-e.outerWidth())/2);o<0&&(o=0);return o}(e,t);\"rtl\"===l.opts.direction?t.css(\"padding-right\",n):t.css(\"padding-left\",n)}return{undo:function t(e){i(e,!l.undo.canDo())},redo:function n(e){i(e,!l.undo.canRedo())},outdent:function a(e){if(l.node.hasClass(e.get(0),\"fr-no-refresh\"))return!1;if(c(\"button#markdown-\".concat(l.id,\".fr-active\")).length)return!1;for(var t=l.selection.blocks(),n=0;n<t.length;n++){var r=\"rtl\"===l.opts.direction||\"rtl\"===c(t[n]).css(\"direction\")?\"margin-right\":\"margin-left\",o=t[0].parentElement;if([\"HTML\",\"P\",\"DIV\",\"UL\",\"OL\",\"LI\",\"TR\",\"BLOCKQUOTE\",\"BODY\"].indexOf(o.parentNode.tagName)<0)return i(e,!0),!0;if(t[0].previousSibling&&\"none\"==o.parentNode.style.listStyleType)return i(e,!0),!0;if(\"LI\"===t[n].tagName||\"LI\"===t[n].parentNode.tagName)return i(e,!1),!0;if(0<l.helpers.getPX(c(t[n]).css(r)))return i(e,!1),!0}i(e,!0)},indent:function o(e){if(l.node.hasClass(e.get(0),\"fr-no-refresh\"))return!1;if(c(\"button#markdown-\".concat(l.id,\".fr-active\")).length)return!1;for(var t=l.selection.blocks(),n=0;n<t.length;n++){for(var r=t[n].previousSibling;r&&r.nodeType===Node.TEXT_NODE&&0===r.textContent.length;)r=r.previousSibling;if(\"LI\"!==t[n].tagName||r)return i(e,!1),!0;i(e,!0)}},moreText:e,moreParagraph:e,moreMisc:e,moreRich:e}},Object.assign(V.DEFAULTS,{attribution:!0,toolbarBottom:!1,toolbarButtons:null,toolbarButtonsXS:null,toolbarButtonsSM:null,toolbarButtonsMD:null,toolbarContainer:null,toolbarInline:!1,toolbarSticky:!0,toolbarStickyOffset:0,toolbarVisibleWithoutSelection:!1}),V.TOOLBAR_BUTTONS={moreText:{buttons:[\"bold\",\"italic\",\"underline\",\"strikeThrough\",\"subscript\",\"superscript\",\"fontFamily\",\"fontSize\",\"textColor\",\"backgroundColor\",\"inlineClass\",\"inlineStyle\",\"clearFormatting\"]},moreParagraph:{buttons:[\"alignLeft\",\"alignCenter\",\"formatOLSimple\",\"alignRight\",\"alignJustify\",\"formatOL\",\"formatUL\",\"paragraphFormat\",\"paragraphStyle\",\"lineHeight\",\"outdent\",\"indent\",\"quote\"]},moreRich:{buttons:[\"trackChanges\",\"markdown\",\"insertLink\",\"insertFiles\",\"insertImage\",\"insertVideo\",\"insertTable\",\"emoticons\",\"fontAwesome\",\"specialCharacters\",\"embedly\",\"insertFile\",\"insertHR\"],buttonsVisible:4},moreMisc:{buttons:[\"undo\",\"redo\",\"fullscreen\",\"print\",\"getPDF\",\"spellChecker\",\"selectAll\",\"html\",\"help\"],align:\"right\",buttonsVisible:2},trackChanges:{buttons:[\"showChanges\",\"applyAll\",\"removeAll\",\"applyLast\",\"removeLast\"],buttonsVisible:0}},V.TOOLBAR_BUTTONS_MD=null,(V.TOOLBAR_BUTTONS_SM={}).moreText=Object.assign({},V.TOOLBAR_BUTTONS.moreText,{buttonsVisible:2}),V.TOOLBAR_BUTTONS_SM.moreParagraph=Object.assign({},V.TOOLBAR_BUTTONS.moreParagraph,{buttonsVisible:2}),V.TOOLBAR_BUTTONS_SM.moreRich=Object.assign({},V.TOOLBAR_BUTTONS.moreRich,{buttonsVisible:2}),V.TOOLBAR_BUTTONS_SM.moreMisc=Object.assign({},V.TOOLBAR_BUTTONS.moreMisc,{buttonsVisible:2}),V.TOOLBAR_BUTTONS_SM.trackChanges=Object.assign({},V.TOOLBAR_BUTTONS.trackChanges,{buttonsVisible:0}),(V.TOOLBAR_BUTTONS_XS={}).moreText=Object.assign({},V.TOOLBAR_BUTTONS.moreText,{buttonsVisible:0}),V.TOOLBAR_BUTTONS_XS.moreParagraph=Object.assign({},V.TOOLBAR_BUTTONS.moreParagraph,{buttonsVisible:0}),V.TOOLBAR_BUTTONS_XS.moreRich=Object.assign({},V.TOOLBAR_BUTTONS.moreRich,{buttonsVisible:0}),V.TOOLBAR_BUTTONS_XS.moreMisc=Object.assign({},V.TOOLBAR_BUTTONS.moreMisc,{buttonsVisible:2}),V.TOOLBAR_BUTTONS_XS.trackChanges=Object.assign({},V.TOOLBAR_BUTTONS.trackChanges,{buttonsVisible:0}),V.POWERED_BY='<a id=\"fr-logo\" href=\"https://froala.com/wysiwyg-editor\" target=\"_blank\" title=\"Froala WYSIWYG HTML Editor\"><span>Powered by</span><svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 822.8 355.33\"><defs><style>.fr-logo{fill:#b1b2b7;}</style></defs><title>Froala</title><path class=\"fr-logo\" d=\"M123.58,78.65A16.16,16.16,0,0,0,111.13,73H16.6C7.6,73,0,80.78,0,89.94V128.3a16.45,16.45,0,0,0,32.9,0V104.14h78.5A15.63,15.63,0,0,0,126.87,91.2,15.14,15.14,0,0,0,123.58,78.65Z\"/><path class=\"fr-logo\" d=\"M103.54,170a16.05,16.05,0,0,0-11.44-4.85H15.79A15.81,15.81,0,0,0,0,180.93v88.69a16.88,16.88,0,0,0,5,11.92,16,16,0,0,0,11.35,4.7h.17a16.45,16.45,0,0,0,16.41-16.6v-73.4H92.2A15.61,15.61,0,0,0,107.89,181,15.1,15.1,0,0,0,103.54,170Z\"/><path class=\"fr-logo\" d=\"M233,144.17c-5.29-6.22-16-7.52-24.14-7.52-16.68,0-28.72,7.71-36.5,23.47v-5.67a16.15,16.15,0,1,0-32.3,0v115.5a16.15,16.15,0,1,0,32.3,0v-38.7c0-19.09,3.5-63.5,35.9-63.5a44.73,44.73,0,0,1,5.95.27h.12c12.79,1.2,20.06-2.73,21.6-11.69C236.76,151.48,235.78,147.39,233,144.17Z\"/><path class=\"fr-logo\" d=\"M371.83,157c-13.93-13.11-32.9-20.33-53.43-20.33S279,143.86,265.12,157c-14.67,13.88-22.42,32.82-22.42,54.77,0,21.68,8,41.28,22.4,55.2,13.92,13.41,32.85,20.8,53.3,20.8s39.44-7.38,53.44-20.79c14.55-13.94,22.56-33.54,22.56-55.21S386.39,170.67,371.83,157Zm-9.73,54.77c0,25.84-18.38,44.6-43.7,44.6s-43.7-18.76-43.7-44.6c0-25.15,18.38-43.4,43.7-43.4S362.1,186.59,362.1,211.74Z\"/><path class=\"fr-logo\" d=\"M552.7,138.14a16.17,16.17,0,0,0-16,16.3v1C526.41,143.85,509,136.64,490,136.64c-19.83,0-38.19,7.24-51.69,20.4C424,171,416.4,190,416.4,212c0,21.61,7.78,41.16,21.9,55,13.56,13.33,31.92,20.67,51.7,20.67,18.83,0,36.29-7.41,46.7-19.37v1.57a16.15,16.15,0,1,0,32.3,0V154.44A16.32,16.32,0,0,0,552.7,138.14Zm-16.3,73.6c0,30.44-22.81,44.3-44,44.3-24.57,0-43.1-19-43.1-44.3s18.13-43.4,43.1-43.4C513.73,168.34,536.4,183.55,536.4,211.74Z\"/><path class=\"fr-logo\" d=\"M623.5,61.94a16.17,16.17,0,0,0-16,16.3v191.7a16.15,16.15,0,1,0,32.3,0V78.24A16.32,16.32,0,0,0,623.5,61.94Z\"/><path class=\"fr-logo\" d=\"M806.5,138.14a16.17,16.17,0,0,0-16,16.3v1c-10.29-11.63-27.74-18.84-46.7-18.84-19.83,0-38.19,7.24-51.69,20.4-14.33,14-21.91,33-21.91,55,0,21.61,7.78,41.16,21.9,55,13.56,13.33,31.92,20.67,51.7,20.67,18.83,0,36.29-7.41,46.7-19.37v1.57a16.15,16.15,0,1,0,32.3,0V154.44A16.32,16.32,0,0,0,806.5,138.14Zm-16.3,73.6c0,30.44-22.81,44.3-44,44.3-24.57,0-43.1-19-43.1-44.3s18.13-43.4,43.1-43.4C767.53,168.34,790.2,183.55,790.2,211.74Z\"/></svg></a>',V.MODULES.toolbar=function(E){var y,S=E.$,t=[];function e(e){var n={};if(Array.isArray(e)){if(!Array.isArray(e[0])){for(var t=[],r=[],o=0;o<e.length;o++)\"|\"===e[o]||\"-\"===e[o]?(0<r.length&&t.push(r),r=[]):r.push(e[o]);0<r.length&&t.push(r),e=t}e.forEach(function(e,t){n[\"group\".concat(t+1)]={buttons:e}}),n.showMoreButtons=!1}else\"object\"!==M(e)||Array.isArray(e)||((n=e).showMoreButtons=!0);return n}function N(){var e=E.helpers.screenSize();return t[y=e]}function T(){for(var e=E.$tb.find(\".fr-more-toolbar\"),t=0;t<e.length;t++){var c=S(e[t]);c.hasClass(\"fr-expanded\")?function(){var n=E.helpers.getPX(c.css(\"padding-left\")),e=c.find(\"> .fr-command, > .fr-btn-wrap\"),t=S(e[0]),r=E.helpers.getPX(t.css(\"margin-left\")),o=E.helpers.getPX(t.css(\"margin-right\")),i=E.helpers.getPX(t.css(\"margin-top\")),a=E.helpers.getPX(t.css(\"margin-bottom\"));if(e.each(function(e,t){n+=S(t).outerWidth()+r+o}),E.$tb.outerWidth()<n){var s=Math.floor(n/E.$tb.outerWidth());n+=s*(n/c[0].childElementCount),s=Math.ceil(n/E.$tb.outerWidth());var l=(E.helpers.getPX(t.css(\"height\"))+i+a)*s;c.css(\"height\",l)}}():c.css(\"height\",\"\")}!E.helpers.isMobile()&&E.opts.toolbarBottom?E.$tb.find(\".fr-toolbar .fr-more-toolbar\").removeClass(\"position-relative\"):E.$tb.find(\".fr-toolbar .fr-more-toolbar\").addClass(\"position-relative\")}function o(){if(0==E.$tb.find(\"[data-name='trackChanges-\".concat(E.id,\"']\")).length&&-1<E.opts.pluginsEnabled.indexOf(\"track_changes\")){E.$tb.append(S('<div class=\"fr-more-toolbar\"></div>').data(\"name\",\"trackChanges-\".concat(E.id)));for(var e=0,t=[\"showChanges\",\"applyAll\",\"removeAll\",\"applyLast\",\"removeLast\"];e<t.length;e++){var n=t[e],r=V.COMMANDS[n];if(r){r.more_btn=!0;var o=S(E.button.build(n,r,!0));E.button.addButtons(o),E.$tb.find(\"[data-name='trackChanges-\".concat(E.id,\"']\")).append(o)}}}if(y!==E.helpers.screenSize()){var i=N(),a=S(),s=S();for(var l in E.$tb.find(\".fr-btn-grp > .fr-command, .fr-more-toolbar > .fr-command, .fr-btn-grp > .fr-btn-wrap > .fr-command, .fr-more-toolbar > .fr-btn-wrap > .fr-command\").addClass(\"fr-hidden\"),function L(){for(var t=E.$tb.find(\".fr-btn-grp, .fr-more-toolbar\"),r=function r(e){var n=S(t[e]);n.children().each(function(e,t){n.before(t)}),n.remove()},e=0;e<t.length;e++)r(e)}(),i){var c=i[l];if(c.buttons&&(\"trackChanges\"!==l||-1!==E.opts.pluginsEnabled.indexOf(\"track_changes\"))){var d=void 0,f=0,p=3,h=void 0;\"trackChanges\"!==l&&(h=S('<div class=\"fr-btn-grp fr-float-'.concat(i[l].align?i[l].align:\"left\",'\"></div>'))),i.showMoreButtons&&(d=S('<div class=\"fr-more-toolbar\"></div>').data(\"name\",\"\".concat(l,\"-\").concat(E.id)),\"trackChanges\"!==l&&\"moreRich\"!==l||!E.opts.trackChangesEnabled||d.addClass(\"fr-expanded\"));for(var u=0;u<c.buttons.length;u++){c.buttonsVisible!==undefined&&(p=c.buttonsVisible);var g=E.$tb.find('> .fr-command[data-cmd=\"'+c.buttons[u]+'\"], > div.fr-btn-wrap > .fr-command[data-cmd=\"'+c.buttons[u]+'\"]'),C=null;E.node.hasClass(g.next().get(0),\"fr-dropdown-menu\")&&(C=g.next()),E.node.hasClass(g.next().get(0),\"fr-options\")&&(g.removeClass(\"fr-hidden\"),g.next().removeClass(\"fr-hidden\"),g=g.parent()),g.removeClass(\"fr-hidden\"),i.showMoreButtons&&p<=f?(d.append(g),C&&d.append(C)):(h.append(g),C&&h.append(C)),f++}if(i.showMoreButtons&&p<f){var m=E.$tb.find('.fr-command[data-cmd=\"'.concat(l,'\"]'));if(0<m.length)m.removeClass(\"fr-hidden fr-open\");else{var v=l,b=V.COMMANDS[v];b&&(b.more_btn=!0,m=S(E.button.build(v,b,!0)),E.button.addButtons(m))}h&&h.append(m)}h&&a.push(h),i.showMoreButtons&&s.push(d)}}E.opts.toolbarBottom?(E.$tb.append(s),E.$tb.find(\".fr-newline\").remove(),E.$tb.append('<div class=\"fr-newline\"></div>'),E.$tb.append(a)):(E.$tb.append(a),E.$tb.find(\".fr-newline\").remove(),E.$tb.append('<div class=\"fr-newline\"></div>'),E.$tb.append(s)),E.$tb.removeClass(\"fr-toolbar-open\"),E.$box.removeClass(\"fr-toolbar-open\"),E.events.trigger(\"codeView.toggle\")}T()}function n(e,t){setTimeout(function(){if((!e||e.which!=V.KEYCODE.ESC)&&E.selection.inEditor()&&E.core.hasFocus()&&!E.popups.areVisible()&&\"false\"!=S(E.selection.blocks()[0]).closest(\"table\").attr(\"contenteditable\")&&(E.opts.toolbarVisibleWithoutSelection||!E.selection.isCollapsed()&&!E.keys.isIME()||t)){if(E.$tb.data(\"instance\",E),!1===E.events.trigger(\"toolbar.show\",[e]))return;E.$tb.show(),E.opts.toolbarContainer||E.position.forSelection(E.$tb),1<E.opts.zIndex?E.$tb.css(\"z-index\",E.opts.zIndex+1):E.$tb.css(\"z-index\",null)}},0)}function i(e){return(!e||\"blur\"!==e.type||document.activeElement!==E.el)&&(!(!e||\"keydown\"!==e.type||!E.keys.ctrlKey(e))||(!!E.button.getButtons(\".fr-dropdown.fr-active\").next().find(E.o_doc.activeElement).length||(E.helpers.isMobile()&&E.opts.toolbarInline&&(E.$tb.find(\".fr-expanded\").toggleClass(\"fr-expanded\"),E.$tb.find(\".fr-open\").removeClass(\"fr-open\"),E.$tb.removeClass(\"fr-toolbar-open\"),T()),void(!1!==E.events.trigger(\"toolbar.hide\")&&E.$tb.hide()))))}t[V.XS]=e(E.opts.toolbarButtonsXS||E.opts.toolbarButtons||V.TOOLBAR_BUTTONS_XS||V.TOOLBAR_BUTTONS||[]),t[V.SM]=e(E.opts.toolbarButtonsSM||E.opts.toolbarButtons||V.TOOLBAR_BUTTONS_SM||V.TOOLBAR_BUTTONS||[]),t[V.MD]=e(E.opts.toolbarButtonsMD||E.opts.toolbarButtons||V.TOOLBAR_BUTTONS_MD||V.TOOLBAR_BUTTONS||[]),t[V.LG]=e(E.opts.toolbarButtons||V.TOOLBAR_BUTTONS||[]);var r=null;function a(e){clearTimeout(r),e&&e.which===V.KEYCODE.ESC||(r=setTimeout(n,E.opts.typingTimer))}function s(){E.events.on(\"window.mousedown\",i),E.events.on(\"keydown\",i),E.events.on(\"blur\",i),E.events.$on(E.$tb,\"transitionend\",\".fr-more-toolbar\",function(){E.position.forSelection(E.$tb)}),E.helpers.isMobile()||E.events.on(\"window.mouseup\",n),E.helpers.isMobile()?E.helpers.isIOS()||(E.events.on(\"window.touchend\",n),E.browser.mozilla&&setInterval(n,200)):E.events.on(\"window.keyup\",a),E.events.on(\"keydown\",function(e){e&&e.which===V.KEYCODE.ESC&&E.events.trigger(\"toolbar.esc\")}),E.events.on(\"keydown\",function(e){if(e.which===V.KEYCODE.ALT)return e.stopPropagation(),!1},!0),E.events.$on(E.$wp,\"scroll.toolbar\",n),E.events.on(\"commands.after\",n),E.helpers.isMobile()&&(E.events.$on(E.$doc,\"selectionchange\",a),E.events.$on(E.$doc,\"orientationchange\",n))}function l(){E.$tb.html(\"\").removeData().remove(),E.$tb=null,E.$second_tb&&(E.$second_tb.html(\"\").removeData().remove(),E.$second_tb=null)}function c(){E.$box.removeClass(\"fr-top fr-bottom fr-inline fr-basic\"),E.$box.find(\".fr-sticky-dummy\").remove()}function d(){E.opts.theme&&E.$tb.addClass(\"\".concat(E.opts.theme,\"-theme\")),1<E.opts.zIndex&&E.$tb.css(\"z-index\",E.opts.zIndex+1),\"auto\"!==E.opts.direction&&E.$tb.removeClass(\"fr-ltr fr-rtl\").addClass(\"fr-\".concat(E.opts.direction)),E.helpers.isMobile()?E.$tb.addClass(\"fr-mobile\"):E.$tb.addClass(\"fr-desktop\"),E.opts.toolbarContainer?(E.opts.toolbarInline&&(s(),i()),E.opts.toolbarBottom?E.$tb.addClass(\"fr-bottom\"):E.$tb.addClass(\"fr-top\")):function e(){E.opts.toolbarInline?(E.$sc.append(E.$tb),E.$tb.data(\"container\",E.$sc),E.$tb.addClass(\"fr-inline\"),s(),E.opts.toolbarBottom=!1):(E.opts.toolbarBottom?(E.$box.append(E.$tb),E.$tb.addClass(\"fr-bottom\"),E.$box.addClass(\"fr-bottom\")):(E.opts.toolbarBottom=!1,E.$box.prepend(E.$tb),E.$tb.addClass(\"fr-top\"),E.$box.addClass(\"fr-top\")),E.$tb.addClass(\"fr-basic\"),E.opts.toolbarSticky&&(E.opts.toolbarStickyOffset&&(E.opts.toolbarBottom?E.$tb.css(\"bottom\",E.opts.toolbarStickyOffset):E.$tb.css(\"top\",E.opts.toolbarStickyOffset)),E.position.addSticky(E.$tb)))}(),function t(){var e=E.button.buildGroup(N());E.$tb.append(e),T(),E.button.bindCommands(E.$tb)}(),function r(){E.events.$on(S(E.o_win),\"resize\",o),E.events.$on(S(E.o_win),\"orientationchange\",o),E.opts.toolbarButtons&&-1<JSON.stringify(E.opts.toolbarButtons).indexOf(\"trackChanges\")&&o();var e=E.$tb.find(\".fr-more-toolbar[data-name=trackChanges-\".concat(E.id,\"]\")),t=0!==e.length&&e.hasClass(\"fr-expanded\");if(E.opts.trackChangesEnabled&&!t){var n=E.$tb.find(\".fr-command.fr-btn[data-cmd=trackChanges\");e.addClass(\"fr-expanded\"),n.toggleClass(\"fr-open\"),E.toolbar.enable()}}(),E.accessibility.registerToolbar(E.$tb),E.events.$on(E.$tb,\"\".concat(E._mousedown,\" \").concat(E._mouseup),function(e){var t=e.originalEvent?e.originalEvent.target||e.originalEvent.originalTarget:null;if(t&&\"INPUT\"!==t.tagName&&!E.edit.isDisabled())return e.stopPropagation(),e.preventDefault(),!1},!0),E.helpers.isMobile()&&E.events.$on(E.$tb,\"click\",function(){E.popups.areVisible().length||E.id!==E.shared.selected_editor&&E.shared.selected_editor||E.$el.focus()}),E.events.$on(E.$tb,\"transitionend\",\".fr-more-toolbar\",function(){E.$box.hasClass(\"fr-fullscreen\")&&(E.opts.height=E.o_win.innerHeight-(E.opts.toolbarInline?0:E.$tb.outerHeight()+(E.$second_tb?E.$second_tb.outerHeight():0)),E.size.refresh())})}var f=!1;return{_init:function p(){if(E.$sc=S(E.opts.scrollableContainer).first(),!E.$wp)return!1;E.opts.toolbarInline||E.opts.toolbarBottom||(E.$second_tb=S(E.doc.createElement(\"div\")).attr(\"class\",\"fr-second-toolbar\"),E.$box.append(E.$second_tb),(!1!==E.ul||E.opts.attribution)&&E.$second_tb.prepend(V.POWERED_BY)),E.opts.toolbarContainer?(E.shared.$tb?(E.$tb=E.shared.$tb,E.opts.toolbarInline&&s()):(E.shared.$tb=S(E.doc.createElement(\"DIV\")),E.shared.$tb.addClass(\"fr-toolbar\"),E.$tb=E.shared.$tb,S(E.opts.toolbarContainer).append(E.$tb),d(),E.$tb.data(\"instance\",E)),E.opts.toolbarInline?E.$box.addClass(\"fr-inline\"):E.$box.addClass(\"fr-basic\"),E.events.on(\"focus\",function(){E.$tb.data(\"instance\",E)},!0),E.opts.toolbarInline=!1):E.opts.toolbarInline?(E.$box.addClass(\"fr-inline\"),E.shared.$tb?(E.$tb=E.shared.$tb,s()):(E.shared.$tb=S(E.doc.createElement(\"DIV\")),E.shared.$tb.addClass(\"fr-toolbar\"),E.$tb=E.shared.$tb,d())):(E.$box.addClass(\"fr-basic\"),E.$tb=S(E.doc.createElement(\"DIV\")),E.$tb.addClass(\"fr-toolbar\"),d(),E.$tb.data(\"instance\",E)),E.events.on(\"destroy\",c,!0),E.events.on(E.opts.toolbarInline||E.opts.toolbarContainer?\"shared.destroy\":\"destroy\",l,!0),E.events.on(\"edit.on\",function(){E.$tb.removeClass(\"fr-disabled\").removeAttr(\"aria-disabled\")}),E.events.on(\"edit.off\",function(){E.$tb.addClass(\"fr-disabled\").attr(\"aria-disabled\",!0)}),function e(){E.events.on(\"shortcut\",function(e,t,n){var r;if(t&&!n?r=E.$tb.find('.fr-command[data-cmd=\"'.concat(t,'\"]')):t&&n&&(r=E.$tb.find('.fr-command[data-cmd=\"'.concat(t,'\"][data-param1=\"').concat(n,'\"]'))),r.length&&(e.preventDefault(),e.stopPropagation(),r.parents(\".fr-toolbar\").data(\"instance\",E),\"keydown\"===e.type))return E.button.exec(r),!1})}()},hide:i,show:function h(){if(!1===E.events.trigger(\"toolbar.show\"))return!1;E.$tb.show()},showInline:n,disable:function u(){!f&&E.$tb&&(E.$tb.find(\".fr-btn-grp > .fr-command, .fr-more-toolbar > .fr-command, .fr-btn-wrap > .fr-command\").addClass(\"fr-disabled fr-no-refresh\").attr(\"aria-disabled\",!0),f=!0)},enable:function g(){f&&E.$tb&&(E.$tb.find(\".fr-btn-grp > .fr-command, .fr-more-toolbar > .fr-command, .fr-btn-wrap > .fr-command\").removeClass(\"fr-disabled fr-no-refresh\").attr(\"aria-disabled\",!1),f=!1),E.button.bulkRefresh()},setMoreToolbarsHeight:T}};var c=[\"scroll\",\"wheel\",\"touchmove\",\"touchstart\",\"touchend\"],d=[\"webkit\",\"moz\",\"ms\",\"o\"],f=[\"transitionend\"],o=document.createElement(\"div\").style,i=[\"Webkit\",\"Moz\",\"ms\",\"O\",\"css\",\"style\"],s={visibility:\"hidden\",display:\"block\"},r=[\"focus\",\"blur\",\"click\"],a={},l=function l(e,t){return{altKey:e.altKey,bubbles:e.bubbles,cancelable:e.cancelable,changedTouches:e.changedTouches,ctrlKey:e.ctrlKey,detail:e.detail,eventPhase:e.eventPhase,metaKey:e.metaKey,pageX:e.pageX,pageY:e.pageY,shiftKey:e.shiftKey,view:e.view,\"char\":e[\"char\"],key:e.key,keyCode:e.keyCode,button:e.button,buttons:e.buttons,clientX:e.clientX,clientY:e.clientY,offsetX:e.offsetX,offsetY:e.offsetY,pointerId:e.pointerId,pointerType:e.pointerType,screenX:e.screenX,screenY:e.screenY,targetTouches:e.targetTouches,toElement:e.toElement,touches:e.touches,type:e.type,which:e.which,target:e.target,currentTarget:t,originalEvent:e,stopPropagation:function(){e.stopPropagation()},stopImmediatePropagation:function(){e.stopImmediatePropagation()},preventDefault:function(){-1===c.indexOf(e.type)&&e.preventDefault()}}},p=function p(e){return e.ownerDocument&&e.ownerDocument.body&&e.ownerDocument.body.contains(e)||\"#document\"===e.nodeName||\"HTML\"===e.nodeName||e===window},h=function h(n,r){return function(e){var t=e.target;if(r)for(r=g(r);t&&t!==this;)Element.prototype.matches.call(t,g(r))&&n.call(t,l(e,t)),t=t.parentNode;else p(t)&&n.call(t,l(e,t))}},u=function u(e,t){return new v(e,t)},g=function g(e){return e&&\"string\"==typeof e?e.replace(/^\\s*>/g,\":scope >\").replace(/,\\s*>/g,\", :scope >\"):e},C=function C(e){return\"function\"==typeof e&&\"number\"!=typeof e.nodeType},m=u;u.fn=u.prototype={constructor:u,length:0,contains:function(e){if(!e)return!1;if(Array.isArray(e)){for(var t=0;t<e.length;t++)if(this.contains(e[t])&&this!=e[t])return!0;return!1}for(var n=0;n<this.length;n++)for(var r=e;r;){if(r==this[n]||r[0]&&r[0].isEqualNode(this[n]))return!0;r=r.parentNode}return!1},findVisible:function(e){for(var t=this.find(e),n=t.length-1;0<=n;n--)m(t[n]).isVisible()||t.splice(n,1);return t},formatParams:function(t){var e=\"\".concat(Object.keys(t).map(function(e){return\"\".concat(e,\"=\").concat(encodeURIComponent(t[e]))}).join(\"&\"));return e||\"\"},ajax:function(t){var n=new XMLHttpRequest,e=this.formatParams(t.data);for(var r in\"GET\"===t.method.toUpperCase()&&(t.url=e?t.url+\"?\"+e:t.url),n.open(t.method,t.url,!0),t.withCredentials&&(n.withCredentials=!0),t.crossDomain&&n.setRequestHeader(\"Access-Control-Allow-Origin\",\"*\"),t.headers)Object.prototype.hasOwnProperty.call(t.headers,r)&&n.setRequestHeader(r,t.headers[r]);Object.prototype.hasOwnProperty.call(t.headers,\"Content-Type\")||(\"json\"===t.dataType?n.setRequestHeader(\"Content-Type\",\"application/json\"):n.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded; charset=UTF-8\")),n.onload=function(){if(200==n.status){var e=n.responseText;\"json\"===t.dataType&&(e=JSON.parse(e)),t.done(e,n.status,n)}else t.fail(n)},n.send(e)},prevAll:function(){var e=m();if(!this[0])return e;for(var t=this[0];t&&t.previousSibling;)t=t.previousSibling,e.push(t);return e},index:function(e){return e?\"string\"==typeof e?[].indexOf.call(m(e),this[0]):[].indexOf.call(this,e.length?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},isVisible:function(){return!!this[0]&&!!(this[0].offsetWidth||this[0].offsetHeight||this[0].getClientRects().length)},toArray:function(){return[].slice.call(this)},get:function(e){return null==e?[].slice.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=u.merge(this.constructor(),e);return t.prevObject=this,t},wrapAll:function(e){var t;return this[0]&&(C(e)&&(e=e.call(this[0])),t=u(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){if(\"string\"==typeof e){for(var t=e.split(\" \"),n=0;n<t.length&&0===t[n].trim().length;)n++;if(n<t.length&&(m(e).length&&t[n].trim()===m(e)[0].tagName&&(e=document.createElement(t[n].trim())),n++),\"string\"!=typeof e)for(var r=m(e);n<t.length;n++){t[n]=t[n].trim();var o=t[n].split(\"=\");r.attr(o[0],o[1].replace('\"',\"\"))}}for(;this[0].firstChild&&this[0].firstChild!==e&&\"string\"!=typeof e;)e.appendChild(this[0].firstChild)},wrapContent:function(e){var t=document.createElement(e.tagName);0<e.attributes.length&&e.attributes.forEach(function(e){m(t).attr(e.nodeName,e.value)}),m(this[0]).contents().wrapAll(t)},wrap:function(t){var n=C(t);return this.each(function(e){m(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(){return this.parent().each(function(){this.nodeName&&this.nodeName.toLowerCase()===name.toLowerCase()||u(this).replaceWith(this.childNodes)})},grep:function(e,t,n){for(var r=[],o=0,i=e.length,a=!n;o<i;o++)!t(e[o],o)!==a&&r.push(e[o]);return r},map:function(n){return this.pushStack(u.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack([].slice.apply(this,arguments))},each:function(e){if(this.length)for(var t=0;t<this.length&&!1!==e.call(this[t],t,this[t]);t++);return this},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},empty:function(){for(var e=0;e<this.length;e++)this[e].innerHTML=\"\"},contents:function(){for(var e=m(),t=0;t<this.length;t++)for(var n=this[t].childNodes,r=0;r<n.length;r++)e.push(n[r]);return e},attr:function(e,t){if(\"object\"===M(e)){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&null!==e[n]&&this.attr(n,e[n]);return this}if(void 0===t)return 0===this.length||!this[0].getAttribute&&\"checked\"!==e?undefined:\"checked\"===e?this[0].checked:\"tagName\"===e?this[0].tagName:this[0].getAttribute(e);if(\"checked\"===e)for(var r=0;r<this.length;r++)this[r].checked=t;else if(\"tagName\"===e)for(var o=0;o<this.length;o++)this[o].tagName=t;else for(var i=0;i<this.length;i++)this[i].setAttribute(e,t);return this},removeAttr:function(e){for(var t=0;t<this.length;t++)this[t].removeAttribute&&this[t].removeAttribute(e);return this},hide:function(){return this.css(\"display\",\"none\"),this},show:function(){return this.css(\"display\",\"block\"),this},focus:function(){return this.length&&this[0].focus(),this},blur:function(){return this.length&&this[0].blur(),this},data:function(e,t){if(void 0!==t){for(var n=0;n<this.length;n++)\"object\"!==M(this[n][\"data-\"+e]=t)&&\"function\"!=typeof t&&this[n].setAttribute&&this[n].setAttribute(\"data-\"+e,t);return this}if(void 0!==t)return this.attr(\"data-\"+e,t);if(0===this.length)return undefined;for(var r=0;r<this.length;r++){var o=this[r][\"data-\"+e];if(null==o&&this[r].getAttribute&&(o=this[r].getAttribute(\"data-\"+e)),void 0!==o&&null!=o)return o}return undefined},removeData:function(e){for(var t=0;t<this.length;t++)this[t].removeAttribute&&this[t].removeAttribute(\"data-\"+e),this[t][\"data-\"+e]=null;return this},getCorrectStyleName:function(e){if(!a[e]){var t;e in o&&(t=e);for(var n=e[0].toUpperCase()+e.slice(1),r=i.length;r--;)(e=i[r]+n)in o&&(t=e);a[e]=t}return a[e]},css:function(e,t){if(void 0!==t){if(0===this.length)return this;(\"string\"!=typeof t||\"\"===t.trim()||isNaN(t))&&\"number\"!=typeof t||!/(margin)|(padding)|(height)|(width)|(top)|(left)|(right)|(bottom)/gi.test(e)||/(line-height)/gi.test(e)||(t+=\"px\");for(var n=0;n<this.length;n++)e=m(this).getCorrectStyleName(e),this[n].style[e]=t;return this}if(\"string\"==typeof e){if(0===this.length)return undefined;var r=this[0].ownerDocument||document,o=r.defaultView||r.parentWindow;return e=m(this).getCorrectStyleName(e),o.getComputedStyle(this[0])[e]}for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&this.css(i,e[i]);return this},toggleClass:function(e,t){if(1<e.split(\" \").length){for(var n=e.split(\" \"),r=0;r<n.length;r++)this.toggleClass(n[r],t);return this}for(var o=0;o<this.length;o++)void 0===t?this[o].classList.contains(e)?this[o].classList.remove(e):this[o].classList.add(e):t?this[o].classList.contains(e)||this[o].classList.add(e):this[o].classList.contains(e)&&this[o].classList.remove(e);return this},addClass:function(e){if(0===e.length)return this;if(1<e.split(\" \").length){for(var t=e.split(\" \"),n=0;n<t.length;n++)this.addClass(t[n]);return this}for(var r=0;r<this.length;r++)this[r].classList.add(e);return this},removeClass:function(e){if(1<e.split(\" \").length){for(var t=e.split(\" \"),n=0;n<t.length;n++)t[n]=t[n].trim(),t[n].length&&this.removeClass(t[n]);return this}for(var r=0;r<this.length;r++)e.length&&this[r].classList.remove(e);return this},getClass:function(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"},stripAndCollapse:function(e){return(e.match(/[^\\x20\\t\\r\\n\\f]+/g)||[]).join(\" \")},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&-1<(\" \"+m(this).stripAndCollapse(m(this).getClass(n))+\" \").indexOf(t))return!0;return!1},scrollTop:function(e){if(void 0===e)return 0===this.length?undefined:this[0]===document?document.documentElement.scrollTop:this[0].scrollTop;for(var t=0;t<this.length;t++)this[t]===document?window.scrollTo(document.documentElement.scrollLeft,e):this[t].scrollTop=e},scrollLeft:function(e){if(void 0===e)return 0===this.length?undefined:this[0]===document?document.documentElement.scrollLeft:this[0].scrollLeft;for(var t=0;t<this.length;t++)this[t]===document?window.scrollTo(e,document.documentElement.scrollTop):this[t].scrollLeft=e},on:function(e,t,n){if(1<e.split(\" \").length){for(var r=e.split(\" \"),o=0;o<r.length;o++)if(-1!==f.indexOf(e))for(var i=0;i<d.length;i++)this.on(d[i]+e[0].toUpperCase()+e.slice(1),t,n);else this.on(r[o],t,n);return this}n=\"function\"==typeof t?h(t,null):h(n,t);for(var a=0;a<this.length;a++){var s=m(this[a]);s.data(\"events\")||s.data(\"events\",[]),s.data(\"events\").push([e,n]);var l=e.split(\".\");l=l[0],0<=c.indexOf(l)?s.get(0).addEventListener(l,n,{passive:!0}):s.get(0).addEventListener(l,n)}},off:function(e){if(1<e.split(\" \").length){for(var t=e.split(\" \"),n=0;n<t.length;n++)this.off(t[n]);return this}for(var r=0;r<this.length;r++){var o=m(this[r]);if(o.data(\"events\")){var i=e.split(\".\");i=i[0];for(var a=o.data(\"events\")||[],s=a.length-1;0<=s;s--){var l=a[s];l[0]==e&&(o.get(0).removeEventListener(i,l[1]),a.splice(s,1))}}}},trigger:function(e){for(var t=0;t<this.length;t++){var n=void 0;\"function\"==typeof Event?n=0<=e.search(/^mouse/g)?new MouseEvent(e,{view:window,cancelable:!0,bubbles:!0}):new Event(e):0<=e.search(/^mouse/g)?(n=document.createEvent(\"MouseEvents\")).initMouseEvent(e,!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null):(n=document.createEvent(\"Event\")).initEvent(e,!0,!0),0<=r.indexOf(e)&&\"function\"==typeof this[t][e]?this[t][e]():this[t].dispatchEvent(n)}},triggerHandler:function(){},val:function(e){if(void 0===e)return this[0].value;for(var t=0;t<this.length;t++)this[t].value=e;return this},siblings:function(){return m(this[0]).parent().children().not(this)},find:function(e){var t=m();if(\"string\"!=typeof e){for(var n=0;n<e.length;n++)for(var r=0;r<this.length;r++)if(this[r]!==e[n]&&m(this[r]).contains(e[n])){t.push(e[n]);break}return t}var o=function o(e){return\"object\"===(\"undefined\"==typeof HTMLElement?\"undefined\":M(HTMLElement))?e instanceof HTMLElement:e&&\"object\"===M(e)&&null!==e&&1===e.nodeType&&\"string\"==typeof e.nodeName};e=g(e);for(var i=0;i<this.length;i++)if(this[i].querySelectorAll){var a=[];if(e&&\"string\"==typeof e)try{a=this[i].querySelectorAll(e)}catch(l){a=this[i].children}else o(e)&&(a=[e]);for(var s=0;s<a.length;s++)t.push(a[s])}return t},children:function(){for(var e=m(),t=0;t<this.length;t++)for(var n=this[t].children,r=0;r<n.length;r++)e.push(n[r]);return e},not:function(e){if(\"string\"==typeof e)for(var t=this.length-1;0<=t;t--)Element.prototype.matches.call(this[t],e)&&this.splice(t,1);else if(e instanceof u){for(var n=this.length-1;0<=n;n--)for(var r=0;r<e.length;r++)if(this[n]===e[r]){this.splice(n,1);break}}else for(var o=this.length-1;0<=o;o--)this[o]===e[0]&&this.splice(o,1);return this},add:function(e){for(var t=0;t<e.length;t++)this.push(e[t]);return this},closest:function(e){for(var t=0;t<this.length;t++){var n=Element.prototype.closest.call(this[t],e);if(n)return m(n)}return m()},html:function(e){if(void 0===e)return 0===this.length?undefined:this[0].innerHTML;if(\"string\"==typeof e)for(var t=0;t<this.length;t++){this[t].innerHTML=e;for(var n=this[t].children,r=this[t].ownerDocument||document,o=0;o<n.length;o++)if(\"SCRIPT\"===n[o].tagName){var i=r.createElement(\"script\");i.innerHTML=n[o].innerHTML,n[o].hasAttribute(\"async\")&&i.setAttribute(\"async\",\"\"),i.src=n[o].src,n[o].hasAttribute(\"defer\")&&i.setAttribute(\"defer\",\"\"),r.head.appendChild(i).parentNode.removeChild(i)}}else{this[0].innerHTML=\"\",this.append(e[0]);var a=this[0].ownerDocument||document;if(\"SCRIPT\"===e[0].tagName){var s=a.createElement(\"script\");s.innerHTML=e[0].innerHTML,a.head.appendChild(s).parentNode.removeChild(s)}}return this},text:function(e){if(!e)return this.length?this[0].textContent:\"\";for(var t=0;t<this.length;t++)this[t].textContent=e},after:function e(t){if(t)if(\"string\"==typeof t)for(var n=0;n<this.length;n++){var e=this[n];if(e.nodeType!=Node.ELEMENT_NODE){var r=e.ownerDocument.createElement(\"SPAN\");m(e).after(r),m(r).after(t).remove()}else e.insertAdjacentHTML(\"afterend\",t)}else{var o=this[0];if(o.nextSibling)if(t instanceof u)for(var i=0;i<t.length;i++)o.nextSibling.parentNode.insertBefore(t[i],o.nextSibling);else o.nextSibling.parentNode.insertBefore(t,o.nextSibling);else m(o.parentNode).append(t)}return this},clone:function(e){for(var t=m(),n=0;n<this.length;n++)t.push(this[n].cloneNode(e));return t},replaceWith:function(e){if(\"string\"==typeof e)for(var t=0;t<this.length;t++)this[t].parentNode&&(this[t].outerHTML=e);else if(e&&e.length)for(var n=0;n<this.length;n++)this.replaceWith(e[n]);else this.after(e).remove()},insertBefore:function(e){return m(e).before(this[0]),this},before:function e(t){if(t instanceof u){for(var n=0;n<t.length;n++)this.before(t[n]);return this}if(t)if(\"string\"==typeof t)for(var r=0;r<this.length;r++){var e=this[r];if(e.nodeType!=Node.ELEMENT_NODE){var o=e.ownerDocument.createElement(\"SPAN\");m(e).before(o),m(o).before(t).remove()}else e.parentNode&&e.insertAdjacentHTML(\"beforebegin\",t)}else{var i=this[0];if(i.parentNode)if(t instanceof u)for(var a=0;a<t.length;a++)i.parentNode.insertBefore(t[a],i);else i.parentNode.insertBefore(t,i)}return this},append:function(e){if(0==this.length)return this;if(\"string\"==typeof e)for(var t=0;t<this.length;t++){var n=this[t],r=n.ownerDocument.createElement(\"SPAN\");m(n).append(r),m(r).after(e).remove()}else if(e instanceof u||Array.isArray(e))for(var o=0;o<e.length;o++)this.append(e[o]);else\"function\"!=typeof e&&this[0].appendChild(e);return this},prepend:function(e){if(0==this.length)return this;if(\"string\"==typeof e)for(var t=0;t<this.length;t++){var n=this[t],r=n.ownerDocument.createElement(\"SPAN\");m(n).prepend(r),m(r).before(e).remove()}else if(e instanceof u)for(var o=0;o<e.length;o++)this.prepend(e[o]);else{var i=this[0];i.firstChild?i.firstChild?i.insertBefore(e,i.firstChild):i.appendChild(e):m(i).append(e)}return this},remove:function(){for(var e=0;e<this.length;e++)this[e].parentNode&&this[e].parentNode.removeChild(this[e]);return this},prev:function(){return this.length&&this[0].previousElementSibling?m(this[0].previousElementSibling):m()},next:function(){return this.length&&this[0].nextElementSibling?m(this[0].nextElementSibling):m()},nextAllVisible:function(){return this.next()},prevAllVisible:function(){return this.prev()},outerHeight:function(e){if(0===this.length)return undefined;var t=this[0];if(t===t.window)return t.innerHeight;var n={},r=this.isVisible();if(!r)for(var o in s)n[o]=t.style[o],t.style[o]=s[o];var i=t.offsetHeight;if(e&&(i+=parseInt(m(t).css(\"marginTop\"))+parseInt(m(t).css(\"marginBottom\"))),!r)for(var a in s)t.style[a]=n[a];return i},outerWidth:function(e){if(0===this.length)return undefined;var t=this[0];if(t===t.window)return t.outerWidth;var n={},r=this.isVisible();if(!r)for(var o in s)n[o]=t.style[o],t.style[o]=s[o];var i=t.offsetWidth;if(e&&(i+=parseInt(m(t).css(\"marginLeft\"))+parseInt(m(t).css(\"marginRight\"))),!r)for(var a in s)t.style[a]=n[a];return i},width:function(e){if(e===undefined){if(this[0]instanceof HTMLDocument)return this[0].body.offsetWidth;if(this[0])return this[0].offsetWidth}else this[0].style.width=e+\"px\"},height:function(e){var t=this[0];if(e===undefined){if(t instanceof HTMLDocument){var n=t.documentElement;return Math.max(t.body.scrollHeight,n.scrollHeight,t.body.offsetHeight,n.offsetHeight,n.clientHeight)}return t.offsetHeight}t.style.height=e+\"px\"},is:function(e){return 0!==this.length&&(\"string\"==typeof e&&this[0].matches?this[0].matches(e):e instanceof u?this[0]==e[0]:this[0]==e)},parent:function(){return 0===this.length?m():m(this[0].parentNode)},_matches:function(e,t){var n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return e&&!t?n:n.call(e,t)},parents:function(e){for(var t=m(),n=0;n<this.length;n++)for(var r=this[n].parentNode;r&&r!=document&&this._matches(r);)e?this._matches(r,e)&&t.push(r):t.push(r),r=r.parentNode;return t},parentsUntil:function(e,t){var n=m();e instanceof u&&0<e.length&&(e=e[0]);for(var r=0;r<this.length;r++)for(var o=this[r].parentNode;o&&o!=document&&o!=e&&this[r]!=e&&(\"string\"!=typeof e||!Element.prototype.matches.call(o,e));)t?Element.prototype.matches.call(o,t)&&n.push(o):n.push(o),o=o.parentNode;return n},insertAfter:function(e){var t=e.parent()[0];t&&t.insertBefore(this[0],e[0].nextElementSibling)},filter:function(e){var t=m();if(\"function\"==typeof e)for(var n=0;n<this.length;n++)e.call(this[n],this[n])&&t.push(this[n]);else if(\"string\"==typeof e)for(var r=0;r<this.length;r++)this[r].matches(e)&&t.push(this[r]);return t},offset:function(){if(0===this.length)return undefined;var e=this[0].getBoundingClientRect(),t=this[0].ownerDocument.defaultView;return{top:e.top+t.pageYOffset,left:e.left+t.pageXOffset}},position:function(){return{left:this[0].offsetLeft,top:this[0].offsetTop}},push:[].push,splice:[].splice},u.extend=function(e){e=e||{};for(var t=1;t<arguments.length;t++)if(arguments[t])for(var n in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],n)&&(e[n]=arguments[t][n]);return e},u.merge=function(e,t){for(var n=+t.length,r=0,o=e.length;r<n;r++)e[o++]=t[r];return e.length=o,e},u.map=function(e,t,n){var r,o,i=0,a=[];if(Array.isArray(e))for(r=e.length;i<r;i++)null!=(o=t(e[i],i,n))&&a.push(o);else for(i in e)null!=(o=t(e[i],i,n))&&a.push(o);return[].concat.apply([],a)};var v=function v(e,t){if(!e)return this;if(\"string\"==typeof e&&\"<\"===e[0]){var n=document.createElement(\"DIV\");return n.innerHTML=e,m(n.firstElementChild)}if(t=t instanceof u?t[0]:t,\"string\"!=typeof e)return e instanceof u?e:(this[0]=e,this.length=1,this);e=g(e);for(var r=(t||document).querySelectorAll(e),o=0;o<r.length;o++)this[o]=r[o];return this.length=r.length,this};v.prototype=u.prototype;var b=V;function L(){this.doc=this.$el.get(0).ownerDocument,this.win=\"defaultView\"in this.doc?this.doc.defaultView:this.doc.parentWindow,this.$doc=u(this.doc),this.$win=u(this.win),this.opts.pluginsEnabled||(this.opts.pluginsEnabled=Object.keys(b.PLUGINS)),this.opts.initOnClick?(this.load(b.MODULES),this.$el.on(\"touchstart.init\",function(){u(this).data(\"touched\",!0)}),this.$el.on(\"touchmove.init\",function(){u(this).removeData(\"touched\")}),this.$el.on(\"mousedown.init touchend.init dragenter.init focus.init\",function r(e){if(\"false\"!==this.$el.attr(\"contentEditable\")||!this.opts.initOnClick){if(\"touchend\"===e.type&&!this.$el.data(\"touched\"))return!0;if(1===e.which||!e.which){this.$el.off(\"mousedown.init touchstart.init touchmove.init touchend.init dragenter.init focus.init\"),this.load(b.MODULES),this.load(b.PLUGINS);var t=e.originalEvent&&e.originalEvent.originalTarget;if(t&&\"IMG\"===t.tagName&&u(t).trigger(\"mousedown\"),\"undefined\"==typeof this.ul&&this.destroy(),\"touchend\"===e.type&&this.image&&e.originalEvent&&e.originalEvent.target&&u(e.originalEvent.target).is(\"img\")){var n=this;setTimeout(function(){n.image.edit(u(e.originalEvent.target))},100)}this.ready=!0,this.events.trigger(\"initialized\")}}}.bind(this)),this.events.trigger(\"initializationDelayed\")):(this.load(b.MODULES),this.load(b.PLUGINS),u(this.o_win).scrollTop(this.c_scroll),\"undefined\"==typeof this.ul&&this.destroy(),this.ready=!0,this.events.trigger(\"initialized\"))}return b.Bootstrap=function(e,t,n){this.id=++b.ID,this.$=u;var r={};\"function\"==typeof t&&(n=t,t={}),n&&(t.events||(t.events={}),t.events.initialized=n),t&&t.documentReady&&(r.toolbarButtons=[[\"fullscreen\",\"undo\",\"redo\",\"getPDF\",\"print\"],[\"bold\",\"italic\",\"underline\",\"textColor\",\"backgroundColor\",\"clearFormatting\"],[\"alignLeft\",\"alignCenter\",\"alignRight\",\"alignJustify\"],[\"formatOL\",\"formatUL\",\"indent\",\"outdent\"],[\"paragraphFormat\"],[\"fontFamily\"],[\"fontSize\"],[\"insertLink\",\"insertImage\",\"quote\"]],r.paragraphFormatSelection=!0,r.fontFamilySelection=!0,r.fontSizeSelection=!0,r.placeholderText=\"\",r.quickInsertEnabled=!1,r.charCounterCount=!1),this.opts=Object.assign({},Object.assign({},b.DEFAULTS,r,\"object\"===M(t)&&t));var o=JSON.stringify(this.opts);b.OPTS_MAPPING[o]=b.OPTS_MAPPING[o]||this.id,this.sid=b.OPTS_MAPPING[o],b.SHARED[this.sid]=b.SHARED[this.sid]||{},this.shared=b.SHARED[this.sid],this.shared.count=(this.shared.count||0)+1,this.$oel=u(e),this.$oel.data(\"froala.editor\",this),this.o_doc=e.ownerDocument,this.o_win=\"defaultView\"in this.o_doc?this.o_doc.defaultView:this.o_doc.parentWindow,this.c_scroll=u(this.o_win).scrollTop(),this._init()},b.Bootstrap.prototype._init=function(){var e=this.$oel.get(0).tagName;this.$oel.closest(\"label\").length;var t=function(){\"TEXTAREA\"!==e&&(this._original_html=this._original_html||this.$oel.html()),this.$box=this.$box||this.$oel,this.opts.fullPage&&(this.opts.iframe=!0),this.opts.iframe?(this.$iframe=u('<iframe src=\"about:blank\" frameBorder=\"0\">'),this.$wp=u(\"<div></div>\"),this.$box.html(this.$wp),this.$wp.append(this.$iframe),this.$iframe.get(0).contentWindow.document.open(),this.$iframe.get(0).contentWindow.document.write(\"<!DOCTYPE html>\"),this.$iframe.get(0).contentWindow.document.write(\"<html><head></head><body></body></html>\"),this.$iframe.get(0).contentWindow.document.close(),this.iframe_document=this.$iframe.get(0).contentWindow.document,this.$el=u(this.iframe_document.querySelector(\"body\")),this.el=this.$el.get(0),this.$head=u(this.iframe_document.querySelector(\"head\")),this.$html=u(this.iframe_document.querySelector(\"html\"))):(this.$el=u(this.o_doc.createElement(\"DIV\")),this.el=this.$el.get(0),this.$wp=u(this.o_doc.createElement(\"DIV\")).append(this.$el),this.$box.html(this.$wp)),setTimeout(L.bind(this),0)}.bind(this),n=function(){this.$box=u(\"<div>\"),this.$oel.before(this.$box).hide(),this._original_html=this.$oel.val();var e=this;this.$oel.parents(\"form\").on(\"submit.\".concat(this.id),function(){e.events.trigger(\"form.submit\")}),this.$oel.parents(\"form\").on(\"reset.\".concat(this.id),function(){e.events.trigger(\"form.reset\")}),t()}.bind(this),r=function(){this.$el=this.$oel,this.el=this.$el.get(0),this.$el.attr(\"contenteditable\",!0).css(\"outline\",\"none\").css(\"display\",\"inline-block\"),this.opts.multiLine=!1,this.opts.toolbarInline=!1,setTimeout(L.bind(this),0)}.bind(this),o=function(){this.$el=this.$oel,this.el=this.$el.get(0),this.opts.toolbarInline=!1,setTimeout(L.bind(this),0)}.bind(this),i=function(){this.$el=this.$oel,this.el=this.$el.get(0),this.opts.toolbarInline=!1,this.$oel.on(\"click.popup\",function(e){e.preventDefault()}),setTimeout(L.bind(this),0)}.bind(this);this.opts.editInPopup?i():\"TEXTAREA\"===e?n():\"A\"===e?r():\"IMG\"===e?o():\"BUTTON\"===e||\"INPUT\"===e?(this.opts.editInPopup=!0,this.opts.toolbarInline=!1,i()):t()},b.Bootstrap.prototype.load=function(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)){if(this[t])continue;if(b.PLUGINS[t]&&this.opts.pluginsEnabled.indexOf(t)<0)continue;if(this[t]=new e[t](this),this[t]._init&&(this[t]._init(),this.opts.initOnClick&&\"core\"===t))return!1}},b.Bootstrap.prototype.destroy=function(){this.destrying=!0,this.shared.count--,this.events&&this.events.$off();var e=this.html&&this.html.get();if(this.opts.iframe&&(this.events.disableBlur(),this.win.focus(),this.events.enableBlur()),this.events&&(this.events.trigger(\"destroy\",[],!0),this.events.trigger(\"shared.destroy\",[],!0)),0===this.shared.count){for(var t in this.shared)Object.prototype.hasOwnProperty.call(this.shared,t)&&(this.shared[t]=null,b.SHARED[this.sid][t]=null);delete b.SHARED[this.sid]}this.$oel.parents(\"form\").off(\".\".concat(this.id)),this.$oel.off(\"click.popup\"),this.$oel.removeData(\"froala.editor\"),this.$oel.off(\"froalaEditor\"),this.core&&this.core.destroy(e),b.INSTANCES.splice(b.INSTANCES.indexOf(this),1)},V});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(n,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(n.FroalaEditor)}(this,function(i){\"use strict\";(i=i&&i.hasOwnProperty(\"default\")?i[\"default\"]:i).PLUGINS.align=function(a){var l=a.$;return{apply:function r(n){var t=a.selection.element();if(l(t).parents(\".fr-img-caption\").length)l(t).css(\"text-align\",n);else{a.selection.save(),a.html.wrap(!0,!0,!0,!0),a.selection.restore();for(var e=a.selection.blocks(),i=0;i<e.length;i++)l(e[i]).css(\"text-align\",n).removeClass(\"fr-temp-div\"),\"\"===l(e[i]).attr(\"class\")&&l(e[i]).removeAttr(\"class\"),\"\"===l(e[i]).attr(\"style\")&&l(e[i]).removeAttr(\"style\");a.selection.save(),a.html.unwrap(),a.selection.restore()}},refresh:function i(n){var t=a.selection.blocks();if(t.length){var e=a.helpers.getAlignment(l(t[0]));n.find(\"> *\").first().replaceWith(a.icon.create(\"align-\".concat(e)))}},refreshOnShow:function o(n,t){var e=a.selection.blocks();if(e.length){var i=a.helpers.getAlignment(l(e[0]));t.find('a.fr-command[data-param1=\"'.concat(i,'\"]')).addClass(\"fr-active\").attr(\"aria-selected\",!0)}},refreshForToolbar:function s(n){var t=a.selection.blocks();if(t.length){var e=a.helpers.getAlignment(l(t[0]));e=e.charAt(0).toUpperCase()+e.slice(1),\"align\".concat(e)===n.attr(\"data-cmd\")&&n.addClass(\"fr-active\")}}}},i.DefineIcon(\"align\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),i.DefineIcon(\"align-left\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),i.DefineIcon(\"align-right\",{NAME:\"align-right\",SVG_KEY:\"alignRight\"}),i.DefineIcon(\"align-center\",{NAME:\"align-center\",SVG_KEY:\"alignCenter\"}),i.DefineIcon(\"align-justify\",{NAME:\"align-justify\",SVG_KEY:\"alignJustify\"}),i.RegisterCommand(\"align\",{type:\"dropdown\",title:\"Align\",options:{left:\"Align Left\",center:\"Align Center\",right:\"Align Right\",justify:\"Align Justify\"},html:function(){var n='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=i.COMMANDS.align.options;for(var e in t)t.hasOwnProperty(e)&&(n+='<li role=\"presentation\"><a class=\"fr-command fr-title\" tabIndex=\"-1\" role=\"option\" data-cmd=\"align\"data-param1=\"\\n '.concat(e,'\" title=\"').concat(this.language.translate(t[e]),'\">').concat(this.icon.create(\"align-\".concat(e)),'<span class=\"fr-sr-only\">\\n ').concat(this.language.translate(t[e]),\"</span></a></li>\"));return n+=\"</ul>\"},callback:function(n,t){this.align.apply(t)},refresh:function(n){this.align.refresh(n)},refreshOnShow:function(n,t){this.align.refreshOnShow(n,t)},plugin:\"align\"}),i.RegisterCommand(\"alignLeft\",{type:\"button\",icon:\"align-left\",title:\"Align Left\",callback:function(){this.align.apply(\"left\")},refresh:function(n){this.align.refreshForToolbar(n)},plugin:\"align\"}),i.RegisterCommand(\"alignRight\",{type:\"button\",icon:\"align-right\",title:\"Align Right\",callback:function(){this.align.apply(\"right\")},refresh:function(n){this.align.refreshForToolbar(n)},plugin:\"align\"}),i.RegisterCommand(\"alignCenter\",{type:\"button\",icon:\"align-center\",title:\"Align Center\",callback:function(){this.align.apply(\"center\")},refresh:function(n){this.align.refreshForToolbar(n)},plugin:\"align\"}),i.RegisterCommand(\"alignJustify\",{type:\"button\",icon:\"align-justify\",title:\"Align Justify\",callback:function(){this.align.apply(\"justify\")},refresh:function(n){this.align.refreshForToolbar(n)},plugin:\"align\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(o,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(o.FroalaEditor)}(this,function(k){\"use strict\";k=k&&k.hasOwnProperty(\"default\")?k[\"default\"]:k,Object.assign(k.POPUP_TEMPLATES,{\"textColor.picker\":\"[_BUTTONS_][_TEXT_COLORS_][_CUSTOM_COLOR_]\",\"backgroundColor.picker\":\"[_BUTTONS_][_BACKGROUND_COLORS_][_CUSTOM_COLOR_]\"}),Object.assign(k.DEFAULTS,{colorsText:[\"#61BD6D\",\"#1ABC9C\",\"#54ACD2\",\"#2C82C9\",\"#9365B8\",\"#475577\",\"#CCCCCC\",\"#41A85F\",\"#00A885\",\"#3D8EB9\",\"#2969B0\",\"#553982\",\"#28324E\",\"#000000\",\"#F7DA64\",\"#FBA026\",\"#EB6B56\",\"#E25041\",\"#A38F84\",\"#EFEFEF\",\"#FFFFFF\",\"#FAC51C\",\"#F37934\",\"#D14841\",\"#B8312F\",\"#7C706B\",\"#D1D5D8\",\"REMOVE\"],colorsBackground:[\"#61BD6D\",\"#1ABC9C\",\"#54ACD2\",\"#2C82C9\",\"#9365B8\",\"#475577\",\"#CCCCCC\",\"#41A85F\",\"#00A885\",\"#3D8EB9\",\"#2969B0\",\"#553982\",\"#28324E\",\"#000000\",\"#F7DA64\",\"#FBA026\",\"#EB6B56\",\"#E25041\",\"#A38F84\",\"#EFEFEF\",\"#FFFFFF\",\"#FAC51C\",\"#F37934\",\"#D14841\",\"#B8312F\",\"#7C706B\",\"#D1D5D8\",\"REMOVE\"],colorsStep:7,colorsHEXInput:!0,colorsButtons:[\"colorsBack\",\"|\",\"-\"]}),k.PLUGINS.colors=function(g){var E=g.$,l='<div class=\"fr-color-hex-layer fr-active fr-layer\" id=\"fr-color-hex-layer- \\n '.concat(g.id,'\"><div class=\"fr-input-line\"><input maxlength=\"7\" id=\"[ID]\"\\n type=\"text\" placeholder=\"').concat(g.language.translate(\"HEX Color\"),'\" \\n tabIndex=\"1\" aria-required=\"true\"></div><div class=\"fr-action-buttons\"><button \\n type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"[COMMAND]\" tabIndex=\"2\" role=\"button\">\\n ').concat(g.language.translate(\"OK\"),\"</button></div></div>\");function s(o){for(var t=\"text\"===o?g.opts.colorsText:g.opts.colorsBackground,r='<div class=\"fr-color-set fr-'.concat(o,'-color fr-selected-set\">'),e=0;e<t.length;e++)0!==e&&e%g.opts.colorsStep==0&&(r+=\"<br>\"),\"REMOVE\"!==t[e]?r+='<span class=\"fr-command fr-select-color\" style=\"background:'.concat(t[e],';\" \\n tabIndex=\"-1\" aria-selected=\"false\" role=\"button\" data-cmd=\"apply').concat(o,'Color\" \\n data-param1=\"').concat(t[e],'\"><span class=\"fr-sr-only\"> ').concat(g.language.translate(\"Color\")).concat(t[e],\" \\n </span></span>\"):r+='<span class=\"fr-command fr-select-color\" data-cmd=\"apply'.concat(o,'Color\"\\n tabIndex=\"-1\" role=\"button\" data-param1=\"REMOVE\" \\n title=\"').concat(g.language.translate(\"Clear Formatting\"),'\">').concat(g.icon.create(\"remove\"),' \\n <span class=\"fr-sr-only\"> ').concat(g.language.translate(\"Clear Formatting\"),\" </span></span>\");return\"\".concat(r,\"</div>\")}function i(o){var t,r=g.popups.get(\"\".concat(o,\"Color.picker\")),e=E(g.selection.element());t=\"background\"===o?\"background-color\":\"color\";var c=r.find(\".fr-\".concat(o,\"-color .fr-select-color\"));for(c.find(\".fr-selected-color\").remove(),c.removeClass(\"fr-active-item\"),c.not('[data-param1=\"REMOVE\"]').attr(\"aria-selected\",!1);e.get(0)!==g.el;){if(\"transparent\"!==e.css(t)&&\"rgba(0, 0, 0, 0)\"!==e.css(t)){var a=r.find(\".fr-\".concat(o,'-color .fr-select-color[data-param1=\"').concat(g.helpers.RGBToHex(e.css(t)),'\"]'));a.append('<span class=\"fr-selected-color\" aria-hidden=\"true\">\\uf00c</span>'),a.addClass(\"fr-active-item\").attr(\"aria-selected\",!0);break}e=e.parent()}!function n(o){var t=g.popups.get(\"\".concat(o,\"Color.picker\")),r=t.find(\".fr-\".concat(o,\"-color .fr-active-item\")).attr(\"data-param1\"),e=t.find(\".fr-color-hex-layer input\");r||(r=\"\");e.length&&E(e.val(r).input).trigger(\"change\")}(o)}function e(o){\"REMOVE\"!==o?g.format.applyStyle(\"background-color\",g.helpers.HEXtoRGB(o)):g.format.removeStyle(\"background-color\"),g.popups.hide(\"backgroundColor.picker\")}function c(o){\"REMOVE\"!==o?g.format.applyStyle(\"color\",g.helpers.HEXtoRGB(o)):g.format.removeStyle(\"color\"),g.popups.hide(\"textColor.picker\")}return{showColorsPopup:function p(o){var t=g.$tb.find('.fr-command[data-cmd=\"'.concat(o,'\"]')),r=g.popups.get(\"\".concat(o,\".picker\"));if(r||(r=function n(o){var t=\"\";g.opts.toolbarInline&&0<g.opts.colorsButtons.length&&(t+='<div class=\"fr-buttons fr-colors-buttons fr-tabs\">\\n '.concat(g.button.buildList(g.opts.colorsButtons),\"\\n </div>\"));var r,e=\"\";r=\"textColor\"===o?(g.opts.colorsHEXInput&&(e=l.replace(/\\[ID\\]/g,\"fr-color-hex-layer-text-\".concat(g.id)).replace(/\\[COMMAND\\]/g,\"customTextColor\")),{buttons:t,text_colors:s(\"text\"),custom_color:e}):(g.opts.colorsHEXInput&&(e=l.replace(/\\[ID\\]/g,\"fr-color-hex-layer-background-\".concat(g.id)).replace(/\\[COMMAND\\]/g,\"customBackgroundColor\")),{buttons:t,background_colors:s(\"background\"),custom_color:e});var c=g.popups.create(\"\".concat(o,\".picker\"),r);return function a(C,b){g.events.on(\"popup.tab\",function(o){var t=E(o.currentTarget);if(!g.popups.isVisible(b)||!t.is(\"span\"))return!0;var r=o.which,e=!0;if(k.KEYCODE.TAB===r){var c=C.find(\".fr-buttons\");e=!g.accessibility.focusToolbar(c,!!o.shiftKey)}else if(k.KEYCODE.ARROW_UP===r||k.KEYCODE.ARROW_DOWN===r||k.KEYCODE.ARROW_LEFT===r||k.KEYCODE.ARROW_RIGHT===r){if(t.is(\"span.fr-select-color\")){var a=t.parent().find(\"span.fr-select-color\"),n=a.index(t),l=g.opts.colorsStep,s=Math.floor(a.length/l),i=n%l,p=Math.floor(n/l),u=p*l+i,d=s*l;k.KEYCODE.ARROW_UP===r?u=((u-l)%d+d)%d:k.KEYCODE.ARROW_DOWN===r?u=(u+l)%d:k.KEYCODE.ARROW_LEFT===r?u=((u-1)%d+d)%d:k.KEYCODE.ARROW_RIGHT===r&&(u=(u+1)%d);var f=E(a.get(u));g.events.disableBlur(),f.focus(),e=!1}}else k.KEYCODE.ENTER===r&&(g.button.exec(t),e=!1);return!1===e&&(o.preventDefault(),o.stopPropagation()),e},!0)}(c,\"\".concat(o,\".picker\")),c}(o)),!r.hasClass(\"fr-active\"))if(g.popups.setContainer(\"\".concat(o,\".picker\"),g.$tb),i(\"textColor\"===o?\"text\":\"background\"),t.isVisible()){var e=g.button.getPosition(t),c=e.left,a=e.top;g.popups.show(\"\".concat(o,\".picker\"),c,a,t.outerHeight())}else g.position.forSelection(r),g.popups.show(\"\".concat(o,\".picker\"))},background:e,customColor:function a(o){var t=g.popups.get(\"\".concat(o,\"Color.picker\")).find(\".fr-color-hex-layer input\");if(t.length){var r=t.val();\"background\"===o?e(r):c(r)}},text:c,back:function o(){g.popups.hide(\"textColor.picker\"),g.popups.hide(\"backgroundColor.picker\"),g.toolbar.showInline()}}},k.DefineIcon(\"textColor\",{NAME:\"tint\",SVG_KEY:\"textColor\"}),k.RegisterCommand(\"textColor\",{title:\"Text Color\",undo:!1,focus:!0,refreshOnCallback:!1,popup:!0,callback:function(){this.popups.isVisible(\"textColor.picker\")?(this.$el.find(\".fr-marker\").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"textColor.picker\")):this.colors.showColorsPopup(\"textColor\")}}),k.RegisterCommand(\"applytextColor\",{undo:!0,callback:function(o,t){this.colors.text(t)}}),k.RegisterCommand(\"customTextColor\",{title:\"OK\",undo:!0,callback:function(){this.colors.customColor(\"text\")}}),k.DefineIcon(\"backgroundColor\",{NAME:\"paint-brush\",SVG_KEY:\"backgroundColor\"}),k.RegisterCommand(\"backgroundColor\",{title:\"Background Color\",undo:!1,focus:!0,refreshOnCallback:!1,popup:!0,callback:function(){this.popups.isVisible(\"backgroundColor.picker\")?(this.$el.find(\".fr-marker\").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"backgroundColor.picker\")):this.colors.showColorsPopup(\"backgroundColor\")}}),k.RegisterCommand(\"applybackgroundColor\",{undo:!0,callback:function(o,t){this.colors.background(t)}}),k.RegisterCommand(\"customBackgroundColor\",{title:\"OK\",undo:!0,callback:function(){this.colors.customColor(\"background\")}}),k.DefineIcon(\"colorsBack\",{NAME:\"arrow-left\",SVG_KEY:\"back\"}),k.RegisterCommand(\"colorsBack\",{title:\"Back\",undo:!1,focus:!1,back:!0,refreshAfterCallback:!1,callback:function(){this.colors.back()}}),k.DefineIcon(\"remove\",{NAME:\"eraser\",SVG_KEY:\"remove\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(Me){\"use strict\";function Ke(e){return(Ke=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}Me=Me&&Me.hasOwnProperty(\"default\")?Me[\"default\"]:Me,Object.assign(Me.POPUP_TEMPLATES,{\"image.insert\":\"[_BUTTONS_][_UPLOAD_LAYER_][_BY_URL_LAYER_][_PROGRESS_BAR_]\",\"image.edit\":\"[_BUTTONS_]\",\"image.alt\":\"[_BUTTONS_][_ALT_LAYER_]\",\"image.size\":\"[_BUTTONS_][_SIZE_LAYER_]\"}),Object.assign(Me.DEFAULTS,{imageInsertButtons:[\"imageBack\",\"|\",\"imageUpload\",\"imageByURL\"],imageEditButtons:[\"imageReplace\",\"imageAlign\",\"imageCaption\",\"imageRemove\",\"imageLink\",\"linkOpen\",\"linkEdit\",\"linkRemove\",\"-\",\"imageDisplay\",\"imageStyle\",\"imageAlt\",\"imageSize\"],imageAltButtons:[\"imageBack\",\"|\"],imageSizeButtons:[\"imageBack\",\"|\"],imageUpload:!0,imageUploadURL:null,imageCORSProxy:\"https://cors-anywhere.froala.com\",imageUploadRemoteUrls:!0,imageUploadParam:\"file\",imageUploadParams:{},imageUploadToS3:!1,imageUploadToAzure:!1,imageUploadMethod:\"POST\",imageMaxSize:10485760,imageAllowedTypes:[\"jpeg\",\"jpg\",\"png\",\"gif\",\"webp\"],imageResize:!0,imageResizeWithPercent:!1,imageRoundPercent:!1,imageDefaultWidth:300,imageDefaultAlign:\"center\",imageDefaultDisplay:\"block\",imageSplitHTML:!1,imageStyles:{\"fr-rounded\":\"Rounded\",\"fr-bordered\":\"Bordered\",\"fr-shadow\":\"Shadow\"},imageMove:!0,imageMultipleStyles:!0,imageTextNear:!0,imagePaste:!0,imagePasteProcess:!1,imageMinWidth:16,imageOutputSize:!1,imageDefaultMargin:5,imageAddNewLine:!1}),Me.IMAGE_ALLOW_REGEX=/\\.(gif|jpe?g|tiff?|png|webp|bmp)$/i,Me.PLUGINS.image=function(A){var C,p,g,f,s,a,S=A.$,E=\"https://i.froala.com/upload\",t=!1,i=1,c=2,d=3,m=4,R=5,U=6,r={};function u(){var e=A.popups.get(\"image.insert\").find(\".fr-image-by-url-layer input\");e.val(\"\"),C&&e.val(C.attr(\"src\")),e.trigger(\"change\")}function o(e){return window.pageYOffset+e.get(0).getBoundingClientRect().top}function n(){var e=A.popups.get(\"image.edit\");if(e||(e=P()),e){var t=C;A.popups.setContainer(\"image.edit\",A.$sc),A.popups.refresh(\"image.edit\");var a=t.offset().left+t.outerWidth()/2,i=t&&o(t),r=A.$wp&&o(A.$wp);r||(r=i);var n=0;A.opts.iframe?((n=A.$wp.scrollTop()+e.outerHeight())<t.get(0).getBoundingClientRect().top&&(n=t.get(0).getBoundingClientRect().top),n>t.get(0).getBoundingClientRect().top+t.height()&&(n=t.get(0).getBoundingClientRect().top+t.height())):n=r<i?i:A.$wp&&i+t.height()<r+A.$wp.height()?i+t.height():r+e.outerHeight(),C.hasClass(\"fr-uploading\")?N():A.popups.show(\"image.edit\",a,n,1,!0)}}function h(){k()}function l(e){0<e.parents(\".fr-img-caption\").length&&(e=e.parents(\".fr-img-caption\").first());var t=e.hasClass(\"fr-dib\")?\"block\":e.hasClass(\"fr-dii\")?\"inline\":null,a=e.hasClass(\"fr-fil\")?\"left\":e.hasClass(\"fr-fir\")?\"right\":ve(e);he(e,t,a),e.removeClass(\"fr-dib fr-dii fr-fir fr-fil\")}function v(){for(var e,t=\"IMG\"==A.el.tagName?[A.el]:A.el.querySelectorAll(\"img\"),a=0;a<t.length;a++){var i=S(t[a]);!A.opts.htmlUntouched&&A.opts.useClasses?((A.opts.imageDefaultAlign||A.opts.imageDefaultDisplay)&&(0<(e=i).parents(\".fr-img-caption\").length&&(e=e.parents(\".fr-img-caption\").first()),e.hasClass(\"fr-dii\")||e.hasClass(\"fr-dib\")||(e.addClass(\"fr-fi\".concat(ve(e)[0])),e.addClass(\"fr-di\".concat(be(e)[0])),e.css(\"margin\",\"\"),e.css(\"float\",\"\"),e.css(\"display\",\"\"),e.css(\"z-index\",\"\"),e.css(\"position\",\"\"),e.css(\"overflow\",\"\"),e.css(\"vertical-align\",\"\"))),A.opts.imageTextNear||(0<i.parents(\".fr-img-caption\").length?i.parents(\".fr-img-caption\").first().removeClass(\"fr-dii\").addClass(\"fr-dib\"):i.removeClass(\"fr-dii\").addClass(\"fr-dib\"))):A.opts.htmlUntouched||A.opts.useClasses||(A.opts.imageDefaultAlign||A.opts.imageDefaultDisplay)&&l(i),A.opts.iframe&&i.on(\"load\",A.size.syncIframe)}}function b(e){void 0===e&&(e=!0);var t,a=Array.prototype.slice.call(A.el.querySelectorAll(\"img\")),i=[];for(t=0;t<a.length;t++)if(i.push(a[t].getAttribute(\"src\")),S(a[t]).toggleClass(\"fr-draggable\",A.opts.imageMove),\"\"===a[t].getAttribute(\"class\")&&a[t].removeAttribute(\"class\"),\"\"===a[t].getAttribute(\"style\")&&a[t].removeAttribute(\"style\"),a[t].parentNode&&a[t].parentNode.parentNode&&A.node.hasClass(a[t].parentNode.parentNode,\"fr-img-caption\")){var r=a[t].parentNode.parentNode;A.browser.mozilla||r.setAttribute(\"contenteditable\",!1),r.setAttribute(\"draggable\",!1),r.classList.add(\"fr-draggable\");var n=a[t].nextSibling;n&&!A.browser.mozilla&&n.setAttribute(\"contenteditable\",!0)}if(s)for(t=0;t<s.length;t++)i.indexOf(s[t].getAttribute(\"src\"))<0&&A.events.trigger(\"image.removed\",[S(s[t])]);if(s&&e){var o=[];for(t=0;t<s.length;t++)o.push(s[t].getAttribute(\"src\"));for(t=0;t<a.length;t++)o.indexOf(a[t].getAttribute(\"src\"))<0&&A.events.trigger(\"image.loaded\",[S(a[t])])}s=a}function D(){if(p||function o(){var e;A.shared.$image_resizer?(p=A.shared.$image_resizer,f=A.shared.$img_overlay,A.events.on(\"destroy\",function(){S(\"body\").first().append(p.removeClass(\"fr-active\"))},!0)):(A.shared.$image_resizer=S(document.createElement(\"div\")).attr(\"class\",\"fr-image-resizer\"),p=A.shared.$image_resizer,A.events.$on(p,\"mousedown\",function(e){e.stopPropagation()},!0),A.opts.imageResize&&(p.append(y(\"nw\")+y(\"ne\")+y(\"sw\")+y(\"se\")),A.shared.$img_overlay=S(document.createElement(\"div\")).attr(\"class\",\"fr-image-overlay\"),f=A.shared.$img_overlay,e=p.get(0).ownerDocument,S(e).find(\"body\").first().append(f)));A.events.on(\"shared.destroy\",function(){p.html(\"\").removeData().remove(),p=null,A.opts.imageResize&&(f.remove(),f=null)},!0),A.helpers.isMobile()||A.events.$on(S(A.o_win),\"resize\",function(){C&&!C.hasClass(\"fr-uploading\")?ce(!0):C&&(D(),ye(),N(!1))});if(A.opts.imageResize){e=p.get(0).ownerDocument,A.events.$on(p,A._mousedown,\".fr-handler\",x),A.events.$on(S(e),A._mousemove,T),A.events.$on(S(e.defaultView||e.parentWindow),A._mouseup,$),A.events.$on(f,\"mouseleave\",$);var i=1,r=null,n=0;A.events.on(\"keydown\",function(e){if(C){var t=-1!=navigator.userAgent.indexOf(\"Mac OS X\")?e.metaKey:e.ctrlKey,a=e.which;(a!==r||200<e.timeStamp-n)&&(i=1),(a==Me.KEYCODE.EQUALS||A.browser.mozilla&&a==Me.KEYCODE.FF_EQUALS)&&t&&!e.altKey?i=te.call(this,e,1,1,i):(a==Me.KEYCODE.HYPHEN||A.browser.mozilla&&a==Me.KEYCODE.FF_HYPHEN)&&t&&!e.altKey?i=te.call(this,e,2,-1,i):A.keys.ctrlKey(e)||a!=Me.KEYCODE.ENTER||(C.before(\"<br>\"),z(C)),r=a,n=e.timeStamp}},!0),A.events.on(\"keyup\",function(){i=1})}}(),!C)return!1;var e=A.$wp||A.$sc;e.append(p),p.data(\"instance\",A);var t=e.scrollTop()-(\"static\"!=e.css(\"position\")?e.offset().top:0),a=e.scrollLeft()-(\"static\"!=e.css(\"position\")?e.offset().left:0);a-=A.helpers.getPX(e.css(\"border-left-width\")),t-=A.helpers.getPX(e.css(\"border-top-width\")),A.$el.is(\"img\")&&A.$sc.is(\"body\")&&(a=t=0);var i=Ce();Se()&&(i=i.find(\".fr-img-wrap\"));var r=0,n=0;A.opts.iframe&&(r=A.helpers.getPX(A.$wp.find(\".fr-iframe\").css(\"padding-top\")),n=A.helpers.getPX(A.$wp.find(\".fr-iframe\").css(\"padding-left\"))),p.css(\"top\",(A.opts.iframe?i.offset().top+r:i.offset().top+t)-1).css(\"left\",(A.opts.iframe?i.offset().left+n:i.offset().left+a)-1).css(\"width\",i.get(0).getBoundingClientRect().width).css(\"height\",i.get(0).getBoundingClientRect().height).addClass(\"fr-active\")}function y(e){return'<div class=\"fr-handler fr-h'.concat(e,'\"></div>')}function w(e){Se()&&C.parents(\".fr-img-caption\").css(\"width\",e),C.css(\"width\",e)}function x(e){if(!A.core.sameInstance(p))return!0;if(e.preventDefault(),e.stopPropagation(),A.$el.find(\"img.fr-error\").left)return!1;A.undo.canDo()||A.undo.saveStep();var t=e.pageX||e.originalEvent.touches[0].pageX;if(\"mousedown\"==e.type){var a=A.$oel.get(0),i=a.ownerDocument,r=i.defaultView||i.parentWindow,n=!1;try{n=r.location!=r.parent.location&&!(r.$&&r.$.FE)}catch(l){}n&&r.frameElement&&(t+=A.helpers.getPX(S(a).offset().left)+r.frameElement.clientLeft)}(g=S(this)).data(\"start-x\",t),g.data(\"start-width\",C.width()),g.data(\"start-height\",C.height());var o=C.width();if(A.opts.imageResizeWithPercent){var s=C.parentsUntil(A.$el,A.html.blockTagsQuery()).get(0)||A.el;o=(o/S(s).outerWidth()*100).toFixed(2)+\"%\"}w(o),f.show(),A.popups.hideAll(),ue()}function T(e){if(!A.core.sameInstance(p))return!0;var t;if(g&&C){if(e.preventDefault(),A.$el.find(\"img.fr-error\").left)return!1;var a=e.pageX||(e.originalEvent.touches?e.originalEvent.touches[0].pageX:null);if(!a)return!1;var i=a-g.data(\"start-x\"),r=g.data(\"start-width\");if((g.hasClass(\"fr-hnw\")||g.hasClass(\"fr-hsw\"))&&(i=0-i),A.opts.imageResizeWithPercent){var n=C.parentsUntil(A.$el,A.html.blockTagsQuery()).get(0)||A.el;r=((r+i)/S(n).outerWidth()*100).toFixed(2),A.opts.imageRoundPercent&&(r=Math.round(r)),w(\"\".concat(r,\"%\")),(t=Se()?(A.helpers.getPX(C.parents(\".fr-img-caption\").css(\"width\"))/S(n).outerWidth()*100).toFixed(2):(A.helpers.getPX(C.css(\"width\"))/S(n).outerWidth()*100).toFixed(2))===r||A.opts.imageRoundPercent||w(\"\".concat(t,\"%\")),C.css(\"height\",\"\").removeAttr(\"height\")}else r+i>=A.opts.imageMinWidth&&(w(r+i),t=Se()?A.helpers.getPX(C.parents(\".fr-img-caption\").css(\"width\")):A.helpers.getPX(C.css(\"width\"))),t!==r+i&&w(t),((C.attr(\"style\")||\"\").match(/(^height:)|(; *height:)/)||C.attr(\"height\"))&&(C.css(\"height\",g.data(\"start-height\")*C.width()/g.data(\"start-width\")),C.removeAttr(\"height\"));D(),A.events.trigger(\"image.resize\",[Ae()])}}function $(e){if(!A.core.sameInstance(p))return!0;if(g&&C){if(e&&e.stopPropagation(),A.$el.find(\"img.fr-error\").left)return!1;g=null,f.hide(),D(),n(),A.undo.saveStep(),A.events.trigger(\"image.resizeEnd\",[Ae()])}else p.removeClass(\"fr-active\")}function I(e,t,a){A.edit.on(),C&&C.addClass(\"fr-error\"),r[e]?O(A.language.translate(r[e])):O(A.language.translate(\"Something went wrong. Please try again.\")),!C&&a&&ae(a),A.events.trigger(\"image.error\",[{code:e,message:r[e]},t,a])}function P(e){if(e)return A.$wp&&A.events.$on(A.$wp,\"scroll.image-edit\",function(){C&&A.popups.isVisible(\"image.edit\")&&(A.events.disableBlur(),n())}),!0;var t=\"\";if(0<A.opts.imageEditButtons.length){var a={buttons:t+='<div class=\"fr-buttons\">\\n '.concat(A.button.buildList(A.opts.imageEditButtons),\"\\n </div>\")};return A.popups.create(\"image.edit\",a)}return!1}function N(e){var t=A.popups.get(\"image.insert\");if(t||(t=X()),t.find(\".fr-layer.fr-active\").removeClass(\"fr-active\").addClass(\"fr-pactive\"),t.find(\".fr-image-progress-bar-layer\").addClass(\"fr-active\"),t.find(\".fr-buttons\").hide(),C){var a=Ce();A.popups.setContainer(\"image.insert\",A.$sc);var i=a.offset().left,r=a.offset().top+a.height();A.popups.show(\"image.insert\",i,r,a.outerHeight())}void 0===e&&B(A.language.translate(\"Uploading\"),0)}function k(e){var t=A.popups.get(\"image.insert\");if(t&&(t.find(\".fr-layer.fr-pactive\").addClass(\"fr-active\").removeClass(\"fr-pactive\"),t.find(\".fr-image-progress-bar-layer\").removeClass(\"fr-active\"),t.find(\".fr-buttons\").show(),e||A.$el.find(\"img.fr-error\").length)){if(A.events.focus(),A.$el.find(\"img.fr-error\").length&&(A.$el.find(\"img.fr-error\").remove(),A.undo.saveStep(),A.undo.run(),A.undo.dropRedo()),!A.$wp&&C){var a=C;ce(!0),A.selection.setAfter(a.get(0)),A.selection.restore()}A.popups.hide(\"image.insert\")}}function B(e,t){var a=A.popups.get(\"image.insert\");if(a){var i=a.find(\".fr-image-progress-bar-layer\");i.find(\"h3\").text(e+(t?\" \".concat(t,\"%\"):\"\")),i.removeClass(\"fr-error\"),t?(i.find(\"div\").removeClass(\"fr-indeterminate\"),i.find(\"div > span\").css(\"width\",\"\".concat(t,\"%\"))):i.find(\"div\").addClass(\"fr-indeterminate\")}}function O(e){N();var t=A.popups.get(\"image.insert\").find(\".fr-image-progress-bar-layer\");t.addClass(\"fr-error\");var a=t.find(\"h3\");a.text(e),A.events.disableBlur(),a.focus()}function z(e){fe.call(e.get(0))}function L(){var e=S(this);A.popups.hide(\"image.insert\"),e.removeClass(\"fr-uploading\"),e.next().is(\"br\")&&e.next().remove(),z(e),A.events.trigger(\"image.loaded\",[e])}function _(o,e,s,l,p){l&&\"string\"==typeof l&&(l=A.$(l)),A.edit.off(),B(A.language.translate(\"Loading image\")),e&&(o=A.helpers.sanitizeURL(o));var t=new Image;t.onload=function(){var e,t;if(l){A.undo.canDo()||l.hasClass(\"fr-uploading\")||A.undo.saveStep();var a=l.data(\"fr-old-src\");l.data(\"fr-image-pasted\")&&(a=null),A.$wp?((e=l.clone().removeData(\"fr-old-src\").removeClass(\"fr-uploading\").removeAttr(\"data-fr-image-pasted\")).off(\"load\"),a&&l.attr(\"src\",a),!A.opts.trackChangesEnabled||l[0].parentNode&&\"SPAN\"===l[0].parentNode.tagName&&l[0].parentNode.hasAttribute(\"data-tracking\")||A.track_changes.replaceSpecialItem(l),l.replaceWith(e)):e=l;for(var i=e.get(0).attributes,r=0;r<i.length;r++){var n=i[r];0===n.nodeName.indexOf(\"data-\")?e.removeAttr(n.nodeName):s&&s.hasOwnProperty(n.nodeName)&&e.removeAttr(n.nodeName)}if(void 0!==s)for(t in s)s.hasOwnProperty(t)&&\"link\"!=t&&e.attr(\"\".concat(t),s[t]);e.on(\"load\",L),e.attr(\"src\",o),A.edit.on(),b(!1),l[0].src!=o&&A.selection.restore(),A.undo.saveStep(),A.events.disableBlur(),A.$el.blur(),A.events.trigger(a?\"image.replaced\":\"image.inserted\",[e,p])}else(e=W(o,s,L))&&(b(!1),A.undo.saveStep(),A.events.disableBlur(),A.$el.blur(),A.events.trigger(\"image.inserted\",[e,p]))},t.onerror=function(){I(i)},N(A.language.translate(\"Loading image\")),t.src=o}function M(e,t,a){B(A.language.translate(\"Loading image\"));var i=this.status,r=this.response,n=this.responseXML,o=this.responseText;try{if(A.opts.imageUploadToS3||A.opts.imageUploadToAzure)if(201==i){var s;if(A.opts.imageUploadToAzure){if(!1===A.events.trigger(\"image.uploadedToAzure\",[this.responseURL,a,r],!0))return A.edit.on(),!1;s=t}else s=function p(e){try{var t=S(e).find(\"Location\").text(),a=S(e).find(\"Key\").text();return!1===A.events.trigger(\"image.uploadedToS3\",[t,a,e],!0)?(A.edit.on(),!1):t}catch(i){return I(m,e),!1}}(n);s&&_(s,!1,[],e,r||n)}else I(m,r||n,e);else if(200<=i&&i<300){var l=function g(e){try{if(!1===A.events.trigger(\"image.uploaded\",[e],!0))return A.edit.on(),!1;var t=JSON.parse(e);return t.link?t:(I(c,e),!1)}catch(a){return I(m,e),!1}}(o);l&&_(l.link,!1,l,e,r||o)}else I(d,r||o,e)}catch(f){I(m,r||o,e)}}function K(){I(m,this.response||this.responseText||this.responseXML)}function Y(e){if(e.lengthComputable){var t=e.loaded/e.total*100|0;B(A.language.translate(\"Uploading\"),t)}}function W(e,t,a){var i,r=S(document.createElement(\"img\")).attr(\"src\",e);if(t&&void 0!==t)for(i in t)t.hasOwnProperty(i)&&\"link\"!=i&&(\" data-\".concat(i,'=\"').concat(t[i],'\"'),r.attr(\"\".concat(i),t[i]));var n=A.opts.imageDefaultWidth;n&&\"auto\"!=n&&(n=A.opts.imageResizeWithPercent?\"100%\":\"\".concat(n,\"px\")),r.attr(\"style\",n?\"width: \".concat(n,\";\"):\"\"),he(r,A.opts.imageDefaultDisplay,A.opts.imageDefaultAlign),r.on(\"load\",a),r.on(\"error\",a),A.edit.on(),A.events.focus(!0),A.selection.restore(),A.undo.saveStep(),A.opts.imageSplitHTML?A.markers.split():A.markers.insert(),A.html.wrap();var o=A.$el.find(\".fr-marker\");if(o.length)(o.parent().is(\"hr\")||o.parent().is(\"IMG\"))&&o.parent().after(o),A.node.isLastSibling(o)&&o.parent().hasClass(\"fr-deletable\")&&o.insertAfter(o.parent()),o.replaceWith(r);else{if(A.opts.trackChangesEnabled)return k(!0),!1;A.$el.append(r)}return A.selection.clear(),r}function G(){A.edit.on(),k(!0)}function H(e,t){if(void 0!==e&&0<e.length){if(!1===A.events.trigger(\"image.beforeUpload\",[e,t]))return!1;var a,i=e[0];if(!(null!==A.opts.imageUploadURL&&A.opts.imageUploadURL!=E||A.opts.imageUploadToS3||A.opts.imageUploadToAzure))return function y(r,n){var o=new FileReader;o.onload=function(){var e=o.result;if(o.result.indexOf(\"svg+xml\")<0){for(var t=atob(o.result.split(\",\")[1]),a=[],i=0;i<t.length;i++)a.push(t.charCodeAt(i));e=window.URL.createObjectURL(new Blob([new Uint8Array(a)],{type:r.type})),n&&n.data(\"fr-old-src\",n.attr(\"src\")),A.image.insert(e,!1,null,n)}else A.image.insert(e,null,null,A.image.get())},N(),o.readAsDataURL(r)}(i,t||C),!1;if(i.name||(i.name=(new Date).getTime()+\".\"+(i.type||\"image/jpeg\").replace(/image\\//g,\"\")),i.size>A.opts.imageMaxSize)return I(R),!1;if(A.opts.imageAllowedTypes.indexOf(i.type.replace(/image\\//g,\"\"))<0)return I(U),!1;if(A.drag_support.formdata&&(a=A.drag_support.formdata?new FormData:null),a){var r;if(!1!==A.opts.imageUploadToS3)for(r in a.append(\"key\",A.opts.imageUploadToS3.keyStart+(new Date).getTime()+\"-\"+(i.name||\"untitled\")),a.append(\"success_action_status\",\"201\"),a.append(\"X-Requested-With\",\"xhr\"),a.append(\"Content-Type\",i.type),A.opts.imageUploadToS3.params)A.opts.imageUploadToS3.params.hasOwnProperty(r)&&a.append(r,A.opts.imageUploadToS3.params[r]);for(r in A.opts.imageUploadParams)A.opts.imageUploadParams.hasOwnProperty(r)&&a.append(r,A.opts.imageUploadParams[r]);a.append(A.opts.imageUploadParam,i,i.name);var n,o,s=A.opts.imageUploadURL,l=A.opts.imageUploadMethod;A.opts.imageUploadToS3&&(s=A.opts.imageUploadToS3.uploadURL?A.opts.imageUploadToS3.uploadURL:\"https://\".concat(A.opts.imageUploadToS3.region,\".amazonaws.com/\").concat(A.opts.imageUploadToS3.bucket)),A.opts.imageUploadToAzure&&(n=s=A.opts.imageUploadToAzure.uploadURL?\"\".concat(A.opts.imageUploadToAzure.uploadURL,\"/\").concat(i.name):encodeURI(\"https://\".concat(A.opts.imageUploadToAzure.account,\".blob.core.windows.net/\").concat(A.opts.imageUploadToAzure.container,\"/\").concat(i.name)),A.opts.imageUploadToAzure.SASToken&&(s+=A.opts.imageUploadToAzure.SASToken),l=\"PUT\");var p=A.core.getXHR(s,l);if(A.opts.imageUploadToAzure){var g=(new Date).toUTCString();if(!A.opts.imageUploadToAzure.SASToken&&A.opts.imageUploadToAzure.accessKey){var f=A.opts.imageUploadToAzure.account,c=A.opts.imageUploadToAzure.container;if(A.opts.imageUploadToAzure.uploadURL){var d=A.opts.imageUploadToAzure.uploadURL.split(\"/\");c=d.pop(),f=d.pop().split(\".\")[0]}var m=\"x-ms-blob-type:BlockBlob\\nx-ms-date:\".concat(g,\"\\nx-ms-version:2019-07-07\"),u=encodeURI(\"/\"+f+\"/\"+c+\"/\"+i.name),h=l+\"\\n\\n\\n\"+i.size+\"\\n\\n\"+i.type+\"\\n\\n\\n\\n\\n\\n\\n\"+m+\"\\n\"+u,v=A.cryptoJSPlugin.cryptoJS.HmacSHA256(h,A.cryptoJSPlugin.cryptoJS.enc.Base64.parse(A.opts.imageUploadToAzure.accessKey)).toString(A.cryptoJSPlugin.cryptoJS.enc.Base64),b=\"SharedKey \"+f+\":\"+v;o=v,p.setRequestHeader(\"Authorization\",b)}for(r in p.setRequestHeader(\"x-ms-version\",\"2019-07-07\"),p.setRequestHeader(\"x-ms-date\",g),p.setRequestHeader(\"Content-Type\",i.type),p.setRequestHeader(\"x-ms-blob-type\",\"BlockBlob\"),A.opts.imageUploadParams)A.opts.imageUploadParams.hasOwnProperty(r)&&p.setRequestHeader(r,A.opts.imageUploadParams[r]);for(r in A.opts.imageUploadToAzure.params)A.opts.imageUploadToAzure.params.hasOwnProperty(r)&&p.setRequestHeader(r,A.opts.imageUploadToAzure.params[r])}!function w(t,a,i,r,n,o){function s(){var e=S(this);e.off(\"load\"),e.addClass(\"fr-uploading\"),e.next().is(\"br\")&&e.next().remove(),A.placeholder.refresh(),z(e),D(),N(),A.edit.off(),t.onload=function(){M.call(t,e,n,o)},t.onerror=K,t.upload.onprogress=Y,t.onabort=G,S(e.off(\"abortUpload\")).on(\"abortUpload\",function(){4!=t.readyState&&(t.abort(),r?(r.attr(\"src\",r.data(\"fr-old-src\")),r.removeClass(\"fr-uploading\")):e.remove(),ce(!0))}),t.send(A.opts.imageUploadToAzure?i:a)}var l=new FileReader;l.onload=function(){var e=l.result;if(l.result.indexOf(\"svg+xml\")<0){for(var t=atob(l.result.split(\",\")[1]),a=[],i=0;i<t.length;i++)a.push(t.charCodeAt(i));e=window.URL.createObjectURL(new Blob([new Uint8Array(a)],{type:\"image/jpeg\"}))}r?(r.on(\"load\",s),r.on(\"error\",function(){s(),S(this).off(\"error\")}),A.edit.on(),A.undo.saveStep(),r.data(\"fr-old-src\",r.attr(\"src\")),r.attr(\"src\",e)):W(e,null,s)},l.readAsDataURL(i)}(p,a,i,t||C,n,o)}}}function F(e){if(e.is(\"img\")&&0<e.parents(\".fr-img-caption\").length)return e.parents(\".fr-img-caption\")}function V(e){var t=e.originalEvent.dataTransfer;if(t&&t.files&&t.files.length){var a=t.files[0];if(a&&a.type&&-1!==a.type.indexOf(\"image\")&&0<=A.opts.imageAllowedTypes.indexOf(a.type.replace(/image\\//g,\"\"))){if(!A.opts.imageUpload)return e.preventDefault(),e.stopPropagation(),!1;A.markers.remove(),A.markers.insertAtPoint(e.originalEvent),A.$el.find(\".fr-marker\").replaceWith(Me.MARKERS),0===A.$el.find(\".fr-marker\").length&&A.selection.setAtEnd(A.el),A.popups.hideAll();var i=A.popups.get(\"image.insert\");i||(i=X()),A.popups.setContainer(\"image.insert\",A.$sc);var r=e.originalEvent.pageX,n=e.originalEvent.pageY;if(A.opts.iframe){var o=A.helpers.getPX(A.$wp.find(\".fr-iframe\").css(\"padding-top\")),s=A.helpers.getPX(A.$wp.find(\".fr-iframe\").css(\"padding-left\"));n+=A.$iframe.offset().top+o,r+=A.$iframe.offset().left+s}return A.popups.show(\"image.insert\",r,n),N(),0<=A.opts.imageAllowedTypes.indexOf(a.type.replace(/image\\//g,\"\"))?(ce(!0),H(t.files)):I(U),e.preventDefault(),e.stopPropagation(),!1}}}function X(e){if(e)return A.popups.onRefresh(\"image.insert\",u),A.popups.onHide(\"image.insert\",h),!0;var t,a,i=\"\";A.opts.imageUpload||-1===A.opts.imageInsertButtons.indexOf(\"imageUpload\")||A.opts.imageInsertButtons.splice(A.opts.imageInsertButtons.indexOf(\"imageUpload\"),1);var r=A.button.buildList(A.opts.imageInsertButtons);\"\"!==r&&(i='<div class=\"fr-buttons fr-tabs\">'.concat(r,\"</div>\"));var n=A.opts.imageInsertButtons.indexOf(\"imageUpload\"),o=A.opts.imageInsertButtons.indexOf(\"imageByURL\"),s=\"\";0<=n&&(t=\" fr-active\",0<=o&&o<n&&(t=\"\"),s='<div class=\"fr-image-upload-layer'.concat(t,' fr-layer\" id=\"fr-image-upload-layer-').concat(A.id,'\"><strong>').concat(A.language.translate(\"Drop image\"),\"</strong><br>(\").concat(A.language.translate(\"or click\"),')<div class=\"fr-form\"><input type=\"file\" accept=\"image/').concat(A.opts.imageAllowedTypes.join(\", image/\").toLowerCase(),'\" tabIndex=\"-1\" aria-labelledby=\"fr-image-upload-layer-').concat(A.id,'\" role=\"button\"></div></div>'));var l=\"\";0<=o&&(t=\" fr-active\",0<=n&&n<o&&(t=\"\"),l='<div class=\"fr-image-by-url-layer'.concat(t,' fr-layer\" id=\"fr-image-by-url-layer-').concat(A.id,'\"><div class=\"fr-input-line\"><input id=\"fr-image-by-url-layer-text-').concat(A.id,'\" type=\"text\" placeholder=\"http://\" tabIndex=\"1\" aria-required=\"true\"></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"imageInsertByURL\" tabIndex=\"2\" role=\"button\">').concat(A.language.translate(\"Insert\"),\"</button></div></div>\"));var p={buttons:i,upload_layer:s,by_url_layer:l,progress_bar:'<div class=\"fr-image-progress-bar-layer fr-layer\"><h3 tabIndex=\"-1\" class=\"fr-message\">Uploading</h3><div class=\"fr-loader\"><span class=\"fr-progress\"></span></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-dismiss\" data-cmd=\"imageDismissError\" tabIndex=\"2\" role=\"button\">OK</button></div></div>'};return 1<=A.opts.imageInsertButtons.length&&(a=A.popups.create(\"image.insert\",p)),A.$wp&&A.events.$on(A.$wp,\"scroll\",function(){C&&A.popups.isVisible(\"image.insert\")&&ye()}),function g(i){A.events.$on(i,\"dragover dragenter\",\".fr-image-upload-layer\",function(e){return S(this).addClass(\"fr-drop\"),(A.browser.msie||A.browser.edge)&&e.preventDefault(),!1},!0),A.events.$on(i,\"dragleave dragend\",\".fr-image-upload-layer\",function(e){return S(this).removeClass(\"fr-drop\"),(A.browser.msie||A.browser.edge)&&e.preventDefault(),!1},!0),A.events.$on(i,\"drop\",\".fr-image-upload-layer\",function(e){e.preventDefault(),e.stopPropagation(),S(this).removeClass(\"fr-drop\");var t=e.originalEvent.dataTransfer;if(t&&t.files){var a=i.data(\"instance\")||A;a.events.disableBlur(),a.image.upload(t.files),a.events.enableBlur()}},!0),A.helpers.isIOS()&&A.events.$on(i,\"touchstart\",'.fr-image-upload-layer input[type=\"file\"]',function(){S(this).trigger(\"click\")},!0),A.events.$on(i,\"change\",'.fr-image-upload-layer input[type=\"file\"]',function(){if(this.files){var e=i.data(\"instance\")||A;e.events.disableBlur(),i.find(\"input:focus\").blur(),e.events.enableBlur(),e.image.upload(this.files,C)}S(this).val(\"\")},!0)}(a),a}function q(){C&&A.popups.get(\"image.alt\").find(\"input\").val(C.attr(\"alt\")||\"\").trigger(\"change\")}function j(){var e=A.popups.get(\"image.alt\");e||(e=J()),k(),A.popups.refresh(\"image.alt\"),A.popups.setContainer(\"image.alt\",A.$sc);var t=Ce(),a=t.outerWidth()/2;Se()&&(t=t.find(\".fr-img-wrap\"),a=C.outerWidth()/2);var i=t.offset().left+a,r=t.offset().top+t.outerHeight(),n=t.outerHeight();A.opts.iframe&&Se()&&(n=C?C.outerHeight():0),A.popups.show(\"image.alt\",i,r,n,!0)}function J(e){if(e)return A.popups.onRefresh(\"image.alt\",q),!0;var t={buttons:'<div class=\"fr-buttons fr-tabs\">'.concat(A.button.buildList(A.opts.imageAltButtons),\"</div>\"),alt_layer:'<div class=\"fr-image-alt-layer fr-layer fr-active\" id=\"fr-image-alt-layer-'.concat(A.id,'\"><div class=\"fr-input-line\"><input id=\"fr-image-alt-layer-text-').concat(A.id,'\" type=\"text\" placeholder=\"').concat(A.language.translate(\"Alternative Text\"),'\" tabIndex=\"1\"></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"imageSetAlt\" tabIndex=\"2\" role=\"button\">').concat(A.language.translate(\"Update\"),\"</button></div></div>\")},a=A.popups.create(\"image.alt\",t);return A.$wp&&A.events.$on(A.$wp,\"scroll.image-alt\",function(){C&&A.popups.isVisible(\"image.alt\")&&j()}),a}function Q(){var e=A.popups.get(\"image.size\"),t=C.get(0).style.height?C.get(0).style.height:\"auto\",a=C.get(0).style.width?C.get(0).style.width:\"auto\";if(C)if(Se()){var i=C.parent();i.get(0).style.width||(i=C.parent().parent()),e.find('input[name=\"width\"]').val(a).trigger(\"change\"),e.find('input[name=\"height\"]').val(t).trigger(\"change\")}else e.find('input[name=\"width\"]').val(a).trigger(\"change\"),e.find('input[name=\"height\"]').val(t).trigger(\"change\")}function Z(){var e=A.popups.get(\"image.size\");e||(e=ee()),k(),A.popups.refresh(\"image.size\"),A.popups.setContainer(\"image.size\",A.$sc);var t=Ce(),a=t.outerWidth()/2;Se()&&(t=t.find(\".fr-img-wrap\"),a=C.outerWidth()/2);var i=t.outerHeight();A.opts.iframe&&Se()&&(i=C?C.outerHeight():0);var r=t.offset().left+a,n=t.offset().top+t.outerHeight();A.popups.show(\"image.size\",r,n,i,!0)}function ee(e){if(e)return A.popups.onRefresh(\"image.size\",Q),!0;var t={buttons:'<div class=\"fr-buttons fr-tabs\">'.concat(A.button.buildList(A.opts.imageSizeButtons),\"</div>\"),size_layer:'<div class=\"fr-image-size-layer fr-layer fr-active\" id=\"fr-image-size-layer-'.concat(A.id,'\"><div class=\"fr-image-group\"><div class=\"fr-input-line\"><input id=\"fr-image-size-layer-width-\\'').concat(A.id,'\" type=\"text\" name=\"width\" placeholder=\"').concat(A.language.translate(\"Width\"),'\" tabIndex=\"1\"></div><div class=\"fr-input-line\"><input id=\"fr-image-size-layer-height').concat(A.id,'\" type=\"text\" name=\"height\" placeholder=\"').concat(A.language.translate(\"Height\"),'\" tabIndex=\"1\"></div></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"imageSetSize\" tabIndex=\"2\" role=\"button\">').concat(A.language.translate(\"Update\"),\"</button></div></div>\")},a=A.popups.create(\"image.size\",t);return A.$wp&&A.events.$on(A.$wp,\"scroll.image-size\",function(){C&&A.popups.isVisible(\"image.size\")&&Z()}),a}function te(e,t,a,i){return e.pageX=t,x.call(this,e),e.pageX=e.pageX+a*Math.floor(Math.pow(1.1,i)),T.call(this,e),$.call(this,e),++i}function ae(e){if(e=e||Ce(),A.opts.trackChangesEnabled&&!A.helpers.isMobile()&&(!e[0].parentNode||\"SPAN\"!==e[0].parentNode.tagName||!e[0].parentNode.hasAttribute(\"data-tracking\")))return A.track_changes.removeSpecialItem(e),A.popups.hideAll(),void ce(!0);e&&!1!==A.events.trigger(\"image.beforeRemove\",[e])&&(A.popups.hideAll(),we(),ce(!0),A.undo.canDo()||A.undo.saveStep(),e.get(0)==A.el?e.removeAttr(\"src\"):(e.get(0).parentNode&&\"A\"==e.get(0).parentNode.tagName?(A.selection.setBefore(e.get(0).parentNode)||A.selection.setAfter(e.get(0).parentNode)||e.parent().after(Me.MARKERS),S(e.get(0).parentNode).remove()):(A.selection.setBefore(e.get(0))||A.selection.setAfter(e.get(0))||e.after(Me.MARKERS),e.remove()),A.html.fillEmptyBlocks(),A.selection.restore()),A.undo.saveStep())}function ie(e){var t=e.which;if(C&&(t==Me.KEYCODE.BACKSPACE||t==Me.KEYCODE.DELETE))return e.preventDefault(),e.stopPropagation(),ae(),!1;if(C&&t==Me.KEYCODE.ESC){var a=C;return ce(!0),A.selection.setAfter(a.get(0)),A.selection.restore(),e.preventDefault(),!1}if(!C||t!=Me.KEYCODE.ARROW_LEFT&&t!=Me.KEYCODE.ARROW_RIGHT)return C&&t===Me.KEYCODE.TAB?(e.preventDefault(),e.stopPropagation(),ce(!0),!1):C&&t!=Me.KEYCODE.F10&&!A.keys.isBrowserAction(e)?(e.preventDefault(),e.stopPropagation(),!1):void 0;var i=C.get(0);return ce(!0),t==Me.KEYCODE.ARROW_LEFT?A.selection.setBefore(i):A.selection.setAfter(i),A.selection.restore(),e.preventDefault(),!1}function re(e){if(e&&\"IMG\"==e.tagName){if(A.node.hasClass(e,\"fr-uploading\")||A.node.hasClass(e,\"fr-error\")?e.parentNode.removeChild(e):A.node.hasClass(e,\"fr-draggable\")&&e.classList.remove(\"fr-draggable\"),e.parentNode&&e.parentNode.parentNode&&A.node.hasClass(e.parentNode.parentNode,\"fr-img-caption\")){var t=e.parentNode.parentNode;t.removeAttribute(\"contenteditable\"),t.removeAttribute(\"draggable\"),t.classList.remove(\"fr-draggable\");var a=e.nextSibling;a&&a.removeAttribute(\"contenteditable\")}}else if(e&&e.nodeType==Node.ELEMENT_NODE)for(var i=e.querySelectorAll(\"img.fr-uploading, img.fr-error, img.fr-draggable\"),r=0;r<i.length;r++)re(i[r])}function ne(e){if(!1===A.events.trigger(\"image.beforePasteUpload\",[e]))return S(e).removeAttr(\"data-fr-image-pasted\"),!1;C=S(e),D(),n(),ye(),N(),C.on(\"load\",function(){var t=[];D(),S(A.popups.get(\"image.insert\").get(0)).find(\"div.fr-active.fr-error\").length<1&&N(),S(this).data(\"events\").filter(function(e){\"load\"===e[0]&&t.push(e)}),t.length<=1&&S(this).off(\"load\")});for(var t=S(e).attr(\"src\").split(\",\"),a=atob(t[1]),i=[],r=0;r<a.length;r++)i.push(a.charCodeAt(r));H([A.browser.safari&&!A.opts.imageUploadURL?new Blob([new Uint8Array(i)],{type:t[0].replace(/data\\:/g,\"\")}):new Blob([new Uint8Array(i)],{type:t[0].replace(/data\\:/g,\"\").replace(/;base64/g,\"\")})],C)}function oe(){A.opts.imagePaste?A.$el.find(\"img[data-fr-image-pasted]\").each(function(e,a){if(A.opts.imagePasteProcess){var t=A.opts.imageDefaultWidth;t&&\"auto\"!=t&&(t+=A.opts.imageResizeWithPercent?\"%\":\"px\"),S(a).css(\"width\",t).removeClass(\"fr-dii fr-dib fr-fir fr-fil\"),he(S(a),A.opts.imageDefaultDisplay,A.opts.imageDefaultAlign)}if(0===a.src.indexOf(\"data:\"))ne(a);else if(0===a.src.indexOf(\"blob:\")||0===a.src.indexOf(\"http\")&&A.opts.imageUploadRemoteUrls&&A.opts.imageCORSProxy){var i=new Image;i.crossOrigin=\"Anonymous\",i.onload=function(){var e=A.o_doc.createElement(\"CANVAS\"),t=e.getContext(\"2d\");e.height=this.naturalHeight,e.width=this.naturalWidth,t.drawImage(this,0,0),setTimeout(function(){ne(a)},0),a.src=e.toDataURL(Me.IMAGE_TYPE)},A.browser.msie&&Me.IMAGE_ALLOW_REGEX.test(a.src)&&(Me.IMAGE_TYPE=\"image/\"+a.src.split(Me.IMAGE_ALLOW_REGEX)[1]),i.src=(0===a.src.indexOf(\"blob:\")?\"\":\"\".concat(A.opts.imageCORSProxy,\"/\"))+a.src,0!==a.src.indexOf(\"blob:\")&&A.undo.saveStep()}else 0!==a.src.indexOf(\"http\")||0===a.src.indexOf(\"https://mail.google.com/mail\")?(A.selection.save(),S(a).remove(),A.selection.restore()):S(a).removeAttr(\"data-fr-image-pasted\")}):A.$el.find(\"img[data-fr-image-pasted]\").remove()}function se(e){var t=e.target.result,a=A.opts.imageDefaultWidth;a&&\"auto\"!=a&&(a+=A.opts.imageResizeWithPercent?\"%\":\"px\"),A.undo.saveStep(),A.html.insert('<img data-fr-image-pasted=\"true\" src=\"'.concat(t,'\"').concat(a?' style=\"width: '.concat(a,';\"'):\"\",\">\"));var i=A.$el.find('img[data-fr-image-pasted=\"true\"]');i&&he(i,A.opts.imageDefaultDisplay,A.opts.imageDefaultAlign),A.events.trigger(\"paste.after\")}function le(e,t){var a=new FileReader;a.onload=function i(e){var t=A.opts.imageDefaultWidth;t&&\"auto\"!=t&&(t+=A.opts.imageResizeWithPercent?\"%\":\"px\"),A.html.insert('<img data-fr-image-pasted=\"true\" src=\"'.concat(e,'\"').concat(t?' style=\"width: '.concat(t,';\"'):\"\",\">\"));var a=A.$el.find('img[data-fr-image-pasted=\"true\"]');a&&he(a,A.opts.imageDefaultDisplay,A.opts.imageDefaultAlign),A.events.trigger(\"paste.after\")}(t),a.readAsDataURL(e,t)}function pe(e){if(e&&e.clipboardData&&e.clipboardData.items){var t=(e.clipboardData||window.clipboardData).getData(\"text/html\")||\"\";A.browser.mozilla&&(\"\"===t||/<!--StartFragment-->([ ])<!--EndFragment-->/.test(t))&&(t=A.win.localStorage.getItem(\"fr-copied-html\"));var a=(new DOMParser).parseFromString(t,\"text/html\").querySelector(\"img\");if(a&&!A.opts.imageUploadURL){if(!a)return!1;var i=a.src,r=null;if(e.clipboardData.types&&-1!=[].indexOf.call(e.clipboardData.types,\"text/rtf\")||e.clipboardData.getData(\"text/rtf\"))r=e.clipboardData.items[0].getAsFile();else for(var n=0;n<e.clipboardData.items.length;n++)if(r=e.clipboardData.items[n].getAsFile()){Me.IMAGE_TYPE=r.type;break}if(r)return le(r,i),!1}else{var o=null;if(e.clipboardData.types&&-1!=[].indexOf.call(e.clipboardData.types,\"text/rtf\")||e.clipboardData.getData(\"text/rtf\"))o=e.clipboardData.items[0].getAsFile();else for(var s=0;s<e.clipboardData.items.length&&!(o=e.clipboardData.items[s].getAsFile());s++);if(o)return function l(e){var t=new FileReader;t.onload=se,t.readAsDataURL(e)}(o),!1}}}function ge(e){return e=e.replace(/<img /gi,'<img data-fr-image-pasted=\"true\" ')}function fe(e){if(\"false\"==S(this).parents(\"[contenteditable]\").not(\".fr-element\").not(\".fr-img-caption\").not(\"body\").first().attr(\"contenteditable\"))return!0;if(e&&\"touchend\"==e.type&&a)return!0;if(e&&A.edit.isDisabled())return e.stopPropagation(),e.preventDefault(),!1;for(var t=0;t<Me.INSTANCES.length;t++)Me.INSTANCES[t]!=A&&Me.INSTANCES[t].events.trigger(\"image.hideResizer\");A.toolbar.disable(),e&&(e.stopPropagation(),e.preventDefault()),A.helpers.isMobile()&&(A.events.disableBlur(),A.$el.blur(),A.events.enableBlur()),A.opts.iframe&&A.size.syncIframe(),C=S(this),we(),D(),n(),A.browser.msie?(A.popups.areVisible()&&A.events.disableBlur(),A.win.getSelection&&(A.win.getSelection().removeAllRanges(),A.win.getSelection().addRange(A.doc.createRange()))):A.selection.clear(),A.helpers.isIOS()&&(A.events.disableBlur(),A.$el.blur()),A.button.bulkRefresh(),A.events.trigger(\"video.hideResizer\")}function ce(e){C&&(function t(){return de}()||!0===e)&&(A.toolbar.enable(),p.removeClass(\"fr-active\"),A.popups.hideAll(),C=null,ue(),g=null,f&&f.hide())}r[i]=\"Image cannot be loaded from the passed link.\",r[c]=\"No link in upload response.\",r[d]=\"Error during file upload.\",r[m]=\"Parsing response failed.\",r[R]=\"File is too large.\",r[U]=\"Image file type is invalid.\",r[7]=\"Files can be uploaded only to same domain in IE 8 and IE 9.\";var de=!(r[8]=\"Image file is corrupted.\");function me(){de=!0}function ue(){de=!1}function he(e,t,a){if(!A.opts.htmlUntouched&&A.opts.useClasses)e.removeClass(\"fr-fil fr-fir fr-dib fr-dii\"),a&&e.addClass(\"fr-fi\".concat(a[0])),t&&e.addClass(\"fr-di\".concat(t[0]));else if(\"inline\"==t)if(e.css({display:\"inline-block\",verticalAlign:\"bottom\",margin:A.opts.imageDefaultMargin}),\"center\"==a)e.css({\"float\":\"none\",marginBottom:\"\",marginTop:\"\",maxWidth:\"calc(100% - \".concat(2*A.opts.imageDefaultMargin,\"px)\"),textAlign:\"center\"});else if(\"left\"==a){var i=\"0px\",r=e.parent(\"span.fr-img-caption\").get(0);r||(r=e.parent().get(0)),r&&\"li\"===r.tagName.toLowerCase()?i=\"20px\":r&&\"p\"===r.tagName.toLowerCase()&&(i=\"15px\"),e.css({\"float\":\"left\",marginLeft:0,maxWidth:\"calc(100% - \".concat(A.opts.imageDefaultMargin,\"px)\"),textAlign:\"left\",marginRight:i})}else e.css({\"float\":\"right\",marginRight:0,maxWidth:\"calc(100% - \".concat(A.opts.imageDefaultMargin,\"px)\"),textAlign:\"right\"});else\"block\"==t&&(e.css({display:\"block\",\"float\":\"none\",verticalAlign:\"top\",margin:\"\".concat(A.opts.imageDefaultMargin,\"px auto\"),textAlign:\"center\"}),\"left\"==a?e.css({marginLeft:0,textAlign:\"left\"}):\"right\"==a&&e.css({marginRight:0,textAlign:\"right\"}))}function ve(e){if(void 0===e&&(e=Ce()),e){if(e.hasClass(\"fr-fil\"))return\"left\";if(e.hasClass(\"fr-fir\"))return\"right\";if(e.hasClass(\"fr-dib\")||e.hasClass(\"fr-dii\"))return\"center\";var t=e.css(\"float\");if(e.css(\"float\",\"none\"),\"block\"==e.css(\"display\")){if(e.css(\"float\",\"\"),e.css(\"float\")!=t&&e.css(\"float\",t),0===parseInt(e.css(\"margin-left\"),10))return\"left\";if(0===parseInt(e.css(\"margin-right\"),10))return\"right\"}else{if(e.css(\"float\",\"\"),e.css(\"float\")!=t&&e.css(\"float\",t),\"left\"==e.css(\"float\"))return\"left\";if(\"right\"==e.css(\"float\"))return\"right\"}}return\"center\"}function be(e){void 0===e&&(e=Ce());var t=e.css(\"float\");return e.css(\"float\",\"none\"),\"block\"==e.css(\"display\")?(e.css(\"float\",\"\"),e.css(\"float\")!=t&&e.css(\"float\",t),\"block\"):(e.css(\"float\",\"\"),e.css(\"float\")!=t&&e.css(\"float\",t),\"inline\")}function ye(){var e=A.popups.get(\"image.insert\");e||(e=X()),A.popups.isVisible(\"image.insert\")||(k(),A.popups.refresh(\"image.insert\"),A.popups.setContainer(\"image.insert\",A.$sc));var t=Ce(),a=t.outerWidth()/2;Se()&&(t=t.find(\".fr-img-wrap\"),a=C.outerWidth()/2);var i=t.offset().left+a,r=t.outerHeight(!0);A.opts.iframe&&Se()&&(r=C?C.outerHeight():0);var n=t.offset().top+t.outerHeight();A.popups.show(\"image.insert\",i,n,r,!0)}function we(){if(C){A.events.disableBlur(),A.selection.clear();var e=A.doc.createRange();e.selectNode(C.get(0)),A.browser.msie&&e.collapse(!0),A.selection.get().addRange(e),A.events.enableBlur()}}function Ae(){return C}function Ce(){return Se()?C.parents(\".fr-img-caption\").first():C}function Se(){return!!C&&0<C.parents(\".fr-img-caption\").length}function Ee(e){for(var t=document.createDocumentFragment();e.firstChild;){var a=e.removeChild(e.firstChild);t.appendChild(a)}e.parentNode.replaceChild(t,e)}return{_init:function Re(){var i;(function e(){A.events.$on(A.$el,A._mousedown,\"IMG\"==A.el.tagName?null:'img:not([contenteditable=\"false\"])',function(e){if(\"false\"==S(this).parents(\"contenteditable\").not(\".fr-element\").not(\".fr-img-caption\").not(\"body\").first().attr(\"contenteditable\"))return!0;A.helpers.isMobile()||A.selection.clear(),t=!0,A.popups.areVisible()&&A.events.disableBlur(),A.browser.msie&&(A.events.disableBlur(),A.$el.attr(\"contenteditable\",!1)),A.draggable||\"touchstart\"==e.type||e.preventDefault(),e.stopPropagation()}),A.events.$on(A.$el,A._mousedown,\".fr-img-caption .fr-inner\",function(e){A.core.hasFocus()||A.events.focus(),e.stopPropagation()}),A.events.$on(A.$el,\"paste\",\".fr-img-caption .fr-inner\",function(e){!0===A.opts.toolbarInline&&(A.toolbar.hide(),e.stopPropagation())}),A.events.$on(A.$el,A._mousedown,'img:not([contenteditable=\"false\"])',function(e){var t=this;A.browser.mozilla&&3==e.which&&(S(this).attr(\"contenteditable\",!1),setTimeout(function(){S(t).removeAttr(\"contenteditable\")},200))}),A.events.$on(A.$el,A._mouseup,\"IMG\"==A.el.tagName?null:'img:not([contenteditable=\"false\"])',function(e){if(\"false\"==S(this).parents(\"contenteditable\").not(\".fr-element\").not(\".fr-img-caption\").not(\"body\").first().attr(\"contenteditable\"))return!0;t&&(t=!1,e.stopPropagation(),A.browser.msie&&(A.$el.attr(\"contenteditable\",!0),A.events.enableBlur()))}),A.events.on(\"keyup\",function(e){if(e.shiftKey&&\"\"===A.selection.text().replace(/\\n/g,\"\")&&A.keys.isArrow(e.which)){var t=A.selection.element(),a=A.selection.endElement();t&&\"IMG\"==t.tagName?z(S(t)):a&&\"IMG\"==a.tagName&&z(S(a))}},!0),A.events.on(\"drop\",V),A.events.on(\"element.beforeDrop\",F),A.events.on(\"mousedown window.mousedown\",me),A.events.on(\"window.touchmove\",ue),A.events.on(\"mouseup window.mouseup\",function(){if(C&&!A.helpers.isMobile())return ce(),!1;ue()}),A.events.on(\"touchstart touchend\",function(){if(C&&A.helpers.isMobile())return ce(),!1;ue()}),A.events.on(\"commands.mousedown\",function(e){0<e.parents(\".fr-toolbar\").length&&ce()}),A.events.on(\"image.resizeEnd\",function(){A.opts.iframe&&A.size.syncIframe()}),A.events.on(\"blur image.hideResizer commands.undo commands.redo element.dropped\",function(){ce(!(t=!1))}),A.events.on(\"modals.hide\",function(){C&&(we(),A.selection.clear())}),A.events.on(\"image.resizeEnd\",function(){A.win.getSelection&&z(C)}),A.opts.imageAddNewLine&&A.events.on(\"image.inserted\",function(e){var t=e.get(0);for(t.nextSibling&&\"BR\"===t.nextSibling.tagName&&(t=t.nextSibling);t&&!A.node.isElement(t);)t=A.node.isLastSibling(t)?t.parentNode:null;A.node.isElement(t)&&(A.opts.enter===Me.ENTER_BR?e.after(\"<br>\"):S(A.node.blockParent(e.get(0))).after(\"<\".concat(A.html.defaultTag(),\"><br></\").concat(A.html.defaultTag(),\">\")))})})(),\"IMG\"==A.el.tagName&&A.$el.addClass(\"fr-view\"),A.events.$on(A.$el,A.helpers.isMobile()&&!A.helpers.isWindowsPhone()?\"touchend\":\"click\",\"IMG\"==A.el.tagName?null:'img:not([contenteditable=\"false\"])',fe),A.helpers.isMobile()&&(A.events.$on(A.$el,\"touchstart\",\"IMG\"==A.el.tagName?null:'img:not([contenteditable=\"false\"])',function(){a=!1}),A.events.$on(A.$el,\"touchmove\",function(){a=!0})),A.$wp?(A.events.on(\"window.keydown keydown\",ie,!0),A.events.on(\"keyup\",function(e){if(C&&e.which==Me.KEYCODE.ENTER)return!1},!0),A.events.$on(A.$el,\"keydown\",function(){var e=A.selection.element();(e.nodeType===Node.TEXT_NODE||\"BR\"==e.tagName&&A.node.isLastSibling(e))&&(e=e.parentNode),A.node.hasClass(e,\"fr-inner\")||(A.node.hasClass(e,\"fr-img-caption\")||(e=S(e).parents(\".fr-img-caption\").get(0)),A.node.hasClass(e,\"fr-img-caption\")&&(A.opts.trackChangesEnabled||S(e).after(Me.INVISIBLE_SPACE+Me.MARKERS),A.selection.restore()))})):A.events.$on(A.$win,\"keydown\",ie),A.events.on(\"toolbar.esc\",function(){if(C){if(A.$wp)A.events.disableBlur(),A.events.focus();else{var e=C;ce(!0),A.selection.setAfter(e.get(0)),A.selection.restore()}return!1}},!0),A.events.on(\"toolbar.focusEditor\",function(){if(C)return!1},!0),A.events.on(\"window.cut window.copy\",function(e){if(C&&A.popups.isVisible(\"image.edit\")&&!A.popups.get(\"image.edit\").find(\":focus\").length){var t=Ce();Se()?(t.before(Me.START_MARKER),t.after(Me.END_MARKER),A.selection.restore(),A.paste.saveCopiedText(t.get(0).outerHTML,t.text())):(we(),A.paste.saveCopiedText(C.get(0).outerHTML,C.attr(\"alt\"))),\"copy\"==e.type?setTimeout(function(){z(C)}):(ce(!0),A.undo.saveStep(),setTimeout(function(){A.undo.saveStep()},0))}},!0),A.browser.msie&&A.events.on(\"keydown\",function(e){if(!A.selection.isCollapsed()||!C)return!0;var t=e.which;t==Me.KEYCODE.C&&A.keys.ctrlKey(e)?A.events.trigger(\"window.copy\"):t==Me.KEYCODE.X&&A.keys.ctrlKey(e)&&A.events.trigger(\"window.cut\")}),A.events.$on(S(A.o_win),\"keydown\",function(e){var t=e.which;if(C&&t==Me.KEYCODE.BACKSPACE)return e.preventDefault(),!1}),A.events.$on(A.$win,\"keydown\",function(e){var t=e.which;C&&C.hasClass(\"fr-uploading\")&&t==Me.KEYCODE.ESC&&C.trigger(\"abortUpload\")}),A.events.on(\"destroy\",function(){C&&C.hasClass(\"fr-uploading\")&&C.trigger(\"abortUpload\")}),A.events.on(\"paste.before\",pe),A.events.on(\"paste.beforeCleanup\",ge),A.events.on(\"paste.after\",oe),A.events.on(\"html.set\",v),A.events.on(\"html.inserted\",v),v(),A.events.on(\"destroy\",function(){s=[]}),A.events.on(\"html.processGet\",re),A.opts.imageOutputSize&&A.events.on(\"html.beforeGet\",function(){i=A.el.querySelectorAll(\"img\");for(var e=0;e<i.length;e++){var t=i[e].style.width||S(i[e]).width(),a=i[e].style.height||S(i[e]).height();t&&i[e].setAttribute(\"width\",\"\".concat(t).replace(/px/,\"\")),a&&i[e].setAttribute(\"height\",\"\".concat(a).replace(/px/,\"\"))}}),A.opts.iframe&&A.events.on(\"image.loaded\",A.size.syncIframe),A.$wp&&(b(),A.events.on(\"contentChanged\",b)),A.events.$on(S(A.o_win),\"orientationchange.image\",function(){setTimeout(function(){C&&z(C)},100)}),P(!0),X(!0),ee(!0),J(!0),A.events.on(\"node.remove\",function(e){if(\"IMG\"==e.get(0).tagName)return ae(e),!1})},showInsertPopup:function Ue(){var e=A.$tb.find('.fr-command[data-cmd=\"insertImage\"]'),t=A.popups.get(\"image.insert\");if(t||(t=X()),k(),!t.hasClass(\"fr-active\"))if(A.popups.refresh(\"image.insert\"),A.popups.setContainer(\"image.insert\",A.$tb),e.isVisible()){var a=A.button.getPosition(e),i=a.left,r=a.top;A.popups.show(\"image.insert\",i,r,e.outerHeight())}else A.position.forSelection(t),A.popups.show(\"image.insert\")},showLayer:function De(e){var t,a,i=A.popups.get(\"image.insert\");if(C||A.opts.toolbarInline){if(C){var r=Ce(),n=0;Se()&&(r=r.find(\".fr-img-wrap\"),n=C.outerWidth()/2),a=r.offset().top+r.outerHeight(),t=r.offset().left+n}}else{var o=A.$tb.find('.fr-command[data-cmd=\"insertImage\"]');t=o.offset().left,a=o.offset().top+(A.opts.toolbarBottom?10:o.outerHeight()-10)}!C&&A.opts.toolbarInline&&(a=i.offset().top-A.helpers.getPX(i.css(\"margin-top\")),i.hasClass(\"fr-above\")&&(a+=i.outerHeight())),i.find(\".fr-layer\").removeClass(\"fr-active\"),i.find(\".fr-\".concat(e,\"-layer\")).addClass(\"fr-active\"),A.popups.show(\"image.insert\",t,a,C?C.outerHeight():0,Se()),A.accessibility.focusPopup(i)},refreshUploadButton:function xe(e){var t=A.popups.get(\"image.insert\");t&&t.find(\".fr-image-upload-layer\").hasClass(\"fr-active\")&&e.addClass(\"fr-active\").attr(\"aria-pressed\",!0)},refreshByURLButton:function Te(e){var t=A.popups.get(\"image.insert\");t&&t.find(\".fr-image-by-url-layer\").hasClass(\"fr-active\")&&e.addClass(\"fr-active\").attr(\"aria-pressed\",!0)},upload:H,insertByURL:function $e(){var e=A.popups.get(\"image.insert\").find(\".fr-image-by-url-layer input\");if(0<e.val().length){N(),B(A.language.translate(\"Loading image\"));var t=e.val().trim();if(A.opts.imageUploadRemoteUrls&&A.opts.imageCORSProxy&&A.opts.imageUpload){var a=new XMLHttpRequest;a.onload=function(){200==this.status?H([new Blob([this.response],{type:this.response.type||\"image/png\"})],C):I(i)},a.onerror=function(){_(t,!0,[],C)},a.open(\"GET\",\"\".concat(A.opts.imageCORSProxy,\"/\").concat(t),!0),a.responseType=\"blob\",a.send()}else _(t,!0,[],C);e.val(\"\"),e.blur()}},align:function Ie(e){var t=Ce();t.removeClass(\"fr-fir fr-fil\"),!A.opts.htmlUntouched&&A.opts.useClasses?\"left\"==e?t.addClass(\"fr-fil\"):\"right\"==e&&t.addClass(\"fr-fir\"):he(t,be(),e),we(),D(),n(),A.selection.clear()},refreshAlign:function Pe(e){C&&e.find(\"> *\").first().replaceWith(A.icon.create(\"image-align-\".concat(ve())))},refreshAlignOnShow:function Ne(e,t){C&&t.find('.fr-command[data-param1=\"'.concat(ve(),'\"]')).addClass(\"fr-active\").attr(\"aria-selected\",!0)},display:function ke(e){var t=Ce();t.removeClass(\"fr-dii fr-dib\"),!A.opts.htmlUntouched&&A.opts.useClasses?\"inline\"==e?t.addClass(\"fr-dii\"):\"block\"==e&&t.addClass(\"fr-dib\"):he(t,e,ve()),we(),D(),n(),A.selection.clear()},refreshDisplayOnShow:function Be(e,t){C&&t.find('.fr-command[data-param1=\"'.concat(be(),'\"]')).addClass(\"fr-active\").attr(\"aria-selected\",!0)},replace:ye,back:function e(){C?(A.events.disableBlur(),S(\".fr-popup input:focus\").blur(),z(C)):(A.events.disableBlur(),A.selection.restore(),A.events.enableBlur(),A.popups.hide(\"image.insert\"),A.toolbar.showInline())},get:Ae,getEl:Ce,insert:_,showProgressBar:N,remove:ae,hideProgressBar:k,applyStyle:function Oe(e,t,a){if(void 0===t&&(t=A.opts.imageStyles),void 0===a&&(a=A.opts.imageMultipleStyles),!C)return!1;var i=Ce();if(!a){var r=Object.keys(t);r.splice(r.indexOf(e),1),i.removeClass(r.join(\" \"))}\"object\"==Ke(t[e])?(i.removeAttr(\"style\"),i.css(t[e].style)):(i.toggleClass(e),Se()&&C.hasClass(e)&&C.removeClass(e)),z(C)},showAltPopup:j,showSizePopup:Z,setAlt:function ze(e){if(C){var t=A.popups.get(\"image.alt\");C.attr(\"alt\",e||t.find(\"input\").val()||\"\"),t.find(\"input:focus\").blur(),z(C)}},setSize:function Le(e,t){if(C){var a=A.popups.get(\"image.size\");e=e||a.find('input[name=\"width\"]').val()||\"\",t=t||a.find('input[name=\"height\"]').val()||\"\";var i=/^[\\d]+((px)|%)*$/g;C.removeAttr(\"width\").removeAttr(\"height\"),e.match(i)?C.css(\"width\",e):C.css(\"width\",\"\"),t.match(i)?C.css(\"height\",t):C.css(\"height\",\"\"),Se()&&(C.parents(\".fr-img-caption\").removeAttr(\"width\").removeAttr(\"height\"),e.match(i)?C.parents(\".fr-img-caption\").css(\"width\",e):C.parents(\".fr-img-caption\").css(\"width\",\"\"),t.match(i)?C.parents(\".fr-img-caption\").css(\"height\",t):C.parents(\".fr-img-caption\").css(\"height\",\"\")),a&&a.find(\"input:focus\").blur(),z(C)}},toggleCaption:function _e(){var e;if(C&&!Se()){(e=C).parent().is(\"a\")&&(e=C.parent());var t,a,i=C.parents(\"ul\")&&0<C.parents(\"ul\").length?C.parents(\"ul\"):C.parents(\"ol\")&&0<C.parents(\"ol\").length?C.parents(\"ol\"):[];if(0<i.length){var r=i.find(\"li\").length,n=C.parents(\"li\"),o=document.createElement(\"li\");r-1===n.index()&&(i.append(o),o.innerHTML=\" \")}e.attr(\"style\")?a=-1<(t=e.attr(\"style\").split(\":\")).indexOf(\"width\")?t[t.indexOf(\"width\")+1].replace(\";\",\"\"):\"\":e.attr(\"width\")&&(a=e.attr(\"width\"));var s=A.opts.imageResizeWithPercent?(-1<a.indexOf(\"px\")?null:a)||\"100%\":C.width()+\"px\";e.wrap('<div class=\"fr-img-space-wrap\"><span '+(A.browser.mozilla?\"\":'contenteditable=\"false\"')+'class=\"fr-img-caption '+C.attr(\"class\")+'\" style=\"'+(A.opts.useClasses?\"\":e.attr(\"style\"))+'\" draggable=\"false\"></span></div>'),e.wrap('<span class=\"fr-img-wrap\"></span>'),C.after('<span class=\"fr-inner\"'.concat(A.browser.mozilla?\"\":' contenteditable=\"true\"',\">\").concat(Me.START_MARKER).concat(A.language.translate(\"Image Caption\")).concat(Me.END_MARKER,\"</span>\")),C.parents(\".fr-img-caption\").css(\"width\",s);var l=C.parents(\".fr-img-space-wrap\").length;1==l?Ee(document.querySelector(\".fr-img-space-wrap\")):1<l&&(Ee(document.querySelector(\".fr-img-space-wrap\")),Ee(document.querySelector(\".fr-img-space-wrap2\"))),ce(!0),A.selection.restore()}else{if(e=Ce(),C.insertBefore(e),null!==e[0].querySelector(\"a\")){for(var p,g=e[0].querySelector(\"a\"),f=document.createElement(\"a\"),c=0,d=g.attributes,m=d.length;c<m;c++)p=d[c],f.setAttribute(p.nodeName,p.nodeValue);C.wrap(f)}C.attr(\"class\",e.attr(\"class\").replace(\"fr-img-caption\",\"\")).attr(\"style\",e.attr(\"style\")),e.remove();var u=C.parents(\".fr-img-space-wrap\").length;1==u?Ee(document.querySelector(\".fr-img-space-wrap\")):1<u&&(Ee(document.querySelector(\".fr-img-space-wrap\")),Ee(document.querySelector(\".fr-img-space-wrap2\"))),z(C)}},hasCaption:Se,exitEdit:ce,edit:z}},Me.DefineIcon(\"insertImage\",{NAME:\"image\",SVG_KEY:\"insertImage\"}),Me.RegisterShortcut(Me.KEYCODE.P,\"insertImage\",null,\"P\"),Me.RegisterCommand(\"insertImage\",{title:\"Insert Image\",undo:!1,focus:!0,refreshAfterCallback:!1,popup:!0,callback:function(){this.popups.isVisible(\"image.insert\")?(this.$el.find(\".fr-marker\").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"image.insert\")):this.image.showInsertPopup()},plugin:\"image\"}),Me.DefineIcon(\"imageUpload\",{NAME:\"upload\",SVG_KEY:\"upload\"}),Me.RegisterCommand(\"imageUpload\",{title:\"Upload Image\",undo:!1,focus:!1,toggle:!0,callback:function(){this.image.showLayer(\"image-upload\")},refresh:function(e){this.image.refreshUploadButton(e)}}),Me.DefineIcon(\"imageByURL\",{NAME:\"link\",SVG_KEY:\"insertLink\"}),Me.RegisterCommand(\"imageByURL\",{title:\"By URL\",undo:!1,focus:!1,toggle:!0,callback:function(){this.image.showLayer(\"image-by-url\")},refresh:function(e){this.image.refreshByURLButton(e)}}),Me.RegisterCommand(\"imageInsertByURL\",{title:\"Insert Image\",undo:!0,refreshAfterCallback:!1,callback:function(){this.image.insertByURL()},refresh:function(e){this.image.get()?e.text(this.language.translate(\"Replace\")):e.text(this.language.translate(\"Insert\"))}}),Me.DefineIcon(\"imageDisplay\",{NAME:\"star\",SVG_KEY:\"imageDisplay\"}),Me.RegisterCommand(\"imageDisplay\",{title:\"Display\",type:\"dropdown\",options:{inline:\"Inline\",block:\"Break Text\"},callback:function(e,t){this.image.display(t)},refresh:function(e){this.opts.imageTextNear||e.addClass(\"fr-hidden\")},refreshOnShow:function(e,t){this.image.refreshDisplayOnShow(e,t)}}),Me.DefineIcon(\"image-align\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),Me.DefineIcon(\"image-align-left\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),Me.DefineIcon(\"image-align-right\",{NAME:\"align-right\",SVG_KEY:\"alignRight\"}),Me.DefineIcon(\"image-align-center\",{NAME:\"align-justify\",SVG_KEY:\"alignCenter\"}),Me.DefineIcon(\"imageAlign\",{NAME:\"align-justify\",SVG_KEY:\"alignJustify\"}),Me.RegisterCommand(\"imageAlign\",{type:\"dropdown\",title:\"Align\",options:{left:\"Align Left\",center:\"None\",right:\"Align Right\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=Me.COMMANDS.imageAlign.options;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command fr-title\" tabIndex=\"-1\" role=\"option\" data-cmd=\"imageAlign\" data-param1=\"'.concat(a,'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.icon.create(\"image-align-\".concat(a)),'<span class=\"fr-sr-only\">').concat(this.language.translate(t[a]),\"</span></a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.image.align(t)},refresh:function(e){this.image.refreshAlign(e)},refreshOnShow:function(e,t){this.image.refreshAlignOnShow(e,t)}}),Me.DefineIcon(\"imageReplace\",{NAME:\"exchange\",FA5NAME:\"exchange-alt\",SVG_KEY:\"replaceImage\"}),Me.RegisterCommand(\"imageReplace\",{title:\"Replace\",undo:!1,focus:!1,popup:!0,refreshAfterCallback:!1,callback:function(){this.image.replace()}}),Me.DefineIcon(\"imageRemove\",{NAME:\"trash\",SVG_KEY:\"remove\"}),Me.RegisterCommand(\"imageRemove\",{title:\"Remove\",callback:function(){this.image.remove()}}),Me.DefineIcon(\"imageBack\",{NAME:\"arrow-left\",SVG_KEY:\"back\"}),Me.RegisterCommand(\"imageBack\",{title:\"Back\",undo:!1,focus:!1,back:!0,callback:function(){this.image.back()},refresh:function(e){this.$;this.image.get()||this.opts.toolbarInline?(e.removeClass(\"fr-hidden\"),e.next(\".fr-separator\").removeClass(\"fr-hidden\")):(e.addClass(\"fr-hidden\"),e.next(\".fr-separator\").addClass(\"fr-hidden\"))}}),Me.RegisterCommand(\"imageDismissError\",{title:\"OK\",undo:!1,callback:function(){this.image.hideProgressBar(!0)}}),Me.DefineIcon(\"imageStyle\",{NAME:\"magic\",SVG_KEY:\"imageClass\"}),Me.RegisterCommand(\"imageStyle\",{title:\"Style\",type:\"dropdown\",html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=this.opts.imageStyles;for(var a in t)if(t.hasOwnProperty(a)){var i=t[a];\"object\"==Ke(i)&&(i=i.title),e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"imageStyle\" data-param1=\"'.concat(a,'\">').concat(this.language.translate(i),\"</a></li>\")}return e+=\"</ul>\"},callback:function(e,t){this.image.applyStyle(t)},refreshOnShow:function(e,t){var a=this.$,i=this.image.getEl();i&&t.find(\".fr-command\").each(function(){var e=a(this).data(\"param1\"),t=i.hasClass(e);a(this).toggleClass(\"fr-active\",t).attr(\"aria-selected\",t)})}}),Me.DefineIcon(\"imageAlt\",{NAME:\"info\",SVG_KEY:\"imageAltText\"}),Me.RegisterCommand(\"imageAlt\",{undo:!1,focus:!1,popup:!0,title:\"Alternative Text\",callback:function(){this.image.showAltPopup()}}),Me.RegisterCommand(\"imageSetAlt\",{undo:!0,focus:!1,title:\"Update\",refreshAfterCallback:!1,callback:function(){this.image.setAlt()}}),Me.DefineIcon(\"imageSize\",{NAME:\"arrows-alt\",SVG_KEY:\"imageSize\"}),Me.RegisterCommand(\"imageSize\",{undo:!1,focus:!1,popup:!0,title:\"Change Size\",callback:function(){this.image.showSizePopup()}}),Me.RegisterCommand(\"imageSetSize\",{undo:!0,focus:!1,title:\"Update\",refreshAfterCallback:!1,callback:function(){this.image.setSize()}}),Me.DefineIcon(\"imageCaption\",{NAME:\"commenting\",FA5NAME:\"comment-alt\",SVG_KEY:\"imageCaption\"}),Me.RegisterCommand(\"imageCaption\",{undo:!0,focus:!1,title:\"Image Caption\",refreshAfterCallback:!0,callback:function(){this.image.toggleCaption()},refresh:function(e){this.image.get()&&e.toggleClass(\"fr-active\",this.image.hasCaption())}})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(y){\"use strict\";y=y&&y.hasOwnProperty(\"default\")?y[\"default\"]:y,Object.assign(y.POPUP_TEMPLATES,{\"link.edit\":\"[_BUTTONS_]\",\"link.insert\":\"[_BUTTONS_][_INPUT_LAYER_]\"}),Object.assign(y.DEFAULTS,{linkEditButtons:[\"linkOpen\",\"linkStyle\",\"linkEdit\",\"linkRemove\"],linkInsertButtons:[\"linkBack\",\"|\",\"linkList\"],linkAttributes:{},linkAutoPrefix:\"http://\",linkStyles:{\"fr-green\":\"Green\",\"fr-strong\":\"Thick\"},linkMultipleStyles:!0,linkConvertEmailAddress:!0,linkAlwaysBlank:!1,linkAlwaysNoFollow:!1,linkNoOpener:!0,linkNoReferrer:!0,linkList:[{text:\"Froala\",href:\"https://froala.com\",target:\"_blank\"},{text:\"Google\",href:\"https://google.com\",target:\"_blank\"},{displayText:\"Facebook\",href:\"https://facebook.com\"}],linkText:!0}),y.PLUGINS.link=function(h){var m=h.$;function v(){var e=h.image?h.image.get():null;if(e||!h.$wp)return\"A\"==h.el.tagName?h.el:e&&e.get(0).parentNode&&\"A\"==e.get(0).parentNode.tagName?e.get(0).parentNode:void 0;var t=h.selection.ranges(0).commonAncestorContainer;try{t&&(t.contains&&t.contains(h.el)||!h.el.contains(t)||h.el==t)&&(t=null)}catch(r){t=null}if(t&&\"A\"===t.tagName)return t;var n=h.selection.element(),i=h.selection.endElement();\"A\"==n.tagName||h.node.isElement(n)||(n=m(n).parentsUntil(h.$el,\"a\").first().get(0)),\"A\"==i.tagName||h.node.isElement(i)||(i=m(i).parentsUntil(h.$el,\"a\").first().get(0));try{i&&(i.contains&&i.contains(h.el)||!h.el.contains(i)||h.el==i)&&(i=null)}catch(r){i=null}try{n&&(n.contains&&n.contains(h.el)||!h.el.contains(n)||h.el==n)&&(n=null)}catch(r){n=null}return i&&i==n&&\"A\"==i.tagName?(h.browser.msie||h.helpers.isMobile())&&(h.selection.info(n).atEnd||h.selection.info(n).atStart)?null:n:null}function b(){var e,t,n,i,r=h.image?h.image.get():null,a=[];if(r)\"A\"==r.get(0).parentNode.tagName&&a.push(r.get(0).parentNode);else if(h.win.getSelection){var l=h.win.getSelection();if(l.getRangeAt&&l.rangeCount){i=h.doc.createRange();for(var s=0;s<l.rangeCount;++s)if((t=(e=l.getRangeAt(s)).commonAncestorContainer)&&1!=t.nodeType&&(t=t.parentNode),t&&\"a\"==t.nodeName.toLowerCase())a.push(t);else{n=t.getElementsByTagName(\"a\");for(var o=0;o<n.length;++o)i.selectNodeContents(n[o]),i.compareBoundaryPoints(e.END_TO_START,e)<1&&-1<i.compareBoundaryPoints(e.START_TO_END,e)&&a.push(n[o])}}}else if(h.doc.selection&&\"Control\"!=h.doc.selection.type)if(\"a\"==(t=(e=h.doc.selection.createRange()).parentElement()).nodeName.toLowerCase())a.push(t);else{n=t.getElementsByTagName(\"a\"),i=h.doc.body.createTextRange();for(var p=0;p<n.length;++p)i.moveToElementText(n[p]),-1<i.compareEndPoints(\"StartToEnd\",e)&&i.compareEndPoints(\"EndToStart\",e)<1&&a.push(n[p])}return a}function E(r){if(h.core.hasFocus()||h.opts.iframe&&(!document.hasFocus||document.hasFocus())){if(a(),r&&\"keyup\"===r.type&&(r.altKey||r.which==y.KEYCODE.ALT))return!0;setTimeout(function(){if(!r||r&&(1==r.which||\"mouseup\"!=r.type)){var e=v(),t=h.image?h.image.get():null;if(e&&!t){if(h.image){var n=h.node.contents(e);if(1==n.length&&\"IMG\"==n[0].tagName){var i=h.selection.ranges(0);return 0===i.startOffset&&0===i.endOffset?m(e).before(y.INVISIBLE_SPACE+y.MARKERS):m(e).after(y.INVISIBLE_SPACE+y.MARKERS),h.selection.restore(),!1}}r&&r.stopPropagation(),l(e)}}},h.helpers.isIOS()?100:0)}}function l(e){var t=h.popups.get(\"link.edit\");t||(t=function a(){var e=\"\";1<=h.opts.linkEditButtons.length&&(\"A\"==h.el.tagName&&0<=h.opts.linkEditButtons.indexOf(\"linkRemove\")&&h.opts.linkEditButtons.splice(h.opts.linkEditButtons.indexOf(\"linkRemove\"),1),e='<div class=\"fr-buttons\">'.concat(h.button.buildList(h.opts.linkEditButtons),\"</div>\"));var t={buttons:e},n=h.popups.create(\"link.edit\",t);h.$wp&&h.events.$on(h.$wp,\"scroll.link-edit\",function(){v()&&h.popups.isVisible(\"link.edit\")&&l(v())});return n}());var n=m(e);h.popups.isVisible(\"link.edit\")||h.popups.refresh(\"link.edit\"),h.popups.setContainer(\"link.edit\",h.$sc);var i=n.offset().left+n.outerWidth()/2,r=n.offset().top+n.outerHeight();h.popups.show(\"link.edit\",i,r,n.outerHeight(),!0)}function a(){h.popups.hide(\"link.edit\")}function o(){var e=h.popups.get(\"link.insert\"),t=v();if(t){var n,i,r=m(t),a=e.find('input.fr-link-attr[type=\"text\"]'),l=e.find('input.fr-link-attr[type=\"checkbox\"]');for(n=0;n<a.length;n++)(i=m(a[n])).val(r.attr(i.attr(\"name\")||\"\"));for(l.attr(\"checked\",!1),n=0;n<l.length;n++)i=m(l[n]),r.attr(i.attr(\"name\"))==i.data(\"checked\")&&i.attr(\"checked\",!0);e.find('input.fr-link-attr[type=\"text\"][name=\"text\"]').val(r.text())}else e.find('input.fr-link-attr[type=\"text\"]').val(\"\"),e.find('input.fr-link-attr[type=\"checkbox\"]').attr(\"checked\",!1),e.find('input.fr-link-attr[type=\"text\"][name=\"text\"]').val(h.selection.text());e.find(\"input.fr-link-attr\").trigger(\"change\"),(h.image?h.image.get():null)?e.find('.fr-link-attr[name=\"text\"]').parent().hide():e.find('.fr-link-attr[name=\"text\"]').parent().show()}function s(e){if(e)return h.popups.onRefresh(\"link.insert\",o),!0;var t=\"\";1<=h.opts.linkInsertButtons.length&&(t='<div class=\"fr-buttons fr-tabs\">'.concat(h.button.buildList(h.opts.linkInsertButtons),\"</div>\"));var n=\"\",i=0;for(var r in n='<div class=\"fr-link-insert-layer fr-layer fr-active\" id=\"fr-link-insert-layer-'.concat(h.id,'\">'),n+='<div class=\"fr-input-line\"><input id=\"fr-link-insert-layer-url-'.concat(h.id,'\" name=\"href\" type=\"text\" class=\"fr-link-attr\" placeholder=\"').concat(h.language.translate(\"URL\"),'\" tabIndex=\"').concat(++i,'\"></div>'),h.opts.linkText&&(n+='<div class=\"fr-input-line\"><input id=\"fr-link-insert-layer-text-'.concat(h.id,'\" name=\"text\" type=\"text\" class=\"fr-link-attr\" placeholder=\"').concat(h.language.translate(\"Text\"),'\" tabIndex=\"').concat(++i,'\"></div>')),h.opts.linkAttributes)if(h.opts.linkAttributes.hasOwnProperty(r)){var a=h.opts.linkAttributes[r];n+='<div class=\"fr-input-line\"><input name=\"'.concat(r,'\" type=\"text\" class=\"fr-link-attr\" placeholder=\"').concat(h.language.translate(a),'\" tabIndex=\"').concat(++i,'\"></div>')}h.opts.linkAlwaysBlank||(n+='<div class=\"fr-checkbox-line\"><span class=\"fr-checkbox\"><input name=\"target\" class=\"fr-link-attr\" data-checked=\"_blank\" type=\"checkbox\" id=\"fr-link-target-'.concat(h.id,'\" tabIndex=\"').concat(++i,'\"><span>').concat('<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"10\" height=\"10\" viewBox=\"0 0 32 32\"><path d=\"M27 4l-15 15-7-7-5 5 12 12 20-20z\" fill=\"#FFF\"></path></svg>','</span></span><label id=\"fr-label-target-').concat(h.id,'\">').concat(h.language.translate(\"Open in new tab\"),\"</label></div>\"));var l={buttons:t,input_layer:n+='<div class=\"fr-action-buttons\"><button class=\"fr-command fr-submit\" role=\"button\" data-cmd=\"linkInsert\" href=\"#\" tabIndex=\"'.concat(++i,'\" type=\"button\">').concat(h.language.translate(\"Insert\"),\"</button></div></div>\")},s=h.popups.create(\"link.insert\",l);return h.$wp&&h.events.$on(h.$wp,\"scroll.link-insert\",function(){(h.image?h.image.get():null)&&h.popups.isVisible(\"link.insert\")&&f(),h.popups.isVisible(\"link.insert\")&&c()}),s}function p(e,t,n){if(h.opts.trackChangesEnabled){if(h.edit.on(),h.events.focus(!0),h.undo.saveStep(),h.markers.insert(),h.html.wrap(),!h.$el.find(\".fr-marker\").length)return void h.popups.hide(\"link.insert\");h.markers.remove()}if(void 0===n&&(n={}),!1===h.events.trigger(\"link.beforeInsert\",[e,t,n]))return!1;var i=h.image?h.image.get():null;i||\"A\"==h.el.tagName?\"A\"==h.el.tagName&&h.$el.focus():(h.selection.restore(),h.popups.hide(\"link.insert\"));var r=e;h.opts.linkConvertEmailAddress&&h.helpers.isEmail(e)&&!/^mailto:.*/i.test(e)&&(e=\"mailto:\".concat(e));if(\"\"===h.opts.linkAutoPrefix||new RegExp(\"^(\"+y.LinkProtocols.join(\"|\")+\"):.\",\"i\").test(e)||/^data:image.*/i.test(e)||/^(https?:|ftps?:|file:|)\\/\\//i.test(e)||/^([A-Za-z]:(\\\\){1,2}|[A-Za-z]:((\\\\){1,2}[^\\\\]+)+)(\\\\)?$/i.test(e)||[\"/\",\"{\",\"[\",\"#\",\"(\",\".\",'\"',\"\\\\\"].indexOf((e||\"\")[0])<0&&(e=h.opts.linkAutoPrefix+e),e=h.helpers.sanitizeURL(e),h.opts.linkAlwaysBlank&&(n.target=\"_blank\"),h.opts.linkAlwaysNoFollow&&(n.rel=\"nofollow\"),h.helpers.isEmail(r)&&(n.target=null,n.rel=null),\"_blank\"==n.target?(h.opts.linkNoOpener&&(n.rel?n.rel+=\" noopener\":n.rel=\"noopener\"),h.opts.linkNoReferrer&&(n.rel?n.rel+=\" noreferrer\":n.rel=\"noreferrer\")):null==n.target&&(n.rel?n.rel=n.rel.replace(/noopener/,\"\").replace(/noreferrer/,\"\"):n.rel=null),t=t||\"\",e===h.opts.linkAutoPrefix)return h.popups.get(\"link.insert\").find('input[name=\"href\"]').addClass(\"fr-error\"),h.events.trigger(\"link.bad\",[r]),!1;var a,l=v();if(l){if((a=m(l)).attr(\"href\",e),0<t.length&&a.text()!=t&&!i){if(h.opts.trackChangesEnabled){var s=m(a.get(0).outerHTML);s.insertBefore(a.parent());var o=h.track_changes.wrapLinkInTracking(s,h.track_changes.getPendingChanges().length-1),p=h.track_changes.wrapInDelete(o);a.parent().append(p)}for(var c=a.get(0);1===c.childNodes.length&&c.childNodes[0].nodeType==Node.ELEMENT_NODE;)c=c.childNodes[0];m(c).text(t)}for(var f in i||a.prepend(y.START_MARKER).append(y.END_MARKER),n)n[f]?a.attr(f,n[f]):a.removeAttr(f);i||h.selection.restore()}else{i?(i.wrap('<a href=\"'.concat(e,'\"></a>')),h.image.hasCaption()&&i.parent().append(i.parents(\".fr-img-caption\").find(\".fr-inner\"))):(h.format.remove(\"a\"),h.selection.isCollapsed()?(t=0===t.length?r:t,h.html.insert('<a href=\"'.concat(e,'\">').concat(y.START_MARKER).concat(t.replace(/&/g,\"&\").replace(/</,\"<\",\">\",\">\")).concat(y.END_MARKER,\"</a>\")),h.selection.restore()):0<t.length&&t!=h.selection.text().replace(/\\n/g,\"\")?(h.selection.remove(),h.html.insert('<a href=\"'.concat(e,'\">').concat(y.START_MARKER).concat(t.replace(/&/g,\"&\")).concat(y.END_MARKER,\"</a>\")),h.selection.restore()):(!function g(){if(!h.selection.isCollapsed()){h.selection.save();for(var e=h.$el.find(\".fr-marker\").addClass(\"fr-unprocessed\").toArray();e.length;){var t=m(e.pop());t.removeClass(\"fr-unprocessed\");var n=h.node.deepestParent(t.get(0));if(n){for(var i=t.get(0),r=\"\",a=\"\";i=i.parentNode,h.node.isBlock(i)||(r+=h.node.closeTagString(i),a=h.node.openTagString(i)+a),i!=n;);var l=h.node.openTagString(t.get(0))+t.html()+h.node.closeTagString(t.get(0));t.replaceWith('<span id=\"fr-break\"></span>');var s=n.outerHTML;s=(s=s.replace(/<span id=\"fr-break\"><\\/span>/g,r+l+a)).replace(a+r,\"\"),n.outerHTML=s}e=h.$el.find(\".fr-marker.fr-unprocessed\").toArray()}h.html.cleanEmptyTags(),h.selection.restore()}}(),h.format.apply(\"a\",{href:e})));for(var d=b(),u=0;u<d.length;u++)(a=m(d[u])).attr(n),a.removeAttr(\"_moz_dirty\");1==d.length&&h.$wp&&!i&&(m(d[0]).prepend(y.START_MARKER).append(y.END_MARKER),h.selection.restore())}if(i){var k=h.popups.get(\"link.insert\");k&&k.find(\"input:focus\").blur(),h.image.edit(i)}else E()}function c(){a();var e=v();if(e){var t=h.popups.get(\"link.insert\");t||(t=s()),h.popups.isVisible(\"link.insert\")||(h.popups.refresh(\"link.insert\"),h.selection.save(),h.helpers.isMobile()&&(h.events.disableBlur(),h.$el.blur(),h.events.enableBlur())),h.popups.setContainer(\"link.insert\",h.$sc);var n=(h.image?h.image.get():null)||m(e),i=n.offset().left+n.outerWidth()/2,r=n.offset().top+n.outerHeight();h.popups.show(\"link.insert\",i,r,n.outerHeight(),!0)}}function f(){var e=h.image?h.image.getEl():null;if(e){var t=h.popups.get(\"link.insert\"),n=e.outerWidth()/2;h.image.hasCaption()&&(e=e.find(\".fr-img-wrap\"),m(e)&&m(e).find(\"img\")&&(n=m(e).find(\"img\").outerWidth()/2)),t||(t=s()),o(),h.popups.setContainer(\"link.insert\",h.$sc);var i=e.offset().left+n,r=e.offset().top+e.outerHeight(),a=e.outerHeight();h.opts.iframe&&h.image.hasCaption()&&m(e)&&m(e).find(\"img\")&&(a=m(e).find(\"img\").outerHeight()),h.popups.show(\"link.insert\",i,r,a,!0)}}return{_init:function e(){h.events.on(\"keyup\",function(e){e.which!=y.KEYCODE.ESC&&E(e)}),h.events.on(\"window.mouseup\",E),h.events.$on(h.$el,\"click\",\"a\",function(e){h.edit.isDisabled()&&e.preventDefault()}),h.helpers.isMobile()&&h.events.$on(h.$doc,\"selectionchange\",E),s(!0),\"A\"==h.el.tagName&&h.$el.addClass(\"fr-view\"),h.events.on(\"toolbar.esc\",function(){if(h.popups.isVisible(\"link.edit\"))return h.events.disableBlur(),h.events.focus(),!1},!0)},remove:function i(){var e=v(),t=h.image?h.image.get():null;if(!1===h.events.trigger(\"link.beforeRemove\",[e]))return!1;if(t&&e)if(h.image.hasCaption()){t.addClass(\"img-link-caption\"),m(e).replaceWith(m(e).html());var n=document.querySelectorAll(\"img.img-link-caption\");h.image.edit(m(n[0])),m(n[0]).removeClass(\"img-link-caption\")}else t.unwrap(),h.image.edit(t);else e&&(h.selection.save(),m(e).replaceWith(m(e).html()),h.selection.restore(),a())},showInsertPopup:function d(){var e=h.$tb.find('.fr-command[data-cmd=\"insertLink\"]'),t=h.popups.get(\"link.insert\");if(t||(t=s()),!t.hasClass(\"fr-active\"))if(h.popups.refresh(\"link.insert\"),h.popups.setContainer(\"link.insert\",h.$tb||h.$sc),e.isVisible()){var n=h.button.getPosition(e),i=n.left,r=n.top;h.popups.show(\"link.insert\",i,r,e.outerHeight())}else h.position.forSelection(t),h.popups.show(\"link.insert\")},usePredefined:function u(e){var t,n,i=h.opts.linkList[e],r=h.popups.get(\"link.insert\"),a=r.find('input.fr-link-attr[type=\"text\"]'),l=r.find('input.fr-link-attr[type=\"checkbox\"]');for(i.rel&&(r.rel=i.rel),n=0;n<a.length;n++)i[(t=m(a[n])).attr(\"name\")]?(t.val(i[t.attr(\"name\")]),t.toggleClass(\"fr-not-empty\",!0)):\"text\"!=t.attr(\"name\")&&t.val(\"\");for(n=0;n<l.length;n++)(t=m(l[n])).attr(\"checked\",t.data(\"checked\")==i[t.attr(\"name\")]);h.accessibility.focusPopup(r)},insertCallback:function k(){var e,t,n=h.popups.get(\"link.insert\"),i=n.find('input.fr-link-attr[type=\"text\"]'),r=n.find('input.fr-link-attr[type=\"checkbox\"]'),a=(i.filter('[name=\"href\"]').val()||\"\").trim(),l=h.opts.linkText?i.filter('[name=\"text\"]').val():\"\",s={};for(t=0;t<i.length;t++)e=m(i[t]),[\"href\",\"text\"].indexOf(e.attr(\"name\"))<0&&(s[e.attr(\"name\")]=e.val());for(t=0;t<r.length;t++)(e=m(r[t])).is(\":checked\")?s[e.attr(\"name\")]=e.data(\"checked\"):s[e.attr(\"name\")]=e.data(\"unchecked\")||null;n.rel&&(s.rel=n.rel);var o=h.helpers.scrollTop();p(a,l,s),m(h.o_win).scrollTop(o)},insert:p,update:c,get:v,allSelected:b,back:function t(){h.image&&h.image.get()?h.image.back():(h.events.disableBlur(),h.selection.restore(),h.events.enableBlur(),v()&&h.$wp?(h.selection.restore(),a(),E()):\"A\"==h.el.tagName?(h.$el.focus(),E()):(h.popups.hide(\"link.insert\"),h.toolbar.showInline()))},imageLink:f,applyStyle:function g(e,t,n){void 0===n&&(n=h.opts.linkMultipleStyles),void 0===t&&(t=h.opts.linkStyles);var i=v();if(!i)return!1;if(!n){var r=Object.keys(t);r.splice(r.indexOf(e),1),m(i).removeClass(r.join(\" \"))}m(i).toggleClass(e),E()}}},y.DefineIcon(\"insertLink\",{NAME:\"link\",SVG_KEY:\"insertLink\"}),y.RegisterShortcut(y.KEYCODE.K,\"insertLink\",null,\"K\"),y.RegisterCommand(\"insertLink\",{title:\"Insert Link\",undo:!1,focus:!0,refreshOnCallback:!1,popup:!0,callback:function(){this.popups.isVisible(\"link.insert\")?(this.$el.find(\".fr-marker\").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"link.insert\")):this.link.showInsertPopup()},plugin:\"link\"}),y.DefineIcon(\"linkOpen\",{NAME:\"external-link\",FA5NAME:\"external-link-alt\",SVG_KEY:\"openLink\"}),y.RegisterCommand(\"linkOpen\",{title:\"Open Link\",undo:!1,refresh:function(e){this.link.get()?e.removeClass(\"fr-hidden\"):e.addClass(\"fr-hidden\")},callback:function(){var e=this.link.get();e&&(-1!==e.href.indexOf(\"mailto:\")?this.o_win.open(e.href).close():(e.target||(e.target=\"_self\"),this.browser.msie||this.browser.edge?this.o_win.open(e.href,e.target):this.o_win.open(e.href,e.target,\"noopener\")),this.popups.hide(\"link.edit\"))},plugin:\"link\"}),y.DefineIcon(\"linkEdit\",{NAME:\"edit\",SVG_KEY:\"edit\"}),y.RegisterCommand(\"linkEdit\",{title:\"Edit Link\",undo:!1,refreshAfterCallback:!1,popup:!0,callback:function(){this.link.update()},refresh:function(e){this.link.get()?e.removeClass(\"fr-hidden\"):e.addClass(\"fr-hidden\")},plugin:\"link\"}),y.DefineIcon(\"linkRemove\",{NAME:\"unlink\",SVG_KEY:\"unlink\"}),y.RegisterCommand(\"linkRemove\",{title:\"Unlink\",callback:function(){this.link.remove()},refresh:function(e){this.link.get()?e.removeClass(\"fr-hidden\"):e.addClass(\"fr-hidden\")},plugin:\"link\"}),y.DefineIcon(\"linkBack\",{NAME:\"arrow-left\",SVG_KEY:\"back\"}),y.RegisterCommand(\"linkBack\",{title:\"Back\",undo:!1,focus:!1,back:!0,refreshAfterCallback:!1,callback:function(){this.link.back()},refresh:function(e){var t=this.link.get()&&this.doc.hasFocus();(this.image?this.image.get():null)||t||this.opts.toolbarInline?(e.removeClass(\"fr-hidden\"),e.next(\".fr-separator\").removeClass(\"fr-hidden\")):(e.addClass(\"fr-hidden\"),e.next(\".fr-separator\").addClass(\"fr-hidden\"))},plugin:\"link\"}),y.DefineIcon(\"linkList\",{NAME:\"search\",SVG_KEY:\"search\"}),y.RegisterCommand(\"linkList\",{title:\"Choose Link\",type:\"dropdown\",focus:!1,undo:!1,refreshAfterCallback:!1,html:function(){for(var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=this.opts.linkList,n=0;n<t.length;n++)e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"linkList\" data-param1=\"'.concat(n,'\">').concat(t[n].displayText||t[n].text,\"</a></li>\");return e+=\"</ul>\"},callback:function(e,t){this.link.usePredefined(t)},plugin:\"link\"}),y.RegisterCommand(\"linkInsert\",{focus:!1,refreshAfterCallback:!1,callback:function(){this.link.insertCallback()},refresh:function(e){this.link.get()?e.text(this.language.translate(\"Update\")):e.text(this.language.translate(\"Insert\"))},plugin:\"link\"}),y.DefineIcon(\"imageLink\",{NAME:\"link\",SVG_KEY:\"insertLink\"}),y.RegisterCommand(\"imageLink\",{title:\"Insert Link\",undo:!1,focus:!1,popup:!0,callback:function(){this.link.imageLink()},refresh:function(e){var t;this.link.get()?((t=e.prev()).hasClass(\"fr-separator\")&&t.removeClass(\"fr-hidden\"),e.addClass(\"fr-hidden\")):((t=e.prev()).hasClass(\"fr-separator\")&&t.addClass(\"fr-hidden\"),e.removeClass(\"fr-hidden\"))},plugin:\"link\"}),y.DefineIcon(\"linkStyle\",{NAME:\"magic\",SVG_KEY:\"linkStyles\"}),y.RegisterCommand(\"linkStyle\",{title:\"Style\",type:\"dropdown\",html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=this.opts.linkStyles;for(var n in t)t.hasOwnProperty(n)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"linkStyle\" data-param1=\"'.concat(n,'\">').concat(this.language.translate(t[n]),\"</a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.link.applyStyle(t)},refreshOnShow:function(e,t){var n=this.$,i=this.link.get();if(i){var r=n(i);t.find(\".fr-command\").each(function(){var e=n(this).data(\"param1\"),t=r.hasClass(e);n(this).toggleClass(\"fr-active\",t).attr(\"aria-selected\",t)})}},refresh:function(e){this.link.get()?e.removeClass(\"fr-hidden\"):e.addClass(\"fr-hidden\")},plugin:\"link\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(c,E){\"object\"==typeof exports&&\"undefined\"!=typeof module?E(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],E):E(c.FroalaEditor)}(this,function(t){\"use strict\";t=t&&t.hasOwnProperty(\"default\")?t[\"default\"]:t,Object.assign(t.DEFAULTS,{specialCharactersSets:[{title:\"Latin\",\"char\":\"¡\",list:[{\"char\":\"¡\",desc:\"INVERTED EXCLAMATION MARK\"},{\"char\":\"¢\",desc:\"CENT SIGN\"},{\"char\":\"£\",desc:\"POUND SIGN\"},{\"char\":\"¤\",desc:\"CURRENCY SIGN\"},{\"char\":\"¥\",desc:\"YEN SIGN\"},{\"char\":\"¦\",desc:\"BROKEN BAR\"},{\"char\":\"§\",desc:\"SECTION SIGN\"},{\"char\":\"¨\",desc:\"DIAERESIS\"},{\"char\":\"©\",desc:\"COPYRIGHT SIGN\"},{\"char\":\"™\",desc:\"TRADEMARK SIGN\"},{\"char\":\"ª\",desc:\"FEMININE ORDINAL INDICATOR\"},{\"char\":\"«\",desc:\"LEFT-POINTING DOUBLE ANGLE QUOTATION MARK\"},{\"char\":\"¬\",desc:\"NOT SIGN\"},{\"char\":\"®\",desc:\"REGISTERED SIGN\"},{\"char\":\"¯\",desc:\"MACRON\"},{\"char\":\"°\",desc:\"DEGREE SIGN\"},{\"char\":\"±\",desc:\"PLUS-MINUS SIGN\"},{\"char\":\"²\",desc:\"SUPERSCRIPT TWO\"},{\"char\":\"³\",desc:\"SUPERSCRIPT THREE\"},{\"char\":\"´\",desc:\"ACUTE ACCENT\"},{\"char\":\"µ\",desc:\"MICRO SIGN\"},{\"char\":\"¶\",desc:\"PILCROW SIGN\"},{\"char\":\"·\",desc:\"MIDDLE DOT\"},{\"char\":\"¸\",desc:\"CEDILLA\"},{\"char\":\"¹\",desc:\"SUPERSCRIPT ONE\"},{\"char\":\"º\",desc:\"MASCULINE ORDINAL INDICATOR\"},{\"char\":\"»\",desc:\"RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK\"},{\"char\":\"¼\",desc:\"VULGAR FRACTION ONE QUARTER\"},{\"char\":\"½\",desc:\"VULGAR FRACTION ONE HALF\"},{\"char\":\"¾\",desc:\"VULGAR FRACTION THREE QUARTERS\"},{\"char\":\"¿\",desc:\"INVERTED QUESTION MARK\"},{\"char\":\"À\",desc:\"LATIN CAPITAL LETTER A WITH GRAVE\"},{\"char\":\"Á\",desc:\"LATIN CAPITAL LETTER A WITH ACUTE\"},{\"char\":\"Â\",desc:\"LATIN CAPITAL LETTER A WITH CIRCUMFLEX\"},{\"char\":\"Ã\",desc:\"LATIN CAPITAL LETTER A WITH TILDE\"},{\"char\":\"Ä\",desc:\"LATIN CAPITAL LETTER A WITH DIAERESIS \"},{\"char\":\"Å\",desc:\"LATIN CAPITAL LETTER A WITH RING ABOVE\"},{\"char\":\"Æ\",desc:\"LATIN CAPITAL LETTER AE\"},{\"char\":\"Ç\",desc:\"LATIN CAPITAL LETTER C WITH CEDILLA\"},{\"char\":\"È\",desc:\"LATIN CAPITAL LETTER E WITH GRAVE\"},{\"char\":\"É\",desc:\"LATIN CAPITAL LETTER E WITH ACUTE\"},{\"char\":\"Ê\",desc:\"LATIN CAPITAL LETTER E WITH CIRCUMFLEX\"},{\"char\":\"Ë\",desc:\"LATIN CAPITAL LETTER E WITH DIAERESIS\"},{\"char\":\"Ì\",desc:\"LATIN CAPITAL LETTER I WITH GRAVE\"},{\"char\":\"Í\",desc:\"LATIN CAPITAL LETTER I WITH ACUTE\"},{\"char\":\"Î\",desc:\"LATIN CAPITAL LETTER I WITH CIRCUMFLEX\"},{\"char\":\"Ï\",desc:\"LATIN CAPITAL LETTER I WITH DIAERESIS\"},{\"char\":\"Ð\",desc:\"LATIN CAPITAL LETTER ETH\"},{\"char\":\"Ñ\",desc:\"LATIN CAPITAL LETTER N WITH TILDE\"},{\"char\":\"Ò\",desc:\"LATIN CAPITAL LETTER O WITH GRAVE\"},{\"char\":\"Ó\",desc:\"LATIN CAPITAL LETTER O WITH ACUTE\"},{\"char\":\"Ô\",desc:\"LATIN CAPITAL LETTER O WITH CIRCUMFLEX\"},{\"char\":\"Õ\",desc:\"LATIN CAPITAL LETTER O WITH TILDE\"},{\"char\":\"Ö\",desc:\"LATIN CAPITAL LETTER O WITH DIAERESIS\"},{\"char\":\"×\",desc:\"MULTIPLICATION SIGN\"},{\"char\":\"Ø\",desc:\"LATIN CAPITAL LETTER O WITH STROKE\"},{\"char\":\"Ù\",desc:\"LATIN CAPITAL LETTER U WITH GRAVE\"},{\"char\":\"Ú\",desc:\"LATIN CAPITAL LETTER U WITH ACUTE\"},{\"char\":\"Û\",desc:\"LATIN CAPITAL LETTER U WITH CIRCUMFLEX\"},{\"char\":\"Ü\",desc:\"LATIN CAPITAL LETTER U WITH DIAERESIS\"},{\"char\":\"Ý\",desc:\"LATIN CAPITAL LETTER Y WITH ACUTE\"},{\"char\":\"Þ\",desc:\"LATIN CAPITAL LETTER THORN\"},{\"char\":\"ß\",desc:\"LATIN SMALL LETTER SHARP S\"},{\"char\":\"à\",desc:\"LATIN SMALL LETTER A WITH GRAVE\"},{\"char\":\"á\",desc:\"LATIN SMALL LETTER A WITH ACUTE \"},{\"char\":\"â\",desc:\"LATIN SMALL LETTER A WITH CIRCUMFLEX\"},{\"char\":\"ã\",desc:\"LATIN SMALL LETTER A WITH TILDE\"},{\"char\":\"ä\",desc:\"LATIN SMALL LETTER A WITH DIAERESIS\"},{\"char\":\"å\",desc:\"LATIN SMALL LETTER A WITH RING ABOVE\"},{\"char\":\"æ\",desc:\"LATIN SMALL LETTER AE\"},{\"char\":\"ç\",desc:\"LATIN SMALL LETTER C WITH CEDILLA\"},{\"char\":\"è\",desc:\"LATIN SMALL LETTER E WITH GRAVE\"},{\"char\":\"é\",desc:\"LATIN SMALL LETTER E WITH ACUTE\"},{\"char\":\"ê\",desc:\"LATIN SMALL LETTER E WITH CIRCUMFLEX\"},{\"char\":\"ë\",desc:\"LATIN SMALL LETTER E WITH DIAERESIS\"},{\"char\":\"ì\",desc:\"LATIN SMALL LETTER I WITH GRAVE\"},{\"char\":\"í\",desc:\"LATIN SMALL LETTER I WITH ACUTE\"},{\"char\":\"î\",desc:\"LATIN SMALL LETTER I WITH CIRCUMFLEX\"},{\"char\":\"ï\",desc:\"LATIN SMALL LETTER I WITH DIAERESIS\"},{\"char\":\"ð\",desc:\"LATIN SMALL LETTER ETH\"},{\"char\":\"ñ\",desc:\"LATIN SMALL LETTER N WITH TILDE\"},{\"char\":\"ò\",desc:\"LATIN SMALL LETTER O WITH GRAVE\"},{\"char\":\"ó\",desc:\"LATIN SMALL LETTER O WITH ACUTE\"},{\"char\":\"ô\",desc:\"LATIN SMALL LETTER O WITH CIRCUMFLEX\"},{\"char\":\"õ\",desc:\"LATIN SMALL LETTER O WITH TILDE\"},{\"char\":\"ö\",desc:\"LATIN SMALL LETTER O WITH DIAERESIS\"},{\"char\":\"÷\",desc:\"DIVISION SIGN\"},{\"char\":\"ø\",desc:\"LATIN SMALL LETTER O WITH STROKE\"},{\"char\":\"ù\",desc:\"LATIN SMALL LETTER U WITH GRAVE\"},{\"char\":\"ú\",desc:\"LATIN SMALL LETTER U WITH ACUTE\"},{\"char\":\"û\",desc:\"LATIN SMALL LETTER U WITH CIRCUMFLEX\"},{\"char\":\"ü\",desc:\"LATIN SMALL LETTER U WITH DIAERESIS\"},{\"char\":\"ý\",desc:\"LATIN SMALL LETTER Y WITH ACUTE\"},{\"char\":\"þ\",desc:\"LATIN SMALL LETTER THORN\"},{\"char\":\"ÿ\",desc:\"LATIN SMALL LETTER Y WITH DIAERESIS\"}]},{title:\"Greek\",\"char\":\"Α\",list:[{\"char\":\"Α\",desc:\"GREEK CAPITAL LETTER ALPHA\"},{\"char\":\"Β\",desc:\"GREEK CAPITAL LETTER BETA\"},{\"char\":\"Γ\",desc:\"GREEK CAPITAL LETTER GAMMA\"},{\"char\":\"Δ\",desc:\"GREEK CAPITAL LETTER DELTA\"},{\"char\":\"Ε\",desc:\"GREEK CAPITAL LETTER EPSILON\"},{\"char\":\"Ζ\",desc:\"GREEK CAPITAL LETTER ZETA\"},{\"char\":\"Η\",desc:\"GREEK CAPITAL LETTER ETA\"},{\"char\":\"Θ\",desc:\"GREEK CAPITAL LETTER THETA\"},{\"char\":\"Ι\",desc:\"GREEK CAPITAL LETTER IOTA\"},{\"char\":\"Κ\",desc:\"GREEK CAPITAL LETTER KAPPA\"},{\"char\":\"Λ\",desc:\"GREEK CAPITAL LETTER LAMBDA\"},{\"char\":\"Μ\",desc:\"GREEK CAPITAL LETTER MU\"},{\"char\":\"Ν\",desc:\"GREEK CAPITAL LETTER NU\"},{\"char\":\"Ξ\",desc:\"GREEK CAPITAL LETTER XI\"},{\"char\":\"Ο\",desc:\"GREEK CAPITAL LETTER OMICRON\"},{\"char\":\"Π\",desc:\"GREEK CAPITAL LETTER PI\"},{\"char\":\"Ρ\",desc:\"GREEK CAPITAL LETTER RHO\"},{\"char\":\"Σ\",desc:\"GREEK CAPITAL LETTER SIGMA\"},{\"char\":\"Τ\",desc:\"GREEK CAPITAL LETTER TAU\"},{\"char\":\"Υ\",desc:\"GREEK CAPITAL LETTER UPSILON\"},{\"char\":\"Φ\",desc:\"GREEK CAPITAL LETTER PHI\"},{\"char\":\"Χ\",desc:\"GREEK CAPITAL LETTER CHI\"},{\"char\":\"Ψ\",desc:\"GREEK CAPITAL LETTER PSI\"},{\"char\":\"Ω\",desc:\"GREEK CAPITAL LETTER OMEGA\"},{\"char\":\"α\",desc:\"GREEK SMALL LETTER ALPHA\"},{\"char\":\"β\",desc:\"GREEK SMALL LETTER BETA\"},{\"char\":\"γ\",desc:\"GREEK SMALL LETTER GAMMA\"},{\"char\":\"δ\",desc:\"GREEK SMALL LETTER DELTA\"},{\"char\":\"ε\",desc:\"GREEK SMALL LETTER EPSILON\"},{\"char\":\"ζ\",desc:\"GREEK SMALL LETTER ZETA\"},{\"char\":\"η\",desc:\"GREEK SMALL LETTER ETA\"},{\"char\":\"θ\",desc:\"GREEK SMALL LETTER THETA\"},{\"char\":\"ι\",desc:\"GREEK SMALL LETTER IOTA\"},{\"char\":\"κ\",desc:\"GREEK SMALL LETTER KAPPA\"},{\"char\":\"λ\",desc:\"GREEK SMALL LETTER LAMBDA\"},{\"char\":\"μ\",desc:\"GREEK SMALL LETTER MU\"},{\"char\":\"ν\",desc:\"GREEK SMALL LETTER NU\"},{\"char\":\"ξ\",desc:\"GREEK SMALL LETTER XI\"},{\"char\":\"ο\",desc:\"GREEK SMALL LETTER OMICRON\"},{\"char\":\"π\",desc:\"GREEK SMALL LETTER PI\"},{\"char\":\"ρ\",desc:\"GREEK SMALL LETTER RHO\"},{\"char\":\"ς\",desc:\"GREEK SMALL LETTER FINAL SIGMA\"},{\"char\":\"σ\",desc:\"GREEK SMALL LETTER SIGMA\"},{\"char\":\"τ\",desc:\"GREEK SMALL LETTER TAU\"},{\"char\":\"υ\",desc:\"GREEK SMALL LETTER UPSILON\"},{\"char\":\"φ\",desc:\"GREEK SMALL LETTER PHI\"},{\"char\":\"χ\",desc:\"GREEK SMALL LETTER CHI\"},{\"char\":\"ψ\",desc:\"GREEK SMALL LETTER PSI\"},{\"char\":\"ω\",desc:\"GREEK SMALL LETTER OMEGA\"},{\"char\":\"ϑ\",desc:\"GREEK THETA SYMBOL\"},{\"char\":\"ϒ\",desc:\"GREEK UPSILON WITH HOOK SYMBOL\"},{\"char\":\"ϕ\",desc:\"GREEK PHI SYMBOL\"},{\"char\":\"ϖ\",desc:\"GREEK PI SYMBOL\"},{\"char\":\"Ϝ\",desc:\"GREEK LETTER DIGAMMA\"},{\"char\":\"ϝ\",desc:\"GREEK SMALL LETTER DIGAMMA\"},{\"char\":\"ϰ\",desc:\"GREEK KAPPA SYMBOL\"},{\"char\":\"ϱ\",desc:\"GREEK RHO SYMBOL\"},{\"char\":\"ϵ\",desc:\"GREEK LUNATE EPSILON SYMBOL\"},{\"char\":\"϶\",desc:\"GREEK REVERSED LUNATE EPSILON SYMBOL\"}]},{title:\"Cyrillic\",\"char\":\"Ѐ\",list:[{\"char\":\"Ѐ\",desc:\"CYRILLIC CAPITAL LETTER IE WITH GRAVE\"},{\"char\":\"Ё\",desc:\"CYRILLIC CAPITAL LETTER IO\"},{\"char\":\"Ђ\",desc:\"CYRILLIC CAPITAL LETTER DJE\"},{\"char\":\"Ѓ\",desc:\"CYRILLIC CAPITAL LETTER GJE\"},{\"char\":\"Є\",desc:\"CYRILLIC CAPITAL LETTER UKRAINIAN IE\"},{\"char\":\"Ѕ\",desc:\"CYRILLIC CAPITAL LETTER DZE\"},{\"char\":\"І\",desc:\"CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I\"},{\"char\":\"Ї\",desc:\"CYRILLIC CAPITAL LETTER YI\"},{\"char\":\"Ј\",desc:\"CYRILLIC CAPITAL LETTER JE\"},{\"char\":\"Љ\",desc:\"CYRILLIC CAPITAL LETTER LJE\"},{\"char\":\"Њ\",desc:\"CYRILLIC CAPITAL LETTER NJE\"},{\"char\":\"Ћ\",desc:\"CYRILLIC CAPITAL LETTER TSHE\"},{\"char\":\"Ќ\",desc:\"CYRILLIC CAPITAL LETTER KJE\"},{\"char\":\"Ѝ\",desc:\"CYRILLIC CAPITAL LETTER I WITH GRAVE\"},{\"char\":\"Ў\",desc:\"CYRILLIC CAPITAL LETTER SHORT U\"},{\"char\":\"Џ\",desc:\"CYRILLIC CAPITAL LETTER DZHE\"},{\"char\":\"А\",desc:\"CYRILLIC CAPITAL LETTER A\"},{\"char\":\"Б\",desc:\"CYRILLIC CAPITAL LETTER BE\"},{\"char\":\"В\",desc:\"CYRILLIC CAPITAL LETTER VE\"},{\"char\":\"Г\",desc:\"CYRILLIC CAPITAL LETTER GHE\"},{\"char\":\"Д\",desc:\"CYRILLIC CAPITAL LETTER DE\"},{\"char\":\"Е\",desc:\"CYRILLIC CAPITAL LETTER IE\"},{\"char\":\"Ж\",desc:\"CYRILLIC CAPITAL LETTER ZHE\"},{\"char\":\"З\",desc:\"CYRILLIC CAPITAL LETTER ZE\"},{\"char\":\"И\",desc:\"CYRILLIC CAPITAL LETTER I\"},{\"char\":\"Й\",desc:\"CYRILLIC CAPITAL LETTER SHORT I\"},{\"char\":\"К\",desc:\"CYRILLIC CAPITAL LETTER KA\"},{\"char\":\"Л\",desc:\"CYRILLIC CAPITAL LETTER EL\"},{\"char\":\"М\",desc:\"CYRILLIC CAPITAL LETTER EM\"},{\"char\":\"Н\",desc:\"CYRILLIC CAPITAL LETTER EN\"},{\"char\":\"О\",desc:\"CYRILLIC CAPITAL LETTER O\"},{\"char\":\"П\",desc:\"CYRILLIC CAPITAL LETTER PE\"},{\"char\":\"Р\",desc:\"CYRILLIC CAPITAL LETTER ER\"},{\"char\":\"С\",desc:\"CYRILLIC CAPITAL LETTER ES\"},{\"char\":\"Т\",desc:\"CYRILLIC CAPITAL LETTER TE\"},{\"char\":\"У\",desc:\"CYRILLIC CAPITAL LETTER U\"},{\"char\":\"Ф\",desc:\"CYRILLIC CAPITAL LETTER EF\"},{\"char\":\"Х\",desc:\"CYRILLIC CAPITAL LETTER HA\"},{\"char\":\"Ц\",desc:\"CYRILLIC CAPITAL LETTER TSE\"},{\"char\":\"Ч\",desc:\"CYRILLIC CAPITAL LETTER CHE\"},{\"char\":\"Ш\",desc:\"CYRILLIC CAPITAL LETTER SHA\"},{\"char\":\"Щ\",desc:\"CYRILLIC CAPITAL LETTER SHCHA\"},{\"char\":\"Ъ\",desc:\"CYRILLIC CAPITAL LETTER HARD SIGN\"},{\"char\":\"Ы\",desc:\"CYRILLIC CAPITAL LETTER YERU\"},{\"char\":\"Ь\",desc:\"CYRILLIC CAPITAL LETTER SOFT SIGN\"},{\"char\":\"Э\",desc:\"CYRILLIC CAPITAL LETTER E\"},{\"char\":\"Ю\",desc:\"CYRILLIC CAPITAL LETTER YU\"},{\"char\":\"Я\",desc:\"CYRILLIC CAPITAL LETTER YA\"},{\"char\":\"а\",desc:\"CYRILLIC SMALL LETTER A\"},{\"char\":\"б\",desc:\"CYRILLIC SMALL LETTER BE\"},{\"char\":\"в\",desc:\"CYRILLIC SMALL LETTER VE\"},{\"char\":\"г\",desc:\"CYRILLIC SMALL LETTER GHE\"},{\"char\":\"д\",desc:\"CYRILLIC SMALL LETTER DE\"},{\"char\":\"е\",desc:\"CYRILLIC SMALL LETTER IE\"},{\"char\":\"ж\",desc:\"CYRILLIC SMALL LETTER ZHE\"},{\"char\":\"з\",desc:\"CYRILLIC SMALL LETTER ZE\"},{\"char\":\"и\",desc:\"CYRILLIC SMALL LETTER I\"},{\"char\":\"й\",desc:\"CYRILLIC SMALL LETTER SHORT I\"},{\"char\":\"к\",desc:\"CYRILLIC SMALL LETTER KA\"},{\"char\":\"л\",desc:\"CYRILLIC SMALL LETTER EL\"},{\"char\":\"м\",desc:\"CYRILLIC SMALL LETTER EM\"},{\"char\":\"н\",desc:\"CYRILLIC SMALL LETTER EN\"},{\"char\":\"о\",desc:\"CYRILLIC SMALL LETTER O\"},{\"char\":\"п\",desc:\"CYRILLIC SMALL LETTER PE\"},{\"char\":\"р\",desc:\"CYRILLIC SMALL LETTER ER\"},{\"char\":\"с\",desc:\"CYRILLIC SMALL LETTER ES\"},{\"char\":\"т\",desc:\"CYRILLIC SMALL LETTER TE\"},{\"char\":\"у\",desc:\"CYRILLIC SMALL LETTER U\"},{\"char\":\"ф\",desc:\"CYRILLIC SMALL LETTER EF\"},{\"char\":\"х\",desc:\"CYRILLIC SMALL LETTER HA\"},{\"char\":\"ц\",desc:\"CYRILLIC SMALL LETTER TSE\"},{\"char\":\"ч\",desc:\"CYRILLIC SMALL LETTER CHE\"},{\"char\":\"ш\",desc:\"CYRILLIC SMALL LETTER SHA\"},{\"char\":\"щ\",desc:\"CYRILLIC SMALL LETTER SHCHA\"},{\"char\":\"ъ\",desc:\"CYRILLIC SMALL LETTER HARD SIGN\"},{\"char\":\"ы\",desc:\"CYRILLIC SMALL LETTER YERU\"},{\"char\":\"ь\",desc:\"CYRILLIC SMALL LETTER SOFT SIGN\"},{\"char\":\"э\",desc:\"CYRILLIC SMALL LETTER E\"},{\"char\":\"ю\",desc:\"CYRILLIC SMALL LETTER YU\"},{\"char\":\"я\",desc:\"CYRILLIC SMALL LETTER YA\"},{\"char\":\"ѐ\",desc:\"CYRILLIC SMALL LETTER IE WITH GRAVE\"},{\"char\":\"ё\",desc:\"CYRILLIC SMALL LETTER IO\"},{\"char\":\"ђ\",desc:\"CYRILLIC SMALL LETTER DJE\"},{\"char\":\"ѓ\",desc:\"CYRILLIC SMALL LETTER GJE\"},{\"char\":\"є\",desc:\"CYRILLIC SMALL LETTER UKRAINIAN IE\"},{\"char\":\"ѕ\",desc:\"CYRILLIC SMALL LETTER DZE\"},{\"char\":\"і\",desc:\"CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I\"},{\"char\":\"ї\",desc:\"CYRILLIC SMALL LETTER YI\"},{\"char\":\"ј\",desc:\"CYRILLIC SMALL LETTER JE\"},{\"char\":\"љ\",desc:\"CYRILLIC SMALL LETTER LJE\"},{\"char\":\"њ\",desc:\"CYRILLIC SMALL LETTER NJE\"},{\"char\":\"ћ\",desc:\"CYRILLIC SMALL LETTER TSHE\"},{\"char\":\"ќ\",desc:\"CYRILLIC SMALL LETTER KJE\"},{\"char\":\"ѝ\",desc:\"CYRILLIC SMALL LETTER I WITH GRAVE\"},{\"char\":\"ў\",desc:\"CYRILLIC SMALL LETTER SHORT U\"},{\"char\":\"џ\",desc:\"CYRILLIC SMALL LETTER DZHE\"}]},{title:\"Punctuation\",\"char\":\"–\",list:[{\"char\":\"–\",desc:\"EN DASH\"},{\"char\":\"—\",desc:\"EM DASH\"},{\"char\":\"‘\",desc:\"LEFT SINGLE QUOTATION MARK\"},{\"char\":\"’\",desc:\"RIGHT SINGLE QUOTATION MARK\"},{\"char\":\"‚\",desc:\"SINGLE LOW-9 QUOTATION MARK\"},{\"char\":\"“\",desc:\"LEFT DOUBLE QUOTATION MARK\"},{\"char\":\"”\",desc:\"RIGHT DOUBLE QUOTATION MARK\"},{\"char\":\"„\",desc:\"DOUBLE LOW-9 QUOTATION MARK\"},{\"char\":\"†\",desc:\"DAGGER\"},{\"char\":\"‡\",desc:\"DOUBLE DAGGER\"},{\"char\":\"•\",desc:\"BULLET\"},{\"char\":\"…\",desc:\"HORIZONTAL ELLIPSIS\"},{\"char\":\"‰\",desc:\"PER MILLE SIGN\"},{\"char\":\"′\",desc:\"PRIME\"},{\"char\":\"″\",desc:\"DOUBLE PRIME\"},{\"char\":\"‹\",desc:\"SINGLE LEFT-POINTING ANGLE QUOTATION MARK\"},{\"char\":\"›\",desc:\"SINGLE RIGHT-POINTING ANGLE QUOTATION MARK\"},{\"char\":\"‾\",desc:\"OVERLINE\"},{\"char\":\"⁄\",desc:\"FRACTION SLASH\"}]},{title:\"Currency\",\"char\":\"₠\",list:[{\"char\":\"₠\",desc:\"EURO-CURRENCY SIGN\"},{\"char\":\"₡\",desc:\"COLON SIGN\"},{\"char\":\"₢\",desc:\"CRUZEIRO SIGN\"},{\"char\":\"₣\",desc:\"FRENCH FRANC SIGN\"},{\"char\":\"₤\",desc:\"LIRA SIGN\"},{\"char\":\"₥\",desc:\"MILL SIGN\"},{\"char\":\"₦\",desc:\"NAIRA SIGN\"},{\"char\":\"₧\",desc:\"PESETA SIGN\"},{\"char\":\"₨\",desc:\"RUPEE SIGN\"},{\"char\":\"₩\",desc:\"WON SIGN\"},{\"char\":\"₪\",desc:\"NEW SHEQEL SIGN\"},{\"char\":\"₫\",desc:\"DONG SIGN\"},{\"char\":\"€\",desc:\"EURO SIGN\"},{\"char\":\"₭\",desc:\"KIP SIGN\"},{\"char\":\"₮\",desc:\"TUGRIK SIGN\"},{\"char\":\"₯\",desc:\"DRACHMA SIGN\"},{\"char\":\"₰\",desc:\"GERMAN PENNY SYMBOL\"},{\"char\":\"₱\",desc:\"PESO SIGN\"},{\"char\":\"₲\",desc:\"GUARANI SIGN\"},{\"char\":\"₳\",desc:\"AUSTRAL SIGN\"},{\"char\":\"₴\",desc:\"HRYVNIA SIGN\"},{\"char\":\"₵\",desc:\"CEDI SIGN\"},{\"char\":\"₶\",desc:\"LIVRE TOURNOIS SIGN\"},{\"char\":\"₷\",desc:\"SPESMILO SIGN\"},{\"char\":\"₸\",desc:\"TENGE SIGN\"},{\"char\":\"₹\",desc:\"INDIAN RUPEE SIGN\"}]},{title:\"Arrows\",\"char\":\"←\",list:[{\"char\":\"←\",desc:\"LEFTWARDS ARROW\"},{\"char\":\"↑\",desc:\"UPWARDS ARROW\"},{\"char\":\"→\",desc:\"RIGHTWARDS ARROW\"},{\"char\":\"↓\",desc:\"DOWNWARDS ARROW\"},{\"char\":\"↔\",desc:\"LEFT RIGHT ARROW\"},{\"char\":\"↕\",desc:\"UP DOWN ARROW\"},{\"char\":\"↖\",desc:\"NORTH WEST ARROW\"},{\"char\":\"↗\",desc:\"NORTH EAST ARROW\"},{\"char\":\"↘\",desc:\"SOUTH EAST ARROW\"},{\"char\":\"↙\",desc:\"SOUTH WEST ARROW\"},{\"char\":\"↚\",desc:\"LEFTWARDS ARROW WITH STROKE\"},{\"char\":\"↛\",desc:\"RIGHTWARDS ARROW WITH STROKE\"},{\"char\":\"↜\",desc:\"LEFTWARDS WAVE ARROW\"},{\"char\":\"↝\",desc:\"RIGHTWARDS WAVE ARROW\"},{\"char\":\"↞\",desc:\"LEFTWARDS TWO HEADED ARROW\"},{\"char\":\"↟\",desc:\"UPWARDS TWO HEADED ARROW\"},{\"char\":\"↠\",desc:\"RIGHTWARDS TWO HEADED ARROW\"},{\"char\":\"↡\",desc:\"DOWNWARDS TWO HEADED ARROW\"},{\"char\":\"↢\",desc:\"LEFTWARDS ARROW WITH TAIL\"},{\"char\":\"↣\",desc:\"RIGHTWARDS ARROW WITH TAIL\"},{\"char\":\"↤\",desc:\"LEFTWARDS ARROW FROM BAR\"},{\"char\":\"↥\",desc:\"UPWARDS ARROW FROM BAR\"},{\"char\":\"↦\",desc:\"RIGHTWARDS ARROW FROM BAR\"},{\"char\":\"↧\",desc:\"DOWNWARDS ARROW FROM BAR\"},{\"char\":\"↨\",desc:\"UP DOWN ARROW WITH BASE\"},{\"char\":\"↩\",desc:\"LEFTWARDS ARROW WITH HOOK\"},{\"char\":\"↪\",desc:\"RIGHTWARDS ARROW WITH HOOK\"},{\"char\":\"↫\",desc:\"LEFTWARDS ARROW WITH LOOP\"},{\"char\":\"↬\",desc:\"RIGHTWARDS ARROW WITH LOOP\"},{\"char\":\"↭\",desc:\"LEFT RIGHT WAVE ARROW\"},{\"char\":\"↮\",desc:\"LEFT RIGHT ARROW WITH STROKE\"},{\"char\":\"↯\",desc:\"DOWNWARDS ZIGZAG ARROW\"},{\"char\":\"↰\",desc:\"UPWARDS ARROW WITH TIP LEFTWARDS\"},{\"char\":\"↱\",desc:\"UPWARDS ARROW WITH TIP RIGHTWARDS\"},{\"char\":\"↲\",desc:\"DOWNWARDS ARROW WITH TIP LEFTWARDS\"},{\"char\":\"↳\",desc:\"DOWNWARDS ARROW WITH TIP RIGHTWARDS\"},{\"char\":\"↴\",desc:\"RIGHTWARDS ARROW WITH CORNER DOWNWARDS\"},{\"char\":\"↵\",desc:\"DOWNWARDS ARROW WITH CORNER LEFTWARDS\"},{\"char\":\"↶\",desc:\"ANTICLOCKWISE TOP SEMICIRCLE ARROW\"},{\"char\":\"↷\",desc:\"CLOCKWISE TOP SEMICIRCLE ARROW\"},{\"char\":\"↸\",desc:\"NORTH WEST ARROW TO LONG BAR\"},{\"char\":\"↹\",desc:\"LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR\"},{\"char\":\"↺\",desc:\"ANTICLOCKWISE OPEN CIRCLE ARROW\"},{\"char\":\"↻\",desc:\"CLOCKWISE OPEN CIRCLE ARROW\"},{\"char\":\"↼\",desc:\"LEFTWARDS HARPOON WITH BARB UPWARDS\"},{\"char\":\"↽\",desc:\"LEFTWARDS HARPOON WITH BARB DOWNWARDS\"},{\"char\":\"↾\",desc:\"UPWARDS HARPOON WITH BARB RIGHTWARDS\"},{\"char\":\"↿\",desc:\"UPWARDS HARPOON WITH BARB LEFTWARDS\"},{\"char\":\"⇀\",desc:\"RIGHTWARDS HARPOON WITH BARB UPWARDS\"},{\"char\":\"⇁\",desc:\"RIGHTWARDS HARPOON WITH BARB DOWNWARDS\"},{\"char\":\"⇂\",desc:\"DOWNWARDS HARPOON WITH BARB RIGHTWARDS\"},{\"char\":\"⇃\",desc:\"DOWNWARDS HARPOON WITH BARB LEFTWARDS\"},{\"char\":\"⇄\",desc:\"RIGHTWARDS ARROW OVER LEFTWARDS ARROW\"},{\"char\":\"⇅\",desc:\"UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW\"},{\"char\":\"⇆\",desc:\"LEFTWARDS ARROW OVER RIGHTWARDS ARROW\"},{\"char\":\"⇇\",desc:\"LEFTWARDS PAIRED ARROWS\"},{\"char\":\"⇈\",desc:\"UPWARDS PAIRED ARROWS\"},{\"char\":\"⇉\",desc:\"RIGHTWARDS PAIRED ARROWS\"},{\"char\":\"⇊\",desc:\"DOWNWARDS PAIRED ARROWS\"},{\"char\":\"⇋\",desc:\"LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON\"},{\"char\":\"⇌\",desc:\"RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON\"},{\"char\":\"⇍\",desc:\"LEFTWARDS DOUBLE ARROW WITH STROKE\"},{\"char\":\"⇎\",desc:\"LEFT RIGHT DOUBLE ARROW WITH STROKE\"},{\"char\":\"⇏\",desc:\"RIGHTWARDS DOUBLE ARROW WITH STROKE\"},{\"char\":\"⇐\",desc:\"LEFTWARDS DOUBLE ARROW\"},{\"char\":\"⇑\",desc:\"UPWARDS DOUBLE ARROW\"},{\"char\":\"⇒\",desc:\"RIGHTWARDS DOUBLE ARROW\"},{\"char\":\"⇓\",desc:\"DOWNWARDS DOUBLE ARROW\"},{\"char\":\"⇔\",desc:\"LEFT RIGHT DOUBLE ARROW\"},{\"char\":\"⇕\",desc:\"UP DOWN DOUBLE ARROW\"},{\"char\":\"⇖\",desc:\"NORTH WEST DOUBLE ARROW\"},{\"char\":\"⇗\",desc:\"NORTH EAST DOUBLE ARROW\"},{\"char\":\"⇘\",desc:\"SOUTH EAST DOUBLE ARROW\"},{\"char\":\"⇙\",desc:\"SOUTH WEST DOUBLE ARROW\"},{\"char\":\"⇚\",desc:\"LEFTWARDS TRIPLE ARROW\"},{\"char\":\"⇛\",desc:\"RIGHTWARDS TRIPLE ARROW\"},{\"char\":\"⇜\",desc:\"LEFTWARDS SQUIGGLE ARROW\"},{\"char\":\"⇝\",desc:\"RIGHTWARDS SQUIGGLE ARROW\"},{\"char\":\"⇞\",desc:\"UPWARDS ARROW WITH DOUBLE STROKE\"},{\"char\":\"⇟\",desc:\"DOWNWARDS ARROW WITH DOUBLE STROKE\"},{\"char\":\"⇠\",desc:\"LEFTWARDS DASHED ARROW\"},{\"char\":\"⇡\",desc:\"UPWARDS DASHED ARROW\"},{\"char\":\"⇢\",desc:\"RIGHTWARDS DASHED ARROW\"},{\"char\":\"⇣\",desc:\"DOWNWARDS DASHED ARROW\"},{\"char\":\"⇤\",desc:\"LEFTWARDS ARROW TO BAR\"},{\"char\":\"⇥\",desc:\"RIGHTWARDS ARROW TO BAR\"},{\"char\":\"⇦\",desc:\"LEFTWARDS WHITE ARROW\"},{\"char\":\"⇧\",desc:\"UPWARDS WHITE ARROW\"},{\"char\":\"⇨\",desc:\"RIGHTWARDS WHITE ARROW\"},{\"char\":\"⇩\",desc:\"DOWNWARDS WHITE ARROW\"},{\"char\":\"⇪\",desc:\"UPWARDS WHITE ARROW FROM BAR\"},{\"char\":\"⇫\",desc:\"UPWARDS WHITE ARROW ON PEDESTAL\"},{\"char\":\"⇬\",desc:\"UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR\"},{\"char\":\"⇭\",desc:\"UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR\"},{\"char\":\"⇮\",desc:\"UPWARDS WHITE DOUBLE ARROW\"},{\"char\":\"⇯\",desc:\"UPWARDS WHITE DOUBLE ARROW ON PEDESTAL\"},{\"char\":\"⇰\",desc:\"RIGHTWARDS WHITE ARROW FROM WALL\"},{\"char\":\"⇱\",desc:\"NORTH WEST ARROW TO CORNER\"},{\"char\":\"⇲\",desc:\"SOUTH EAST ARROW TO CORNER\"},{\"char\":\"⇳\",desc:\"UP DOWN WHITE ARROW\"},{\"char\":\"⇴\",desc:\"RIGHT ARROW WITH SMALL CIRCLE\"},{\"char\":\"⇵\",desc:\"DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW\"},{\"char\":\"⇶\",desc:\"THREE RIGHTWARDS ARROWS\"},{\"char\":\"⇷\",desc:\"LEFTWARDS ARROW WITH VERTICAL STROKE\"},{\"char\":\"⇸\",desc:\"RIGHTWARDS ARROW WITH VERTICAL STROKE\"},{\"char\":\"⇹\",desc:\"LEFT RIGHT ARROW WITH VERTICAL STROKE\"},{\"char\":\"⇺\",desc:\"LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE\"},{\"char\":\"⇻\",desc:\"RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE\"},{\"char\":\"⇼\",desc:\"LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE\"},{\"char\":\"⇽\",desc:\"LEFTWARDS OPEN-HEADED ARROW\"},{\"char\":\"⇾\",desc:\"RIGHTWARDS OPEN-HEADED ARROW\"},{\"char\":\"⇿\",desc:\"LEFT RIGHT OPEN-HEADED ARROW\"}]},{title:\"Math\",\"char\":\"∀\",list:[{\"char\":\"∀\",desc:\"FOR ALL\"},{\"char\":\"∂\",desc:\"PARTIAL DIFFERENTIAL\"},{\"char\":\"∃\",desc:\"THERE EXISTS\"},{\"char\":\"∅\",desc:\"EMPTY SET\"},{\"char\":\"∇\",desc:\"NABLA\"},{\"char\":\"∈\",desc:\"ELEMENT OF\"},{\"char\":\"∉\",desc:\"NOT AN ELEMENT OF\"},{\"char\":\"∋\",desc:\"CONTAINS AS MEMBER\"},{\"char\":\"∏\",desc:\"N-ARY PRODUCT\"},{\"char\":\"∑\",desc:\"N-ARY SUMMATION\"},{\"char\":\"−\",desc:\"MINUS SIGN\"},{\"char\":\"∗\",desc:\"ASTERISK OPERATOR\"},{\"char\":\"√\",desc:\"SQUARE ROOT\"},{\"char\":\"∝\",desc:\"PROPORTIONAL TO\"},{\"char\":\"∞\",desc:\"INFINITY\"},{\"char\":\"∠\",desc:\"ANGLE\"},{\"char\":\"∧\",desc:\"LOGICAL AND\"},{\"char\":\"∨\",desc:\"LOGICAL OR\"},{\"char\":\"∩\",desc:\"INTERSECTION\"},{\"char\":\"∪\",desc:\"UNION\"},{\"char\":\"∫\",desc:\"INTEGRAL\"},{\"char\":\"∴\",desc:\"THEREFORE\"},{\"char\":\"∼\",desc:\"TILDE OPERATOR\"},{\"char\":\"≅\",desc:\"APPROXIMATELY EQUAL TO\"},{\"char\":\"≈\",desc:\"ALMOST EQUAL TO\"},{\"char\":\"≠\",desc:\"NOT EQUAL TO\"},{\"char\":\"≡\",desc:\"IDENTICAL TO\"},{\"char\":\"≤\",desc:\"LESS-THAN OR EQUAL TO\"},{\"char\":\"≥\",desc:\"GREATER-THAN OR EQUAL TO\"},{\"char\":\"⊂\",desc:\"SUBSET OF\"},{\"char\":\"⊃\",desc:\"SUPERSET OF\"},{\"char\":\"⊄\",desc:\"NOT A SUBSET OF\"},{\"char\":\"⊆\",desc:\"SUBSET OF OR EQUAL TO\"},{\"char\":\"⊇\",desc:\"SUPERSET OF OR EQUAL TO\"},{\"char\":\"⊕\",desc:\"CIRCLED PLUS\"},{\"char\":\"⊗\",desc:\"CIRCLED TIMES\"},{\"char\":\"⊥\",desc:\"UP TACK\"}]},{title:\"Misc\",\"char\":\"♠\",list:[{\"char\":\"♠\",desc:\"BLACK SPADE SUIT\"},{\"char\":\"♣\",desc:\"BLACK CLUB SUIT\"},{\"char\":\"♥\",desc:\"BLACK HEART SUIT\"},{\"char\":\"♦\",desc:\"BLACK DIAMOND SUIT\"},{\"char\":\"♩\",desc:\"QUARTER NOTE\"},{\"char\":\"♪\",desc:\"EIGHTH NOTE\"},{\"char\":\"♫\",desc:\"BEAMED EIGHTH NOTES\"},{\"char\":\"♬\",desc:\"BEAMED SIXTEENTH NOTES\"},{\"char\":\"♭\",desc:\"MUSIC FLAT SIGN\"},{\"char\":\"♮\",desc:\"MUSIC NATURAL SIGN\"},{\"char\":\"☀\",desc:\"BLACK SUN WITH RAYS\"},{\"char\":\"☁\",desc:\"CLOUD\"},{\"char\":\"☂\",desc:\"UMBRELLA\"},{\"char\":\"☃\",desc:\"SNOWMAN\"},{\"char\":\"☕\",desc:\"HOT BEVERAGE\"},{\"char\":\"☘\",desc:\"SHAMROCK\"},{\"char\":\"☯\",desc:\"YIN YANG\"},{\"char\":\"✔\",desc:\"HEAVY CHECK MARK\"},{\"char\":\"✖\",desc:\"HEAVY MULTIPLICATION X\"},{\"char\":\"❄\",desc:\"SNOWFLAKE\"},{\"char\":\"❛\",desc:\"HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT\"},{\"char\":\"❜\",desc:\"HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT\"},{\"char\":\"❝\",desc:\"HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT\"},{\"char\":\"❞\",desc:\"HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT\"},{\"char\":\"❤\",desc:\"HEAVY BLACK HEART\"}]}],specialCharButtons:[\"specialCharBack\",\"|\"]}),Object.assign(t.POPUP_TEMPLATES,{specialCharacters:\"[_BUTTONS_][_CUSTOM_LAYER_]\"}),t.PLUGINS.specialCharacters=function(W){var N=W.$,T=W.opts.specialCharactersSets[0],L=W.opts.specialCharactersSets,a=\"\";function I(){return'\\n <div class=\"fr-buttons fr-tabs fr-tabs-scroll\">\\n '.concat(function E(c,T){var R=\"\";return c.forEach(function(c){var E={elementClass:c.title===T.title?\"fr-active fr-active-tab\":\"\",title:c.title,dataParam1:c.title,desc:c[\"char\"]};R+='<button class=\"fr-command fr-btn fr-special-character-category '.concat(E.elementClass,'\" title=\"').concat(E.title,'\" data-cmd=\"setSpecialCharacterCategory\" data-param1=\"').concat(E.dataParam1,'\"><span>').concat(E.desc,\"</span></button>\")}),R}(L,T),'\\n </div>\\n <div class=\"fr-icon-container fr-sc-container\">\\n ').concat(function R(c){var T=\"\";return c.list.forEach(function(c){var E={dataParam1:c[\"char\"],title:c.desc,splCharValue:c[\"char\"]};T+='<span class=\"fr-command fr-special-character fr-icon\" role=\"button\" \\n data-cmd=\"insertSpecialCharacter\" data-param1=\"'.concat(E.dataParam1,'\" \\n title=\"').concat(E.title,'\">').concat(E.splCharValue,\"</span>\")}),T}(T),\"\\n </div>\")}return{setSpecialCharacterCategory:function R(E){T=L.filter(function(c){return c.title===E})[0],function c(){W.popups.get(\"specialCharacters\").html(a+I())}()},showSpecialCharsPopup:function e(){var c=W.popups.get(\"specialCharacters\");if(c||(c=function A(){W.opts.toolbarInline&&0<W.opts.specialCharButtons.length&&(a='<div class=\"fr-buttons fr-tabs\">'.concat(W.button.buildList(W.opts.specialCharButtons),\"</div>\"));var c={buttons:a,custom_layer:I()},E=W.popups.create(\"specialCharacters\",c);return function T(S){W.events.on(\"popup.tab\",function(c){var E=N(c.currentTarget);if(!W.popups.isVisible(\"specialCharacters\")||!E.is(\"span, a\"))return!0;var T,R,L,A=c.which;if(t.KEYCODE.TAB==A){if(E.is(\"span.fr-icon\")&&c.shiftKey||E.is(\"a\")&&!c.shiftKey){var a=S.find(\".fr-buttons\");T=!W.accessibility.focusToolbar(a,!!c.shiftKey)}if(!1!==T){var I=S.find(\"span.fr-icon:focus\").first().concat(S.findVisible(\" span.fr-icon\").first().concat(S.find(\"a\")));E.is(\"span.fr-icon\")&&(I=I.not(\"span.fr-icon:not(:focus)\")),R=I.index(E),R=c.shiftKey?((R-1)%I.length+I.length)%I.length:(R+1)%I.length,L=I.get(R),W.events.disableBlur(),L.focus(),T=!1}}else if(t.KEYCODE.ARROW_UP==A||t.KEYCODE.ARROW_DOWN==A||t.KEYCODE.ARROW_LEFT==A||t.KEYCODE.ARROW_RIGHT==A){if(E.is(\"span.fr-icon\")){var e=E.parent().find(\"span.fr-icon\");R=e.index(E);var r=11,s=Math.floor(e.length/r),h=R%r,d=Math.floor(R/r),C=d*r+h,O=s*r;t.KEYCODE.ARROW_UP==A?C=((C-r)%O+O)%O:t.KEYCODE.ARROW_DOWN==A?C=(C+r)%O:t.KEYCODE.ARROW_LEFT==A?C=((C-1)%O+O)%O:t.KEYCODE.ARROW_RIGHT==A&&(C=(C+1)%O),L=N(e.get(C)),W.events.disableBlur(),L.focus(),T=!1}}else t.KEYCODE.ENTER==A&&(E.is(\"a\")?E[0].click():W.button.exec(E),T=!1);return!1===T&&(c.preventDefault(),c.stopPropagation()),T},!0)}(E),E}()),!c.hasClass(\"fr-active\")){W.popups.refresh(\"specialCharacters\"),W.popups.setContainer(\"specialCharacters\",W.$tb);var E=W.$tb.find('.fr-command[data-cmd=\"specialCharacters\"]'),T=W.button.getPosition(E),R=T.left,L=T.top;W.popups.show(\"specialCharacters\",R,L,outerHeight)}},back:function c(){W.popups.hide(\"specialCharacters\"),W.toolbar.showInline()}}},t.DefineIcon(\"specialCharacters\",{NAME:\"dollar-sign\",SVG_KEY:\"symbols\"}),t.RegisterCommand(\"specialCharacters\",{title:\"Special Characters\",icon:\"specialCharacters\",undo:!1,focus:!1,popup:!0,refreshAfterCallback:!1,plugin:\"specialCharacters\",showOnMobile:!0,callback:function(){this.popups.isVisible(\"specialCharacters\")?(this.$el.find(\".fr-marker\")&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"specialCharacters\")):this.specialCharacters.showSpecialCharsPopup()}}),t.RegisterCommand(\"insertSpecialCharacter\",{callback:function(c,E){this.undo.saveStep(),this.html.insert(E),this.undo.saveStep(),this.popups.hide(\"specialCharacters\")}}),t.RegisterCommand(\"setSpecialCharacterCategory\",{undo:!1,focus:!1,callback:function(c,E){this.specialCharacters.setSpecialCharacterCategory(E)}}),t.DefineIcon(\"specialCharBack\",{NAME:\"arrow-left\",SVG_KEY:\"back\"}),t.RegisterCommand(\"specialCharBack\",{title:\"Back\",undo:!1,focus:!1,back:!0,refreshAfterCallback:!1,callback:function(){this.specialCharacters.back()}})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(c){\"use strict\";c=c&&c.hasOwnProperty(\"default\")?c[\"default\"]:c,Object.assign(c.DEFAULTS,{dragInline:!0}),c.PLUGINS.draggable=function(g){var d=g.$;function e(e){return!(!e.originalEvent||!e.originalEvent.target||e.originalEvent.target.nodeType!==Node.TEXT_NODE)||(e.target&&\"A\"===e.target.tagName&&1===e.target.childNodes.length&&\"IMG\"===e.target.childNodes[0].tagName&&(e.target=e.target.childNodes[0]),d(e.target).hasClass(\"fr-draggable\")?(g.undo.canDo()||g.undo.saveStep(),g.opts.dragInline?g.$el.attr(\"contenteditable\",!0):g.$el.attr(\"contenteditable\",!1),g.opts.toolbarInline&&g.toolbar.hide(),d(e.target).addClass(\"fr-dragging\"),g.browser.msie||g.browser.edge||g.selection.clear(),void e.originalEvent.dataTransfer.setData(\"text\",\"Froala\")):(e.preventDefault(),!1))}var p,v=function v(e){return!(e&&(\"HTML\"===e.tagName||\"BODY\"===e.tagName||g.node.isElement(e)))};function m(e,t,r){if(g.opts.iframe){var n=g.helpers.getPX(g.$wp.find(\".fr-iframe\").css(\"padding-top\")),a=g.helpers.getPX(g.$wp.find(\".fr-iframe\").css(\"padding-left\"));e+=g.$iframe.offset().top+n,t+=g.$iframe.offset().left+a}p.offset().top!==e&&p.css(\"top\",e),p.offset().left!==t&&p.css(\"left\",t),p.width()!==r&&p.css(\"width\",r)}function t(e){e.originalEvent.dataTransfer.dropEffect=\"move\",g.opts.dragInline?(!function r(){for(var e=null,t=0;t<c.INSTANCES.length;t++)if((e=c.INSTANCES[t].$el.find(\".fr-dragging\")).length)return e.get(0)}()||g.browser.msie||g.browser.edge)&&e.preventDefault():(e.preventDefault(),function f(e){var t=g.doc.elementFromPoint(e.originalEvent.pageX-g.win.pageXOffset,e.originalEvent.pageY-g.win.pageYOffset);if(!v(t)){for(var r=0,n=t;!v(n)&&n===t&&0<e.originalEvent.pageY-g.win.pageYOffset-r;)r++,n=g.doc.elementFromPoint(e.originalEvent.pageX-g.win.pageXOffset,e.originalEvent.pageY-g.win.pageYOffset-r);(!v(n)||p&&0===g.$el.find(n).length&&n!==p.get(0))&&(n=null);for(var a=0,o=t;!v(o)&&o===t&&e.originalEvent.pageY-g.win.pageYOffset+a<d(g.doc).height();)a++,o=g.doc.elementFromPoint(e.originalEvent.pageX-g.win.pageXOffset,e.originalEvent.pageY-g.win.pageYOffset+a);(!v(o)||p&&0===g.$el.find(o).length&&o!==p.get(0))&&(o=null),t=null===o&&n?n:o&&null===n?o:o&&n?r<a?n:o:null}if(d(t).hasClass(\"fr-drag-helper\"))return!1;if(t&&!g.node.isBlock(t)&&(t=g.node.blockParent(t)),t&&0<=[\"TD\",\"TH\",\"TR\",\"THEAD\",\"TBODY\"].indexOf(t.tagName)&&(t=d(t).parents(\"table\").get(0)),t&&0<=[\"LI\"].indexOf(t.tagName)&&(t=d(t).parents(\"UL, OL\").get(0)),t&&!d(t).hasClass(\"fr-drag-helper\")){var i;p||(c.$draggable_helper||(c.$draggable_helper=d(document.createElement(\"div\")).attr(\"class\",\"fr-drag-helper\")),p=c.$draggable_helper,g.events.on(\"shared.destroy\",function(){p.html(\"\").removeData().remove(),p=null},!0)),i=e.originalEvent.pageY<d(t).offset().top+d(t).outerHeight()/2;var l=d(t),s=0;i||0!==l.next().length?(i||(l=l.next()),\"before\"===p.data(\"fr-position\")&&l.is(p.data(\"fr-tag\"))||(0<l.prev().length&&(s=parseFloat(l.prev().css(\"margin-bottom\"))||0),s=Math.max(s,parseFloat(l.css(\"margin-top\"))||0),m(l.offset().top-s/2-g.$box.offset().top,l.offset().left-g.win.pageXOffset-g.$box.offset().left,l.width()),p.data(\"fr-position\",\"before\"))):\"after\"===p.data(\"fr-position\")&&l.is(p.data(\"fr-tag\"))||(s=parseFloat(l.css(\"margin-bottom\"))||0,m(l.offset().top+d(t).height()+s/2-g.$box.offset().top,l.offset().left-g.win.pageXOffset-g.$box.offset().left,l.width()),p.data(\"fr-position\",\"after\")),p.data(\"fr-tag\",l),p.addClass(\"fr-visible\"),g.$box.append(p)}else p&&0<g.$box.find(p).length&&p.removeClass(\"fr-visible\")}(e))}function r(e){e.originalEvent.dataTransfer.dropEffect=\"move\",g.opts.dragInline||e.preventDefault()}function n(e){g.$el.attr(\"contenteditable\",!0);var t=g.$el.find(\".fr-dragging\");p&&p.hasClass(\"fr-visible\")&&g.$box.find(p).length?a(e):t.length&&(e.preventDefault(),e.stopPropagation()),p&&g.$box.find(p).length&&p.removeClass(\"fr-visible\"),t.removeClass(\"fr-dragging\")}function a(e){var t,r;g.$el.attr(\"contenteditable\",!0);for(var n=0;n<c.INSTANCES.length;n++)if((t=c.INSTANCES[n].$el.find(\".fr-dragging\")).length){r=c.INSTANCES[n];break}if(t.length){if(e.preventDefault(),e.stopPropagation(),p&&p.hasClass(\"fr-visible\")&&g.$box.find(p).length)p.data(\"fr-tag\")[p.data(\"fr-position\")]('<span class=\"fr-marker\"></span>'),p.removeClass(\"fr-visible\");else if(!1===g.markers.insertAtPoint(e.originalEvent))return!1;if(t.removeClass(\"fr-dragging\"),!1===(t=g.events.chainTrigger(\"element.beforeDrop\",t)))return!1;var a=t;if(t.parent().is(\"A\")&&1===t.parent().get(0).childNodes.length&&(a=t.parent()),g.core.isEmpty())g.events.focus();else g.$el.find(\".fr-marker\").replaceWith(c.MARKERS),g.selection.restore();if(r===g||g.undo.canDo()||g.undo.saveStep(),g.core.isEmpty())g.$el.html(a);else{var o=g.markers.insert();0===a.find(o).length?d(o).replaceWith(a):0===t.find(o).length&&d(o).replaceWith(t),t.after(c.MARKERS),g.selection.restore()}return g.popups.hideAll(),g.selection.save(),g.$el.find(g.html.emptyBlockTagsQuery()).not(\"TD, TH, LI, .fr-inner\").not(g.opts.htmlAllowedEmptyTags.join(\",\")).remove(),g.html.wrap(),g.html.fillEmptyBlocks(),g.selection.restore(),g.undo.saveStep(),g.opts.iframe&&g.size.syncIframe(),r!==g&&(r.popups.hideAll(),r.$el.find(r.html.emptyBlockTagsQuery()).not(\"TD, TH, LI, .fr-inner\").remove(),r.html.wrap(),r.html.fillEmptyBlocks(),r.undo.saveStep(),r.events.trigger(\"element.dropped\"),r.opts.iframe&&r.size.syncIframe()),g.events.trigger(\"element.dropped\",[a]),!1}p&&p.removeClass(\"fr-visible\"),g.undo.canDo()||g.undo.saveStep(),setTimeout(function(){g.undo.saveStep()},0)}function o(e){if(e&&\"DIV\"===e.tagName&&g.node.hasClass(e,\"fr-drag-helper\"))e.parentNode.removeChild(e);else if(e&&e.nodeType===Node.ELEMENT_NODE)for(var t=e.querySelectorAll(\"div.fr-drag-helper\"),r=0;r<t.length;r++)t[r].parentNode.removeChild(t[r])}return{_init:function i(){g.opts.enter===c.ENTER_BR&&(g.opts.dragInline=!0),g.events.on(\"dragstart\",e,!0),g.events.on(\"dragover\",t,!0),g.events.on(\"dragenter\",r,!0),g.events.on(\"document.dragend\",n,!0),g.events.on(\"document.drop\",n,!0),g.events.on(\"drop\",a,!0),g.events.on(\"html.processGet\",o)}}}});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],e):e(t.FroalaEditor)}(this,function(t){\"use strict\";t=t&&t.hasOwnProperty(\"default\")?t[\"default\"]:t,Object.assign(t.DEFAULTS,{fontSize:[\"8\",\"9\",\"10\",\"11\",\"12\",\"14\",\"18\",\"24\",\"30\",\"36\",\"48\",\"60\",\"72\",\"96\"],fontSizeSelection:!1,fontSizeDefaultSelection:\"12\",fontSizeUnit:\"px\"}),t.PLUGINS.fontSize=function(o){var i=o.$;return{apply:function e(t){o.format.applyStyle(\"font-size\",t)},refreshOnShow:function a(t,e){var n=i(o.selection.element()).css(\"font-size\");\"pt\"===o.opts.fontSizeUnit&&(n=\"\".concat(Math.round(72*parseFloat(n,10)/96),\"pt\")),e.find(\".fr-command.fr-active\").removeClass(\"fr-active\").attr(\"aria-selected\",!1),e.find('.fr-command[data-param1=\"'.concat(n,'\"]')).addClass(\"fr-active\").attr(\"aria-selected\",!0)},refresh:function n(t){if(o.opts.fontSizeSelection){var e=o.helpers.getPX(i(o.selection.element()).css(\"font-size\"));\"pt\"===o.opts.fontSizeUnit&&(e=\"\".concat(Math.round(72*parseFloat(e,10)/96),\"pt\")),t.find(\"> span\").text(e)}}}},t.RegisterCommand(\"fontSize\",{type:\"dropdown\",title:\"Font Size\",displaySelection:function(t){return t.opts.fontSizeSelection},displaySelectionWidth:30,defaultSelection:function(t){return t.opts.fontSizeDefaultSelection},html:function(){for(var t='<ul class=\"fr-dropdown-list\" role=\"presentation\">',e=this.opts.fontSize,n=0;n<e.length;n++){var o=e[n];t+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"fontSize\" data-param1=\"'.concat(o).concat(this.opts.fontSizeUnit,'\" title=\"').concat(o,'\">').concat(o,\"</a></li>\")}return t+=\"</ul>\"},callback:function(t,e){this.fontSize.apply(e)},refresh:function(t){this.fontSize.refresh(t)},refreshOnShow:function(t,e){this.fontSize.refreshOnShow(t,e)},plugin:\"fontSize\"}),t.DefineIcon(\"fontSize\",{NAME:\"text-height\",SVG_KEY:\"fontSize\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(i){\"use strict\";i=i&&i.hasOwnProperty(\"default\")?i[\"default\"]:i,Object.assign(i.DEFAULTS,{listAdvancedTypes:!0}),i.PLUGINS.lists=function(m){var g=m.$;function d(e){return'<span class=\"fr-open-'.concat(e.toLowerCase(),'\"></span>')}function f(e){return'<span class=\"fr-close-'.concat(e.toLowerCase(),'\"></span>')}function o(e,t){!function c(e,t){for(var a=[],n=0;n<e.length;n++){var r=e[n].parentNode;\"LI\"==e[n].tagName&&r.tagName!=t&&a.indexOf(r)<0&&a.push(r)}for(var o=a.length-1;0<=o;o--){var l=g(a[o]);l.replaceWith(\"<\".concat(t.toLowerCase(),\" \").concat(m.node.attributes(l.get(0)),\">\").concat(l.html(),\"</\").concat(t.toLowerCase(),\">\"))}}(e,t);var a,n=m.html.defaultTag(),r=null;e.length&&(a=\"rtl\"==m.opts.direction||\"rtl\"==g(e[0]).css(\"direction\")?\"margin-right\":\"margin-left\");for(var o=0;o<e.length;o++)if(\"TD\"!=e[o].tagName&&\"TH\"!=e[o].tagName&&\"LI\"!=e[o].tagName){var l=m.helpers.getPX(g(e[o]).css(a))||0;(e[o].style.marginLeft=null)===r&&(r=l);var i=0<r?\"<\".concat(t,' style=\"').concat(a,\": \").concat(r,'px \">'):\"<\".concat(t,\">\"),s=\"</\".concat(t,\">\");for(l-=r;0<l/m.opts.indentMargin;)i+=\"</\".concat(t,\">\"),s+=s,l-=m.opts.indentMargin;n&&e[o].tagName.toLowerCase()==n?g(e[o]).replaceWith(\"\".concat(i,\"<li\").concat(m.node.attributes(e[o]),\">\").concat(g(e[o]).html(),\"</li>\").concat(s)):g(e[o]).wrap(\"\".concat(i,\"<li></li>\").concat(s))}m.clean.lists()}function c(e){var t,a;for(t=e.length-1;0<=t;t--)for(a=t-1;0<=a;a--){if(g(e[a]).find(e[t]).length||e[a]==e[t]){e.splice(t,1);break}if(g(e[a]).contains(e[t])){e.splice(a,1);break}}var n=[];for(t=0;t<e.length;t++){var r=g(e[t]),o=e[t].parentNode,l=r.attr(\"class\");if(r.before(f(o.tagName)),\"LI\"==o.parentNode.tagName)r.before(f(\"LI\")),r.after(d(\"LI\"));else if(\"OL\"==o.parentNode.tagName)r.before(f(\"OL\")),r.after(d(\"OL\"));else if(\"UL\"==o.parentNode.tagName)r.before(f(\"UL\")),r.after(d(\"UL\"));else{var i=\"\";l&&(i+=' class=\"'.concat(l,'\"'));var s=\"rtl\"==m.opts.direction||\"rtl\"==r.css(\"direction\")?\"margin-right\":\"margin-left\";m.helpers.getPX(g(o).css(s))&&0<=(g(o).attr(\"style\")||\"\").indexOf(\"\".concat(s,\":\"))&&(i+=' style=\"'.concat(s,\":\").concat(m.helpers.getPX(g(o).css(s)),'px;\"')),m.html.defaultTag()&&0===r.find(m.html.blockTagsQuery()).length&&r.wrapInner(m.html.defaultTag()+i),m.node.isEmpty(r.get(0),!0)||0!==r.find(m.html.blockTagsQuery()).length||(\"DIV\"==o.parentNode.tagName&&m.html.defaultTag()?(r.prepend(d(m.html.defaultTag())),r.append(f(m.html.defaultTag()))):r.append(\"<br>\")),r.append(d(\"LI\")),r.prepend(f(\"LI\"))}r.after(d(o.tagName)),\"LI\"==o.parentNode.tagName&&(o=o.parentNode.parentNode),n.indexOf(o)<0&&n.push(o)}for(t=0;t<n.length;t++){var c=g(n[t]),p=c.html();p=(p=p.replace(/<span class=\"fr-close-([a-z]*)\"><\\/span>/g,\"</$1>\")).replace(/<span class=\"fr-open-([a-z]*)\"><\\/span>/g,\"<$1>\"),c.replaceWith(m.node.openTagString(c.get(0))+p+m.node.closeTagString(c.get(0)))}m.$el.find(\"li:empty\").remove(),m.$el.find(\"ul:empty, ol:empty\").remove(),m.clean.lists(),m.$el.find(\"ul:empty, ol:empty\").remove(),m.html.wrap()}function e(e){if(\"indent\"==e||\"outdent\"==e){var t=!1,a=m.selection.blocks(),n=[],r=a[0].previousSibling||a[0].parentElement;if(\"outdent\"==e){if(\"UL\"!=a[0].parentNode.tagName&&\"UL\"!=r.parentNode.tagName&&\"OL\"!=r.parentNode.tagName&&\"LI\"!=r.parentNode.tagName)return;if(!a[0].previousSibling&&\"none\"==r.parentNode.style.listStyleType)return void function l(e){for(m.selection.save();0<e.childNodes.length;)e.parentNode.parentNode.append(e.childNodes[0]);m.clean.lists(),m.selection.restore()}(r)}else{if(\"UL\"!=a[0].parentElement.tagName&&\"OL\"!=a[0].parentElement.tagName&&\"LI\"!=a[0].parentElement.tagName)return;if(m.node.isBlock(a[0])&&\"LI\"!==a[0].tagName&&0<g(a[0]).parentsUntil(m.$el,\"LI\").length&&(a[0]=a[0].parentElement,r=a[0].parentElement),!a[0].previousSibling||\"LI\"!=a[0].previousSibling.tagName)return void function i(e){m.selection.save();for(var t=\"OL\"==e.tagName?document.createElement(\"ol\"):document.createElement(\"ul\");0<e.childNodes.length;)t.append(e.childNodes[0]);var a=document.createElement(\"li\");t.append(a),e.append(t),m.clean.lists(),m.selection.restore()}(r)}for(var o=0;o<a.length;o++)\"LI\"==a[o].tagName?(t=!0,n.push(a[o])):\"LI\"==a[o].parentNode.tagName&&(t=!0,n.push(a[o].parentNode));t&&(\"indent\"==e?function f(e){m.selection.save();for(var t=0;t<e.length;t++){var a=e[t].previousSibling;if(a){var n=g(e[t]).find(\"> ul, > ol\").last().get(0);if(n){var r=g(document.createElement(\"li\"));if(n.childNodes.length)for(var o=n.childNodes[0].attributes,l=0;l<o.length;l++){var i=o[l];\"style\"===i.name&&(r[0].style.cssText+=i.value)}g(n).prepend(r);for(var s=m.node.contents(e[t])[0];s&&!m.node.isList(s);){var c=s.nextSibling;r.append(s),s=c}g(a).append(g(n)),g(e[t]).remove()}else{var p=g(a).find(\"> ul, > ol\").last().get(0);if(p)g(p).append(g(e[t]));else{var d=g(\"<\".concat(e[t].parentNode.tagName,\">\"));g(a).append(d),d.append(g(e[t]))}}}}m.clean.lists(),m.selection.restore()}(n):function s(e){m.selection.save(),c(e),m.selection.restore()}(n))}}return{_init:function t(){m.events.on(\"commands.after\",e),m.events.on(\"keydown\",function(e){if(e.which==i.KEYCODE.TAB){for(var t=m.selection.blocks(),a=[],n=0;n<t.length;n++)\"LI\"==t[n].tagName?a.push(t[n]):\"LI\"==t[n].parentNode.tagName&&a.push(t[n].parentNode);if(1<=a.length||a.length&&(m.selection.info(a[0]).atStart||m.node.isEmpty(a[0])))return e.preventDefault(),e.stopPropagation(),e.shiftKey?m.commands.outdent():m.commands.indent(),!1}},!0)},format:function l(e,t){var a,n;for(m.html.syncInputs(),m.selection.save(),m.html.wrap(!0,!0,!0,!0),m.selection.restore(),n=m.selection.blocks(!0),a=0;a<n.length;a++)\"LI\"!=n[a].tagName&&\"LI\"==n[a].parentNode.tagName&&(n[a]=n[a].parentNode);if(m.selection.save(),function r(e,t){for(var a=!0,n=0;n<e.length;n++){if(\"LI\"!=e[n].tagName)return!1;e[n].parentNode.tagName!=t&&(a=!1)}return a}(n,e)?t||c(n):o(n,e),m.html.unwrap(),m.selection.restore(),t=t||\"default\"){for(n=m.selection.blocks(),a=0;a<n.length;a++)\"LI\"!=n[a].tagName&&\"LI\"==n[a].parentNode.tagName&&(n[a]=n[a].parentNode);for(a=0;a<n.length;a++)\"LI\"==n[a].tagName&&(g(n[a].parentNode).css(\"list-style-type\",\"default\"===t?\"\":t),0===(g(n[a].parentNode).attr(\"style\")||\"\").length&&g(n[a].parentNode).removeAttr(\"style\"))}},refresh:function r(e,t){var a=g(m.selection.element());if(a.get(0)!=m.el){var n=a.get(0);(n=\"LI\"!=n.tagName&&n.firstElementChild&&\"LI\"!=n.firstElementChild.tagName?a.parents(\"li\").get(0):\"LI\"==n.tagName||n.firstElementChild?n.firstElementChild&&\"LI\"==n.firstElementChild.tagName?a.get(0).firstChild:a.get(0):a.parents(\"li\").get(0))&&n.parentNode.tagName==t&&m.el.contains(n.parentNode)&&e.addClass(\"fr-active\")}}}},i.DefineIcon(\"formatOLSimple\",{NAME:\"list-ol\",SVG_KEY:\"orderedList\"}),i.RegisterCommand(\"formatOLSimple\",{title:\"Ordered List\",type:\"button\",options:{\"default\":\"Default\",circle:\"Circle\",disc:\"Disc\",square:\"Square\"},refresh:function(e){this.lists.refresh(e,\"OL\")},callback:function(e,t){this.lists.format(\"OL\",t)},plugin:\"lists\"}),i.RegisterCommand(\"formatUL\",{title:\"Unordered List\",type:\"button\",hasOptions:function(){return this.opts.listAdvancedTypes},options:{\"default\":\"Default\",circle:\"Circle\",disc:\"Disc\",square:\"Square\"},refresh:function(e){this.lists.refresh(e,\"UL\")},callback:function(e,t){this.lists.format(\"UL\",t)},plugin:\"lists\"}),i.RegisterCommand(\"formatOL\",{title:\"Ordered List\",hasOptions:function(){return this.opts.listAdvancedTypes},options:{\"default\":\"Default\",\"lower-alpha\":\"Lower Alpha\",\"lower-greek\":\"Lower Greek\",\"lower-roman\":\"Lower Roman\",\"upper-alpha\":\"Upper Alpha\",\"upper-roman\":\"Upper Roman\"},refresh:function(e){this.lists.refresh(e,\"OL\")},callback:function(e,t){this.lists.format(\"OL\",t)},plugin:\"lists\"}),i.DefineIcon(\"formatUL\",{NAME:\"list-ul\",SVG_KEY:\"unorderedList\"}),i.DefineIcon(\"formatOL\",{NAME:\"list-ol\",SVG_KEY:\"orderedList\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(a,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(a.FroalaEditor)}(this,function(a){\"use strict\";a=a&&a.hasOwnProperty(\"default\")?a[\"default\"]:a,Object.assign(a.DEFAULTS,{paragraphFormat:{N:\"Normal\",H1:\"Heading 1\",H2:\"Heading 2\",H3:\"Heading 3\",H4:\"Heading 4\",PRE:\"Code\"},paragraphFormatSelection:!1,paragraphDefaultSelection:\"Paragraph Format\"}),a.PLUGINS.paragraphFormat=function(h){var g=h.$;function c(a,t){var e=h.html.defaultTag();if(t&&t.toLowerCase()!=e)if(0<a.find(\"ul, ol\").length){var r=g(\"<\"+t+\">\");a.prepend(r);for(var n=h.node.contents(a.get(0))[0];n&&[\"UL\",\"OL\"].indexOf(n.tagName)<0;){var o=n.nextSibling;r.append(n),n=o}}else a.html(\"<\"+t+\">\"+a.html()+\"</\"+t+\">\")}return{apply:function u(a){\"N\"==a&&(a=h.html.defaultTag()),h.selection.save(),h.html.wrap(!0,!0,!h.opts.paragraphFormat.BLOCKQUOTE,!0,!0),h.selection.restore();var t,e,r,n,o,i,p,l,s=h.selection.blocks();h.selection.save(),h.$el.find(\"pre\").attr(\"skip\",!0);for(var m=0;m<s.length;m++)if(s[m].tagName!=a&&!h.node.isList(s[m])){var d=g(s[m]);if(\"LI\"==s[m].tagName)c(d,a);else if(\"LI\"==s[m].parentNode.tagName&&s[m])i=d,p=a,l=h.html.defaultTag(),p&&p.toLowerCase()!=l||(p='div class=\"fr-temp-div\"'),i.replaceWith(g(\"<\"+p+\">\").html(i.html()));else if(0<=[\"TD\",\"TH\"].indexOf(s[m].parentNode.tagName))r=d,n=a,o=h.html.defaultTag(),n||(n='div class=\"fr-temp-div\"'+(h.node.isEmpty(r.get(0),!0)?' data-empty=\"true\"':\"\")),n.toLowerCase()==o?(h.node.isEmpty(r.get(0),!0)||r.append(\"<br/>\"),r.replaceWith(r.html())):r.replaceWith(g(\"<\"+n+\">\").html(r.html()));else{if(\"PRE\"===a&&null===d[0].nextSibling){var f=g(\"<br>\");d[0].after(f[0])}t=d,(e=a)||(e='div class=\"fr-temp-div\"'+(h.node.isEmpty(t.get(0),!0)?' data-empty=\"true\"':\"\")),(\"H1\"==e||\"H2\"==e||\"H3\"==e||\"H4\"==e||\"H5\"==e)&&-1<h.node.attributes(t.get(0)).indexOf(\"font-size:\")?t.replaceWith(g(\"<\"+e+\" \"+h.node.attributes(t.get(0)).replace(/font-size:[0-9]+px;?/,\"\")+\">\").html(t.html()).removeAttr(\"data-empty\")):t.replaceWith(g(\"<\"+e+\" \"+h.node.attributes(t.get(0))+\">\").html(t.html()).removeAttr(\"data-empty\"))}}h.$el.find('pre:not([skip=\"true\"]) + pre:not([skip=\"true\"])').each(function(){g(this).prev().append(\"<br>\"+g(this).html()),g(this).remove()}),h.$el.find(\"pre\").removeAttr(\"skip\"),h.html.unwrap(),h.selection.restore()},refreshOnShow:function i(a,t){var e=h.selection.blocks();if(e.length){var r=e[0],n=\"N\",o=h.html.defaultTag();r.tagName.toLowerCase()!=o&&r!=h.el&&(n=r.tagName),t.find('.fr-command[data-param1=\"'+n+'\"]').addClass(\"fr-active\").attr(\"aria-selected\",!0)}else t.find('.fr-command[data-param1=\"N\"]').addClass(\"fr-active\").attr(\"aria-selected\",!0)},refresh:function o(a){if(h.opts.paragraphFormatSelection){var t=h.selection.blocks();if(t.length){var e=t[0],r=\"N\",n=h.html.defaultTag();e.tagName.toLowerCase()!=n&&e!=h.el&&(r=e.tagName),0<=[\"LI\",\"TD\",\"TH\"].indexOf(r)&&(r=\"N\"),a.find(\">span\").text(h.language.translate(h.opts.paragraphFormat[r]))}else a.find(\">span\").text(h.language.translate(h.opts.paragraphFormat.N))}}}},a.RegisterCommand(\"paragraphFormat\",{type:\"dropdown\",displaySelection:function(a){return a.opts.paragraphFormatSelection},defaultSelection:function(a){return a.language.translate(a.opts.paragraphDefaultSelection)},displaySelectionWidth:80,html:function(){var a='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=this.opts.paragraphFormat;for(var e in t)if(t.hasOwnProperty(e)){var r=this.shortcuts.get(\"paragraphFormat.\"+e);r=r?'<span class=\"fr-shortcut\">'+r+\"</span>\":\"\",a+='<li role=\"presentation\"><'+(\"N\"==e?this.html.defaultTag()||\"DIV\":e)+' style=\"padding: 0 !important; margin: 0 !important; border: 0 !important; background-color: transparent !important; '+(\"PRE\"==e||\"N\"==e?\"font-size: 15px\":\"font-weight: bold !important; \")+(\"H1\"==e?\"font-size: 2em !important; \":\"\")+(\"H2\"==e?\"font-size: 1.5em !important; \":\"\")+(\"H3\"==e?\"font-size: 1.17em !important; \":\"\")+(\"H4\"==e?\"font-size: 15px !important;\":\"\")+'\" role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"paragraphFormat\" data-param1=\"'+e+'\" title=\"'+this.language.translate(t[e])+'\">'+this.language.translate(t[e])+\"</a></\"+(\"N\"==e?this.html.defaultTag()||\"DIV\":e)+\"></li>\"}return a+=\"</ul>\"},title:\"Paragraph Format\",callback:function(a,t){this.paragraphFormat.apply(t)},refresh:function(a){this.paragraphFormat.refresh(a)},refreshOnShow:function(a,t){this.paragraphFormat.refreshOnShow(a,t)},plugin:\"paragraphFormat\"}),a.DefineIcon(\"paragraphFormat\",{NAME:\"paragraph\",SVG_KEY:\"paragraphFormat\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(e){\"use strict\";e=e&&e.hasOwnProperty(\"default\")?e[\"default\"]:e,Object.assign(e.DEFAULTS,{helpSets:[{title:\"Inline Editor\",commands:[{val:\"OSkeyE\",desc:\"Show the editor\"}]},{title:\"Common actions\",commands:[{val:\"OSkeyC\",desc:\"Copy\"},{val:\"OSkeyX\",desc:\"Cut\"},{val:\"OSkeyV\",desc:\"Paste\"},{val:\"OSkeyZ\",desc:\"Undo\"},{val:\"OSkeyShift+Z\",desc:\"Redo\"},{val:\"OSkeyK\",desc:\"Insert Link\"},{val:\"OSkeyP\",desc:\"Insert Image\"}]},{title:\"Basic Formatting\",commands:[{val:\"OSkeyA\",desc:\"Select All\"},{val:\"OSkeyB\",desc:\"Bold\"},{val:\"OSkeyI\",desc:\"Italic\"},{val:\"OSkeyU\",desc:\"Underline\"},{val:\"OSkeyS\",desc:\"Strikethrough\"},{val:\"OSkey]\",desc:\"Increase Indent\"},{val:\"OSkey[\",desc:\"Decrease Indent\"}]},{title:\"Quote\",commands:[{val:\"OSkey'\",desc:\"Increase quote level\"},{val:\"OSkeyShift+'\",desc:\"Decrease quote level\"}]},{title:\"Image / Video\",commands:[{val:\"OSkey+\",desc:\"Resize larger\"},{val:\"OSkey-\",desc:\"Resize smaller\"}]},{title:\"Table\",commands:[{val:\"Alt+Space\",desc:\"Select table cell\"},{val:\"Shift+Left/Right arrow\",desc:\"Extend selection one cell\"},{val:\"Shift+Up/Down arrow\",desc:\"Extend selection one row\"}]},{title:\"Navigation\",commands:[{val:\"OSkey/\",desc:\"Shortcuts\"},{val:\"Alt+F10\",desc:\"Focus popup / toolbar\"},{val:\"Esc\",desc:\"Return focus to previous position\"}]}]}),e.PLUGINS.help=function(c){var a,o=c.$,s=\"help\";return{_init:function e(){},show:function d(){if(!a){var e=\"<h4>\".concat(c.language.translate(\"Shortcuts\"),\"</h4>\"),t=function n(){for(var e='<div class=\"fr-help-modal\">',t=0;t<c.opts.helpSets.length;t++){var l=c.opts.helpSets[t],a=\"<table>\";a+=\"<thead><tr><th>\".concat(c.language.translate(l.title),\"</th></tr></thead>\"),a+=\"<tbody>\";for(var o=0;o<l.commands.length;o++){var s=l.commands[o];a+=\"<tr>\",a+=\"<td>\".concat(c.language.translate(s.desc),\"</td>\"),a+=\"<td>\".concat(s.val.replace(\"OSkey\",c.helpers.isMac()?\"⌘\":\"Ctrl+\"),\"</td>\"),a+=\"</tr>\"}e+=a+=\"</tbody></table>\"}return e+=\"</div>\"}(),l=c.modals.create(s,e,t);a=l.$modal,c.events.$on(o(c.o_win),\"resize\",function(){c.modals.resize(s)})}c.modals.show(s),c.modals.resize(s)},hide:function t(){c.modals.hide(s)}}},e.DefineIcon(\"help\",{NAME:\"question\",SVG_KEY:\"help\"}),e.RegisterShortcut(e.KEYCODE.SLASH,\"help\",null,\"/\"),e.RegisterCommand(\"help\",{title:\"Help\",icon:\"help\",undo:!1,focus:!1,modal:!0,callback:function(){this.help.show()},plugin:\"help\",showOnMobile:!1})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(h){\"use strict\";h=h&&h.hasOwnProperty(\"default\")?h[\"default\"]:h,Object.assign(h.DEFAULTS,{quickInsertButtons:[\"image\",\"video\",\"embedly\",\"table\",\"ul\",\"ol\",\"hr\"],quickInsertTags:[\"p\",\"div\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"pre\",\"blockquote\"],quickInsertEnabled:!0}),h.QUICK_INSERT_BUTTONS={},h.DefineIcon(\"quickInsert\",{SVG_KEY:\"add\",template:\"svg\"}),h.RegisterQuickInsertButton=function(e,t){h.QUICK_INSERT_BUTTONS[e]=Object.assign({undo:!0},t)},h.RegisterQuickInsertButton(\"image\",{icon:\"insertImage\",requiredPlugin:\"image\",title:\"Insert Image\",undo:!1,callback:function(){var e=this,t=e.$;e.shared.$qi_image_input||(e.shared.$qi_image_input=t(document.createElement(\"input\")).attr(\"accept\",\"image/\"+e.opts.imageAllowedTypes.join(\", image/\").toLowerCase()).attr(\"name\",\"quickInsertImage\".concat(this.id)).attr(\"style\",\"display: none;\").attr(\"type\",\"file\"),t(\"body\").first().append(e.shared.$qi_image_input),e.events.$on(e.shared.$qi_image_input,\"change\",function(){var e=t(this).data(\"inst\");this.files&&(e.quickInsert.hide(),e.image.upload(this.files)),t(this).val(\"\")},!0)),e.$qi_image_input=e.shared.$qi_image_input,e.helpers.isMobile()&&e.selection.save(),e.events.disableBlur(),e.$qi_image_input.data(\"inst\",e)[0].click()}}),h.RegisterQuickInsertButton(\"video\",{icon:\"insertVideo\",requiredPlugin:\"video\",title:\"Insert Video\",undo:!1,callback:function(){var e=prompt(this.language.translate(\"Paste the URL of the video you want to insert.\"));e&&this.video.insertByURL(e)}}),h.RegisterQuickInsertButton(\"embedly\",{icon:\"embedly\",requiredPlugin:\"embedly\",title:\"Embed URL\",undo:!1,callback:function(){var e=prompt(this.language.translate(\"Paste the URL of any web content you want to insert.\"));e&&this.embedly.add(e)}}),h.RegisterQuickInsertButton(\"table\",{icon:\"insertTable\",requiredPlugin:\"table\",title:\"Insert Table\",callback:function(){this.table.insert(2,2)}}),h.RegisterQuickInsertButton(\"ol\",{icon:\"formatOL\",requiredPlugin:\"lists\",title:\"Ordered List\",callback:function(){this.lists.format(\"OL\")}}),h.RegisterQuickInsertButton(\"ul\",{icon:\"formatUL\",requiredPlugin:\"lists\",title:\"Unordered List\",callback:function(){this.lists.format(\"UL\")}}),h.RegisterQuickInsertButton(\"hr\",{icon:\"insertHR\",title:\"Insert Horizontal Line\",callback:function(){this.commands.insertHR()}}),h.PLUGINS.quickInsert=function(r){var a,l,c=r.$,u=!1;function n(e){var t,n,i;(t=e.offset().top-r.$box.offset().top,n=(r.$iframe&&r.$iframe.offset().left||0)+e.offset().left-e.position().left-4<a.outerWidth()?e.offset().left+a.outerWidth():0-a.outerWidth(),r.opts.enter!=h.ENTER_BR)?i=(a.outerHeight()-e.outerHeight())/2:(c(document.createElement(\"span\")).html(h.INVISIBLE_SPACE).insertAfter(e),i=(a.outerHeight()-e.next().outerHeight())/2,e.next().remove());if(r.opts.iframe){var s=r.helpers.getPX(r.$wp.find(\".fr-iframe\").css(\"padding-top\"));t+=r.$iframe.offset().top+s}a.hasClass(\"fr-on\")&&0<=t&&l.css(\"top\",t-i),0<=t&&t-Math.abs(i)<=r.$box.outerHeight()-e.outerHeight()?(a.hasClass(\"fr-hidden\")&&(a.hasClass(\"fr-on\")&&d(),a.removeClass(\"fr-hidden\")),a.css(\"top\",t-i)):a.hasClass(\"fr-visible\")&&!r.opts.toolbarInline&&(a.addClass(\"fr-hidden\"),f()),a.css(\"left\",n)}function s(e){r.markdown&&r.markdown.isEnabled()||(a||function t(){r.shared.$quick_insert||(r.shared.$quick_insert=c(document.createElement(\"div\")).attr(\"class\",\"fr-quick-insert\").html('<a class=\"fr-floating-btn\" role=\"button\" tabIndex=\"-1\" title=\"'.concat(r.language.translate(\"Quick Insert\"),'\">').concat(r.icon.create(\"quickInsert\"),\"</a>\")));a=r.shared.$quick_insert,r.tooltip.bind(r.$box,\".fr-quick-insert > a.fr-floating-btn\"),r.events.on(\"destroy\",function(){c(\"body\").first().append(a.removeClass(\"fr-on\")),l&&(f(),c(\"body\").first().append(l.css(\"left\",-9999).css(\"top\",-9999)))},!0),r.events.on(\"shared.destroy\",function(){a.html(\"\").removeData().remove(),a=null,l&&(l.html(\"\").removeData().remove(),l=null)},!0),r.events.on(\"commands.before\",o),r.events.on(\"commands.after\",function(){r.popups.areVisible()||i()}),r.events.bindClick(r.$box,\".fr-quick-insert > a\",d),r.events.bindClick(r.$box,\".fr-qi-helper > a.fr-btn\",function(e){var t=c(e.currentTarget).data(\"cmd\");if(!1===r.events.trigger(\"quickInsert.commands.before\",[t]))return!1;h.QUICK_INSERT_BUTTONS[t].callback.apply(r,[e.currentTarget]),h.QUICK_INSERT_BUTTONS[t].undo&&r.undo.saveStep(),r.events.trigger(\"quickInsert.commands.after\",[t]),r.quickInsert.hide()}),r.events.$on(r.$wp,\"scroll\",p),r.events.$on(r.$tb,\"transitionend\",\".fr-more-toolbar\",p)}(),a.hasClass(\"fr-on\")&&f(),r.$box.append(a),n(e),a.data(\"tag\",e),a.addClass(\"fr-visible\"))}function i(){if(r.core.hasFocus()){var e=r.selection.element();if(r.opts.enter==h.ENTER_BR||r.node.isBlock(e)||(e=r.node.blockParent(e)),r.opts.enter==h.ENTER_BR&&!r.node.isBlock(e)){var t=r.node.deepestParent(e);t&&(e=t)}var n=function n(){return r.opts.enter!=h.ENTER_BR&&r.node.isEmpty(e)&&0<=r.opts.quickInsertTags.indexOf(e.tagName.toLowerCase())},i=function i(){return r.opts.enter==h.ENTER_BR&&(\"BR\"==e.tagName&&(!e.previousSibling||\"BR\"==e.previousSibling.tagName||r.node.isBlock(e.previousSibling))||r.node.isEmpty(e)&&(!e.previousSibling||\"BR\"==e.previousSibling.tagName||r.node.isBlock(e.previousSibling))&&(!e.nextSibling||\"BR\"==e.nextSibling.tagName||r.node.isBlock(e.nextSibling)))};e&&(n()||i())?a&&a.data(\"tag\").is(c(e))&&a.hasClass(\"fr-on\")?f():r.selection.isCollapsed()&&s(c(e)):o()}}function o(){a&&!u&&(a.hasClass(\"fr-on\")&&f(),a.removeClass(\"fr-visible fr-on\"),a.css(\"left\",-9999).css(\"top\",-9999))}function d(e){if(e&&e.preventDefault(),a.hasClass(\"fr-on\")&&!a.hasClass(\"fr-hidden\"))f();else{if(!r.shared.$qi_helper){for(var t=r.opts.quickInsertButtons,n='<div class=\"fr-qi-helper\">',i=0,s=0;s<t.length;s++){var o=h.QUICK_INSERT_BUTTONS[t[s]];o&&(!o.requiredPlugin||h.PLUGINS[o.requiredPlugin]&&0<=r.opts.pluginsEnabled.indexOf(o.requiredPlugin))&&(n+='<a class=\"fr-btn fr-floating-btn\" role=\"button\" title=\"'.concat(r.language.translate(o.title),'\" tabIndex=\"-1\" data-cmd=\"').concat(t[s],'\" style=\"transition-delay: ').concat(.025*i++,'s;\">').concat(r.icon.create(o.icon),\"</a>\"))}n+=\"</div>\",r.shared.$qi_helper=c(n),r.tooltip.bind(r.shared.$qi_helper,\"a.fr-btn\"),r.events.$on(r.shared.$qi_helper,\"mousedown\",function(e){e.preventDefault()},!0)}l=r.shared.$qi_helper,r.$box.append(l),u=!0,setTimeout(function(){u=!1,l.css(\"top\",parseFloat(a.css(\"top\"))),l.css(\"left\",parseFloat(a.css(\"left\"))+a.outerWidth()),l.find(\"a\").addClass(\"fr-size-1\"),a.addClass(\"fr-on\")},10)}}function f(){var n=r.$box.find(\".fr-qi-helper\");n.length&&function(){for(var t=n.find(\"a\"),e=0;e<t.length;e++)!function(e){setTimeout(function(){n.children().eq(t.length-1-e).removeClass(\"fr-size-1\")},25*e)}(e);setTimeout(function(){n.css(\"left\",-9999),a&&!a.hasClass(\"fr-hidden\")&&a.removeClass(\"fr-on\")},25*e)}()}function p(){a.hasClass(\"fr-visible\")&&n(a.data(\"tag\"))}return{_init:function e(){if(!r.$wp||!r.opts.quickInsertEnabled)return!1;r.popups.onShow(\"image.edit\",o),r.events.on(\"mouseup\",i),r.helpers.isMobile()&&r.events.$on(c(r.o_doc),\"selectionchange\",i),r.events.on(\"blur\",o),r.events.on(\"keyup\",i),r.events.on(\"keydown\",function(){setTimeout(function(){i()},0)})},hide:o}}});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(we){\"use strict\";we=we&&we.hasOwnProperty(\"default\")?we[\"default\"]:we,Object.assign(we.POPUP_TEMPLATES,{\"video.insert\":\"[_BUTTONS_][_BY_URL_LAYER_][_EMBED_LAYER_][_UPLOAD_LAYER_][_PROGRESS_BAR_]\",\"video.edit\":\"[_BUTTONS_]\",\"video.size\":\"[_BUTTONS_][_SIZE_LAYER_]\"}),Object.assign(we.DEFAULTS,{videoAllowedTypes:[\"mp4\",\"webm\",\"ogg\",\"mp3\",\"mpeg\",\"url\"],videoAllowedProviders:[\".*\"],videoDefaultAlign:\"center\",videoDefaultDisplay:\"block\",videoDefaultWidth:600,videoEditButtons:[\"videoReplace\",\"videoRemove\",\"videoDisplay\",\"videoAlign\",\"videoSize\",\"autoplay\"],videoInsertButtons:[\"videoBack\",\"|\",\"videoByURL\",\"videoEmbed\",\"videoUpload\"],videoMaxSize:52428800,videoMove:!0,videoResize:!0,videoResponsive:!1,videoSizeButtons:[\"videoBack\",\"|\"],videoSplitHTML:!1,videoTextNear:!0,videoUpload:!0,videoUploadMethod:\"POST\",videoUploadParam:\"file\",videoUploadParams:{},videoUploadToS3:!1,videoUploadToAzure:!1,videoUploadURL:null}),we.VIDEO_PROVIDERS=[{test_regex:/^.*((youtu.be)|(youtube.com))\\/((v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))?\\??v?=?([^#\\&\\?]*).*/,url_regex:/(?:https?:\\/\\/)?(?:www\\.)?(?:m\\.)?(?:youtube\\.com|youtu\\.be)\\/(?:watch\\?v=|embed\\/)?([0-9a-zA-Z_\\-]+)(.+)?/g,url_text:\"https://www.youtube.com/embed/$1?$2\",html:'<iframe width=\"640\" height=\"360\" src=\"{url}&wmode=opaque&rel=0\" frameborder=\"0\" allowfullscreen></iframe>',provider:\"youtube\"},{test_regex:/^.*(?:vimeo.com)\\/(?:channels(\\/\\w+\\/)?|groups\\/*\\/videos\\/\\u200b\\d+\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/,url_regex:/(?:https?:\\/\\/)?(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_\\-]+)?(\\/[a-zA-Z0-9_\\-]+)?/i,url_text:\"https://player.vimeo.com/video/$1\",html:'<iframe width=\"640\" height=\"360\" src=\"{url}\" frameborder=\"0\" allowfullscreen></iframe>',provider:\"vimeo\"},{test_regex:/^.+(dailymotion.com|dai.ly)\\/(video|hub)?\\/?([^_]+)[^#]*(#video=([^_&]+))?/,url_regex:/(?:https?:\\/\\/)?(?:www\\.)?(?:dailymotion\\.com|dai\\.ly)\\/(?:video|hub)?\\/?(.+)/g,url_text:\"https://www.dailymotion.com/embed/video/$1\",html:'<iframe width=\"640\" height=\"360\" src=\"{url}\" frameborder=\"0\" allowfullscreen></iframe>',provider:\"dailymotion\"},{test_regex:/^.+(screen.yahoo.com)\\/[^_&]+/,url_regex:\"\",url_text:\"\",html:'<iframe width=\"640\" height=\"360\" src=\"{url}?format=embed\" frameborder=\"0\" allowfullscreen=\"true\" mozallowfullscreen=\"true\" webkitallowfullscreen=\"true\" allowtransparency=\"true\"></iframe>',provider:\"yahoo\"},{test_regex:/^.+(rutube.ru)\\/[^_&]+/,url_regex:/(?:https?:\\/\\/)?(?:www\\.)?(?:rutube\\.ru)\\/(?:video)?\\/?(.+)/g,url_text:\"https://rutube.ru/play/embed/$1\",html:'<iframe width=\"640\" height=\"360\" src=\"{url}\" frameborder=\"0\" allowfullscreen=\"true\" mozallowfullscreen=\"true\" webkitallowfullscreen=\"true\" allowtransparency=\"true\"></iframe>',provider:\"rutube\"},{test_regex:/^(?:.+)vidyard.com\\/(?:watch)?\\/?([^.&/]+)\\/?(?:[^_.&]+)?/,url_regex:/^(?:.+)vidyard.com\\/(?:watch)?\\/?([^.&/]+)\\/?(?:[^_.&]+)?/g,url_text:\"https://play.vidyard.com/$1\",html:'<iframe width=\"640\" height=\"360\" src=\"{url}\" frameborder=\"0\" allowfullscreen></iframe>',provider:\"vidyard\"}],we.VIDEO_EMBED_REGEX=/^\\W*((<iframe(.|\\n)*>(\\s|\\n)*<\\/iframe>)|(<embed(.|\\n)*>))\\W*$/i,we.PLUGINS.video=function(w){var s,p,f,E,i,o,A=w.$,C=\"https://i.froala.com/upload\",c=2,v=3,u=4,S=5,U=6,a={};function g(){var e=w.popups.get(\"video.insert\");e.find(\".fr-video-by-url-layer input\").val(\"\").trigger(\"change\");var t=e.find(\".fr-video-embed-layer textarea\");t.val(\"\").trigger(\"change\"),(t=e.find(\".fr-video-upload-layer input\")).val(\"\").trigger(\"change\")}function r(){var e=w.popups.get(\"video.edit\");if(e||(e=function n(){var e=\"\";if(0<w.opts.videoEditButtons.length){w.opts.videoResponsive&&(-1<w.opts.videoEditButtons.indexOf(\"videoSize\")&&w.opts.videoEditButtons.splice(w.opts.videoEditButtons.indexOf(\"videoSize\"),1),-1<w.opts.videoEditButtons.indexOf(\"videoDisplay\")&&w.opts.videoEditButtons.splice(w.opts.videoEditButtons.indexOf(\"videoDisplay\"),1),-1<w.opts.videoEditButtons.indexOf(\"videoAlign\")&&w.opts.videoEditButtons.splice(w.opts.videoEditButtons.indexOf(\"videoAlign\"),1));var t={buttons:e+='<div class=\"fr-buttons\"> \\n '.concat(w.button.buildList(w.opts.videoEditButtons),\" \\n </div>\")},o=w.popups.create(\"video.edit\",t);return w.events.$on(w.$wp,\"scroll.video-edit\",function(){E&&w.popups.isVisible(\"video.edit\")&&(w.events.disableBlur(),l(E))}),o}return!1}()),e){w.popups.setContainer(\"video.edit\",w.$sc),w.popups.refresh(\"video.edit\");var t=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\")),o=t.offset().left+t.outerWidth()/2,i=t.offset().top+t.outerHeight(),a=t.get(0).src?t.get(0).src:t.get(0).currentSrc,r=!(!(a=(a=a.split(\".\"))[a.length-1]).includes(\"pdf\")&&!a.includes(\"txt\"));t.hasClass(\"fr-file\")||r||E.find(\"audio\").get(0)?(document.getElementById(\"autoplay-\".concat(w.id))&&(document.getElementById(\"autoplay-\".concat(w.id)).style.display=\"none\"),document.getElementById(\"videoReplace-\".concat(w.id))&&(document.getElementById(\"videoReplace-\".concat(w.id)).style.display=\"none\")):(document.getElementById(\"autoplay-\".concat(w.id))&&(document.getElementById(\"autoplay-\".concat(w.id)).style.display=\"\"),document.getElementById(\"videoReplace-\".concat(w.id))&&(document.getElementById(\"videoReplace-\".concat(w.id)).style.display=\"\")),w.popups.show(\"video.edit\",o,i,t.outerHeight(),!0)}}function n(e){if(e)return w.popups.onRefresh(\"video.insert\",g),w.popups.onHide(\"video.insert\",J),!0;var t=\"\";w.opts.videoUpload||-1===w.opts.videoInsertButtons.indexOf(\"videoUpload\")||w.opts.videoInsertButtons.splice(w.opts.videoInsertButtons.indexOf(\"videoUpload\"),1);var o=w.button.buildList(w.opts.videoInsertButtons);\"\"!==o&&(t='<div class=\"fr-buttons\">'+o+\"</div>\");var i,a=\"\",r=w.opts.videoInsertButtons.indexOf(\"videoUpload\"),n=w.opts.videoInsertButtons.indexOf(\"videoByURL\"),s=w.opts.videoInsertButtons.indexOf(\"videoEmbed\");if(0<=n){i=\" fr-active\",(r<n&&0<=r||s<n&&0<=s)&&(i=\"\");a='<div class=\"fr-video-by-url-layer fr-layer'.concat(i,'\" id=\"fr-video-by-url-layer-').concat(w.id,'\"><div class=\"fr-input-line\"><input id=\"fr-video-by-url-layer-text-').concat(w.id,'\" type=\"text\" placeholder=\"').concat(w.language.translate(\"Paste in a video URL\"),'\" tabIndex=\"1\" aria-required=\"true\"></div><div class=\"fr-action-buttons\"><span style=\\'float:left\\'><div class=\"fr-checkbox-line fr-autoplay-margin\"><span class=\"fr-checkbox\"> <input id=\\'videoPluginAutoplay\\' data-checked=\"_blank\" type=\"checkbox\"> <span>').concat('<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"10\" height=\"10\" viewBox=\"0 0 32 32\"><path d=\"M27 4l-15 15-7-7-5 5 12 12 20-20z\" fill=\"#FFF\"></path></svg>','</span></span> <label id=\"fr-label-target-').concat(w.id,'\">Autoplay</label></div> </span><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"videoInsertByURL\" tabIndex=\"2\" role=\"button\">').concat(w.language.translate(\"Insert\"),\"</button></div></div>\")}var d=\"\";0<=s&&(i=\" fr-active\",(r<s&&0<=r||n<s&&0<=n)&&(i=\"\"),d='<div class=\"fr-video-embed-layer fr-layer'.concat(i,'\" id=\"fr-video-embed-layer-').concat(w.id,'\"><div class=\"fr-input-line\"><textarea id=\"fr-video-embed-layer-text').concat(w.id,'\" type=\"text\" placeholder=\"').concat(w.language.translate(\"Embedded Code\"),'\" tabIndex=\"1\" aria-required=\"true\" rows=\"5\"></textarea></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"videoInsertEmbed\" tabIndex=\"2\" role=\"button\">').concat(w.language.translate(\"Insert\"),\"</button></div></div>\"));var l=\"\";0<=r&&(i=\" fr-active\",(s<r&&0<=s||n<r&&0<=n)&&(i=\"\"),l='<div class=\"fr-video-upload-layer fr-layer'.concat(i,'\" id=\"fr-video-upload-layer-').concat(w.id,'\"><strong>').concat(w.language.translate(\"Drop video\"),\"</strong><br>(\").concat(w.language.translate(\"or click\"),')<div class=\"fr-form\"><input type=\"file\" accept=\"video/').concat(w.opts.videoAllowedTypes.join(\", video/\").toLowerCase(),'\" tabIndex=\"-1\" aria-labelledby=\"fr-video-upload-layer-').concat(w.id,'\" role=\"button\"></div></div>'));var p={buttons:t,by_url_layer:a,embed_layer:d,upload_layer:l,progress_bar:'<div class=\"fr-video-progress-bar-layer fr-layer\"><h3 tabIndex=\"-1\" class=\"fr-message\">Uploading</h3><div class=\"fr-loader\"><span class=\"fr-progress\"></span></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-dismiss\" data-cmd=\"videoDismissError\" tabIndex=\"2\" role=\"button\">OK</button></div></div>'},f=w.popups.create(\"video.insert\",p);return function c(i){w.events.$on(i,\"dragover dragenter\",\".fr-video-upload-layer\",function(){return A(this).addClass(\"fr-drop\"),!1},!0),w.events.$on(i,\"dragleave dragend\",\".fr-video-upload-layer\",function(){return A(this).removeClass(\"fr-drop\"),!1},!0),w.events.$on(i,\"drop\",\".fr-video-upload-layer\",function(e){e.preventDefault(),e.stopPropagation(),A(this).removeClass(\"fr-drop\");var t=e.originalEvent.dataTransfer;if(t&&t.files){var o=i.data(\"instance\")||w;o.events.disableBlur(),o.video.upload(t.files),o.events.enableBlur()}},!0),w.helpers.isIOS()&&w.events.$on(i,\"touchstart\",'.fr-video-upload-layer input[type=\"file\"]',function(){A(this).trigger(\"click\")},!0);w.events.$on(i,\"change\",'.fr-video-upload-layer input[type=\"file\"]',function(){if(this.files){var e=i.data(\"instance\")||w;e.events.disableBlur(),i.find(\"input:focus\").blur(),e.events.enableBlur(),e.video.upload(this.files)}A(this).val(\"\")},!0)}(f),f}function h(e){w.events.focus(!0),w.selection.restore();var t=!1;if(E&&(q(),t=!0),w.opts.trackChangesEnabled){w.edit.on(),w.events.focus(!0),w.selection.restore(),w.undo.saveStep(),w.markers.insert(),w.html.wrap();var o=w.$el.find(\".fr-marker\");w.node.isLastSibling(o)&&o.parent().hasClass(\"fr-deletable\")&&o.insertAfter(o.parent()),o.replaceWith('<span contenteditable=\"false\" draggable=\"true\" class=\"fr-jiv fr-video fr-deletable\">'.concat(e,\"</span>\")),w.selection.clear()}else w.html.insert('<span contenteditable=\"false\" draggable=\"true\" class=\"fr-jiv fr-video fr-deletable\">'.concat(e,\"</span>\"),!1,w.opts.videoSplitHTML);w.popups.hide(\"video.insert\");var i=w.$el.find(\".fr-jiv\");i.removeClass(\"fr-jiv\"),i.toggleClass(\"fr-rv\",w.opts.videoResponsive),Z(i,w.opts.videoDefaultDisplay,w.opts.videoDefaultAlign),i.toggleClass(\"fr-draggable\",w.opts.videoMove),w.events.trigger(t?\"video.replaced\":\"video.inserted\",[i])}function m(){var e=A(this);w.popups.hide(\"video.insert\"),e.removeClass(\"fr-uploading\"),e.parent().next().is(\"br\")&&e.parent().next().remove(),l(e.parent()),w.events.trigger(\"video.loaded\",[e.parent()])}function x(s,e,d,l,p){w.edit.off(),b(\"Loading video\"),e&&(s=w.helpers.sanitizeURL(s));var f=function f(){var e,t;if(l){w.undo.canDo()||l.find(\"video\").hasClass(\"fr-uploading\")||w.undo.saveStep();var o=l.find(\"video\").data(\"fr-old-src\"),i=l.data(\"fr-replaced\");if(l.data(\"fr-replaced\",!1),0<l.find(\"iframe\").length)l.remove(),e=k(s,d,m);else{w.$wp?((e=l.clone(!0)).find(\"video\").removeData(\"fr-old-src\").removeClass(\"fr-uploading\"),e.find(\"video\").off(\"canplay\"),o&&l.find(\"video\").attr(\"src\",o),l.replaceWith(e)):e=l;for(var a=e.find(\"video\").get(0).attributes,r=0;r<a.length;r++){var n=a[r];0===n.nodeName.indexOf(\"data-\")&&e.find(\"video\").removeAttr(n.nodeName)}if(void 0!==d)for(t in d)d.hasOwnProperty(t)&&\"link\"!=t&&e.find(\"video\").attr(\"data-\".concat(t),d[t]);e.find(\"video\").on(\"canplay\",m),e.find(\"video\").attr(\"src\",s)}w.edit.on(),L(),w.undo.saveStep(),w.$el.blur(),w.events.trigger(i?\"video.replaced\":\"video.inserted\",[e,p])}else e=k(s,d,m),L(),w.undo.saveStep(),w.events.trigger(\"video.inserted\",[e,p])};R(\"Loading video\"),f()}function R(e){var t=w.popups.get(\"video.insert\");if(t||(t=n()),t.find(\".fr-layer.fr-active\").removeClass(\"fr-active\").addClass(\"fr-pactive\"),t.find(\".fr-video-progress-bar-layer\").addClass(\"fr-active\"),t.find(\".fr-buttons\").hide(),E){var o=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\"));w.popups.setContainer(\"video.insert\",w.$sc);var i=o.offset().left,a=o.offset().top+o.height();w.popups.show(\"video.insert\",i,a,o.outerHeight())}void 0===e&&b(w.language.translate(\"Uploading\"),0)}function d(e){var t=w.popups.get(\"video.insert\");if(t&&(t.find(\".fr-layer.fr-pactive\").addClass(\"fr-active\").removeClass(\"fr-pactive\"),t.find(\".fr-video-progress-bar-layer\").removeClass(\"fr-active\"),t.find(\".fr-buttons\").show(),e||w.$el.find(\"video.fr-error\").length)){if(w.events.focus(),w.$el.find(\"video.fr-error\").length&&(w.$el.find(\"video.fr-error\").parent().remove(),w.undo.saveStep(),w.undo.run(),w.undo.dropRedo()),!w.$wp&&E){var o=E;V(!0),w.selection.setAfter(o.find(\"video\").get(0)),w.selection.restore()}w.popups.hide(\"video.insert\")}}function b(e,t){var o=w.popups.get(\"video.insert\");if(o){var i=o.find(\".fr-video-progress-bar-layer\");i.find(\"h3\").text(e+(t?\" \".concat(t,\"%\"):\"\")),i.removeClass(\"fr-error\"),t?(i.find(\"div\").removeClass(\"fr-indeterminate\"),i.find(\"div > span\").css(\"width\",\"\".concat(t,\"%\"))):i.find(\"div\").addClass(\"fr-indeterminate\")}}function y(e){R();var t=w.popups.get(\"video.insert\").find(\".fr-video-progress-bar-layer\");t.addClass(\"fr-error\");var o=t.find(\"h3\");o.text(e),w.events.disableBlur(),o.focus()}function l(e){t.call(e.get(0))}function _(e,t,o){b(\"Loading video\");var i=this.status,a=this.response,r=this.responseXML,n=this.responseText;try{if(w.opts.videoUploadToS3||w.opts.videoUploadToAzure)if(201==i){var s;if(w.opts.videoUploadToAzure){if(!1===w.events.trigger(\"video.uploadedToAzure\",[this.responseURL,o,a],!0))return w.edit.on(),!1;s=t}else s=function l(e){try{var t=A(e).find(\"Location\").text(),o=A(e).find(\"Key\").text();return!1===w.events.trigger(\"video.uploadedToS3\",[t,o,e],!0)?(w.edit.on(),!1):t}catch(i){return F(u,e),!1}}(r);s&&x(s,!1,[],e,a||r)}else F(u,a||r);else if(200<=i&&i<300){var d=function p(e){try{if(!1===w.events.trigger(\"video.uploaded\",[e],!0))return w.edit.on(),!1;var t=JSON.parse(e);return t.link?t:(F(c,e),!1)}catch(o){return F(u,e),!1}}(n);d&&x(d.link,!1,d,e,a||n)}else F(v,a||n)}catch(f){F(u,a||n)}}function B(){F(u,this.response||this.responseText||this.responseXML)}function D(e){if(e.lengthComputable){var t=e.loaded/e.total*100|0;b(w.language.translate(\"Uploading\"),t)}}function I(){w.edit.on(),d(!0)}function k(e,t,o){var i,a=\"\";if(t&&void 0!==t)for(i in t)t.hasOwnProperty(i)&&\"link\"!=i&&(a+=\" data-\".concat(i,'=\"').concat(t[i],'\"'));var r=w.opts.videoDefaultWidth;r&&\"auto\"!=r&&(r=\"\".concat(r,\"px\")),w.helpers.isMobile()&&w.browser.safari&&(a+=\" autoplay playsinline\");var n=A(document.createElement(\"span\")).attr(\"contenteditable\",\"false\").attr(\"draggable\",\"true\").attr(\"class\",\"fr-video fr-dv\"+w.opts.videoDefaultDisplay[0]+(\"center\"!=w.opts.videoDefaultAlign?\" fr-fv\"+w.opts.videoDefaultAlign[0]:\"\")).html('<video src=\"'+e+'\" '+a+(r?' style=\"width: '+r+';\" ':\"\")+\" controls>\"+w.language.translate(\"Your browser does not support HTML5 video.\")+\"</video>\");n.toggleClass(\"fr-draggable\",w.opts.videoMove),w.edit.on(),w.events.focus(!0),w.selection.restore(),w.undo.saveStep(),w.opts.videoSplitHTML?w.markers.split():(w.cursor.enter(),w.markers.insert()),w.html.wrap();var s=w.$el.find(\".fr-marker\");return w.node.isLastSibling(s)&&s.parent().hasClass(\"fr-deletable\")&&s.insertAfter(s.parent()),s.replaceWith(n),w.selection.clear(),n.find(\"video\").get(0).readyState>n.find(\"video\").get(0).HAVE_FUTURE_DATA||w.helpers.isIOS()?o.call(n.find(\"video\").get(0)):n.find(\"video\").on(\"canplaythrough load\",o),n}function T(e){if(!w.core.sameInstance(f))return!0;e.preventDefault(),e.stopPropagation();var t=e.pageX||(e.originalEvent.touches?e.originalEvent.touches[0].pageX:null),o=e.pageY||(e.originalEvent.touches?e.originalEvent.touches[0].pageY:null);if(!t||!o)return!1;if(\"mousedown\"==e.type){var i=w.$oel.get(0).ownerDocument,a=i.defaultView||i.parentWindow,r=!1;try{r=a.location!=a.parent.location&&!(a.$&&a.$.FE)}catch(n){}r&&a.frameElement&&(t+=w.helpers.getPX(A(a.frameElement).offset().left)+a.frameElement.clientLeft,o=e.clientY+w.helpers.getPX(A(a.frameElement).offset().top)+a.frameElement.clientTop)}w.undo.canDo()||w.undo.saveStep(),(p=A(this)).data(\"start-x\",t),p.data(\"start-y\",o),s.show(),w.popups.hideAll(),Y()}function z(e){if(!w.core.sameInstance(f))return!0;if(p){e.preventDefault();var t=e.pageX||(e.originalEvent.touches?e.originalEvent.touches[0].pageX:null),o=e.pageY||(e.originalEvent.touches?e.originalEvent.touches[0].pageY:null);if(!t||!o)return!1;var i=p.data(\"start-x\"),a=p.data(\"start-y\");p.data(\"start-x\",t),p.data(\"start-y\",o);var r=t-i,n=o-a,s=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\")),d=s.width(),l=s.height();(p.hasClass(\"fr-hnw\")||p.hasClass(\"fr-hsw\"))&&(r=0-r),(p.hasClass(\"fr-hnw\")||p.hasClass(\"fr-hne\"))&&(n=0-n),s.css(\"width\",d+r),s.css(\"height\",l+n),s.removeAttr(\"width\"),s.removeAttr(\"height\"),M()}}function P(e){if(!w.core.sameInstance(f))return!0;p&&E&&(e&&e.stopPropagation(),p=null,s.hide(),M(),r(),w.undo.saveStep())}function $(e){return'<div class=\"fr-handler fr-h'.concat(e,'\"></div>')}function O(e,t,o,i){return e.pageX=t,e.pageY=t,T.call(this,e),e.pageX=e.pageX+o*Math.floor(Math.pow(1.1,i)),e.pageY=e.pageY+o*Math.floor(Math.pow(1.1,i)),z.call(this,e),P.call(this,e),++i}function L(){var e,t=Array.prototype.slice.call(w.el.querySelectorAll(\"video, .fr-video > *\")),o=[];for(e=0;e<t.length;e++)o.push(t[e].getAttribute(\"src\")),A(t[e]).toggleClass(\"fr-draggable\",w.opts.videoMove),\"\"===t[e].getAttribute(\"class\")&&t[e].removeAttribute(\"class\"),\"\"===t[e].getAttribute(\"style\")&&t[e].removeAttribute(\"style\");if(i)for(e=0;e<i.length;e++)o.indexOf(i[e].getAttribute(\"src\"))<0&&w.events.trigger(\"video.removed\",[A(i[e])]);i=t}function M(){f||function n(){var e;if(w.shared.$video_resizer?(f=w.shared.$video_resizer,s=w.shared.$vid_overlay,w.events.on(\"destroy\",function(){A(\"body\").first().append(f.removeClass(\"fr-active\"))},!0)):(w.shared.$video_resizer=A(document.createElement(\"div\")).attr(\"class\",\"fr-video-resizer\"),f=w.shared.$video_resizer,w.events.$on(f,\"mousedown\",function(e){e.stopPropagation()},!0),w.opts.videoResize&&(f.append($(\"nw\")+$(\"ne\")+$(\"sw\")+$(\"se\")),w.shared.$vid_overlay=A(document.createElement(\"div\")).attr(\"class\",\"fr-video-overlay\"),s=w.shared.$vid_overlay,e=f.get(0).ownerDocument,A(e).find(\"body\").first().append(s))),w.events.on(\"shared.destroy\",function(){f.html(\"\").removeData().remove(),f=null,w.opts.videoResize&&(s.remove(),s=null)},!0),w.helpers.isMobile()||w.events.$on(A(w.o_win),\"resize.video\",function(){V(!0)}),w.opts.videoResize){e=f.get(0).ownerDocument,w.events.$on(f,w._mousedown,\".fr-handler\",T),w.events.$on(A(e),w._mousemove,z),w.events.$on(A(e.defaultView||e.parentWindow),w._mouseup,P),w.events.$on(s,\"mouseleave\",P);var i=1,a=null,r=0;w.events.on(\"keydown\",function(e){if(E){var t=-1!=navigator.userAgent.indexOf(\"Mac OS X\")?e.metaKey:e.ctrlKey,o=e.which;(o!==a||200<e.timeStamp-r)&&(i=1),(o==we.KEYCODE.EQUALS||w.browser.mozilla&&o==we.KEYCODE.FF_EQUALS)&&t&&!e.altKey?i=O.call(this,e,1,1,i):(o==we.KEYCODE.HYPHEN||w.browser.mozilla&&o==we.KEYCODE.FF_HYPHEN)&&t&&!e.altKey&&(i=O.call(this,e,2,-1,i)),a=o,r=e.timeStamp}}),w.events.on(\"keyup\",function(){i=1})}}(),(w.$wp||w.$sc).append(f),f.data(\"instance\",w);var e=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\")),t=0,o=0;w.opts.iframe&&(o=w.helpers.getPX(w.$wp.find(\".fr-iframe\").css(\"padding-top\")),t=w.helpers.getPX(w.$wp.find(\".fr-iframe\").css(\"padding-left\"))),f.css(\"top\",(w.opts.iframe?e.offset().top+o-1:e.offset().top-w.$wp.offset().top-1)+w.$wp.scrollTop()).css(\"left\",(w.opts.iframe?e.offset().left+t-1:e.offset().left-w.$wp.offset().left-1)+w.$wp.scrollLeft()).css(\"width\",e.get(0).getBoundingClientRect().width).css(\"height\",e.get(0).getBoundingClientRect().height).addClass(\"fr-active\")}function t(e){if(e&&\"touchend\"==e.type&&o)return!0;if(e&&w.edit.isDisabled())return e.stopPropagation(),e.preventDefault(),!1;if(w.edit.isDisabled())return!1;for(var t=0;t<we.INSTANCES.length;t++)we.INSTANCES[t]!=w&&we.INSTANCES[t].events.trigger(\"video.hideResizer\");w.toolbar.disable(),w.helpers.isMobile()&&(w.events.disableBlur(),w.$el.blur(),w.events.enableBlur()),w.$el.find(\".fr-video.fr-active\").removeClass(\"fr-active\"),(E=A(this)).addClass(\"fr-active\"),w.opts.iframe&&w.size.syncIframe(),te(),M(),r(),w.selection.clear(),w.button.bulkRefresh(),w.events.trigger(\"image.hideResizer\")}function V(e){E&&(function t(){return w.shared.vid_exit_flag}()||!0===e)&&(f.removeClass(\"fr-active\"),w.toolbar.enable(),E.removeClass(\"fr-active\"),E=null,Y())}function N(){w.shared.vid_exit_flag=!0}function Y(){w.shared.vid_exit_flag=!1}function H(e){var t=e.originalEvent.dataTransfer;if(t&&t.files&&t.files.length){var o=t.files[0];if(o&&o.type&&-1!==o.type.indexOf(\"video\")){if(!w.opts.videoUpload)return e.preventDefault(),e.stopPropagation(),!1;w.markers.remove(),w.markers.insertAtPoint(e.originalEvent),w.$el.find(\".fr-marker\").replaceWith(we.MARKERS),w.popups.hideAll();var i=w.popups.get(\"video.insert\");return i||(i=n()),w.popups.setContainer(\"video.insert\",w.$sc),w.popups.show(\"video.insert\",e.originalEvent.pageX,e.originalEvent.pageY),R(),0<=w.opts.videoAllowedTypes.indexOf(o.type.replace(/video\\//g,\"\"))?K(t.files):F(U),e.preventDefault(),e.stopPropagation(),!1}}}function K(e){if(void 0!==e&&0<e.length){if(!1===w.events.trigger(\"video.beforeUpload\",[e]))return!1;var t,o=e[0];if(!(null!==w.opts.videoUploadURL&&w.opts.videoUploadURL!=C||w.opts.videoUploadToS3||w.opts.videoUploadToAzure))return function y(i){E&&E.find(\"iframe\")&&E.find(\"iframe\").length&&q();var a=new FileReader;a.onload=function(){a.result;for(var e=atob(a.result.split(\",\")[1]),t=[],o=0;o<e.length;o++)t.push(e.charCodeAt(o));x(window.URL.createObjectURL(new Blob([new Uint8Array(t)],{type:i.type})),!1,null,E)},R(),a.readAsDataURL(i)}(o),!1;if(o.size>w.opts.videoMaxSize)return F(S),!1;if(w.opts.videoAllowedTypes.indexOf(o.type.replace(/video\\//g,\"\"))<0)return F(U),!1;if(w.drag_support.formdata&&(t=w.drag_support.formdata?new FormData:null),t){var i;if(!1!==w.opts.videoUploadToS3)for(i in t.append(\"key\",w.opts.videoUploadToS3.keyStart+(new Date).getTime()+\"-\"+(o.name||\"untitled\")),t.append(\"success_action_status\",\"201\"),t.append(\"X-Requested-With\",\"xhr\"),t.append(\"Content-Type\",o.type),w.opts.videoUploadToS3.params)w.opts.videoUploadToS3.params.hasOwnProperty(i)&&t.append(i,w.opts.videoUploadToS3.params[i]);for(i in w.opts.videoUploadParams)w.opts.videoUploadParams.hasOwnProperty(i)&&t.append(i,w.opts.videoUploadParams[i]);t.append(w.opts.videoUploadParam,o);var a,r,n=w.opts.videoUploadURL;w.opts.videoUploadToS3&&(n=w.opts.videoUploadToS3.uploadURL?w.opts.videoUploadToS3.uploadURL:\"https://\".concat(w.opts.videoUploadToS3.region,\".amazonaws.com/\").concat(w.opts.videoUploadToS3.bucket));var s=w.opts.videoUploadMethod;w.opts.videoUploadToAzure&&(n=w.opts.videoUploadToAzure.uploadURL?\"\".concat(w.opts.videoUploadToAzure.uploadURL,\"/\").concat(o.name):encodeURI(\"https://\".concat(w.opts.videoUploadToAzure.account,\".blob.core.windows.net/\").concat(w.opts.videoUploadToAzure.container,\"/\").concat(o.name)),a=n,w.opts.videoUploadToAzure.SASToken&&(n+=w.opts.videoUploadToAzure.SASToken),s=\"PUT\");var d=w.core.getXHR(n,s);if(w.opts.videoUploadToAzure){var l=(new Date).toUTCString();if(!w.opts.videoUploadToAzure.SASToken&&w.opts.videoUploadToAzure.accessKey){var p=w.opts.videoUploadToAzure.account,f=w.opts.videoUploadToAzure.container;if(w.opts.videoUploadToAzure.uploadURL){var c=w.opts.videoUploadToAzure.uploadURL.split(\"/\");f=c.pop(),p=c.pop().split(\".\")[0]}var v=\"x-ms-blob-type:BlockBlob\\nx-ms-date:\".concat(l,\"\\nx-ms-version:2019-07-07\"),u=encodeURI(\"/\"+p+\"/\"+f+\"/\"+o.name),g=s+\"\\n\\n\\n\"+o.size+\"\\n\\n\"+o.type+\"\\n\\n\\n\\n\\n\\n\\n\"+v+\"\\n\"+u,h=w.cryptoJSPlugin.cryptoJS.HmacSHA256(g,w.cryptoJSPlugin.cryptoJS.enc.Base64.parse(w.opts.videoUploadToAzure.accessKey)).toString(w.cryptoJSPlugin.cryptoJS.enc.Base64),m=\"SharedKey \"+p+\":\"+h;r=h,d.setRequestHeader(\"Authorization\",m)}for(i in d.setRequestHeader(\"x-ms-version\",\"2019-07-07\"),d.setRequestHeader(\"x-ms-date\",l),d.setRequestHeader(\"Content-Type\",o.type),d.setRequestHeader(\"x-ms-blob-type\",\"BlockBlob\"),w.opts.videoUploadParams)w.opts.videoUploadParams.hasOwnProperty(i)&&d.setRequestHeader(i,w.opts.videoUploadParams[i]);for(i in w.opts.videoUploadToAzure.params)w.opts.videoUploadToAzure.params.hasOwnProperty(i)&&d.setRequestHeader(i,w.opts.videoUploadToAzure.params[i])}d.onload=function(){_.call(d,E,a,r)},d.onerror=B,d.upload.onprogress=D,d.onabort=I,R(),w.events.disableBlur(),w.edit.off(),w.events.enableBlur();var b=w.popups.get(\"video.insert\");b&&A(b.off(\"abortUpload\")).on(\"abortUpload\",function(){4!=d.readyState&&d.abort()}),d.send(w.opts.videoUploadToAzure?o:t)}}}function F(e,t){w.edit.on(),E&&E.find(\"video\").addClass(\"fr-error\"),y(w.language.translate(\"Something went wrong. Please try again.\")),w.events.trigger(\"video.error\",[{code:e,message:a[e]},t])}function X(){if(E){var e=w.popups.get(\"video.size\"),t=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\"));e.find('input[name=\"width\"]').val(t.get(0).style.width||t.attr(\"width\")).trigger(\"change\"),e.find('input[name=\"height\"]').val(t.get(0).style.height||t.attr(\"height\")).trigger(\"change\")}}function G(e){if(e)return w.popups.onRefresh(\"video.size\",X),!0;var t={buttons:'<div class=\"fr-buttons fr-tabs\">'.concat(w.button.buildList(w.opts.videoSizeButtons),\"</div>\"),size_layer:'<div class=\"fr-video-size-layer fr-layer fr-active\" id=\"fr-video-size-layer-'.concat(w.id,'\"><div class=\"fr-video-group\"><div class=\"fr-input-line\"><input id=\"fr-video-size-layer-width-').concat(w.id,'\" type=\"text\" name=\"width\" placeholder=\"').concat(w.language.translate(\"Width\"),'\" tabIndex=\"1\"></div><div class=\"fr-input-line\"><input id=\"fr-video-size-layer-height-').concat(w.id,'\" type=\"text\" name=\"height\" placeholder=\"').concat(w.language.translate(\"Height\"),'\" tabIndex=\"1\"></div></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"videoSetSize\" tabIndex=\"2\" role=\"button\">').concat(w.language.translate(\"Update\"),\"</button></div></div>\")},o=w.popups.create(\"video.size\",t);return w.events.$on(w.$wp,\"scroll\",function(){E&&w.popups.isVisible(\"video.size\")&&(w.events.disableBlur(),l(E))}),o}function j(e){if(void 0===e&&(e=E),e){if(e.hasClass(\"fr-fvl\"))return\"left\";if(e.hasClass(\"fr-fvr\"))return\"right\";if(e.hasClass(\"fr-dvb\")||e.hasClass(\"fr-dvi\"))return\"center\";if(\"block\"==e.css(\"display\")){if(\"left\"==e.css(\"text-algin\"))return\"left\";if(\"right\"==e.css(\"text-align\"))return\"right\"}else{if(\"left\"==e.css(\"float\"))return\"left\";if(\"right\"==e.css(\"float\"))return\"right\"}}return\"center\"}function W(e){void 0===e&&(e=E);var t=e.css(\"float\");return e.css(\"float\",\"none\"),\"block\"==e.css(\"display\")?(e.css(\"float\",\"\"),e.css(\"float\")!=t&&e.css(\"float\",t),\"block\"):(e.css(\"float\",\"\"),e.css(\"float\")!=t&&e.css(\"float\",t),\"inline\")}function q(){if(E&&!1!==w.events.trigger(\"video.beforeRemove\",[E])){var e=E;if(w.popups.hideAll(),V(!0),w.opts.trackChangesEnabled&&(!e[0].parentNode||\"SPAN\"!==e[0].parentNode.tagName||!e[0].parentNode.hasAttribute(\"data-tracking\")))return void w.track_changes.removeSpecialItem(e);w.selection.setBefore(e.get(0))||w.selection.setAfter(e.get(0)),e.remove(),w.selection.restore(),w.html.fillEmptyBlocks()}}function J(){d()}function Z(e,t,o){!w.opts.htmlUntouched&&w.opts.useClasses?(e.removeClass(\"fr-fvl fr-fvr fr-dvb fr-dvi\"),e.addClass(\"fr-fv\".concat(o[0],\" fr-dv\").concat(t[0]))):\"inline\"==t?(e.css({display:\"inline-block\"}),\"center\"==o?e.css({\"float\":\"none\"}):\"left\"==o?e.css({\"float\":\"left\"}):e.css({\"float\":\"right\"})):(e.css({display:\"block\",clear:\"both\"}),\"left\"==o?e.css({textAlign:\"left\"}):\"right\"==o?e.css({textAlign:\"right\"}):e.css({textAlign:\"center\"}))}function Q(){var e=w.$el.find(\"video\").filter(function(){return 0===A(this).parents(\"span.fr-video\").length});if(0!=e.length){e.wrap(A(document.createElement(\"span\")).attr(\"class\",\"fr-video fr-deletable\").attr(\"contenteditable\",\"false\")),w.$el.find(\"embed, iframe\").filter(function(){if(w.browser.safari&&this.getAttribute(\"src\")&&this.setAttribute(\"src\",this.src),0<A(this).parents(\"span.fr-video\").length)return!1;for(var e=A(this).attr(\"src\"),t=0;t<we.VIDEO_PROVIDERS.length;t++){var o=we.VIDEO_PROVIDERS[t];if(o.test_regex.test(e)&&new RegExp(w.opts.videoAllowedProviders.join(\"|\")).test(o.provider))return!0}return!1}).map(function(){return 0===A(this).parents(\"object\").length?this:A(this).parents(\"object\").get(0)}).wrap(A(document.createElement(\"span\")).attr(\"class\",\"fr-video\").attr(\"contenteditable\",\"false\"));for(var t,o,i,a,r=w.$el.find(\"span.fr-video, video\"),n=0;n<r.length;n++){var s=A(r[n]);!w.opts.htmlUntouched&&w.opts.useClasses?((a=s).hasClass(\"fr-dvi\")||a.hasClass(\"fr-dvb\")||(a.addClass(\"fr-fv\".concat(j(a)[0])),a.addClass(\"fr-dv\".concat(W(a)[0]))),w.opts.videoTextNear||s.removeClass(\"fr-dvi\").addClass(\"fr-dvb\")):w.opts.htmlUntouched||w.opts.useClasses||(void 0,o=(t=s).hasClass(\"fr-dvb\")?\"block\":t.hasClass(\"fr-dvi\")?\"inline\":null,i=t.hasClass(\"fr-fvl\")?\"left\":t.hasClass(\"fr-fvr\")?\"right\":j(t),Z(t,o,i),t.removeClass(\"fr-dvb fr-dvi fr-fvr fr-fvl\"))}r.toggleClass(\"fr-draggable\",w.opts.videoMove)}}function ee(e){document.getElementById(\"autoplay-\".concat(w.id)).style.cssText=\"background:\".concat(e)}function te(){if(E){w.selection.clear();var e=w.doc.createRange();e.selectNode(E.get(0)),w.selection.get().addRange(e)}}return a[1]=\"Video cannot be loaded from the passed link.\",a[c]=\"No link in upload response.\",a[v]=\"Error during file upload.\",a[u]=\"Parsing response failed.\",a[S]=\"File is too large.\",a[U]=\"Video file type is invalid.\",a[7]=\"Files can be uploaded only to same domain in IE 8 and IE 9.\",w.shared.vid_exit_flag=!1,{_init:function oe(){w.opts.videoResponsive&&(w.opts.videoResize=!1),function e(){w.events.on(\"drop\",H,!0),w.events.on(\"mousedown window.mousedown\",N),w.events.on(\"window.touchmove\",Y),w.events.on(\"mouseup window.mouseup\",V),w.events.on(\"commands.mousedown\",function(e){0<e.parents(\".fr-toolbar\").length&&V()}),w.events.on(\"video.hideResizer commands.undo commands.redo element.dropped\",function(){V(!0)})}(),w.helpers.isMobile()&&(w.events.$on(w.$el,\"touchstart\",\"span.fr-video\",function(){o=!1}),w.events.$on(w.$el,\"touchmove\",function(){o=!0})),w.events.on(\"html.set\",Q),Q(),w.events.$on(w.$el,\"mousedown\",\"span.fr-video\",function(e){e.stopPropagation(),(w.browser.msie||w.browser.edge)&&(e.target.innerText||(e.target.dragDrop(),t.call(this,e)))}),w.events.$on(w.$el,\"click touchend\",\"span.fr-video\",function(e){if(e.target.innerText.length||\"false\"==A(this).parents(\"[contenteditable]\").not(\".fr-element\").not(\".fr-img-caption\").not(\"body\").first().attr(\"contenteditable\"))return!0;t.call(this,e)}),w.events.on(\"keydown\",function(e){var t=e.which;return!E||t!=we.KEYCODE.BACKSPACE&&t!=we.KEYCODE.DELETE?E&&t==we.KEYCODE.ESC?(V(!0),e.preventDefault(),!1):E&&t!=we.KEYCODE.F10&&!w.keys.isBrowserAction(e)?(e.preventDefault(),!1):void 0:(e.preventDefault(),q(),w.undo.saveStep(),!1)},!0),w.events.on(\"toolbar.esc\",function(){if(E)return w.events.disableBlur(),w.events.focus(),!1},!0),w.events.on(\"toolbar.focusEditor\",function(){if(E)return!1},!0),w.events.on(\"keydown\",function(){w.$el.find(\"span.fr-video:empty\").remove()}),w.$wp&&(L(),w.events.on(\"contentChanged\",L)),n(!0),G(!0)},showInsertPopup:function ie(){var e=w.$tb.find('.fr-command[data-cmd=\"insertVideo\"]'),t=w.popups.get(\"video.insert\");if(t||(t=n()),d(),!t.hasClass(\"fr-active\"))if(w.popups.refresh(\"video.insert\"),w.popups.setContainer(\"video.insert\",w.$tb),e.isVisible()){var o=w.button.getPosition(e),i=o.left,a=o.top;w.popups.show(\"video.insert\",i,a,e.outerHeight())}else w.position.forSelection(t),w.popups.show(\"video.insert\")},showLayer:function ae(e){var t,o,i=w.popups.get(\"video.insert\");if(!E&&!w.opts.toolbarInline){var a=w.$tb.find('.fr-command[data-cmd=\"insertVideo\"]');t=a.offset().left,o=a.offset().top+(w.opts.toolbarBottom?10:a.outerHeight()-10)}w.opts.toolbarInline&&(o=i.offset().top-w.helpers.getPX(i.css(\"margin-top\")),i.hasClass(\"fr-above\")&&(o+=i.outerHeight())),i.find(\".fr-layer\").removeClass(\"fr-active\"),i.find(\".fr-\".concat(e,\"-layer\")).addClass(\"fr-active\"),w.popups.show(\"video.insert\",t,o,0),w.accessibility.focusPopup(i)},refreshByURLButton:function re(e){var t=w.popups.get(\"video.insert\");t&&t.find(\".fr-video-by-url-layer\").hasClass(\"fr-active\")&&e.addClass(\"fr-active\").attr(\"aria-pressed\",!0)},refreshEmbedButton:function ne(e){var t=w.popups.get(\"video.insert\");t&&t.find(\".fr-video-embed-layer\").hasClass(\"fr-active\")&&e.addClass(\"fr-active\").attr(\"aria-pressed\",!0)},refreshUploadButton:function se(e){var t=w.popups.get(\"video.insert\");t&&t.find(\".fr-video-upload-layer\").hasClass(\"fr-active\")&&e.addClass(\"fr-active\").attr(\"aria-pressed\",!0)},upload:K,insertByURL:function de(e){var t=!!document.getElementById(\"videoPluginAutoplay\")&&document.getElementById(\"videoPluginAutoplay\").checked;if(void 0===e){var o=(e=(w.popups.get(\"video.insert\").find('.fr-video-by-url-layer input[type=\"text\"]').val()||\"\").trim()).match(/(https?:\\/\\/)?(www\\.)?(player\\.)?vimeo\\.com\\/?(showcase\\/)*([0-9))([a-z]*\\/)*([0-9]{6,11})[?]?.*/);if(o&&7==o.length){var i=o[6],a=e.substring(0,e.lastIndexOf(\"/\")),r=e.substring(e.lastIndexOf(\"/\")+1,e.length);e=r.includes(\"?h=\")||r.includes(\"?v=\")||i===r?(\"\".concat(a,\"/\").concat(r)||\"\").trim():(\"\".concat(a,\"?h=\").concat(r)||\"\").trim()}}var n=null;if(/^http/.test(e)||(e=\"https://\".concat(e)),w.helpers.isURL(e))for(var s=0;s<we.VIDEO_PROVIDERS.length;s++){var d=we.VIDEO_PROVIDERS[s],l=\"autoplay=1&mute=1\";if(d.html.includes(\"autoplay=1\")&&document.getElementById(\"videoPluginAutoplay\").checked)d.html=d.html,document.getElementById(\"videoPluginAutoplay\").checked=!1;else if(t){var p=d.html.indexOf(\"{url}\")+5;d.html=[d.html.slice(0,p),l,d.html.slice(p)].join(\"\"),t=!1,document.getElementById(\"videoPluginAutoplay\").checked=!1}else(d=we.VIDEO_PROVIDERS[s]).html=d.html.replace(l,\"\");if(d.test_regex.test(e)&&new RegExp(w.opts.videoAllowedProviders.join(\"|\")).test(d.provider)){n=e.replace(d.url_regex,d.url_text),n=d.html.replace(/\\{url\\}/,n);break}}n?h(n):(y(w.language.translate(\"Something went wrong. Please try again.\")),w.events.trigger(\"video.linkError\",[e]))},insertEmbed:function le(e){void 0===e&&(e=w.popups.get(\"video.insert\").find(\".fr-video-embed-layer textarea\").val()||\"\"),0!==e.length&&we.VIDEO_EMBED_REGEX.test(e)?h(e):(y(w.language.translate(\"Something went wrong. Please try again.\")),w.events.trigger(\"video.codeError\",[e]))},insert:h,align:function pe(e){E.removeClass(\"fr-fvr fr-fvl\"),!w.opts.htmlUntouched&&w.opts.useClasses?\"left\"==e?E.addClass(\"fr-fvl\"):\"right\"==e&&E.addClass(\"fr-fvr\"):Z(E,W(),e),te(),M(),r(),w.selection.clear()},refreshAlign:function fe(e){if(!E)return!1;e.find(\">*\").first().replaceWith(w.icon.create(\"video-align-\".concat(j())))},refreshAlignOnShow:function ce(e,t){E&&t.find('.fr-command[data-param1=\"'.concat(j(),'\"]')).addClass(\"fr-active\").attr(\"aria-selected\",!0)},display:function ve(e){E.removeClass(\"fr-dvi fr-dvb\"),!w.opts.htmlUntouched&&w.opts.useClasses?\"inline\"==e?E.addClass(\"fr-dvi\"):\"block\"==e&&E.addClass(\"fr-dvb\"):Z(E,e,j()),te(),M(),r(),w.selection.clear()},refreshDisplayOnShow:function ue(e,t){E&&t.find('.fr-command[data-param1=\"'.concat(W(),'\"]')).addClass(\"fr-active\").attr(\"aria-selected\",!0)},remove:q,hideProgressBar:d,showSizePopup:function ge(){var e=w.popups.get(\"video.size\");e||(e=G()),d(),w.popups.refresh(\"video.size\"),w.popups.setContainer(\"video.size\",w.$sc);var t=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\")),o=t.offset().left+t.outerWidth()/2,i=t.offset().top+t.height();w.popups.show(\"video.size\",o,i,t.height(),!0)},replace:function he(){var e=w.popups.get(\"video.insert\");e||(e=n()),w.popups.isVisible(\"video.insert\")||(d(),w.popups.refresh(\"video.insert\"),w.popups.setContainer(\"video.insert\",w.$sc));var t=E.offset().left+E.outerWidth()/2,o=E.offset().top+E.height();w.popups.show(\"video.insert\",t,o,E.outerHeight(),!0)},back:function e(){E?(w.events.disableBlur(),E[0].click()):(w.events.disableBlur(),w.selection.restore(),w.events.enableBlur(),w.popups.hide(\"video.insert\"),w.toolbar.showInline())},setSize:function me(e,t){if(E){var o=w.popups.get(\"video.size\"),i=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\"));i.css(\"width\",e||o.find('input[name=\"width\"]').val()),i.css(\"height\",t||o.find('input[name=\"height\"]').val()),i.get(0).style.width&&i.removeAttr(\"width\"),i.get(0).style.height&&i.removeAttr(\"height\"),o.find(\"input:focus\").blur(),setTimeout(function(){E.trigger(\"click\")},w.helpers.isAndroid()?50:0)}},get:function be(){return E},showProgressBar:R,_editVideo:l,setAutoplay:function ye(){var e;if(E.find(\"iframe, embed, audio\").get(0))(e=E.find(\"iframe, embed, audio\")).get(0).src.includes(\"autoplay=1\")?(ee(\"#FFFFFF\"),e.get(0).src=e.get(0).src.replace(\"&autoplay=1\",\"\")):(ee(\"#D6D6D6\"),e.get(0).src=e.get(0).src+\"&autoplay=1\");else if((e=E.find(\"iframe, embed, video\")).get(0).outerHTML.includes(\"autoplay\"))ee(\"#FFFFFF\"),e.get(0).outerHTML=e.get(0).outerHTML.replace(\"autoplay\",\"\");else{ee(\"#D6D6D6\");var t=e.get(0).outerHTML.indexOf(\"class\")-1;e.get(0).outerHTML=[e.get(0).outerHTML.slice(0,t),\"autoplay\",e.get(0).outerHTML.slice(t)].join(\"\")}}}},we.RegisterCommand(\"insertVideo\",{title:\"Insert Video\",undo:!1,focus:!0,refreshAfterCallback:!1,popup:!0,callback:function(){this.popups.isVisible(\"video.insert\")?(this.$el.find(\".fr-marker\").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"video.insert\")):this.video.showInsertPopup()},plugin:\"video\"}),we.DefineIcon(\"insertVideo\",{NAME:\"video-camera\",FA5NAME:\"camera\",SVG_KEY:\"insertVideo\"}),we.DefineIcon(\"videoByURL\",{NAME:\"link\",SVG_KEY:\"insertLink\"}),we.RegisterCommand(\"videoByURL\",{title:\"By URL\",undo:!1,focus:!1,toggle:!0,callback:function(){this.video.showLayer(\"video-by-url\")},refresh:function(e){this.video.refreshByURLButton(e)}}),we.DefineIcon(\"videoEmbed\",{NAME:\"code\",SVG_KEY:\"codeView\"}),we.RegisterCommand(\"videoEmbed\",{title:\"Embedded Code\",undo:!1,focus:!1,toggle:!0,callback:function(){this.video.showLayer(\"video-embed\")},refresh:function(e){this.video.refreshEmbedButton(e)}}),we.DefineIcon(\"videoUpload\",{NAME:\"upload\",SVG_KEY:\"upload\"}),we.RegisterCommand(\"videoUpload\",{title:\"Upload Video\",undo:!1,focus:!1,toggle:!0,callback:function(){this.video.showLayer(\"video-upload\")},refresh:function(e){this.video.refreshUploadButton(e)}}),we.RegisterCommand(\"videoInsertByURL\",{undo:!0,focus:!0,callback:function(){this.video.insertByURL()}}),we.RegisterCommand(\"videoInsertEmbed\",{undo:!0,focus:!0,callback:function(){this.video.insertEmbed()}}),we.DefineIcon(\"videoDisplay\",{NAME:\"star\",SVG_KEY:\"star\"}),we.RegisterCommand(\"videoDisplay\",{title:\"Display\",type:\"dropdown\",options:{inline:\"Inline\",block:\"Break Text\"},callback:function(e,t){this.video.display(t)},refresh:function(e){this.opts.videoTextNear||e.addClass(\"fr-hidden\")},refreshOnShow:function(e,t){this.video.refreshDisplayOnShow(e,t)}}),we.DefineIcon(\"video-align\",{NAME:\"align-left\",SVG_KEY:\"align Left\"}),we.DefineIcon(\"video-align-left\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),we.DefineIcon(\"video-align-right\",{NAME:\"align-right\",SVG_KEY:\"alignRight\"}),we.DefineIcon(\"video-align-center\",{NAME:\"align-justify\",SVG_KEY:\"alignJustify\"}),we.DefineIcon(\"videoAlign\",{NAME:\"align-center\",SVG_KEY:\"alignCenter\"}),we.RegisterCommand(\"videoAlign\",{type:\"dropdown\",title:\"Align\",options:{left:\"Align Left\",center:\"None\",right:\"Align Right\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=we.COMMANDS.videoAlign.options;for(var o in t)t.hasOwnProperty(o)&&(e+='<li role=\"presentation\"><a class=\"fr-command fr-title\" tabIndex=\"-1\" role=\"option\" data-cmd=\"videoAlign\" data-param1=\"'.concat(o,'\" title=\"').concat(this.language.translate(t[o]),'\">').concat(this.icon.create(\"video-align-\".concat(o)),'<span class=\"fr-sr-only\">').concat(this.language.translate(t[o]),\"</span></a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.video.align(t)},refresh:function(e){this.video.refreshAlign(e)},refreshOnShow:function(e,t){this.video.refreshAlignOnShow(e,t)}}),we.DefineIcon(\"videoReplace\",{NAME:\"exchange\",FA5NAME:\"exchange-alt\",SVG_KEY:\"replaceImage\"}),we.RegisterCommand(\"videoReplace\",{title:\"Replace\",undo:!1,focus:!1,popup:!0,refreshAfterCallback:!1,callback:function(){this.video.replace()}}),we.DefineIcon(\"videoRemove\",{NAME:\"trash\",SVG_KEY:\"remove\"}),we.RegisterCommand(\"videoRemove\",{title:\"Remove\",callback:function(){this.video.remove()}}),we.DefineIcon(\"autoplay\",{NAME:\"autoplay\",SVG_KEY:\"autoplay\"}),we.RegisterCommand(\"autoplay\",{undo:!1,focus:!1,popup:!0,title:\"Autoplay\",callback:function(){this.video.setAutoplay()}}),we.DefineIcon(\"videoSize\",{NAME:\"arrows-alt\",SVG_KEY:\"imageSize\"}),we.RegisterCommand(\"videoSize\",{undo:!1,focus:!1,popup:!0,title:\"Change Size\",callback:function(){this.video.showSizePopup()}}),we.DefineIcon(\"videoBack\",{NAME:\"arrow-left\",SVG_KEY:\"back\"}),we.RegisterCommand(\"videoBack\",{title:\"Back\",undo:!1,focus:!1,back:!0,callback:function(){this.video.back()},refresh:function(e){this.video.get()||this.opts.toolbarInline?(e.removeClass(\"fr-hidden\"),e.next().hasClass(\"fr-separator\")&&e.next().removeClass(\"fr-hidden\")):(e.addClass(\"fr-hidden\"),e.next().hasClass(\"fr-separator\")&&e.next().addClass(\"fr-hidden\"))}}),we.RegisterCommand(\"videoDismissError\",{title:\"OK\",undo:!1,callback:function(){this.video.hideProgressBar(!0)}}),we.RegisterCommand(\"videoSetSize\",{undo:!0,focus:!1,title:\"Update\",refreshAfterCallback:!1,callback:function(){this.video.setSize()}})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(Ce){\"use strict\";Ce=Ce&&Ce.hasOwnProperty(\"default\")?Ce[\"default\"]:Ce,Object.assign(Ce.POPUP_TEMPLATES,{\"table.insert\":\"[_BUTTONS_][_ROWS_COLUMNS_]\",\"table.edit\":\"[_BUTTONS_]\",\"table.colors\":\"[_BUTTONS_][_COLORS_][_CUSTOM_COLOR_]\"}),Object.assign(Ce.DEFAULTS,{tableInsertMaxSize:10,tableEditButtons:[\"tableHeader\",\"tableFooter\",\"tableRemove\",\"tableRows\",\"tableColumns\",\"tableStyle\",\"-\",\"tableCells\",\"tableCellBackground\",\"tableCellVerticalAlign\",\"tableCellHorizontalAlign\",\"tableCellStyle\"],tableInsertButtons:[\"tableBack\",\"|\"],tableResizer:!0,tableDefaultWidth:\"100%\",tableResizerOffset:5,tableResizingLimit:30,tableColorsButtons:[\"tableBack\",\"|\"],tableColors:[\"#61BD6D\",\"#1ABC9C\",\"#54ACD2\",\"#2C82C9\",\"#9365B8\",\"#475577\",\"#CCCCCC\",\"#41A85F\",\"#00A885\",\"#3D8EB9\",\"#2969B0\",\"#553982\",\"#28324E\",\"#000000\",\"#F7DA64\",\"#FBA026\",\"#EB6B56\",\"#E25041\",\"#A38F84\",\"#EFEFEF\",\"#FFFFFF\",\"#FAC51C\",\"#F37934\",\"#D14841\",\"#B8312F\",\"#7C706B\",\"#D1D5D8\",\"REMOVE\"],tableColorsStep:7,tableCellStyles:{\"fr-highlighted\":\"Highlighted\",\"fr-thick\":\"Thick\"},tableStyles:{\"fr-dashed-borders\":\"Dashed Borders\",\"fr-alternate-rows\":\"Alternate Rows\"},tableCellMultipleStyles:!0,tableMultipleStyles:!0,tableInsertHelper:!0,tableInsertHelperOffset:15}),Ce.PLUGINS.table=function(R){var A,f,n,r,l,o,O,y=R.$;function u(){var e=$();if(e){var t=R.popups.get(\"table.edit\");if(t||(t=p()),t){R.popups.setContainer(\"table.edit\",R.$sc);var a=S(e),l=a.left+(a.right-a.left)/2,n=a.bottom;R.popups.show(\"table.edit\",l,n,a.bottom-a.top,!0),R.edit.isDisabled()&&(R.$el.removeClass(\"fr-no-selection\"),R.edit.on(),R.button.bulkRefresh(),R.selection.setAtEnd(R.$el.find(\".fr-selected-cell\").last().get(0)),R.selection.restore())}}}function s(){var e=$();if(e){var t=R.popups.get(\"table.colors\");t||(t=function o(){var e=\"\";0<R.opts.tableColorsButtons.length&&(e='<div class=\"fr-buttons fr-tabs\">'.concat(R.button.buildList(R.opts.tableColorsButtons),\"</div>\"));var t=\"\";R.opts.colorsHEXInput&&(t='<div class=\"fr-color-hex-layer fr-table-colors-hex-layer fr-active fr-layer\" id=\"fr-table-colors-hex-layer-'.concat(R.id,'\"><div class=\"fr-input-line\"><input maxlength=\"7\" id=\"fr-table-colors-hex-layer-text-').concat(R.id,'\" type=\"text\" placeholder=\"').concat(R.language.translate(\"HEX Color\"),'\" tabIndex=\"1\" aria-required=\"true\"></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"tableCellBackgroundCustomColor\" tabIndex=\"2\" role=\"button\">').concat(R.language.translate(\"OK\"),\"</button></div></div>\"));var a={buttons:e,colors:function n(){for(var e='<div class=\"fr-color-set fr-table-colors\">',t=0;t<R.opts.tableColors.length;t++)0!==t&&t%R.opts.tableColorsStep==0&&(e+=\"<br>\"),\"REMOVE\"!=R.opts.tableColors[t]?e+='<span class=\"fr-command\" style=\"background: '.concat(R.opts.tableColors[t],';\" tabIndex=\"-1\" role=\"button\" data-cmd=\"tableCellBackgroundColor\" data-param1=\"').concat(R.opts.tableColors[t],'\"><span class=\"fr-sr-only\">').concat(R.language.translate(\"Color\"),\" \").concat(R.opts.tableColors[t],\" </span></span>\"):e+='<span class=\"fr-command\" data-cmd=\"tableCellBackgroundColor\" tabIndex=\"-1\" role=\"button\" data-param1=\"REMOVE\" title=\"'.concat(R.language.translate(\"Clear Formatting\"),'\">').concat(R.icon.create(\"tableColorRemove\"),'<span class=\"fr-sr-only\">').concat(R.language.translate(\"Clear Formatting\"),\"</span></span>\");return e+=\"</div>\"}(),custom_color:t},l=R.popups.create(\"table.colors\",a);return R.events.$on(R.$wp,\"scroll.table-colors\",function(){R.popups.isVisible(\"table.colors\")&&s()}),function r(u){R.events.on(\"popup.tab\",function(e){var t=y(e.currentTarget);if(!R.popups.isVisible(\"table.colors\")||!t.is(\"span\"))return!0;var a=e.which,l=!0;if(Ce.KEYCODE.TAB==a){var n=u.find(\".fr-buttons\");l=!R.accessibility.focusToolbar(n,!!e.shiftKey)}else if(Ce.KEYCODE.ARROW_UP==a||Ce.KEYCODE.ARROW_DOWN==a||Ce.KEYCODE.ARROW_LEFT==a||Ce.KEYCODE.ARROW_RIGHT==a){var r=t.parent().find(\"span.fr-command\"),o=r.index(t),s=R.opts.colorsStep,i=Math.floor(r.length/s),f=o%s,c=Math.floor(o/s),d=c*s+f,p=i*s;Ce.KEYCODE.ARROW_UP==a?d=((d-s)%p+p)%p:Ce.KEYCODE.ARROW_DOWN==a?d=(d+s)%p:Ce.KEYCODE.ARROW_LEFT==a?d=((d-1)%p+p)%p:Ce.KEYCODE.ARROW_RIGHT==a&&(d=(d+1)%p);var h=y(r.get(d));R.events.disableBlur(),h.focus(),l=!1}else Ce.KEYCODE.ENTER==a&&(R.button.exec(t),l=!1);return!1===l&&(e.preventDefault(),e.stopPropagation()),l},!0)}(l),l}()),R.popups.setContainer(\"table.colors\",R.$sc);var a=S(e),l=(a.left+a.right)/2,n=a.bottom;!function r(){var e=R.popups.get(\"table.colors\"),t=R.$el.find(\".fr-selected-cell\").first(),a=R.helpers.RGBToHex(t.css(\"background-color\")),l=e.find(\".fr-table-colors-hex-layer input\");e.find(\".fr-selected-color\").removeClass(\"fr-selected-color fr-active-item\"),e.find('span[data-param1=\"'.concat(a,'\"]')).addClass(\"fr-selected-color fr-active-item\"),l.val(a).trigger(\"change\")}(),R.popups.show(\"table.colors\",l,n,a.bottom-a.top,!0)}}function i(){0===Q().length&&R.toolbar.enable()}function c(e){if(e)return R.popups.onHide(\"table.insert\",function(){R.popups.get(\"table.insert\").find('.fr-table-size .fr-select-table-size > span[data-row=\"1\"][data-col=\"1\"]').trigger(\"mouseover\")}),!0;var t=\"\";0<R.opts.tableInsertButtons.length&&(t='<div class=\"fr-buttons fr-tabs\">'.concat(R.button.buildList(R.opts.tableInsertButtons),\"</div>\"));var a={buttons:t,rows_columns:function r(){for(var e='<div class=\"fr-table-size\"><div class=\"fr-table-size-info\">1 × 1</div><div class=\"fr-select-table-size\">',t=1;t<=R.opts.tableInsertMaxSize;t++){for(var a=1;a<=R.opts.tableInsertMaxSize;a++){var l=\"inline-block\";2<t&&!R.helpers.isMobile()&&(l=\"none\");var n=\"fr-table-cell \";1==t&&1==a&&(n+=\" hover\"),e+='<span class=\"fr-command '.concat(n,'\" tabIndex=\"-1\" data-cmd=\"tableInsert\" data-row=\"').concat(t,'\" data-col=\"').concat(a,'\" data-param1=\"').concat(t,'\" data-param2=\"').concat(a,'\" style=\"display: ').concat(l,';\" role=\"button\"><span></span><span class=\"fr-sr-only\">').concat(t,\" × \").concat(a,\" </span></span>\")}e+='<div class=\"new-line\"></div>'}return e+=\"</div></div>\"}()},l=R.popups.create(\"table.insert\",a);return R.events.$on(l,\"mouseover\",\".fr-table-size .fr-select-table-size .fr-table-cell\",function(e){d(y(e.currentTarget))},!0),function n(e){R.events.$on(e,\"focus\",\"[tabIndex]\",function(e){var t=y(e.currentTarget);d(t)}),R.events.on(\"popup.tab\",function(e){var t=y(e.currentTarget);if(!R.popups.isVisible(\"table.insert\")||!t.is(\"span, a\"))return!0;var a,l=e.which;if(Ce.KEYCODE.ARROW_UP==l||Ce.KEYCODE.ARROW_DOWN==l||Ce.KEYCODE.ARROW_LEFT==l||Ce.KEYCODE.ARROW_RIGHT==l){if(t.is(\"span.fr-table-cell\")){var n=t.parent().find(\"span.fr-table-cell\"),r=n.index(t),o=R.opts.tableInsertMaxSize,s=r%o,i=Math.floor(r/o);Ce.KEYCODE.ARROW_UP==l?i=Math.max(0,i-1):Ce.KEYCODE.ARROW_DOWN==l?i=Math.min(R.opts.tableInsertMaxSize-1,i+1):Ce.KEYCODE.ARROW_LEFT==l?s=Math.max(0,s-1):Ce.KEYCODE.ARROW_RIGHT==l&&(s=Math.min(R.opts.tableInsertMaxSize-1,s+1));var f=i*o+s,c=y(n.get(f));d(c),R.events.disableBlur(),c.focus(),a=!1}}else Ce.KEYCODE.ENTER==l&&(R.button.exec(t),a=!1);return!1===a&&(e.preventDefault(),e.stopPropagation()),a},!0)}(l),l}function d(e){var t=e.data(\"row\");null!==t&&(t=parseInt(t));var a=e.data(\"col\");null!==a&&(a=parseInt(a));var l=e.parent();l.siblings(\".fr-table-size-info\").html(\"\".concat(t,\" × \").concat(a)),l.find(\"> span\").removeClass(\"hover fr-active-item\");for(var n=1;n<=R.opts.tableInsertMaxSize;n++)for(var r=0;r<=R.opts.tableInsertMaxSize;r++){var o=l.find('> span[data-row=\"'.concat(n,'\"][data-col=\"').concat(r,'\"]'));n<=t&&r<=a?o.addClass(\"hover\"):n<=t+1||n<=2&&!R.helpers.isMobile()?o.css(\"display\",\"inline-block\"):2<n&&!R.helpers.isMobile()&&o.css(\"display\",\"none\")}e.addClass(\"fr-active-item\")}function p(e){if(e)return R.popups.onHide(\"table.edit\",i),!0;if(0<R.opts.tableEditButtons.length){var t={buttons:'<div class=\"fr-buttons\">'.concat(R.button.buildList(R.opts.tableEditButtons),\"</div>\")},a=R.popups.create(\"table.edit\",t);return R.events.$on(R.$wp,\"scroll.table-edit\",function(){R.popups.isVisible(\"table.edit\")&&u()}),a}return!1}function h(){if(0<Q().length){var e=ee();R.selection.setBefore(e.get(0))||R.selection.setAfter(e.get(0)),R.selection.restore(),R.popups.hide(\"table.edit\"),R.opts.trackChangesEnabled?(R.track_changes.removedTable(e),_()):e.remove(),R.toolbar.enable()}}function g(e){var t=ee();if(0<t.length){if(0<R.$el.find(\"thead .fr-selected-cell\").length&&\"above\"==e||0<R.$el.find(\"tfoot td.fr-selected-cell\").length&&\"below\"==e)return;var a,l,n,r=$(),o=M(r);if(null==o)return;l=\"above\"==e?o.min_i:o.max_i;var s=\"<tr>\";for(a=0;a<r[l].length;a++){if(\"below\"==e&&l<r.length-1&&r[l][a]==r[l+1][a]||\"above\"==e&&0<l&&r[l][a]==r[l-1][a]){if(0===a||0<a&&r[l][a]!=r[l][a-1]){var i=y(r[l][a]);i.attr(\"rowspan\",parseInt(i.attr(\"rowspan\"),10)+1)}}else s+='<td style=\"'+y(r[l][a]).attr(\"style\")+'\" ><br></td>'}s+=\"</tr>\",n=0<R.$el.find(\"thead .fr-selected-cell\").length&&\"below\"==e||0<R.$el.find(\"tfoot td.fr-selected-cell\").length&&\"above\"==e?y(t.find(\"tbody\").not(t.find(\"> table tbody\"))):y(t.find(\"tr\").not(t.find(\"> table tr\")).get(l)),\"below\"==e?\"TBODY\"==n.attr(\"tagName\")?n.prepend(s):n[0].parentNode&&n[0].insertAdjacentHTML(\"afterend\",s):\"above\"==e&&(\"TBODY\"==n.attr(\"tagName\")?n.append(s):n.before(s),R.popups.isVisible(\"table.edit\")&&u())}}function b(e,t,a){var l,n,r,o,s,i=0,f=$(a);if(e<(t=Math.min(t,f[0].length-1)))for(n=e;n<=t;n++)if(!(e<n&&f[0][n]==f[0][n-1])&&1<(o=Math.min(parseInt(f[0][n].getAttribute(\"colspan\"),10)||1,t-e+1))&&f[0][n]==f[0][n+1])for(i=o-1,l=1;l<f.length;l++)if(f[l][n]!=f[l-1][n]){for(r=n;r<n+o;r++)if(f[l][r]!==undefined)if(1<(s=parseInt(f[l][r].getAttribute(\"colspan\"),10)||1)&&f[l][r]==f[l][r+1])r+=i=Math.min(i,s-1);else if(!(i=Math.max(0,i-1)))break;if(!i)break}i&&v(f,i,\"colspan\",0,f.length-1,e,t)}function m(e,t,a){var l,n,r,o,s,i=0,f=$(a);if(e<(t=Math.min(t,f.length-1)))for(l=e;l<=t;l++)if(!(e<l&&f[l][0]==f[l-1][0])&&f[l][0]!==undefined&&1<(o=Math.min(parseInt(f[l][0].getAttribute(\"rowspan\"),10)||1,t-e+1))&&f[l][0]==f[l+1][0])for(i=o-1,n=1;n<f[0].length;n++)if(f[l][n]!=f[l][n-1]){for(r=l;r<l+o;r++)if(f[r][n]!==undefined)if(1<(s=parseInt(f[r][n].getAttribute(\"rowspan\"),10)||1)&&f[r][n]==f[r+1][n])r+=i=Math.min(i,s-1);else if(!(i=Math.max(0,i-1)))break;if(!i)break}i&&v(f,i,\"rowspan\",e,t,0,f[0].length-1)}function v(e,t,a,l,n,r,o){var s,i,f;for(s=l;s<=n;s++)for(i=r;i<=o;i++)l<s&&e[s][i]==e[s-1][i]||r<i&&e[s][i]==e[s][i-1]||e[s][i]!==undefined&&1<(f=parseInt(e[s][i].getAttribute(a),10)||1)&&(1<f-t?e[s][i].setAttribute(a,f-t):e[s][i].removeAttribute(a))}function w(e,t,a,l,n){m(e,t,n),b(a,l,n)}function t(e){var t=R.$el.find(\".fr-selected-cell\");\"REMOVE\"!=e?t.css(\"background-color\",R.helpers.HEXtoRGB(e)):t.css(\"background-color\",\"\"),u()}function C(e){e.style.removeProperty(\"border\"),e.style.removeProperty(\"border-top\"),e.style.removeProperty(\"border-bottom\"),e.style.removeProperty(\"border-left\"),e.style.removeProperty(\"border-right\")}function $(e){var f=[];if(null==(e=e||null)&&0<Q().length&&(e=ee()),e){if(!e.find(\"tr\").html().match(/xl[0-9]+/gi))for(var t=e.find(\"tr:empty\"),a=t.length-1;0<=a;a--)y(t[a]).remove();e.findVisible(\"tr\").not(e.find(\"> table tr\")).each(function(s,e){var t=y(e),i=0;t.find(\"> th, > td\").each(function(e,t){for(var a=y(t),l=parseInt(a.attr(\"colspan\"),10)||1,n=parseInt(a.attr(\"rowspan\"),10)||1,r=s;r<s+n;r++)for(var o=i;o<i+l;o++)f[r]||(f[r]=[]),f[r][o]?i++:f[r][o]=t;i+=l})})}return f}function D(e,t){for(var a=0;a<t.length;a++)for(var l=0;l<t[a].length;l++)if(t[a][l]==e)return{row:a,col:l}}function x(e,t,a){for(var l=e+1,n=t+1;l<a.length;){if(a[l][t]!=a[e][t]){l--;break}l++}for(l==a.length&&l--;n<a[e].length;){if(a[e][n]!=a[e][t]){n--;break}n++}return n==a[e].length&&n--,{row:l,col:n}}function E(){R.el.querySelector(\".fr-cell-fixed\")&&R.el.querySelector(\".fr-cell-fixed\").classList.remove(\"fr-cell-fixed\"),R.el.querySelector(\".fr-cell-handler\")&&R.el.querySelector(\".fr-cell-handler\").classList.remove(\"fr-cell-handler\")}function _(){var e=R.$el.find(\".fr-selected-cell\");0<e.length&&e.each(function(){var e=y(this);e.removeClass(\"fr-selected-cell\"),\"\"===e.attr(\"class\")&&e.removeAttr(\"class\")}),E()}function T(){R.events.disableBlur(),R.selection.clear(),R.$el.addClass(\"fr-no-selection\"),R.$el.blur(),R.events.enableBlur()}function M(e){var t=R.$el.find(\".fr-selected-cell\");if(0<t.length){var a,l=e.length,n=0,r=e[0].length,o=0;for(a=0;a<t.length;a++){var s=D(t[a],e),i=x(s.row,s.col,e);l=Math.min(s.row,l),n=Math.max(i.row,n),r=Math.min(s.col,r),o=Math.max(i.col,o)}return{min_i:l,max_i:n,min_j:r,max_j:o}}return null}function S(e){var t=M(e);if(null!=t){var a=y(e[t.min_i][t.min_j]),l=y(e[t.min_i][t.max_j]),n=y(e[t.max_i][t.min_j]);return{left:a.length&&a.offset().left,right:l.length&&l.offset().left+l.outerWidth(),top:a.length&&a.offset().top,bottom:n.length&&n.offset().top+n.outerHeight()}}}function N(e,t){if(y(e).is(t))_(),y(e).addClass(\"fr-selected-cell\");else{T(),R.edit.off();var a=$(),l=D(e,a),n=D(t,a);if(!l||!n)return;var r=function h(e,t,a,l,n){var r,o,s,i,f=e,c=t,d=a,p=l;for(r=f;r<=c;r++)(1<(parseInt(y(n[r][d]).attr(\"rowspan\"),10)||1)||1<(parseInt(y(n[r][d]).attr(\"colspan\"),10)||1))&&(i=x((s=D(n[r][d],n)).row,s.col,n),f=Math.min(s.row,f),c=Math.max(i.row,c),d=Math.min(s.col,d),p=Math.max(i.col,p)),(1<(parseInt(y(n[r][p]).attr(\"rowspan\"),10)||1)||1<(parseInt(y(n[r][p]).attr(\"colspan\"),10)||1))&&(i=x((s=D(n[r][p],n)).row,s.col,n),f=Math.min(s.row,f),c=Math.max(i.row,c),d=Math.min(s.col,d),p=Math.max(i.col,p));for(o=d;o<=p;o++)(1<(parseInt(y(n[f][o]).attr(\"rowspan\"),10)||1)||1<(parseInt(y(n[f][o]).attr(\"colspan\"),10)||1))&&(i=x((s=D(n[f][o],n)).row,s.col,n),f=Math.min(s.row,f),c=Math.max(i.row,c),d=Math.min(s.col,d),p=Math.max(i.col,p)),(1<(parseInt(y(n[c][o]).attr(\"rowspan\"),10)||1)||1<(parseInt(y(n[c][o]).attr(\"colspan\"),10)||1))&&(i=x((s=D(n[c][o],n)).row,s.col,n),f=Math.min(s.row,f),c=Math.max(i.row,c),d=Math.min(s.col,d),p=Math.max(i.col,p));return f==e&&c==t&&d==a&&p==l?{min_i:e,max_i:t,min_j:a,max_j:l}:h(f,c,d,p,n)}(Math.min(l.row,n.row),Math.max(l.row,n.row),Math.min(l.col,n.col),Math.max(l.col,n.col),a);_(),e.classList.add(\"fr-cell-fixed\"),t.classList.add(\"fr-cell-handler\");for(var o=r.min_i;o<=r.max_i;o++)for(var s=r.min_j;s<=r.max_j;s++)y(e).closest(\"table\").is(y(a[o][s]).closest(\"table\"))&&y(a[o][s]).addClass(\"fr-selected-cell\")}}function I(e){var t=null,a=y(e.target);return\"TD\"==e.target.tagName||\"TH\"==e.target.tagName?t=e.target:0<a.closest(\"th\",a.closest(\"thead\")[0]).length?t=a.closest(\"th\",a.closest(\"thead\")[0]).get(0):0<a.closest(\"td\",a.closest(\"tr\")[0]).length&&(t=a.closest(\"td\",a.closest(\"tr\")[0]).get(0)),-1===R.$el.html.toString().search(t)?null:t}function K(){_(),R.popups.hide(\"table.edit\")}function e(e){var t=I(e);if(\"false\"==y(t).parents(\"[contenteditable]\").not(\".fr-element\").not(\".fr-img-caption\").not(\"body\").first().attr(\"contenteditable\"))return!0;if(0<Q().length&&!t&&K(),!R.edit.isDisabled()||R.popups.isVisible(\"table.edit\"))if(1!=e.which||1==e.which&&R.helpers.isMac()&&e.ctrlKey)(3==e.which||1==e.which&&R.helpers.isMac()&&e.ctrlKey)&&t&&K();else if(r=!0,t){0<Q().length&&!e.shiftKey&&K(),e.stopPropagation(),R.events.trigger(\"image.hideResizer\"),R.events.trigger(\"video.hideResizer\"),n=!0;var a=t.tagName.toLowerCase();e.shiftKey&&0<R.$el.find(\"\".concat(a,\".fr-selected-cell\")).length?y(R.$el.find(\"\".concat(a,\".fr-selected-cell\")).closest(\"table\")).is(y(t).closest(\"table\"))?N(l,t):T():((R.keys.ctrlKey(e)||e.shiftKey)&&\"TD\"===e.currentTarget.tagName&&(1<Q().length||0===y(t).find(R.selection.element()).length&&!y(t).is(R.selection.element()))&&T(),l=t,0<R.opts.tableEditButtons.length&&N(l,l))}}function a(e){if(!R.edit.isDisabled()&&R.popups.areVisible())return!0;var t=I(e);if(1===Q().length&&null===t&&(R.toolbar.enable(),_()),(1===Q().length&&t&&\"TD\"!==t.tagName&&\"TH\"!==t.tagName||!n&&!R.$tb.is(e.target)&&!R.$tb.is(y(e.target).closest(\".fr-toolbar\")))&&(R.toolbar.enable(),_()),(\"BODY\"===e.target.tagName||\"HTML\"===e.target.tagName)&&!t&&0<Q().length&&R.toolbar.enable(),!(1!=e.which||1==e.which&&R.helpers.isMac()&&e.ctrlKey)){if(r=!1,n)n=!1,I(e)||1!=Q().length?0<Q().length?R.selection.isCollapsed()?(u(),R.toolbar.enable()):(_(),R.edit.on()):Q().length||(R.$el.removeClass(\"fr-no-selection\"),R.edit.on()):_();if(O){O=!1,A.removeClass(\"fr-moving\"),R.$el.removeClass(\"fr-no-selection\"),R.edit.on();var a=parseFloat(A.css(\"left\"))+R.opts.tableResizerOffset+R.$wp.offset().left;R.opts.iframe&&(a-=R.$iframe.offset().left),A.data(\"release-position\",a),A.removeData(\"max-left\"),A.removeData(\"max-right\"),function C(){var e=A.data(\"origin\"),t=A.data(\"release-position\");if(e!==t){var a=A.data(\"first\"),l=A.data(\"second\"),n=A.data(\"table\"),r=n.outerWidth();if(R.undo.canDo()||R.undo.saveStep(),null!=a&&null!=l){var o,s,i,f=$(n),c=[],d=[],p=[],h=[];for(o=0;o<f.length;o++)s=y(f[o][a]),i=y(f[o][l]),c[o]=s.outerWidth(),p[o]=i.outerWidth(),d[o]=c[o]/r*100,h[o]=p[o]/r*100;for(o=0;o<f.length;o++)if(s=y(f[o][a]),i=y(f[o][l]),f[o][a]!=f[o][l]){var u=(d[o]*(c[o]+t-e)/c[o]).toFixed(4);s.css(\"width\",u+\"%\"),i.css(\"width\",(d[o]+h[o]-u).toFixed(4)+\"%\")}}else{var g,b=n.parent(),m=r/b.width()*100,v=(parseInt(n.css(\"margin-left\"),10)||0)/b.width()*100,w=(parseInt(n.css(\"margin-right\"),10)||0)/b.width()*100;\"rtl\"==R.opts.direction&&0===l||\"rtl\"!=R.opts.direction&&0!==l?(g=(r+t-e)/r*m,n.css(\"margin-right\",\"calc(100% - \".concat(Math.round(g).toFixed(4),\"% - \").concat(Math.round(v).toFixed(4),\"%)\"))):(\"rtl\"==R.opts.direction&&0!==l||\"rtl\"!=R.opts.direction&&0===l)&&(g=(r-t+e)/r*m,n.css(\"margin-left\",\"calc(100% - \".concat(Math.round(g).toFixed(4),\"% - \").concat(Math.round(w).toFixed(4),\"%)\"))),n.css(\"width\",\"\".concat(Math.round(g).toFixed(4),\"%\"))}R.selection.restore(),R.undo.saveStep(),R.events.trigger(\"table.resized\",[n.get(0)])}A.removeData(\"origin\"),A.removeData(\"release-position\"),A.removeData(\"first\"),A.removeData(\"second\"),A.removeData(\"table\")}(),z()}}}function k(e){if(!(y(e.currentTarget).is(y(e.originalEvent.relatedTarget))||e.currentTarget.contains(e.originalEvent.relatedTarget)||e.originalEvent.relatedTarget&&e.originalEvent.relatedTarget.contains(e.currentTarget))&&(R.events.$on(y(\"input\"),\"click\",te),!0===n&&0<R.opts.tableEditButtons.length)){if(y(e.currentTarget).closest(\"table\").is(ee())){if(\"TBODY\"===e.currentTarget.parentElement.parentElement.tagName&&\"TD\"==e.currentTarget.tagName&&0===R.$el.find(\"th.fr-selected-cell\").length&&0===R.$el.find(\"tfoot td.fr-selected-cell\").length)return void N(l,e.currentTarget);if(\"TFOOT\"===e.currentTarget.parentElement.parentElement.tagName&&\"TD\"==e.currentTarget.tagName&&0===R.$el.find(\"tbody td.fr-selected-cell\").length)return void N(l,e.currentTarget);if(\"TH\"==e.currentTarget.tagName&&0===R.$el.find(\"td.fr-selected-cell\").length)return void N(l,e.currentTarget)}\"TD\"!==e.currentTarget.tagName&&\"TH\"!==e.currentTarget.tagName&&T()}}function B(e,t,a,l){for(var n,r=t;r!=R.el&&\"TD\"!=r.tagName&&\"TH\"!=r.tagName&&(\"up\"==l?n=r.previousElementSibling:\"down\"==l&&(n=r.nextElementSibling),!n);)r=r.parentNode;\"TD\"==r.tagName||\"TH\"==r.tagName?function o(e,t){for(var a=e;a&&\"TABLE\"!=a.tagName&&a.parentNode!=R.el;)a=a.parentNode;if(a&&\"TABLE\"==a.tagName){var l=$(y(a));\"up\"==t?Y(D(e,l),a,l):\"down\"==t&&F(D(e,l),a,l)}}(r,l):n&&(\"up\"==l&&R.selection.setAtEnd(n),\"down\"==l&&R.selection.setAtStart(n))}function Y(e,t,a){0<y(\".tribute-container\").length&&\"none\"!=y(\".tribute-container\").css(\"display\")||(0<e.row?R.selection.setAtEnd(a[e.row-1][e.col]):B(0,t,0,\"up\"))}function F(e,t,a){if(!(0<y(\".tribute-container\").length&&\"none\"!=y(\".tribute-container\").css(\"display\"))){var l=parseInt(a[e.row][e.col].getAttribute(\"rowspan\"),10)||1;e.row<a.length-l?R.selection.setAtStart(a[e.row+l][e.col]):B(0,t,0,\"down\")}}function z(){A&&(A.find(\"div\").css(\"opacity\",0),A.css(\"top\",0),A.css(\"left\",0),A.css(\"height\",0),A.find(\"div\").css(\"height\",0),A.hide())}function W(){f&&f.removeClass(\"fr-visible\").css(\"left\",\"-9999px\")}function L(e,t){var a=y(t),l=a.closest(\"table\"),n=l.parent();if(t&&\"TD\"!=t.tagName&&\"TH\"!=t.tagName&&(0<a.closest(\"td\").length?t=a.closest(\"td\"):0<a.closest(\"th\").length&&(t=a.closest(\"th\"))),!t||\"TD\"!=t.tagName&&\"TH\"!=t.tagName)A&&a.get(0)!=A.get(0)&&a.parent().get(0)!=A.get(0)&&R.core.sameInstance(A)&&z();else{if(a=y(t),0===R.$el.find(a).length)return!1;var r=a.offset().left-1,o=r+a.outerWidth();if(Math.abs(e.pageX-r)<=R.opts.tableResizerOffset||Math.abs(o-e.pageX)<=R.opts.tableResizerOffset){var s,i,f,c,d,p=$(l),h=D(t,p),u=x(h.row,h.col,p),g=l.offset().top,b=l.outerHeight()-1;\"rtl\"!=R.opts.direction?e.pageX-r<=R.opts.tableResizerOffset?(f=r,0<h.col?(c=r-G(h.col-1,p)+R.opts.tableResizingLimit,d=r+G(h.col,p)-R.opts.tableResizingLimit,s=h.col-1,i=h.col):(s=null,i=0,c=l.offset().left-1-parseInt(l.css(\"margin-left\"),10),d=l.offset().left-1+l.width()-p[0].length*R.opts.tableResizingLimit)):o-e.pageX<=R.opts.tableResizerOffset&&(f=o,u.col<p[u.row].length&&p[u.row][u.col+1]?(c=o-G(u.col,p)+R.opts.tableResizingLimit,d=o+G(u.col+1,p)-R.opts.tableResizingLimit,s=u.col,i=u.col+1):(s=u.col,i=null,c=l.offset().left-1+p[0].length*R.opts.tableResizingLimit,d=n.offset().left-1+n.width()+parseFloat(n.css(\"padding-left\")))):o-e.pageX<=R.opts.tableResizerOffset?(f=o,0<h.col?(c=o-G(h.col,p)+R.opts.tableResizingLimit,d=o+G(h.col-1,p)-R.opts.tableResizingLimit,s=h.col,i=h.col-1):(s=null,i=0,c=l.offset().left+p[0].length*R.opts.tableResizingLimit,d=n.offset().left-1+n.width()+parseFloat(n.css(\"padding-left\")))):e.pageX-r<=R.opts.tableResizerOffset&&(f=r,u.col<p[u.row].length&&p[u.row][u.col+1]?(c=r-G(u.col+1,p)+R.opts.tableResizingLimit,d=r+G(u.col,p)-R.opts.tableResizingLimit,s=u.col+1,i=u.col):(s=u.col,i=null,c=n.offset().left+parseFloat(n.css(\"padding-left\")),d=l.offset().left-1+l.width()-p[0].length*R.opts.tableResizingLimit)),A||function E(){R.shared.$table_resizer||(R.shared.$table_resizer=y(document.createElement(\"div\")).attr(\"class\",\"fr-table-resizer\").html(\"<div></div>\")),A=R.shared.$table_resizer,R.events.$on(A,\"mousedown\",function(e){return!R.core.sameInstance(A)||(0<Q().length&&K(),1==e.which?(R.selection.save(),O=!0,A.addClass(\"fr-moving\"),T(),R.edit.off(),A.find(\"div\").css(\"opacity\",1),!1):void 0)}),R.events.$on(A,\"mousemove\",function(e){if(!R.core.sameInstance(A))return!0;O&&(R.opts.iframe&&(e.pageX-=R.$iframe.offset().left),U(e))}),R.events.on(\"shared.destroy\",function(){A.html(\"\").removeData().remove(),A=null},!0),R.events.on(\"destroy\",function(){R.$el.find(\".fr-selected-cell\").removeClass(\"fr-selected-cell\"),y(\"body\").first().append(A.hide())},!0)}(),A.data(\"table\",l),A.data(\"first\",s),A.data(\"second\",i),A.data(\"instance\",R),R.$wp.append(A);var m=f-R.win.pageXOffset-R.opts.tableResizerOffset-R.$wp.offset().left,v=g-R.$wp.offset().top+R.$wp.scrollTop();if(R.opts.iframe){var w=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-top\")),C=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-left\"));m+=R.$iframe.offset().left+C,v+=R.$iframe.offset().top+w,c+=R.$iframe.offset().left,d+=R.$iframe.offset().left}A.data(\"max-left\",c),A.data(\"max-right\",d),A.data(\"origin\",f-R.win.pageXOffset),A.css(\"top\",v),A.css(\"left\",m),A.css(\"height\",b),A.find(\"div\").css(\"height\",b),A.css(\"padding-left\",R.opts.tableResizerOffset),A.css(\"padding-right\",R.opts.tableResizerOffset),A.show()}else R.core.sameInstance(A)&&z()}}function H(e,t){if(R.$box.find(\".fr-line-breaker\").isVisible())return!1;f||J(),R.$box.append(f),f.data(\"instance\",R);var a,l=y(t).find(\"tr\").first(),n=e.pageX,r=0,o=0;if(R.opts.iframe){var s=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-top\")),i=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-left\"));r+=R.$iframe.offset().left-R.helpers.scrollLeft()+i,o+=R.$iframe.offset().top-R.helpers.scrollTop()+s}l.find(\"th, td\").each(function(){var e=y(this);return e.offset().left<=n&&n<e.offset().left+e.outerWidth()/2?(a=parseInt(f.find(\"a\").css(\"width\"),10),f.css(\"top\",o+e.offset().top-R.$box.offset().top-a-5),f.css(\"left\",r+e.offset().left-R.$box.offset().left-a/2),f.data(\"selected-cell\",e),f.data(\"position\",\"before\"),f.addClass(\"fr-visible\"),!1):e.offset().left+e.outerWidth()/2<=n&&n<e.offset().left+e.outerWidth()?(a=parseInt(f.find(\"a\").css(\"width\"),10),f.css(\"top\",o+e.offset().top-R.$box.offset().top-a-5),f.css(\"left\",r+e.offset().left-R.$box.offset().left+e.outerWidth()-a/2),f.data(\"selected-cell\",e),f.data(\"position\",\"after\"),f.addClass(\"fr-visible\"),!1):void 0})}function P(e,t){if(R.$box.find(\".fr-line-breaker\").isVisible())return!1;f||J(),R.$box.append(f),f.data(\"instance\",R);var a,l=y(t),n=e.pageY,r=0,o=0;if(R.opts.iframe){var s=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-top\")),i=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-left\"));r+=R.$iframe.offset().left-R.helpers.scrollLeft()+i,o+=R.$iframe.offset().top-R.helpers.scrollTop()+s}l.find(\"tr\").each(function(){var e=y(this);a=parseInt(f.find(\"a\").css(\"width\"),10);var t=r+e.offset().left-R.$box.offset().left;return t=0!==R.$box.offset().left?t-a-5:t+a-5,e.offset().top<=n&&n<e.offset().top+e.outerHeight()/2?(f.css(\"top\",o+e.offset().top-R.$box.offset().top-a/2),f.css(\"left\",t),f.data(\"selected-cell\",e.find(\"td\").first()),f.data(\"position\",\"above\"),f.addClass(\"fr-visible\"),!1):e.offset().top+e.outerHeight()/2<=n&&n<e.offset().top+e.outerHeight()?(f.css(\"top\",o+e.offset().top-R.$box.offset().top+e.outerHeight()-a/2),f.css(\"left\",t),f.data(\"selected-cell\",e.find(\"td\").first()),f.data(\"position\",\"below\"),f.addClass(\"fr-visible\"),!1):void 0})}function V(e){o=null;var t=R.doc.elementFromPoint(e.pageX-R.win.pageXOffset,e.pageY-R.win.pageYOffset);R.opts.tableResizer&&(!R.popups.areVisible()||R.popups.areVisible()&&R.popups.isVisible(\"table.edit\"))&&L(e,t),!R.opts.tableInsertHelper||R.popups.areVisible()||R.$tb.hasClass(\"fr-inline\")&&R.$tb.isVisible()||function r(e,t){if(0===Q().length){var a,l,n;if(t&&(\"HTML\"==t.tagName||\"BODY\"==t.tagName||R.node.isElement(t)))for(a=1;a<=R.opts.tableInsertHelperOffset;a++){if(l=R.doc.elementFromPoint(e.pageX-R.win.pageXOffset,e.pageY-R.win.pageYOffset+a),y(l).hasClass(\"fr-tooltip\"))return!0;if(l&&(\"TH\"==l.tagName||\"TD\"==l.tagName||\"TABLE\"==l.tagName)&&(y(l).parents(\".fr-wrapper\").length||R.opts.iframe)&&\"false\"!=y(l).closest(\"table\").attr(\"contenteditable\"))return H(e,y(l).closest(\"table\")),!0;if(n=R.doc.elementFromPoint(e.pageX-R.win.pageXOffset+a,e.pageY-R.win.pageYOffset),y(n).hasClass(\"fr-tooltip\"))return!0;if(n&&(\"TH\"==n.tagName||\"TD\"==n.tagName||\"TABLE\"==n.tagName)&&(y(n).parents(\".fr-wrapper\").length||R.opts.iframe)&&\"false\"!=y(n).closest(\"table\").attr(\"contenteditable\"))return P(e,y(n).closest(\"table\")),!0}R.core.sameInstance(f)&&W()}}(e,t)}function j(){if(O){var e=A.data(\"table\").offset().top-R.win.pageYOffset;if(R.opts.iframe){var t=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-top\"));e+=R.$iframe.offset().top-R.helpers.scrollTop()+t}A.css(\"top\",e)}}function G(e,t){var a,l=y(t[0][e]).outerWidth();for(a=1;a<t.length;a++)l=Math.min(l,y(t[a][e]).outerWidth());return l}function X(e,t,a){var l,n=0;for(l=e;l<=t;l++)n+=G(l,a);return n}function U(e){if(1<Q().length&&r&&T(),!1===r&&!1===n&&!1===O)o&&clearTimeout(o),R.edit.isDisabled()&&!R.popups.isVisible(\"table.edit\")||(o=setTimeout(V,30,e));else if(O){var t=e.pageX-R.win.pageXOffset;R.opts.iframe&&(t+=R.$iframe.offset().left);var a=A.data(\"max-left\"),l=A.data(\"max-right\");a<=t&&t<=l?A.css(\"left\",t-R.opts.tableResizerOffset-R.$wp.offset().left):t<a&&parseFloat(A.css(\"left\"),10)>a-R.opts.tableResizerOffset?A.css(\"left\",a-R.opts.tableResizerOffset-R.$wp.offset().left):l<t&&parseFloat(A.css(\"left\"),10)<l-R.opts.tableResizerOffset&&A.css(\"left\",l-R.opts.tableResizerOffset-R.$wp.offset().left)}else r&&W()}function q(e){R.node.isEmpty(e.get(0))?e.prepend(Ce.MARKERS):e.prepend(Ce.START_MARKER).append(Ce.END_MARKER)}function J(){R.shared.$ti_helper||(R.shared.$ti_helper=y(document.createElement(\"div\")).attr(\"class\",\"fr-insert-helper\").html('<a class=\"fr-floating-btn\" role=\"button\" tabIndex=\"-1\" title=\"'.concat(R.language.translate(\"Insert\"),'\"><svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22,16.75 L16.75,16.75 L16.75,22 L15.25,22.000 L15.25,16.75 L10,16.75 L10,15.25 L15.25,15.25 L15.25,10 L16.75,10 L16.75,15.25 L22,15.25 L22,16.75 Z\"/></svg></a>')),R.events.bindClick(R.shared.$ti_helper,\"a\",function(){var e=f.data(\"selected-cell\"),t=f.data(\"position\"),a=f.data(\"instance\")||R;\"before\"==t?(R.undo.saveStep(),e.addClass(\"fr-selected-cell\"),a.table.insertColumn(t),e.removeClass(\"fr-selected-cell\"),R.undo.saveStep()):\"after\"==t?(R.undo.saveStep(),e.addClass(\"fr-selected-cell\"),a.table.insertColumn(t),e.removeClass(\"fr-selected-cell\"),R.undo.saveStep()):\"above\"==t?(R.undo.saveStep(),e.addClass(\"fr-selected-cell\"),a.table.insertRow(t),e.removeClass(\"fr-selected-cell\"),R.undo.saveStep()):\"below\"==t&&(R.undo.saveStep(),e.addClass(\"fr-selected-cell\"),a.table.insertRow(t),e.removeClass(\"fr-selected-cell\"),R.undo.saveStep()),W()}),R.events.on(\"shared.destroy\",function(){R.shared.$ti_helper.html(\"\").removeData().remove(),R.shared.$ti_helper=null},!0),R.events.$on(R.shared.$ti_helper,\"mousemove\",function(e){e.stopPropagation()},!0),R.events.$on(y(R.o_win),\"scroll\",function(){W()},!0),R.events.$on(R.$wp,\"scroll\",function(){W()},!0)),f=R.shared.$ti_helper,R.events.on(\"destroy\",function(){f=null}),R.tooltip.bind(R.$box,\".fr-insert-helper > a.fr-floating-btn\")}function Z(){l=null,clearTimeout(o)}function Q(){return R.el.querySelectorAll(\".fr-selected-cell\")}function ee(){var e=Q();if(e.length){for(var t=e[0];t&&\"TABLE\"!=t.tagName&&t.parentNode!=R.el;)t=t.parentNode;return t&&\"TABLE\"==t.tagName?y(t):y([])}return y([])}function te(e){n=!1}return{_init:function ae(){if(!R.$wp)return!1;if(R.helpers.isMobile()&&(R.events.$on(R.$el,\"mousedown\",e),R.events.$on(R.$win,\"mouseup\",a)),!R.helpers.isMobile()){O=n=r=!1,R.events.$on(R.$el,\"mousedown\",e),R.popups.onShow(\"image.edit\",function(){_(),n=r=!1}),R.popups.onShow(\"link.edit\",function(){_(),n=r=!1}),R.events.on(\"commands.mousedown\",function(e){0<e.parents(\".fr-toolbar\").length&&_()}),R.events.$on(R.$el,\"mouseover\",\"th, td\",k),R.events.$on(R.$win,\"mouseup\",a),R.opts.iframe&&R.events.$on(y(R.o_win),\"mouseup\",a),R.events.$on(R.$win,\"mousemove\",U),R.events.$on(y(R.o_win),\"scroll\",j),R.events.on(\"contentChanged\",function(){0<Q().length&&(u(),R.$el.find(\"img\").on(\"load.selected-cells\",function(){y(this).off(\"load.selected-cells\"),0<Q().length&&u()}))}),R.events.$on(y(R.o_win),\"resize\",function(){_()}),R.events.on(\"toolbar.esc\",function(){if(0<Q().length)return R.events.disableBlur(),R.events.focus(),!1},!0),R.events.$on(y(R.o_win),\"keydown\",function(){r&&n&&(n=r=!1,R.$el.removeClass(\"fr-no-selection\"),R.edit.on(),R.selection.setAtEnd(R.$el.find(\".fr-selected-cell\").last().get(0)),R.selection.restore(),_())}),R.events.$on(R.$el,\"keydown\",function(e){e.shiftKey?!1===function o(e){var t=Q();if(null!=t&&0<t.length){var a,l=$(),n=e.which,r=D(1==t.length?a=t[0]:(a=R.el.querySelector(\".fr-cell-fixed\"),R.el.querySelector(\".fr-cell-handler\")),l);if(Ce.KEYCODE.ARROW_RIGHT==n){if(r.col<l[0].length-1)return N(a,l[r.row][r.col+1]),!1}else if(Ce.KEYCODE.ARROW_DOWN==n){if(r.row<l.length-1)return N(a,l[r.row+1][r.col]),!1}else if(Ce.KEYCODE.ARROW_LEFT==n){if(0<r.col)return N(a,l[r.row][r.col-1]),!1}else if(Ce.KEYCODE.ARROW_UP==n&&0<r.row)return N(a,l[r.row-1][r.col]),!1}}(e)&&setTimeout(function(){u()},0):function s(e){var t=e.which,a=R.selection.blocks();if(a.length&&(\"P\"!==(a=a[0]).tagName&&\"DIV\"!==a.tagName||(a=a.parentNode),\"TD\"==a.tagName||\"TH\"==a.tagName)){for(var l=a;l&&\"TABLE\"!=l.tagName&&l.parentNode!=R.el;)l=l.parentNode;if(l&&\"TABLE\"==l.tagName&&(Ce.KEYCODE.ARROW_LEFT==t||Ce.KEYCODE.ARROW_UP==t||Ce.KEYCODE.ARROW_RIGHT==t||Ce.KEYCODE.ARROW_DOWN==t)&&(0<Q().length&&K(),R.browser.webkit&&(Ce.KEYCODE.ARROW_UP==t||Ce.KEYCODE.ARROW_DOWN==t))){var n=R.selection.ranges(0).startContainer;if(n.nodeType==Node.TEXT_NODE&&(Ce.KEYCODE.ARROW_UP==t&&(n.previousSibling&&\"BR\"!==n.previousSibling.tagName||n.previousSibling&&\"BR\"===n.previousSibling.tagName&&n.previousSibling.previousSibling)||Ce.KEYCODE.ARROW_DOWN==t&&(n.nextSibling&&\"BR\"!==n.nextSibling.tagName||n.nextSibling&&\"BR\"===n.nextSibling.tagName&&n.nextSibling.nextSibling)))return;e.preventDefault(),e.stopPropagation();var r=$(y(l)),o=D(a,r);return Ce.KEYCODE.ARROW_UP==t?Y(o,l,r):Ce.KEYCODE.ARROW_DOWN==t&&F(o,l,r),R.selection.restore(),!1}}}(e)}),R.events.on(\"keydown\",function(e){if(!1===function l(e){if(e.which==Ce.KEYCODE.TAB){var t;if(0<Q().length)t=R.$el.find(\".fr-selected-cell\").last();else{var a=R.selection.element();\"TD\"==a.tagName||\"TH\"==a.tagName?t=y(a):a!=R.el&&(0<y(a).parentsUntil(R.$el,\"td\").length?t=y(a).parents(\"td\").first():0<y(a).parentsUntil(R.$el,\"th\").length&&(t=y(a).parents(\"th\").first()))}if(t)return e.preventDefault(),!!(0===R.selection.get().focusOffset&&0<y(R.selection.element()).parentsUntil(R.$el,\"ol, ul\").length&&(0<y(R.selection.element()).closest(\"li\").prev().length||y(R.selection.element()).is(\"li\")&&0<y(R.selection.element()).prev().length))||(K(),e.shiftKey?0<t.prev().length?q(t.prev()):0<t.closest(\"tr\").length&&0<t.closest(\"tr\").prev().length?q(t.closest(\"tr\").prev().find(\"td\").last()):0<t.closest(\"tbody\").length&&0<t.closest(\"table\").find(\"thead tr\").length&&q(t.closest(\"table\").find(\"thead tr th\").last()):0<t.next().length?q(t.next()):0<t.closest(\"tr\").length&&0<t.closest(\"tr\").next().length?q(t.closest(\"tr\").next().find(\"td\").first()):0<t.closest(\"thead\").length&&0<t.closest(\"table\").find(\"tbody tr\").length?q(t.closest(\"table\").find(\"tbody tr td\").first()):(t.addClass(\"fr-selected-cell\"),g(\"below\"),_(),q(t.closest(\"tr\").next().find(\"td\").first())),R.selection.restore(),!1)}}(e))return!1;var t=Q();if(0<t.length){if(0<t.length&&R.keys.ctrlKey(e)&&e.which==Ce.KEYCODE.A)return _(),R.popups.isVisible(\"table.edit\")&&R.popups.hide(\"table.edit\"),t=[],!0;if(e.which==Ce.KEYCODE.ESC&&R.popups.isVisible(\"table.edit\"))return _(),R.popups.hide(\"table.edit\"),e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),!(t=[]);if(1<t.length&&(e.which==Ce.KEYCODE.BACKSPACE||e.which==Ce.KEYCODE.DELETE)){R.undo.saveStep();for(var a=0;a<t.length;a++)y(t[a]).html(\"<br>\"),a==t.length-1&&y(t[a]).prepend(Ce.MARKERS);return R.selection.restore(),R.undo.saveStep(),!(t=[])}if(1<t.length&&e.which!=Ce.KEYCODE.F10&&!R.keys.isBrowserAction(e))return e.preventDefault(),!(t=[])}else if(!(t=[])===function n(e){if(e.altKey&&e.which==Ce.KEYCODE.SPACE){var t,a=R.selection.element();if(\"TD\"==a.tagName||\"TH\"==a.tagName?t=a:0<y(a).closest(\"td\").length?t=y(a).closest(\"td\").get(0):0<y(a).closest(\"th\").length&&(t=y(a).closest(\"th\").get(0)),t)return e.preventDefault(),N(t,t),u(),!1}}(e))return!1},!0);var t=[];R.events.on(\"html.beforeGet\",function(){t=Q();for(var e=0;e<t.length;e++)t[e].className=(t[e].className||\"\").replace(/fr-selected-cell/g,\"\")}),R.events.on(\"html.afterGet\",function(){for(var e=0;e<t.length;e++)t[e].className=(t[e].className?t[e].className.trim()+\" \":\"\")+\"fr-selected-cell\";t=[]}),c(!0),p(!0)}R.events.on(\"destroy\",Z)},insert:function le(e,t){var a,l,n=\"<table \"+(R.opts.tableDefaultWidth?'style=\"width: '+R.opts.tableDefaultWidth+';\" ':\"\")+'class=\"fr-inserted-table\"><tbody>',r=100/t;for(a=0;a<e;a++){for(n+=\"<tr>\",l=0;l<t;l++)n+=\"<td\"+(R.opts.tableDefaultWidth?' style=\"width: '+r.toFixed(4)+'%;\"':\"\")+\">\",0===a&&0===l&&(n+=Ce.MARKERS),n+=\"<br></td>\";n+=\"</tr>\"}if(n+=\"</tbody></table>\",R.opts.trackChangesEnabled){R.edit.on(),R.events.focus(!0),R.selection.restore(),R.undo.saveStep(),R.markers.insert(),R.html.wrap();var o=R.$el.find(\".fr-marker\");R.node.isLastSibling(o)&&o.parent().hasClass(\"fr-deletable\")&&o.insertAfter(o.parent()),o.replaceWith(n),R.selection.clear()}else R.html.insert(n);R.selection.restore();var s=R.$el.find(\".fr-inserted-table\");s.removeClass(\"fr-inserted-table\"),R.events.trigger(\"table.inserted\",[s.get(0)])},remove:h,insertRow:g,deleteRow:function ne(){var e=ee();if(0<e.length){var t,a,l,n=$(),r=M(n);if(null==r)return;if(0===r.min_i&&r.max_i==n.length-1)h();else{for(t=r.max_i;t>=r.min_i;t--){for(l=y(e.find(\"tr\").not(e.find(\"> table tr\")).get(t)),a=0;a<n[t].length;a++)if(0===a||n[t][a]!=n[t][a-1]){var o=y(n[t][a]);if(1<parseInt(o.attr(\"rowspan\"),10)){var s=parseInt(o.attr(\"rowspan\"),10)-1;1==s?o.removeAttr(\"rowspan\"):o.attr(\"rowspan\",s)}if(t<n.length-1&&n[t][a]==n[t+1][a]&&(0===t||n[t][a]!=n[t-1][a])){for(var i=n[t][a],f=a;0<f&&n[t][f]==n[t][f-1];)f--;0===f?y(e.find(\"tr\").not(e.find(\"> table tr\")).get(t+1)).prepend(i):y(n[t+1][f-1])[0].parentNode&&y(n[t+1][f-1])[0].insertAdjacentElement(\"afterend\",i)}}var c=l.parent();l.remove(),0===c.find(\"tr\").length&&c.remove(),n=$(e)}w(0,n.length-1,0,n[0].length-1,e),0<r.min_i?R.selection.setAtEnd(n[r.min_i-1][0]):R.selection.setAtEnd(n[0][0]),R.selection.restore(),R.popups.hide(\"table.edit\")}}},insertColumn:function re(f){var e=ee();if(0<e.length){var c,d=$(),t=M(d);c=\"before\"==f?t.min_j:t.max_j;var a,p=100/d[0].length,h=100/(d[0].length+1);e.find(\"th, td\").each(function(){(a=y(this)).data(\"old-width\",a.outerWidth()/e.outerWidth()*100)}),e.find(\"tr\").not(e.find(\"> table tr\")).each(function(e){for(var t,a=y(this),l=0,n=0;l-1<c;){if(!(t=a.find(\"> th, > td\").get(n))){t=null;break}t==d[e][l]?(l+=parseInt(y(t).attr(\"colspan\"),10)||1,n++):(l+=parseInt(y(d[e][l]).attr(\"colspan\"),10)||1,\"after\"==f&&(t=0===n?-1:a.find(\"> th, > td\").get(n-1)))}var r=y(t);if(\"after\"==f&&c<l-1||\"before\"==f&&0<c&&d[e][c]==d[e][c-1]){if(0===e||0<e&&d[e][c]!=d[e-1][c]){var o=parseInt(r.attr(\"colspan\"),10)+1;r.attr(\"colspan\",o),r.css(\"width\",(r.data(\"old-width\")*h/p+h).toFixed(4)+\"%\"),r.removeData(\"old-width\")}}else{var s,i=(r.get(0)||\"\").tagName;s=0<a.find(\"th\").length&&\"TH\"===i?'<th style=\"width: '.concat(h.toFixed(4),'%;\"><br></th>'):'<td style=\"'.concat(r.attr(\"style\"),\";width: \").concat(h.toFixed(4),'%\"><br></td>'),-1==t?a.prepend(s):null==t?a.append(s):\"before\"==f?r.before(s):\"after\"==f&&r[0].parentNode&&r[0].insertAdjacentHTML(\"afterend\",s)}}),e.find(\"th, td\").each(function(){(a=y(this)).data(\"old-width\")&&(a.css(\"width\",(a.data(\"old-width\")*h/p).toFixed(4)+\"%\"),a.removeData(\"old-width\"))}),R.popups.isVisible(\"table.edit\")&&u()}},deleteColumn:function oe(){var e=ee();if(0<e.length){var t,a,l,n=$(),r=M(n);if(null==r)return;if(0===r.min_j&&r.max_j==n[0].length-1)h();else{var o=0;for(t=0;t<n.length;t++)for(a=0;a<n[0].length;a++)(l=y(n[t][a])).hasClass(\"fr-selected-cell\")||(l.data(\"old-width\",l.outerWidth()/e.outerWidth()*100),(a<r.min_j||a>r.max_j)&&(o+=l.outerWidth()/e.outerWidth()*100));for(o/=n.length,a=r.max_j;a>=r.min_j;a--)for(t=0;t<n.length;t++)if(0===t||n[t][a]!=n[t-1][a])if(l=y(n[t][a]),1<(parseInt(l.attr(\"colspan\"),10)||1)){var s=parseInt(l.attr(\"colspan\"),10)-1;1==s?l.removeAttr(\"colspan\"):l.attr(\"colspan\",s),l.css(\"width\",(100*(l.data(\"old-width\")-G(a,n))/o).toFixed(4)+\"%\"),l.removeData(\"old-width\")}else{var i=y(l.parent().get(0));l.remove(),0===i.find(\"> th, > td\").length&&(0===i.prev().length||0===i.next().length||i.prev().find(\"> th[rowspan], > td[rowspan]\").length<i.prev().find(\"> th, > td\").length)&&i.remove()}w(0,n.length-1,0,n[0].length-1,e),0<r.min_j?R.selection.setAtEnd(n[r.min_i][r.min_j-1]):R.selection.setAtEnd(n[r.min_i][0]),R.selection.restore(),R.popups.hide(\"table.edit\"),e.find(\"th, td\").each(function(){(l=y(this)).data(\"old-width\")&&(l.css(\"width\",(100*l.data(\"old-width\")/o).toFixed(4)+\"%\"),l.removeData(\"old-width\"))})}}},mergeCells:function se(){if(1<Q().length&&(0===R.$el.find(\"th.fr-selected-cell\").length||0===R.$el.find(\"td.fr-selected-cell\").length)){E();var e,t,a=M($());if(null==a)return;var l=R.$el.find(\".fr-selected-cell\"),n=y(l[0]),r=n.parent().find(\".fr-selected-cell\"),o=n.closest(\"table\"),s=n.html(),i=0;for(e=0;e<r.length;e++)i+=y(r[e]).outerWidth();for(n.css(\"width\",Math.min(100,i/o.outerWidth()*100).toFixed(4)+\"%\"),a.min_j<a.max_j&&n.attr(\"colspan\",a.max_j-a.min_j+1),a.min_i<a.max_i&&n.attr(\"rowspan\",a.max_i-a.min_i+1),e=1;e<l.length;e++)\"<br>\"!=(t=y(l[e])).html()&&\"\"!==t.html()&&(s+=\"<br>\".concat(t.html())),t.remove();n.html(s),R.selection.setAtEnd(n.get(0)),R.selection.restore(),R.toolbar.enable(),m(a.min_i,a.max_i,o);var f=o.find(\"tr:empty\");for(e=f.length-1;0<=e;e--)y(f[e]).remove();b(a.min_j,a.max_j,o),u()}},splitCellVertically:function ie(){if(1==Q().length){var e=R.$el.find(\".fr-selected-cell\"),t=parseInt(e.attr(\"colspan\"),10)||1,a=e.parent().outerWidth(),l=e.outerWidth(),n=e.clone().html(\"<br>\"),r=$(),o=D(e.get(0),r);if(1<t){var s=Math.ceil(t/2);l=X(o.col,o.col+s-1,r)/a*100;var i=X(o.col+s,o.col+t-1,r)/a*100;1<s?e.attr(\"colspan\",s):e.removeAttr(\"colspan\"),1<t-s?n.attr(\"colspan\",t-s):n.removeAttr(\"colspan\"),e.css(\"width\",l.toFixed(4)+\"%\"),n.css(\"width\",i.toFixed(4)+\"%\")}else{var f;for(f=0;f<r.length;f++)if(0===f||r[f][o.col]!=r[f-1][o.col]){var c=y(r[f][o.col]);if(!c.is(e)){var d=(parseInt(c.attr(\"colspan\"),10)||1)+1;c.attr(\"colspan\",d)}}l=l/a*100/2,e.css(\"width\",\"\".concat(l.toFixed(4),\"%\")),n.css(\"width\",\"\".concat(l.toFixed(4),\"%\"))}e[0].parentNode&&e[0].insertAdjacentElement(\"afterend\",n[0]),_(),R.popups.hide(\"table.edit\")}},splitCellHorizontally:function fe(){if(1==Q().length){var e=R.$el.find(\".fr-selected-cell\"),t=e.parent(),a=e.closest(\"table\"),l=parseInt(e.attr(\"rowspan\"),10),n=$(),r=D(e.get(0),n),o=e.clone().html(\"<br>\");if(1<l){var s=Math.ceil(l/2);1<s?e.attr(\"rowspan\",s):e.removeAttr(\"rowspan\"),1<l-s?o.attr(\"rowspan\",l-s):o.removeAttr(\"rowspan\");for(var i=r.row+s,f=0===r.col?r.col:r.col-1;0<=f&&(n[i][f]==n[i][f-1]||0<i&&n[i][f]==n[i-1][f]);)f--;-1==f?y(a.find(\"tr\").not(a.find(\"> table tr\")).get(i)).prepend(o):y(n[i][f])[0].parentNode&&y(n[i][f])[0].insertAdjacentElement(\"afterend\",o[0])}else{var c,d=y(document.createElement(\"tr\")).append(o);for(c=0;c<n[0].length;c++)if(0===c||n[r.row][c]!=n[r.row][c-1]){var p=y(n[r.row][c]);p.is(e)||p.attr(\"rowspan\",(parseInt(p.attr(\"rowspan\"),10)||1)+1)}t[0].parentNode&&t[0].insertAdjacentElement(\"afterend\",d[0])}_(),R.popups.hide(\"table.edit\")}},addHeader:function ce(){var e=ee();if(0<e.length&&0===e.find(\"> th\").length){var t,a=\"<thead><tr>\",l=0;for(l=e.find(\"tr\").first().find(\"> th\").length,e.find(\"tr\").first().find(\"> td\").each(function(){var e=y(this);l+=parseInt(e.attr(\"colspan\"),10)||1}),t=0;t<l;t++)a+=\"<th><br></th>\";a+=\"</tr></thead>\",e.prepend(a),u()}},addFooter:function de(){var e=ee();if(0<e.length&&0===e.find(\"tfoot\").length){var t,a=\"<tfoot><tr>\",l=0,n=\"> td\";for(0<e.find(\"thead\").length&&(n=\"> th\"),e.find(\"tr\").first().find(n).each(function(){var e=y(this);l+=parseInt(e.attr(\"colspan\"),10)||1}),t=0;t<l;t++)a+=\"<td><br></td>\";a+=\"</tr></tfoot>\",e.append(a),u()}},removeHeader:function pe(){var e=ee(),t=e.find(\"> thead\");if(0<(t=y(t)).length)if(0===e.find(\"tbody tr\").length)h();else if(t.remove(),0<Q().length)u();else{R.popups.hide(\"table.edit\");var a=e.find(\"tbody tr\").first().find(\"td\").first().get(0);a&&(R.selection.setAtEnd(a),R.selection.restore())}},removeFooter:function he(){var e=ee(),t=e.find(\"tfoot\");if(0<t.length)if(0===e.find(\"tbody tr\").length)h();else if(t.remove(),0<Q().length)u();else{R.popups.hide(\"table.edit\");var a=e.find(\"tbody tr\").first().find(\"td\").first().get(0);a&&(R.selection.setAtEnd(a),R.selection.restore())}},setBackground:t,showInsertPopup:function ue(){var e=R.$tb.find('.fr-command[data-cmd=\"insertTable\"]'),t=R.popups.get(\"table.insert\");if(t||(t=c()),!t.hasClass(\"fr-active\")){R.popups.refresh(\"table.insert\"),R.popups.setContainer(\"table.insert\",R.$tb);var a=R.button.getPosition(e),l=a.left,n=a.top;R.popups.show(\"table.insert\",l,n,e.outerHeight())}},showEditPopup:u,showColorsPopup:s,back:function ge(){0<Q().length?u():(R.popups.hide(\"table.insert\"),R.toolbar.showInline())},verticalAlign:function be(e){R.$el.find(\".fr-selected-cell\").css(\"vertical-align\",e)},horizontalAlign:function me(e){R.$el.find(\".fr-selected-cell\").css(\"text-align\",e)},applyStyle:function ve(e,t,a,l){if(0<t.length){if(R.opts.useClasses||(\"TABLE\"===t.get(0).tagName?function r(e,t){var a=e.childNodes;if(0<a.length)for(var l=0;l<a.length;l++)\"TD\"===a[l].tagName?\"fr-dashed-borders\"===t||\"fr-highlighted\"===t||\"fr-thick\"===t?C(a[l]):\"fr-alternate-rows\"===t&&a[l].style.removeProperty(\"background-color\"):r(a[l],t)}(t.get(0),e):C(t.get(0))),!a){var n=Object.keys(l);n.splice(n.indexOf(e),1),t.removeClass(n.join(\" \"))}t.toggleClass(e)}},selectedTable:ee,selectedCells:Q,customColor:function we(){var e=R.popups.get(\"table.colors\").find(\".fr-table-colors-hex-layer input\");e.length&&t(e.val())},selectCells:N}},Ce.DefineIcon(\"insertTable\",{NAME:\"table\",SVG_KEY:\"insertTable\"}),Ce.RegisterCommand(\"insertTable\",{title:\"Insert Table\",undo:!1,focus:!0,refreshOnCallback:!1,popup:!0,callback:function(){this.popups.isVisible(\"table.insert\")?(this.$el.find(\".fr-marker\").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"table.insert\")):this.table.showInsertPopup()},plugin:\"table\"}),Ce.RegisterCommand(\"tableInsert\",{callback:function(e,t,a){this.table.insert(t,a),this.popups.hide(\"table.insert\")}}),Ce.DefineIcon(\"tableHeader\",{NAME:\"header\",FA5NAME:\"heading\",SVG_KEY:\"tableHeader\"}),Ce.RegisterCommand(\"tableHeader\",{title:\"Table Header\",focus:!1,toggle:!0,callback:function(){this.popups.get(\"table.edit\").find('.fr-command[data-cmd=\"tableHeader\"]').hasClass(\"fr-active\")?this.table.removeHeader():this.table.addHeader()},refresh:function(e){var t=this.table.selectedTable();0<t.length&&(0===t.find(\"> thead\").length?e.removeClass(\"fr-active\").attr(\"aria-pressed\",!1):e.addClass(\"fr-active\").attr(\"aria-pressed\",!0))}}),Ce.DefineIcon(\"tableFooter\",{NAME:\"table\",FA5NAME:\"table\",SVG_KEY:\"tableFooter\"}),Ce.RegisterCommand(\"tableFooter\",{title:\"Table Footer\",focus:!1,toggle:!0,callback:function(){this.popups.get(\"table.edit\").find('.fr-command[data-cmd=\"tableFooter\"]').hasClass(\"fr-active\")?this.table.removeFooter():this.table.addFooter()},refresh:function(e){var t=this.table.selectedTable();0<t.length&&(0===t.find(\"tfoot\").length?e.removeClass(\"fr-active\").attr(\"aria-pressed\",!1):e.addClass(\"fr-active\").attr(\"aria-pressed\",!0))}}),Ce.DefineIcon(\"tableRows\",{NAME:\"bars\",SVG_KEY:\"row\"}),Ce.RegisterCommand(\"tableRows\",{type:\"dropdown\",focus:!1,title:\"Row\",options:{above:\"Insert row above\",below:\"Insert row below\",\"delete\":\"Delete row\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=Ce.COMMANDS.tableRows.options;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableRows\" data-param1=\"'+a+'\" title=\"'+this.language.translate(t[a])+'\">'+this.language.translate(t[a])+\"</a></li>\");return e+=\"</ul>\"},callback:function(e,t){\"above\"==t||\"below\"==t?this.table.insertRow(t):this.table.deleteRow()}}),Ce.DefineIcon(\"tableColumns\",{NAME:\"bars fa-rotate-90\",SVG_KEY:\"columns\"}),Ce.RegisterCommand(\"tableColumns\",{type:\"dropdown\",focus:!1,title:\"Column\",options:{before:\"Insert column before\",after:\"Insert column after\",\"delete\":\"Delete column\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=Ce.COMMANDS.tableColumns.options;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableColumns\" data-param1=\"'.concat(a,'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.language.translate(t[a]),\"</a></li>\"));return e+=\"</ul>\"},callback:function(e,t){\"before\"==t||\"after\"==t?this.table.insertColumn(t):this.table.deleteColumn()}}),Ce.DefineIcon(\"tableCells\",{NAME:\"square-o\",FA5NAME:\"square\",SVG_KEY:\"cellOptions\"}),Ce.RegisterCommand(\"tableCells\",{type:\"dropdown\",focus:!1,title:\"Cell\",options:{merge:\"Merge cells\",\"vertical-split\":\"Vertical split\",\"horizontal-split\":\"Horizontal split\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=Ce.COMMANDS.tableCells.options;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableCells\" data-param1=\"'.concat(a,'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.language.translate(t[a]),\"</a></li>\"));return e+=\"</ul>\"},callback:function(e,t){\"merge\"==t?this.table.mergeCells():\"vertical-split\"==t?this.table.splitCellVertically():this.table.splitCellHorizontally()},refreshOnShow:function(e,t){1<this.$el.find(\".fr-selected-cell\").length?(t.find('a[data-param1=\"vertical-split\"]').addClass(\"fr-disabled\").attr(\"aria-disabled\",!0),t.find('a[data-param1=\"horizontal-split\"]').addClass(\"fr-disabled\").attr(\"aria-disabled\",!0),t.find('a[data-param1=\"merge\"]').removeClass(\"fr-disabled\").attr(\"aria-disabled\",!1)):(t.find('a[data-param1=\"merge\"]').addClass(\"fr-disabled\").attr(\"aria-disabled\",!0),t.find('a[data-param1=\"vertical-split\"]').removeClass(\"fr-disabled\").attr(\"aria-disabled\",!1),t.find('a[data-param1=\"horizontal-split\"]').removeClass(\"fr-disabled\").attr(\"aria-disabled\",!1))}}),Ce.DefineIcon(\"tableRemove\",{NAME:\"trash\",SVG_KEY:\"removeTable\"}),Ce.RegisterCommand(\"tableRemove\",{title:\"Remove Table\",focus:!1,callback:function(){this.table.remove()}}),Ce.DefineIcon(\"tableStyle\",{NAME:\"paint-brush\",SVG_KEY:\"tableStyle\"}),Ce.RegisterCommand(\"tableStyle\",{title:\"Table Style\",type:\"dropdown\",focus:!1,html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=this.opts.tableStyles;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableStyle\" data-param1=\"'.concat(a,'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.language.translate(t[a]),\"</a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.table.applyStyle(t,this.$el.find(\".fr-selected-cell\").closest(\"table\"),this.opts.tableMultipleStyles,this.opts.tableStyles)},refreshOnShow:function(e,t){var a=this.$,l=this.$el.find(\".fr-selected-cell\").closest(\"table\");l&&t.find(\".fr-command\").each(function(){var e=a(this).data(\"param1\"),t=l.hasClass(e);a(this).toggleClass(\"fr-active\",t).attr(\"aria-selected\",t)})}}),Ce.DefineIcon(\"tableCellBackground\",{NAME:\"tint\",SVG_KEY:\"cellBackground\"}),Ce.RegisterCommand(\"tableCellBackground\",{title:\"Cell Background\",focus:!1,popup:!0,callback:function(){this.table.showColorsPopup()}}),Ce.RegisterCommand(\"tableCellBackgroundColor\",{undo:!0,focus:!1,callback:function(e,t){this.table.setBackground(t)}}),Ce.DefineIcon(\"tableBack\",{NAME:\"arrow-left\",SVG_KEY:\"back\"}),Ce.RegisterCommand(\"tableBack\",{title:\"Back\",undo:!1,focus:!1,back:!0,callback:function(){this.table.back()},refresh:function(e){0!==this.table.selectedCells().length||this.opts.toolbarInline?(e.removeClass(\"fr-hidden\"),e.next(\".fr-separator\").removeClass(\"fr-hidden\")):(e.addClass(\"fr-hidden\"),e.next(\".fr-separator\").addClass(\"fr-hidden\"))}}),Ce.DefineIcon(\"tableCellVerticalAlign\",{NAME:\"arrows-v\",FA5NAME:\"arrows-alt-v\",SVG_KEY:\"verticalAlignMiddle\"}),Ce.RegisterCommand(\"tableCellVerticalAlign\",{type:\"dropdown\",focus:!1,title:\"Vertical Align\",options:{Top:\"Align Top\",Middle:\"Align Middle\",Bottom:\"Align Bottom\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=Ce.COMMANDS.tableCellVerticalAlign.options;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableCellVerticalAlign\" data-param1=\"'.concat(a.toLowerCase(),'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.language.translate(a),\"</a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.table.verticalAlign(t)},refreshOnShow:function(e,t){t.find('.fr-command[data-param1=\"'+this.$el.find(\".fr-selected-cell\").css(\"vertical-align\")+'\"]').addClass(\"fr-active\").attr(\"aria-selected\",!0)}}),Ce.DefineIcon(\"tableCellHorizontalAlign\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),Ce.DefineIcon(\"align-left\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),Ce.DefineIcon(\"align-right\",{NAME:\"align-right\",SVG_KEY:\"alignRight\"}),Ce.DefineIcon(\"align-center\",{NAME:\"align-center\",SVG_KEY:\"alignCenter\"}),Ce.DefineIcon(\"align-justify\",{NAME:\"align-justify\",SVG_KEY:\"alignJustify\"}),Ce.RegisterCommand(\"tableCellHorizontalAlign\",{type:\"dropdown\",focus:!1,title:\"Horizontal Align\",options:{left:\"Align Left\",center:\"Align Center\",right:\"Align Right\",justify:\"Align Justify\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=Ce.COMMANDS.tableCellHorizontalAlign.options;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command fr-title\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableCellHorizontalAlign\" data-param1=\"'.concat(a,'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.icon.create(\"align-\".concat(a)),'<span class=\"fr-sr-only\">').concat(this.language.translate(t[a]),\"</span></a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.table.horizontalAlign(t)},refresh:function(e){var t=this.table.selectedCells(),a=this.$;t.length&&e.find(\"> *\").first().replaceWith(this.icon.create(\"align-\".concat(this.helpers.getAlignment(a(t[0])))))},refreshOnShow:function(e,t){t.find('.fr-command[data-param1=\"'+this.helpers.getAlignment(this.$el.find(\".fr-selected-cell\").first())+'\"]').addClass(\"fr-active\").attr(\"aria-selected\",!0)}}),Ce.DefineIcon(\"tableCellStyle\",{NAME:\"magic\",SVG_KEY:\"cellStyle\"}),Ce.RegisterCommand(\"tableCellStyle\",{title:\"Cell Style\",type:\"dropdown\",focus:!1,html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=this.opts.tableCellStyles;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableCellStyle\" data-param1=\"'.concat(a,'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.language.translate(t[a]),\"</a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.table.applyStyle(t,this.$el.find(\".fr-selected-cell\"),this.opts.tableCellMultipleStyles,this.opts.tableCellStyles)},refreshOnShow:function(e,t){var a=this.$,l=this.$el.find(\".fr-selected-cell\").first();l&&t.find(\".fr-command\").each(function(){var e=a(this).data(\"param1\"),t=l.hasClass(e);a(this).toggleClass(\"fr-active\",t).attr(\"aria-selected\",t)})}}),Ce.RegisterCommand(\"tableCellBackgroundCustomColor\",{title:\"OK\",undo:!0,callback:function(){this.table.customColor()}}),Ce.DefineIcon(\"tableColorRemove\",{NAME:\"eraser\",SVG_KEY:\"remove\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(r){\"use strict\";(r=r&&r.hasOwnProperty(\"default\")?r[\"default\"]:r).URLRegEx=\"(^| |\\\\u00A0)(\".concat(r.LinkRegEx,\"|([a-z0-9+-_.]{1,}@[a-z0-9+-_.]{1,}\\\\.[a-z0-9+-_]{1,}))$\"),r.PLUGINS.url=function(f){var s=f.$,o=null;function t(e,t,n){for(var r=\"\";n.length&&\".\"==n[n.length-1];)r+=\".\",n=n.substring(0,n.length-1);var a=n;if(f.opts.linkConvertEmailAddress)f.helpers.isEmail(a)&&!/^mailto:.*/i.test(a)&&(a=\"mailto:\".concat(a));else if(f.helpers.isEmail(a))return t+n;return/^((http|https|ftp|ftps|mailto|tel|sms|notes|data)\\:)/i.test(a)||(a=\"//\".concat(a)),(t||\"\")+\"<a\".concat(f.opts.linkAlwaysBlank?' target=\"_blank\"':\"\").concat(o?' rel=\"'.concat(o,'\"'):\"\",' data-fr-linked=\"true\" href=\"').concat(a,'\">').concat(n.replace(/&/g,\"&\").replace(/&/g,\"&\").replace(/</g,\"<\").replace(/>/g,\">\"),\"</a>\").concat(r)}var p=function p(){return new RegExp(r.URLRegEx,\"gi\")};function u(e){return f.opts.linkAlwaysNoFollow&&(o=\"nofollow\"),f.opts.linkAlwaysBlank&&(f.opts.linkNoOpener&&(o?o+=\" noopener\":o=\"noopener\"),f.opts.linkNoReferrer&&(o?o+=\" noreferrer\":o=\"noreferrer\")),e.replace(p(),t)}function c(e){var t=e.split(\" \");return t[t.length-1]}function n(){var e=f.selection.ranges(0),t=e.startContainer;if(t.nodeType!==Node.TEXT_NODE)return!1;if(!t||e.startOffset!==(t.textContent||\"\").length){f.markers.insert();var n=f.$el.find(\".fr-marker\"),r=t.textContent.match(/(^| |\\u00A0)(((([a-z\\u0080-\\u009f\\u00a1-\\uffff0-9-_\\.]{1,})(\\.(com|net|org|edu|mil|gov|co|biz|info|me|dev)))|((ftp|http|https):\\/\\/[a-z\\u0080-\\u009f\\u00a1-\\uffff0-9-_\\.]{1,})|(www\\.[a-z\\u0080-\\u009f\\u00a1-\\uffff0-9-_\\.]{1,}\\.[a-z0-9-]{2,24})|((ftp|http|https):\\/\\/[\\u0021-\\uffff]{1,}@[a-z\\u0080-\\u009f\\u00a1-\\uffff0-9-_\\.]{1,}))((:[0-9]{1,5})|)(((\\/|\\?|#)[a-z\\u00a1-\\uffff0-9@?\\|!^=%&\\/~+#-\\'*-_{}]*)|())|([a-z0-9+-_.]{1,}@[a-z0-9+-_.]{1,}\\.[a-z0-9+-_]{1,}))$/gi);if(n.remove(),!r)return!1}if(function l(e){return!!e&&(\"A\"===e.tagName||!(!e.parentNode||e.parentNode==f.el)&&l(e.parentNode))}(t))return!1;if(p().test(c(t.textContent))){s(t).before(u(t.textContent));var a=s(t.parentNode).find(\"a[data-fr-linked]\");a.removeAttr(\"data-fr-linked\"),t.parentNode.removeChild(t),f.events.trigger(\"url.linked\",[a.get(0)])}else if(t.textContent.split(\" \").length<=2&&t.previousSibling&&\"A\"===t.previousSibling.tagName){var o=t.previousSibling.innerText+t.textContent;if(p().test(c(o))){var i=(new DOMParser).parseFromString(u(o),\"text/html\").body.childNodes;t.parentNode.replaceChild(i[0],t.previousSibling),i.length&&s(t).before(i[0]),t.parentNode.removeChild(t)}}}return{_init:function e(){f.events.on(\"keypress\",function(e){!f.selection.isCollapsed()||\")\"!=e.key&&\"(\"!=e.key||n()},!0),f.events.on(\"keydown\",function(e){var t=e.which;!f.selection.isCollapsed()||t!=r.KEYCODE.ENTER&&t!=r.KEYCODE.SPACE||n()},!0),f.events.on(\"paste.beforeCleanup\",function(e){if(f.helpers.isURL(e)&&!f.$el[0].getAttribute(\"plainpaste\")){var t=null;return f.opts.linkAlwaysBlank&&(f.opts.linkNoOpener&&(t?t+=\" noopener\":t=\"noopener\"),f.opts.linkNoReferrer&&(t?t+=\" noreferrer\":t=\"noreferrer\")),\"<a\".concat(f.opts.linkAlwaysBlank?' target=\"_blank\"':\"\").concat(t?' rel=\"'.concat(t,'\"'):\"\",' href=\"').concat(e,'\" >').concat(e,\"</a>\")}if(f.$el[0].getAttribute(\"plainpaste\"))return function n(e){if(\"string\"==typeof e)return e.replace(/(?:(?:https?|ftp|file):\\/\\/|www\\.|ftp\\.)(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#\\/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#\\/%=~_|$])/gim,u).replace(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9_-]+)/gim,u)}(e)})}}}});", "/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 16;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 17;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {preact.ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tif (node && node.parentNode) node.parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the\n * virtual node\n * @returns {VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor == undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet oldVNode = component._vnode,\n\t\toldDom = oldVNode._dom,\n\t\tcommitQueue = [],\n\t\trefQueue = [];\n\n\tif (component._parentDom) {\n\t\tconst newVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {Component} a\n * @param {Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/i, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (\n\t\t\tname.toLowerCase() in dom ||\n\t\t\tname === 'onFocusOut' ||\n\t\t\tname === 'onFocusIn'\n\t\t)\n\t\t\tname = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == 'http://www.w3.org/2000/svg') {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e._dispatched == null) {\n\t\t\t\te._dispatched = eventClock++;\n\n\t\t\t\t// When `e._dispatched` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e._dispatched < eventHandler._attached) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {Set<Component> | null} */\n\t\t\t\tlet subs = new Set();\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\t\tsubs = null;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.add(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tif (subs) {\n\t\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR, INSERT_VNODE, MATCHED } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {PreactElement} parentDom The DOM element whose children are being\n * diffed\n * @param {ComponentChildren[]} renderResult\n * @param {VNode} newParentVNode The new virtual node whose children should be\n * diff'ed against oldParentVNode\n * @param {VNode} oldParentVNode The old virtual node whose children should be\n * diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\t/** @type {VNode} */\n\t\toldVNode,\n\t\t/** @type {VNode} */\n\t\tchildVNode,\n\t\t/** @type {PreactElement} */\n\t\tnewDom,\n\t\t/** @type {PreactElement} */\n\t\tfirstChildDom;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\t/** @type {VNode[]} */\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet newChildrenLength = renderResult.length;\n\n\tnewParentVNode._nextDom = oldDom;\n\tconstructNewChildrenArray(newParentVNode, renderResult, oldChildren);\n\toldDom = newParentVNode._nextDom;\n\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = newParentVNode._children[i];\n\t\tif (childVNode == null) continue;\n\n\t\t// At this point, constructNewChildrenArray has assigned _index to be the\n\t\t// matchingIndex for this VNode's oldVNode (or -1 if there is no oldVNode).\n\t\tif (childVNode._index === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[childVNode._index] || EMPTY_OBJ;\n\t\t}\n\n\t\t// Update childVNode._index to its final index\n\t\tchildVNode._index = i;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\t// Adjust DOM nodes\n\t\tnewDom = childVNode._dom;\n\t\tif (childVNode.ref && oldVNode.ref != childVNode.ref) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildVNode._component || newDom,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t}\n\n\t\tif (firstChildDom == null && newDom != null) {\n\t\t\tfirstChildDom = newDom;\n\t\t}\n\n\t\tif (\n\t\t\tchildVNode._flags & INSERT_VNODE ||\n\t\t\toldVNode._children === childVNode._children\n\t\t) {\n\t\t\toldDom = insert(childVNode, oldDom, parentDom);\n\t\t} else if (\n\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\tchildVNode._nextDom !== undefined\n\t\t) {\n\t\t\t// Since Fragments or components that return Fragment like VNodes can\n\t\t\t// contain multiple DOM nodes as the same level, continue the diff from\n\t\t\t// the sibling of last DOM child of this child VNode\n\t\t\toldDom = childVNode._nextDom;\n\t\t} else if (newDom) {\n\t\t\toldDom = newDom.nextSibling;\n\t\t}\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because it\n\t\t// is only used by `diffChildren` to determine where to resume the diff\n\t\t// after diffing Components and Fragments. Once we store it the nextDOM\n\t\t// local var, we can clean up the property. Also prevents us hanging on to\n\t\t// DOM nodes that may have been unmounted.\n\t\tchildVNode._nextDom = undefined;\n\n\t\t// Unset diffing flags\n\t\tchildVNode._flags &= ~(INSERT_VNODE | MATCHED);\n\t}\n\n\t// TODO: With new child diffing algo, consider alt ways to diff Fragments.\n\t// Such as dropping oldDom and moving fragments in place\n\t//\n\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t// _nextDom property to the nextSibling of its last child DOM node.\n\t//\n\t// `oldDom` contains the correct value here because if the last child\n\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t// node's nextSibling.\n\tnewParentVNode._nextDom = oldDom;\n\tnewParentVNode._dom = firstChildDom;\n}\n\n/**\n * @param {VNode} newParentVNode\n * @param {ComponentChildren[]} renderResult\n * @param {VNode[]} oldChildren\n */\nfunction constructNewChildrenArray(newParentVNode, renderResult, oldChildren) {\n\t/** @type {number} */\n\tlet i;\n\t/** @type {VNode} */\n\tlet childVNode;\n\t/** @type {VNode} */\n\tlet oldVNode;\n\n\tconst newChildrenLength = renderResult.length;\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength;\n\n\tlet skew = 0;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\t// @ts-expect-error We are reusing the childVNode variable to hold both the\n\t\t// pre and post normalized childVNode\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t\tcontinue;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint' ||\n\t\t\tchildVNode.constructor == String\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode.constructor === undefined && childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse = <div />\n\t\t\t// <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\tconst skewedIndex = i + skew;\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Temporarily store the matchingIndex on the _index property so we can pull\n\t\t// out the oldVNode in diffChildren. We'll override this to the VNode's\n\t\t// final index after using this property to get the oldVNode\n\t\tconst matchingIndex = (childVNode._index = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t));\n\n\t\toldVNode = null;\n\t\tif (matchingIndex !== -1) {\n\t\t\toldVNode = oldChildren[matchingIndex];\n\t\t\tremainingOldChildren--;\n\t\t\tif (oldVNode) {\n\t\t\t\toldVNode._flags |= MATCHED;\n\t\t\t}\n\t\t}\n\n\t\t// Here, we define isMounting for the purposes of the skew diffing\n\t\t// algorithm. Nodes that are unsuspending are considered mounting and we detect\n\t\t// this by checking if oldVNode._original === null\n\t\tconst isMounting = oldVNode == null || oldVNode._original === null;\n\n\t\tif (isMounting) {\n\t\t\tif (matchingIndex == -1) {\n\t\t\t\tskew--;\n\t\t\t}\n\n\t\t\t// If we are mounting a DOM VNode, mark it for insertion\n\t\t\tif (typeof childVNode.type != 'function') {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\t// When we move elements around i.e. [0, 1, 2] --> [1, 0, 2]\n\t\t\t// --> we diff 1, we find it at position 1 while our skewed index is 0 and our skew is 0\n\t\t\t// we set the skew to 1 as we found an offset.\n\t\t\t// --> we diff 0, we find it at position 0 while our skewed index is at 2 and our skew is 1\n\t\t\t// this makes us increase the skew again.\n\t\t\t// --> we diff 2, we find it at position 2 while our skewed index is at 4 and our skew is 2\n\t\t\t//\n\t\t\t// this becomes an optimization question where currently we see a 1 element offset as an insertion\n\t\t\t// or deletion i.e. we optimize for [0, 1, 2] --> [9, 0, 1, 2]\n\t\t\t// while a more than 1 offset we see as a swap.\n\t\t\t// We could probably build heuristics for having an optimized course of action here as well, but\n\t\t\t// might go at the cost of some bytes.\n\t\t\t//\n\t\t\t// If we wanted to optimize for i.e. only swaps we'd just do the last two code-branches and have\n\t\t\t// only the first item be a re-scouting and all the others fall in their skewed counter-part.\n\t\t\t// We could also further optimize for swaps\n\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\tskew--;\n\t\t\t} else if (matchingIndex == skewedIndex + 1) {\n\t\t\t\tskew++;\n\t\t\t} else {\n\t\t\t\tif (matchingIndex > skewedIndex) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\n\t\t\t\t// Move this VNode's DOM if the original index (matchingIndex) doesn't\n\t\t\t\t// match the new skew index (i + new skew)\n\t\t\t\t// In the former two branches we know that it matches after skewing\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any. Loop forwards so that as we\n\t// unmount DOM from the beginning of the oldChildren, we can adjust oldDom to\n\t// point to the next child, which needs to be the first DOM node that won't be\n\t// unmounted.\n\tif (remainingOldChildren) {\n\t\tfor (i = 0; i < oldChildrenLength; i++) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode != null && (oldVNode._flags & MATCHED) === 0) {\n\t\t\t\tif (oldVNode._dom == newParentVNode._nextDom) {\n\t\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {VNode} parentVNode\n * @param {PreactElement} oldDom\n * @param {PreactElement} parentDom\n * @returns {PreactElement}\n */\nfunction insert(parentVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\n\tif (typeof parentVNode.type == 'function') {\n\t\tlet children = parentVNode._children;\n\t\tfor (let i = 0; children && i < children.length; i++) {\n\t\t\tif (children[i]) {\n\t\t\t\t// If we enter this code path on sCU bailout, where we copy\n\t\t\t\t// oldVNode._children to newVNode._children, we need to update the old\n\t\t\t\t// children's _parent pointer to point to the newVNode (parentVNode\n\t\t\t\t// here).\n\t\t\t\tchildren[i]._parent = parentVNode;\n\t\t\t\toldDom = insert(children[i], oldDom, parentDom);\n\t\t\t}\n\t\t}\n\n\t\treturn oldDom;\n\t} else if (parentVNode._dom != oldDom) {\n\t\tif (oldDom && parentVNode.type && !parentDom.contains(oldDom)) {\n\t\t\toldDom = getDomSibling(parentVNode);\n\t\t}\n\t\tparentDom.insertBefore(parentVNode._dom, oldDom || null);\n\t\toldDom = parentVNode._dom;\n\t}\n\n\tdo {\n\t\toldDom = oldDom && oldDom.nextSibling;\n\t} while (oldDom != null && oldDom.nodeType === 8);\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {ComponentChildren} children The unflattened children of a virtual\n * node\n * @returns {VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\n/**\n * @param {VNode} childVNode\n * @param {VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\t// We only need to perform a search if there are more children\n\t// (remainingOldChildren) to search. However, if the oldVNode we just looked\n\t// at skewedIndex was not already used in this diff, then there must be at\n\t// least 1 other (so greater than 1) remainingOldChildren to attempt to match\n\t// against. So the following condition checks that ensuring\n\t// remainingOldChildren > 1 if the oldVNode is not already used/matched. Else\n\t// if the oldVNode was null or matched, then there could needs to be at least\n\t// 1 (aka `remainingOldChildren > 0`) children to find and compare against.\n\tlet shouldSearch =\n\t\tremainingOldChildren >\n\t\t(oldVNode != null && (oldVNode._flags & MATCHED) === 0 ? 1 : 0);\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode &&\n\t\t\tkey == oldVNode.key &&\n\t\t\ttype === oldVNode.type &&\n\t\t\t(oldVNode._flags & MATCHED) === 0)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (shouldSearch) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) === 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) === 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import {\n\tEMPTY_OBJ,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tRESET_MODE\n} from '../constants';\nimport { BaseComponent, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {PreactElement} parentDom The parent of the DOM element\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\t/** @type {any} */\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._flags & MODE_SUSPENDED) {\n\t\tisHydrating = !!(oldVNode._flags & MODE_HYDRATE);\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\t\t\tconst isClassComponent =\n\t\t\t\t'prototype' in newType && newType.prototype.render;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif (isClassComponent) {\n\t\t\t\t\t// @ts-expect-error The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-expect-error Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new BaseComponent(\n\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (isClassComponent && c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (isClassComponent && newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.some(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif (isClassComponent) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (isClassComponent && !isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnamespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._flags &= RESET_MODE;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._flags |= isHydrating\n\t\t\t\t\t? MODE_HYDRATE | MODE_SUSPENDED\n\t\t\t\t\t: MODE_SUSPENDED;\n\n\t\t\t\twhile (oldDom && oldDom.nodeType === 8 && oldDom.nextSibling) {\n\t\t\t\t\toldDom = oldDom.nextSibling;\n\t\t\t\t}\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t} else {\n\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array<Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\troot._nextDom = undefined;\n\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-expect-error Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-expect-error See above comment on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {PreactElement} dom The DOM element representing the virtual nodes\n * being diffed\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n * @returns {PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = /** @type {string} */ (newVNode.type);\n\t/** @type {any} */\n\tlet i;\n\t/** @type {{ __html?: string }} */\n\tlet newHtml;\n\t/** @type {{ __html?: string }} */\n\tlet oldHtml;\n\t/** @type {ComponentChildren} */\n\tlet newChildren;\n\tlet value;\n\tlet inputValue;\n\tlet checked;\n\n\t// Tracks entering and exiting namespaces when descending through the tree.\n\tif (nodeType === 'svg') namespace = 'http://www.w3.org/2000/svg';\n\telse if (nodeType === 'math')\n\t\tnamespace = 'http://www.w3.org/1998/Math/MathML';\n\telse if (!namespace) namespace = 'http://www.w3.org/1999/xhtml';\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tvalue = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\t'setAttribute' in value === !!nodeType &&\n\t\t\t\t(nodeType ? value.localName === nodeType : value.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = value;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = document.createElementNS(\n\t\t\tnamespace,\n\t\t\tnodeType,\n\t\t\tnewProps.is && newProps\n\t\t);\n\n\t\t// we are creating a new node, so we can assume this is a new subtree (in\n\t\t// case we are hydrating), this deopts the hydrate\n\t\tif (isHydrating) {\n\t\t\tif (options._hydrationMismatch)\n\t\t\t\toptions._hydrationMismatch(newVNode, excessDomChildren);\n\t\t\tisHydrating = false;\n\t\t}\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\t// If we are in a situation where we are not hydrating but are using\n\t\t// existing DOM (e.g. replaceNode) we should read the existing DOM\n\t\t// attributes to diff them\n\t\tif (!isHydrating && excessDomChildren != null) {\n\t\t\toldProps = {};\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i];\n\t\t\t\toldProps[value.name] = value.value;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in oldProps) {\n\t\t\tvalue = oldProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\toldHtml = value;\n\t\t\t} else if (!(i in newProps)) {\n\t\t\t\tif (\n\t\t\t\t\t(i == 'value' && 'defaultValue' in newProps) ||\n\t\t\t\t\t(i == 'checked' && 'defaultChecked' in newProps)\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tsetProperty(dom, i, null, value, namespace);\n\t\t\t}\n\t\t}\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t\tnewChildren = value;\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\tnewHtml = value;\n\t\t\t} else if (i == 'value') {\n\t\t\t\tinputValue = value;\n\t\t\t} else if (i == 'checked') {\n\t\t\t\tchecked = value;\n\t\t\t} else if (\n\t\t\t\t(!isHydrating || typeof value == 'function') &&\n\t\t\t\toldProps[i] !== value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\tif (\n\t\t\t\t!isHydrating &&\n\t\t\t\t(!oldHtml ||\n\t\t\t\t\t(newHtml.__html !== oldHtml.__html &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML))\n\t\t\t) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnodeType === 'foreignObject'\n\t\t\t\t\t? 'http://www.w3.org/1999/xhtml'\n\t\t\t\t\t: namespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// As above, don't diff props during hydration\n\t\tif (!isHydrating) {\n\t\t\ti = 'value';\n\t\t\tif (nodeType === 'progress' && inputValue == null) {\n\t\t\t\tdom.removeAttribute('value');\n\t\t\t} else if (\n\t\t\t\tinputValue !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(inputValue !== dom[i] ||\n\t\t\t\t\t(nodeType === 'progress' && !inputValue) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && inputValue !== oldProps[i]))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, inputValue, oldProps[i], namespace);\n\t\t\t}\n\n\t\t\ti = 'checked';\n\t\t\tif (checked !== undefined && checked !== dom[i]) {\n\t\t\t\tsetProperty(dom, i, checked, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {Ref<any> & { _unmount?: unknown }} ref\n * @param {any} value\n * @param {VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') {\n\t\t\tlet hasRefUnmount = typeof ref._unmount == 'function';\n\t\t\tif (hasRefUnmount) {\n\t\t\t\t// @ts-ignore TS doesn't like moving narrowing checks into variables\n\t\t\t\tref._unmount();\n\t\t\t}\n\n\t\t\tif (!hasRefUnmount || value != null) {\n\t\t\t\t// Store the cleanup function on the function\n\t\t\t\t// instance object itself to avoid shape\n\t\t\t\t// transitioning vnode\n\t\t\t\tref._unmount = ref(value);\n\t\t\t}\n\t\t} else ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {VNode} vnode The virtual node to unmount\n * @param {VNode} parentVNode The parent of the VNode that initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type != 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._component = vnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {ComponentChild} vnode The virtual node to render\n * @param {PreactElement} parentDom The DOM element to render into\n * @param {PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode == 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.namespaceURI,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t\t? null\n\t\t\t\t: parentDom.firstChild\n\t\t\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t\t? oldVNode._dom\n\t\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {ComponentChild} vnode The virtual node to render\n * @param {PreactElement} parentDom The DOM element to update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its\n * children.\n * @param {VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<ComponentChildren>} rest Any additional arguments will be used\n * as replacement children.\n * @returns {VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {VNode} [oldVNode]\n * @param {ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {Component} */\n\tlet component,\n\t\t/** @type {ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "import { options as _options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array<import('./internal').Component>} */\nlet afterPaintEffects = [];\n\n// Cast to use internal Options type\nconst options = /** @type {import('./internal').Options} */ (_options);\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\nlet oldRoot = options._root;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._root = (vnode, parentDom) => {\n\tif (vnode && parentDom._children && parentDom._children._mask) {\n\t\tvnode._mask = parentDom._children._mask;\n\t}\n\n\tif (oldRoot) oldRoot(vnode, parentDom);\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingArgs = hookItem._nextValue = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentIndex = 0;\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\n// TODO: Improve typing of commitQueue parameter\n/** @type {(vnode: import('./internal').VNode, commitQueue: any) => void} */\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\n\treturn hooks._list[index];\n}\n\n/**\n * @template {unknown} S\n * @param {import('./index').Dispatch<import('./index').StateUpdater<S>>} [initialState]\n * @returns {[S, (state: S) => void]}\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @template {unknown} S\n * @template {unknown} A\n * @param {import('./index').Reducer<S, A>} reducer\n * @param {import('./index').Dispatch<import('./index').StateUpdater<S>>} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ S, (state: S) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tlet prevScu = currentComponent.shouldComponentUpdate;\n\t\t\tconst prevCWU = currentComponent.componentWillUpdate;\n\n\t\t\t// If we're dealing with a forced update `shouldComponentUpdate` will\n\t\t\t// not be called. But we use that to update the hook values, so we\n\t\t\t// need to call it.\n\t\t\tcurrentComponent.componentWillUpdate = function (p, s, c) {\n\t\t\t\tif (this._force) {\n\t\t\t\t\tlet tmp = prevScu;\n\t\t\t\t\t// Clear to avoid other sCU hooks from being called\n\t\t\t\t\tprevScu = undefined;\n\t\t\t\t\tupdateHookState(p, s, c);\n\t\t\t\t\tprevScu = tmp;\n\t\t\t\t}\n\n\t\t\t\tif (prevCWU) prevCWU.call(this, p, s, c);\n\t\t\t};\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\t/**\n\t\t\t *\n\t\t\t * @type {import('./internal').Component[\"shouldComponentUpdate\"]}\n\t\t\t */\n\t\t\t// @ts-ignore - We don't use TS to downtranspile\n\t\t\t// eslint-disable-next-line no-inner-declarations\n\t\t\tfunction updateHookState(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\t/** @type {(x: import('./internal').HookState) => x is import('./internal').ReducerHookState} */\n\t\t\t\tconst isStateHook = x => !!x._component;\n\t\t\t\tconst stateHooks =\n\t\t\t\t\thookState._component.__hooks._list.filter(isStateHook);\n\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = false;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn shouldUpdate || hookState._component.props !== p\n\t\t\t\t\t? prevScu\n\t\t\t\t\t\t? prevScu.call(this, p, s, c)\n\t\t\t\t\t\t: true\n\t\t\t\t\t: false;\n\t\t\t}\n\n\t\t\tcurrentComponent.shouldComponentUpdate = updateHookState;\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\n/** @type {(initialValue: unknown) => unknown} */\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tref(createHandle());\n\t\t\t\treturn () => ref(null);\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @template {unknown} T\n * @param {() => T} factory\n * @param {unknown[]} args\n * @returns {T}\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState<T>} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._value = factory();\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {unknown[]} args\n * @returns {() => void}\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {<T>(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(\n\t\t\tformatter ? formatter(value) : /** @type {any}*/ (value)\n\t\t);\n\t}\n}\n\n/**\n * @param {(error: unknown, errorInfo: import('preact').ErrorInfo) => void} cb\n * @returns {[unknown, () => void]}\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/** @type {() => string} */\nexport function useId() {\n\t/** @type {import('./internal').IdHookState} */\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal.d').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n * @returns {void}\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').HookState} hook\n * @returns {void}\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n * @returns {void}\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {unknown[]} oldArgs\n * @param {unknown[]} newArgs\n * @returns {boolean}\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\n/**\n * @template Arg\n * @param {Arg} arg\n * @param {(arg: Arg) => any} f\n * @returns {any}\n */\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n", "/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n\n/**\n * Check if two values are the same value\n * @param {*} x\n * @param {*} y\n * @returns {boolean}\n */\nexport function is(x, y) {\n\treturn (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\n", "import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport function PureComponent(p, c) {\n\tthis.props = p;\n\tthis.context = c;\n}\nPureComponent.prototype = new Component();\n// Some third-party libraries check if this property is present\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = function (props, state) {\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\n};\n", "import { createElement } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, props);\n\t}\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n", "import { options } from 'preact';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\nexport const REACT_FORWARD_SYMBOL =\n\t(typeof Symbol != 'undefined' &&\n\t\tSymbol.for &&\n\t\tSymbol.for('react.forward_ref')) ||\n\t0xf47;\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tif (!('ref' in props)) return fn(props, null);\n\n\t\tlet ref = props.ref;\n\t\tdelete props.ref;\n\t\tconst result = fn(props, ref);\n\t\tprops.ref = ref;\n\t\treturn result;\n\t}\n\n\t// mobx-react checks for this being present\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\n\t// mobx-react heavily relies on implementation details.\n\t// It expects an object here with a `render` property,\n\t// and prototype.render will fail. Without this\n\t// mobx-react throws.\n\tForwarded.render = Forwarded;\n\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n", "import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n", "import { Component, createElement, options, Fragment } from 'preact';\nimport { MODE_HYDRATE } from '../../src/constants';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function (error, newVNode, oldVNode, errorInfo) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\tif (newVNode._dom == null) {\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t}\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode, errorInfo);\n};\n\nconst oldUnmount = options.unmount;\noptions.unmount = function (vnode) {\n\t/** @type {import('./internal').Component} */\n\tconst component = vnode._component;\n\tif (component && component._onResolve) {\n\t\tcomponent._onResolve();\n\t}\n\n\t// if the component is still hydrating\n\t// most likely it is because the component is suspended\n\t// we set the vnode.type as `null` so that it is not a typeof function\n\t// so the unmount will remove the vnode._dom\n\tif (component && vnode._flags & MODE_HYDRATE) {\n\t\tvnode.type = null;\n\t}\n\n\tif (oldUnmount) oldUnmount(vnode);\n};\n\nfunction detachedClone(vnode, detachedParent, parentDom) {\n\tif (vnode) {\n\t\tif (vnode._component && vnode._component.__hooks) {\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\n\t\t\t});\n\n\t\t\tvnode._component.__hooks = null;\n\t\t}\n\n\t\tvnode = assign({}, vnode);\n\t\tif (vnode._component != null) {\n\t\t\tif (vnode._component._parentDom === parentDom) {\n\t\t\t\tvnode._component._parentDom = detachedParent;\n\t\t\t}\n\t\t\tvnode._component = null;\n\t\t}\n\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tdetachedClone(child, detachedParent, parentDom)\n\t\t\t);\n\t}\n\n\treturn vnode;\n}\n\nfunction removeOriginal(vnode, detachedParent, originalParent) {\n\tif (vnode && originalParent) {\n\t\tvnode._original = null;\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tremoveOriginal(child, detachedParent, originalParent)\n\t\t\t);\n\n\t\tif (vnode._component) {\n\t\t\tif (vnode._component._parentDom === detachedParent) {\n\t\t\t\tif (vnode._dom) {\n\t\t\t\t\toriginalParent.appendChild(vnode._dom);\n\t\t\t\t}\n\t\t\t\tvnode._component._force = true;\n\t\t\t\tvnode._component._parentDom = originalParent;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {Promise} promise The thrown promise\n * @param {import('./internal').VNode<any, any>} suspendingVNode The suspending component\n */\nSuspense.prototype._childDidSuspend = function (promise, suspendingVNode) {\n\tconst suspendingComponent = suspendingVNode._component;\n\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\t\tsuspendingComponent._onResolve = null;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._onResolve = onResolved;\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\t// If the suspension was during hydration we don't need to restore the\n\t\t\t// suspended children into the _children array\n\t\t\tif (c.state._suspended) {\n\t\t\t\tconst suspendedVNode = c.state._suspended;\n\t\t\t\tc._vnode._children[0] = removeOriginal(\n\t\t\t\t\tsuspendedVNode,\n\t\t\t\t\tsuspendedVNode._component._parentDom,\n\t\t\t\t\tsuspendedVNode._component._originalParentDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * We do not set `suspended: true` during hydration because we want the actual markup\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\n\t */\n\tif (\n\t\t!c._pendingSuspensionCount++ &&\n\t\t!(suspendingVNode._flags & MODE_HYDRATE)\n\t) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.componentWillUnmount = function () {\n\tthis._suspenders = [];\n};\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {import('./internal').SuspenseComponent[\"props\"]} props\n * @param {import('./internal').SuspenseState} state\n */\nSuspense.prototype.render = function (props, state) {\n\tif (this._detachOnNextRender) {\n\t\t// When the Suspense's _vnode was created by a call to createVNode\n\t\t// (i.e. due to a setState further up in the tree)\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\n\t\tif (this._vnode._children) {\n\t\t\tconst detachedParent = document.createElement('div');\n\t\t\tconst detachedComponent = this._vnode._children[0]._component;\n\t\t\tthis._vnode._children[0] = detachedClone(\n\t\t\t\tthis._detachOnNextRender,\n\t\t\t\tdetachedParent,\n\t\t\t\t(detachedComponent._originalParentDom = detachedComponent._parentDom)\n\t\t\t);\n\t\t}\n\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\n\t/** @type {import('./internal').VNode} */\n\tconst fallback =\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\n\tif (fallback) fallback._flags &= ~MODE_HYDRATE;\n\n\treturn [\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\n\t\tfallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('./internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\t/** @type {import('./internal').Component} */\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n", "import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function (child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function (props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate =\n\tSuspenseList.prototype.componentDidMount = function () {\n\t\t// Iterate through all children after mounting for two reasons:\n\t\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t\t// The nodes can now be completely consumed from the linked list.\n\t\t// 2. Handle nodes that might have gotten resolved between render and\n\t\t// componentDidMount.\n\t\tthis._map.forEach((node, child) => {\n\t\t\tresolve(this, child, node);\n\t\t});\n\t};\n", "/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 16;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 17;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { createElement, render } from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider(props) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n * @this {import('./internal').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nfunction Portal(props) {\n\tconst _this = this;\n\tlet container = props._container;\n\n\t_this.componentWillUnmount = function () {\n\t\trender(null, _this._temp);\n\t\t_this._temp = null;\n\t\t_this._container = null;\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\t_this.componentWillUnmount();\n\t}\n\n\tif (!_this._temp) {\n\t\t_this._container = container;\n\n\t\t// Create a fake DOM parent node that manages a subset of `container`'s children:\n\t\t_this._temp = {\n\t\t\tnodeType: 1,\n\t\t\tparentNode: container,\n\t\t\tchildNodes: [],\n\t\t\tcontains: () => true,\n\t\t\tappendChild(child) {\n\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t_this._container.appendChild(child);\n\t\t\t},\n\t\t\tinsertBefore(child, before) {\n\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t_this._container.appendChild(child);\n\t\t\t},\n\t\t\tremoveChild(child) {\n\t\t\t\tthis.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\n\t\t\t\t_this._container.removeChild(child);\n\t\t\t}\n\t\t};\n\t}\n\n\t// Render our wrapping element into temp.\n\trender(\n\t\tcreateElement(ContextProvider, { context: _this.context }, props._vnode),\n\t\t_this._temp\n\t);\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\tconst el = createElement(Portal, { _vnode: vnode, _container: container });\n\tel.containerInfo = container;\n\treturn el;\n}\n", "import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\nimport {\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tuseEffect,\n\tuseId,\n\tuseImperativeHandle,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseReducer,\n\tuseRef,\n\tuseState\n} from 'preact/hooks';\nimport {\n\tuseDeferredValue,\n\tuseInsertionEffect,\n\tuseSyncExternalStore,\n\tuseTransition\n} from './index';\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\nconst CAMEL_PROPS =\n\t/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\nconst ON_ANI = /^on(Ani|Tra|Tou|BeforeInp|Compo)/;\nconst CAMEL_REPLACE = /[A-Z0-9]/g;\nconst IS_DOM = typeof document !== 'undefined';\n\n// Input types for which onchange should not be converted to oninput.\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\nconst onChangeInputType = type =>\n\t(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'\n\t\t? /fil|che|rad/\n\t\t: /fil|che|ra/\n\t).test(type);\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\n// `UNSAFE_*` lifecycle hooks\n// Preact only ever invokes the unprefixed methods.\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\n// See https://github.com/preactjs/preact/issues/1941\n[\n\t'componentWillMount',\n\t'componentWillReceiveProps',\n\t'componentWillUpdate'\n].forEach(key => {\n\tObject.defineProperty(Component.prototype, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this['UNSAFE_' + key];\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: v\n\t\t\t});\n\t\t}\n\t});\n});\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\tparent.textContent = '';\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\n\te.persist = empty;\n\te.isPropagationStopped = isPropagationStopped;\n\te.isDefaultPrevented = isDefaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\nfunction empty() {}\n\nfunction isPropagationStopped() {\n\treturn this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n\treturn this.defaultPrevented;\n}\n\nconst classNameDescriptorNonEnumberable = {\n\tenumerable: false,\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nfunction handleDomVNode(vnode) {\n\tlet props = vnode.props,\n\t\ttype = vnode.type,\n\t\tnormalizedProps = {};\n\n\tlet isNonDashedType = type.indexOf('-') === -1;\n\tfor (let i in props) {\n\t\tlet value = props[i];\n\n\t\tif (\n\t\t\t(i === 'value' && 'defaultValue' in props && value == null) ||\n\t\t\t// Emulate React's behavior of not rendering the contents of noscript tags on the client.\n\t\t\t(IS_DOM && i === 'children' && type === 'noscript') ||\n\t\t\ti === 'class' ||\n\t\t\ti === 'className'\n\t\t) {\n\t\t\t// Skip applying value if it is null/undefined and we already set\n\t\t\t// a default value\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet lowerCased = i.toLowerCase();\n\t\tif (i === 'defaultValue' && 'value' in props && props.value == null) {\n\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\n\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\n\t\t\ti = 'value';\n\t\t} else if (i === 'download' && value === true) {\n\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\n\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\n\t\t\t// converts it to an empty string instead, otherwise the attribute\n\t\t\t// value will be used as the file name and the file will be called\n\t\t\t// \"true\" upon downloading it.\n\t\t\tvalue = '';\n\t\t} else if (lowerCased === 'translate' && value === 'no') {\n\t\t\tvalue = false;\n\t\t} else if (lowerCased[0] === 'o' && lowerCased[1] === 'n') {\n\t\t\tif (lowerCased === 'ondoubleclick') {\n\t\t\t\ti = 'ondblclick';\n\t\t\t} else if (\n\t\t\t\tlowerCased === 'onchange' &&\n\t\t\t\t(type === 'input' || type === 'textarea') &&\n\t\t\t\t!onChangeInputType(props.type)\n\t\t\t) {\n\t\t\t\tlowerCased = i = 'oninput';\n\t\t\t} else if (lowerCased === 'onfocus') {\n\t\t\t\ti = 'onfocusin';\n\t\t\t} else if (lowerCased === 'onblur') {\n\t\t\t\ti = 'onfocusout';\n\t\t\t} else if (ON_ANI.test(i)) {\n\t\t\t\ti = lowerCased;\n\t\t\t}\n\t\t} else if (isNonDashedType && CAMEL_PROPS.test(i)) {\n\t\t\ti = i.replace(CAMEL_REPLACE, '-$&').toLowerCase();\n\t\t} else if (value === null) {\n\t\t\tvalue = undefined;\n\t\t}\n\n\t\t// Add support for onInput and onChange, see #3561\n\t\t// if we have an oninput prop already change it to oninputCapture\n\t\tif (lowerCased === 'oninput') {\n\t\t\ti = lowerCased;\n\t\t\tif (normalizedProps[i]) {\n\t\t\t\ti = 'oninputCapture';\n\t\t\t}\n\t\t}\n\n\t\tnormalizedProps[i] = value;\n\t}\n\n\t// Add support for array select values: <select multiple value={[]} />\n\tif (\n\t\ttype == 'select' &&\n\t\tnormalizedProps.multiple &&\n\t\tArray.isArray(normalizedProps.value)\n\t) {\n\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\tchild.props.selected =\n\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t});\n\t}\n\n\t// Adding support for defaultValue in select tag\n\tif (type == 'select' && normalizedProps.defaultValue != null) {\n\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\tif (normalizedProps.multiple) {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\n\t\t\t} else {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\n\t\t\t}\n\t\t});\n\t}\n\n\tif (props.class && !props.className) {\n\t\tnormalizedProps.class = props.class;\n\t\tObject.defineProperty(\n\t\t\tnormalizedProps,\n\t\t\t'className',\n\t\t\tclassNameDescriptorNonEnumberable\n\t\t);\n\t} else if (props.className && !props.class) {\n\t\tnormalizedProps.class = normalizedProps.className = props.className;\n\t} else if (props.class && props.className) {\n\t\tnormalizedProps.class = normalizedProps.className = props.className;\n\t}\n\n\tvnode.props = normalizedProps;\n}\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\t// only normalize props on Element nodes\n\tif (typeof vnode.type === 'string') {\n\t\thandleDomVNode(vnode);\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function (vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\nconst oldDiffed = options.diffed;\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.diffed = function (vnode) {\n\tif (oldDiffed) {\n\t\toldDiffed(vnode);\n\t}\n\n\tconst props = vnode.props;\n\tconst dom = vnode._dom;\n\n\tif (\n\t\tdom != null &&\n\t\tvnode.type === 'textarea' &&\n\t\t'value' in props &&\n\t\tprops.value !== dom.value\n\t) {\n\t\tdom.value = props.value == null ? '' : props.value;\n\t}\n\n\tcurrentComponent = null;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t},\n\t\t\tuseCallback,\n\t\t\tuseContext,\n\t\t\tuseDebugValue,\n\t\t\tuseDeferredValue,\n\t\t\tuseEffect,\n\t\t\tuseId,\n\t\t\tuseImperativeHandle,\n\t\t\tuseInsertionEffect,\n\t\t\tuseLayoutEffect,\n\t\t\tuseMemo,\n\t\t\t// useMutableSource, // experimental-only and replaced by uSES, likely not worth supporting\n\t\t\tuseReducer,\n\t\t\tuseRef,\n\t\t\tuseState,\n\t\t\tuseSyncExternalStore,\n\t\t\tuseTransition\n\t\t}\n\t}\n};\n", "import {\n\tcreateElement,\n\trender as preactRender,\n\tcloneElement as preactCloneElement,\n\tcreateRef,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from 'preact';\nimport {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue\n} from 'preact/hooks';\nimport { PureComponent } from './PureComponent';\nimport { memo } from './memo';\nimport { forwardRef } from './forwardRef';\nimport { Children } from './Children';\nimport { Suspense, lazy } from './suspense';\nimport { SuspenseList } from './suspense-list';\nimport { createPortal } from './portals';\nimport { is } from './util';\nimport {\n\thydrate,\n\trender,\n\tREACT_ELEMENT_TYPE,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n} from './render';\n\nconst version = '18.3.1'; // trick libraries to think we are react\n\n/**\n * Legacy version of createElement.\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\n */\nfunction createFactory(type) {\n\treturn createElement.bind(null, type);\n}\n\n/**\n * Check if the passed element is a valid (p)react node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Check if the passed element is a Fragment node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isFragment(element) {\n\treturn isValidElement(element) && element.type === Fragment;\n}\n\n/**\n * Check if the passed element is a Memo node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isMemo(element) {\n\treturn (\n\t\t!!element &&\n\t\t!!element.displayName &&\n\t\t(typeof element.displayName === 'string' ||\n\t\t\telement.displayName instanceof String) &&\n\t\telement.displayName.startsWith('Memo(')\n\t);\n}\n\n/**\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\n * all vnode normalizations.\n * @param {import('./internal').VNode} element The vnode to clone\n * @param {object} props Props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Optional component children\n */\nfunction cloneElement(element) {\n\tif (!isValidElement(element)) return element;\n\treturn preactCloneElement.apply(null, arguments);\n}\n\n/**\n * Remove a component tree from the DOM, including state and event handlers.\n * @param {import('./internal').PreactElement} container\n * @returns {boolean}\n */\nfunction unmountComponentAtNode(container) {\n\tif (container._children) {\n\t\tpreactRender(null, container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Get the matching DOM node for a component\n * @param {import('./internal').Component} component\n * @returns {import('./internal').PreactElement | null}\n */\nfunction findDOMNode(component) {\n\treturn (\n\t\t(component &&\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\n\t\tnull\n\t);\n}\n\n/**\n * Deprecated way to control batched rendering inside the reconciler, but we\n * already schedule in batches inside our rendering code\n * @template Arg\n * @param {(arg: Arg) => void} callback function that triggers the updated\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n */\n// eslint-disable-next-line camelcase\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\n\n/**\n * In React, `flushSync` flushes the entire tree and forces a rerender. It's\n * implmented here as a no-op.\n * @template Arg\n * @template Result\n * @param {(arg: Arg) => Result} callback function that runs before the flush\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n * @returns\n */\nconst flushSync = (callback, arg) => callback(arg);\n\n/**\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\n * that just renders its children without imposing any restrictions.\n */\nconst StrictMode = Fragment;\n\nexport function startTransition(cb) {\n\tcb();\n}\n\nexport function useDeferredValue(val) {\n\treturn val;\n}\n\nexport function useTransition() {\n\treturn [false, startTransition];\n}\n\n// TODO: in theory this should be done after a VNode is diffed as we want to insert\n// styles/... before it attaches\nexport const useInsertionEffect = useLayoutEffect;\n\n// compat to react-is\nexport const isElement = isValidElement;\n\n/**\n * This is taken from https://github.com/facebook/react/blob/main/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L84\n * on a high level this cuts out the warnings, ... and attempts a smaller implementation\n * @typedef {{ _value: any; _getSnapshot: () => any }} Store\n */\nexport function useSyncExternalStore(subscribe, getSnapshot) {\n\tconst value = getSnapshot();\n\n\t/**\n\t * @typedef {{ _instance: Store }} StoreRef\n\t * @type {[StoreRef, (store: StoreRef) => void]}\n\t */\n\tconst [{ _instance }, forceUpdate] = useState({\n\t\t_instance: { _value: value, _getSnapshot: getSnapshot }\n\t});\n\n\tuseLayoutEffect(() => {\n\t\t_instance._value = value;\n\t\t_instance._getSnapshot = getSnapshot;\n\n\t\tif (didSnapshotChange(_instance)) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\t}, [subscribe, value, getSnapshot]);\n\n\tuseEffect(() => {\n\t\tif (didSnapshotChange(_instance)) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\n\t\treturn subscribe(() => {\n\t\t\tif (didSnapshotChange(_instance)) {\n\t\t\t\tforceUpdate({ _instance });\n\t\t\t}\n\t\t});\n\t}, [subscribe]);\n\n\treturn value;\n}\n\n/** @type {(inst: Store) => boolean} */\nfunction didSnapshotChange(inst) {\n\tconst latestGetSnapshot = inst._getSnapshot;\n\tconst prevValue = inst._value;\n\ttry {\n\t\tconst nextValue = latestGetSnapshot();\n\t\treturn !is(prevValue, nextValue);\n\t} catch (error) {\n\t\treturn true;\n\t}\n}\n\nexport * from 'preact/hooks';\nexport {\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tisFragment,\n\tisMemo,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\t// eslint-disable-next-line camelcase\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n\n// React copies the named exports to the default one.\nexport default {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseInsertionEffect,\n\tuseTransition,\n\tuseDeferredValue,\n\tuseSyncExternalStore,\n\tstartTransition,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tisElement,\n\tisFragment,\n\tisMemo,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n", "module.exports = require('preact/compat');\r\n\r\n", "(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :\n typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ReactStripe = {}, global.React));\n})(this, (function (exports, React) { 'use strict';\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n }\n\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]);\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function getDefaultExportFromCjs (x) {\n \treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n }\n\n var propTypes = {exports: {}};\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n var ReactPropTypesSecret_1;\n var hasRequiredReactPropTypesSecret;\n\n function requireReactPropTypesSecret() {\n if (hasRequiredReactPropTypesSecret) return ReactPropTypesSecret_1;\n hasRequiredReactPropTypesSecret = 1;\n\n var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n ReactPropTypesSecret_1 = ReactPropTypesSecret;\n return ReactPropTypesSecret_1;\n }\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n var factoryWithThrowingShims;\n var hasRequiredFactoryWithThrowingShims;\n\n function requireFactoryWithThrowingShims() {\n if (hasRequiredFactoryWithThrowingShims) return factoryWithThrowingShims;\n hasRequiredFactoryWithThrowingShims = 1;\n\n var ReactPropTypesSecret = requireReactPropTypesSecret();\n\n function emptyFunction() {}\n\n function emptyFunctionWithReset() {}\n\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n\n factoryWithThrowingShims = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n shim.isRequired = shim;\n\n function getShim() {\n return shim;\n }\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n\n return factoryWithThrowingShims;\n }\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n propTypes.exports = requireFactoryWithThrowingShims()();\n }\n\n var propTypesExports = propTypes.exports;\n var PropTypes = /*@__PURE__*/getDefaultExportFromCjs(propTypesExports);\n\n var useAttachEvent = function useAttachEvent(element, event, cb) {\n var cbDefined = !!cb;\n var cbRef = React.useRef(cb); // In many integrations the callback prop changes on each render.\n // Using a ref saves us from calling element.on/.off every render.\n\n React.useEffect(function () {\n cbRef.current = cb;\n }, [cb]);\n React.useEffect(function () {\n if (!cbDefined || !element) {\n return function () {};\n }\n\n var decoratedCb = function decoratedCb() {\n if (cbRef.current) {\n cbRef.current.apply(cbRef, arguments);\n }\n };\n\n element.on(event, decoratedCb);\n return function () {\n element.off(event, decoratedCb);\n };\n }, [cbDefined, event, element, cbRef]);\n };\n\n var usePrevious = function usePrevious(value) {\n var ref = React.useRef(value);\n React.useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref.current;\n };\n\n var isUnknownObject = function isUnknownObject(raw) {\n return raw !== null && _typeof(raw) === 'object';\n };\n var isPromise = function isPromise(raw) {\n return isUnknownObject(raw) && typeof raw.then === 'function';\n }; // We are using types to enforce the `stripe` prop in this lib,\n // but in an untyped integration `stripe` could be anything, so we need\n // to do some sanity validation to prevent type errors.\n\n var isStripe = function isStripe(raw) {\n return isUnknownObject(raw) && typeof raw.elements === 'function' && typeof raw.createToken === 'function' && typeof raw.createPaymentMethod === 'function' && typeof raw.confirmCardPayment === 'function';\n };\n\n var PLAIN_OBJECT_STR = '[object Object]';\n var isEqual = function isEqual(left, right) {\n if (!isUnknownObject(left) || !isUnknownObject(right)) {\n return left === right;\n }\n\n var leftArray = Array.isArray(left);\n var rightArray = Array.isArray(right);\n if (leftArray !== rightArray) return false;\n var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;\n var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;\n if (leftPlainObject !== rightPlainObject) return false; // not sure what sort of special object this is (regexp is one option), so\n // fallback to reference check.\n\n if (!leftPlainObject && !leftArray) return left === right;\n var leftKeys = Object.keys(left);\n var rightKeys = Object.keys(right);\n if (leftKeys.length !== rightKeys.length) return false;\n var keySet = {};\n\n for (var i = 0; i < leftKeys.length; i += 1) {\n keySet[leftKeys[i]] = true;\n }\n\n for (var _i = 0; _i < rightKeys.length; _i += 1) {\n keySet[rightKeys[_i]] = true;\n }\n\n var allKeys = Object.keys(keySet);\n\n if (allKeys.length !== leftKeys.length) {\n return false;\n }\n\n var l = left;\n var r = right;\n\n var pred = function pred(key) {\n return isEqual(l[key], r[key]);\n };\n\n return allKeys.every(pred);\n };\n\n var extractAllowedOptionsUpdates = function extractAllowedOptionsUpdates(options, prevOptions, immutableKeys) {\n if (!isUnknownObject(options)) {\n return null;\n }\n\n return Object.keys(options).reduce(function (newOptions, key) {\n var isUpdated = !isUnknownObject(prevOptions) || !isEqual(options[key], prevOptions[key]);\n\n if (immutableKeys.includes(key)) {\n if (isUpdated) {\n console.warn(\"Unsupported prop change: options.\".concat(key, \" is not a mutable property.\"));\n }\n\n return newOptions;\n }\n\n if (!isUpdated) {\n return newOptions;\n }\n\n return _objectSpread2(_objectSpread2({}, newOptions || {}), {}, _defineProperty({}, key, options[key]));\n }, null);\n };\n\n var INVALID_STRIPE_ERROR$2 = 'Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.'; // We are using types to enforce the `stripe` prop in this lib, but in a real\n // integration `stripe` could be anything, so we need to do some sanity\n // validation to prevent type errors.\n\n var validateStripe = function validateStripe(maybeStripe) {\n var errorMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : INVALID_STRIPE_ERROR$2;\n\n if (maybeStripe === null || isStripe(maybeStripe)) {\n return maybeStripe;\n }\n\n throw new Error(errorMsg);\n };\n\n var parseStripeProp = function parseStripeProp(raw) {\n var errorMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : INVALID_STRIPE_ERROR$2;\n\n if (isPromise(raw)) {\n return {\n tag: 'async',\n stripePromise: Promise.resolve(raw).then(function (result) {\n return validateStripe(result, errorMsg);\n })\n };\n }\n\n var stripe = validateStripe(raw, errorMsg);\n\n if (stripe === null) {\n return {\n tag: 'empty'\n };\n }\n\n return {\n tag: 'sync',\n stripe: stripe\n };\n };\n\n var registerWithStripeJs = function registerWithStripeJs(stripe) {\n if (!stripe || !stripe._registerWrapper || !stripe.registerAppInfo) {\n return;\n }\n\n stripe._registerWrapper({\n name: 'react-stripe-js',\n version: \"3.1.0\"\n });\n\n stripe.registerAppInfo({\n name: 'react-stripe-js',\n version: \"3.1.0\",\n url: 'https://stripe.com/docs/stripe-js/react'\n });\n };\n\n var ElementsContext = /*#__PURE__*/React.createContext(null);\n ElementsContext.displayName = 'ElementsContext';\n var parseElementsContext = function parseElementsContext(ctx, useCase) {\n if (!ctx) {\n throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an <Elements> provider.\"));\n }\n\n return ctx;\n };\n /**\n * The `Elements` provider allows you to use [Element components](https://stripe.com/docs/stripe-js/react#element-components) and access the [Stripe object](https://stripe.com/docs/js/initializing) in any nested component.\n * Render an `Elements` provider at the root of your React app so that it is available everywhere you need it.\n *\n * To use the `Elements` provider, call `loadStripe` from `@stripe/stripe-js` with your publishable key.\n * The `loadStripe` function will asynchronously load the Stripe.js script and initialize a `Stripe` object.\n * Pass the returned `Promise` to `Elements`.\n *\n * @docs https://stripe.com/docs/stripe-js/react#elements-provider\n */\n\n var Elements = function Elements(_ref) {\n var rawStripeProp = _ref.stripe,\n options = _ref.options,\n children = _ref.children;\n var parsed = React.useMemo(function () {\n return parseStripeProp(rawStripeProp);\n }, [rawStripeProp]); // For a sync stripe instance, initialize into context\n\n var _React$useState = React.useState(function () {\n return {\n stripe: parsed.tag === 'sync' ? parsed.stripe : null,\n elements: parsed.tag === 'sync' ? parsed.stripe.elements(options) : null\n };\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n ctx = _React$useState2[0],\n setContext = _React$useState2[1];\n\n React.useEffect(function () {\n var isMounted = true;\n\n var safeSetContext = function safeSetContext(stripe) {\n setContext(function (ctx) {\n // no-op if we already have a stripe instance (https://github.com/stripe/react-stripe-js/issues/296)\n if (ctx.stripe) return ctx;\n return {\n stripe: stripe,\n elements: stripe.elements(options)\n };\n });\n }; // For an async stripePromise, store it in context once resolved\n\n\n if (parsed.tag === 'async' && !ctx.stripe) {\n parsed.stripePromise.then(function (stripe) {\n if (stripe && isMounted) {\n // Only update Elements context if the component is still mounted\n // and stripe is not null. We allow stripe to be null to make\n // handling SSR easier.\n safeSetContext(stripe);\n }\n });\n } else if (parsed.tag === 'sync' && !ctx.stripe) {\n // Or, handle a sync stripe instance going from null -> populated\n safeSetContext(parsed.stripe);\n }\n\n return function () {\n isMounted = false;\n };\n }, [parsed, ctx, options]); // Warn on changes to stripe prop\n\n var prevStripe = usePrevious(rawStripeProp);\n React.useEffect(function () {\n if (prevStripe !== null && prevStripe !== rawStripeProp) {\n console.warn('Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.');\n }\n }, [prevStripe, rawStripeProp]); // Apply updates to elements when options prop has relevant changes\n\n var prevOptions = usePrevious(options);\n React.useEffect(function () {\n if (!ctx.elements) {\n return;\n }\n\n var updates = extractAllowedOptionsUpdates(options, prevOptions, ['clientSecret', 'fonts']);\n\n if (updates) {\n ctx.elements.update(updates);\n }\n }, [options, prevOptions, ctx.elements]); // Attach react-stripe-js version to stripe.js instance\n\n React.useEffect(function () {\n registerWithStripeJs(ctx.stripe);\n }, [ctx.stripe]);\n return /*#__PURE__*/React.createElement(ElementsContext.Provider, {\n value: ctx\n }, children);\n };\n Elements.propTypes = {\n stripe: PropTypes.any,\n options: PropTypes.object\n };\n var useElementsContextWithUseCase = function useElementsContextWithUseCase(useCaseMessage) {\n var ctx = React.useContext(ElementsContext);\n return parseElementsContext(ctx, useCaseMessage);\n };\n /**\n * @docs https://stripe.com/docs/stripe-js/react#useelements-hook\n */\n\n var useElements = function useElements() {\n var _useElementsContextWi = useElementsContextWithUseCase('calls useElements()'),\n elements = _useElementsContextWi.elements;\n\n return elements;\n };\n /**\n * @docs https://stripe.com/docs/stripe-js/react#elements-consumer\n */\n\n var ElementsConsumer = function ElementsConsumer(_ref2) {\n var children = _ref2.children;\n var ctx = useElementsContextWithUseCase('mounts <ElementsConsumer>'); // Assert to satisfy the busted React.FC return type (it should be ReactNode)\n\n return children(ctx);\n };\n ElementsConsumer.propTypes = {\n children: PropTypes.func.isRequired\n };\n\n var _excluded = [\"on\", \"session\"];\n var CheckoutSdkContext = /*#__PURE__*/React.createContext(null);\n CheckoutSdkContext.displayName = 'CheckoutSdkContext';\n var parseCheckoutSdkContext = function parseCheckoutSdkContext(ctx, useCase) {\n if (!ctx) {\n throw new Error(\"Could not find CheckoutProvider context; You need to wrap the part of your app that \".concat(useCase, \" in an <CheckoutProvider> provider.\"));\n }\n\n return ctx;\n };\n var CheckoutContext = /*#__PURE__*/React.createContext(null);\n CheckoutContext.displayName = 'CheckoutContext';\n var extractCheckoutContextValue = function extractCheckoutContextValue(checkoutSdk, sessionState) {\n if (!checkoutSdk) {\n return null;\n }\n\n checkoutSdk.on;\n checkoutSdk.session;\n var actions = _objectWithoutProperties(checkoutSdk, _excluded);\n\n if (!sessionState) {\n return _objectSpread2(_objectSpread2({}, actions), checkoutSdk.session());\n }\n\n return _objectSpread2(_objectSpread2({}, actions), sessionState);\n };\n var INVALID_STRIPE_ERROR$1 = 'Invalid prop `stripe` supplied to `CheckoutProvider`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.';\n var CheckoutProvider = function CheckoutProvider(_ref) {\n var rawStripeProp = _ref.stripe,\n options = _ref.options,\n children = _ref.children;\n var parsed = React.useMemo(function () {\n return parseStripeProp(rawStripeProp, INVALID_STRIPE_ERROR$1);\n }, [rawStripeProp]); // State used to trigger a re-render when sdk.session is updated\n\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n session = _React$useState2[0],\n setSession = _React$useState2[1];\n\n var _React$useState3 = React.useState(function () {\n return {\n stripe: parsed.tag === 'sync' ? parsed.stripe : null,\n checkoutSdk: null\n };\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n ctx = _React$useState4[0],\n setContext = _React$useState4[1];\n\n var safeSetContext = function safeSetContext(stripe, checkoutSdk) {\n setContext(function (ctx) {\n if (ctx.stripe && ctx.checkoutSdk) {\n return ctx;\n }\n\n return {\n stripe: stripe,\n checkoutSdk: checkoutSdk\n };\n });\n }; // Ref used to avoid calling initCheckout multiple times when options changes\n\n\n var initCheckoutCalledRef = React.useRef(false);\n React.useEffect(function () {\n var isMounted = true;\n\n if (parsed.tag === 'async' && !ctx.stripe) {\n parsed.stripePromise.then(function (stripe) {\n if (stripe && isMounted && !initCheckoutCalledRef.current) {\n // Only update context if the component is still mounted\n // and stripe is not null. We allow stripe to be null to make\n // handling SSR easier.\n initCheckoutCalledRef.current = true;\n stripe.initCheckout(options).then(function (checkoutSdk) {\n if (checkoutSdk) {\n safeSetContext(stripe, checkoutSdk);\n checkoutSdk.on('change', setSession);\n }\n });\n }\n });\n } else if (parsed.tag === 'sync' && parsed.stripe && !initCheckoutCalledRef.current) {\n initCheckoutCalledRef.current = true;\n parsed.stripe.initCheckout(options).then(function (checkoutSdk) {\n if (checkoutSdk) {\n safeSetContext(parsed.stripe, checkoutSdk);\n checkoutSdk.on('change', setSession);\n }\n });\n }\n\n return function () {\n isMounted = false;\n };\n }, [parsed, ctx, options, setSession]); // Warn on changes to stripe prop\n\n var prevStripe = usePrevious(rawStripeProp);\n React.useEffect(function () {\n if (prevStripe !== null && prevStripe !== rawStripeProp) {\n console.warn('Unsupported prop change on CheckoutProvider: You cannot change the `stripe` prop after setting it.');\n }\n }, [prevStripe, rawStripeProp]); // Apply updates to elements when options prop has relevant changes\n\n var prevOptions = usePrevious(options);\n React.useEffect(function () {\n var _prevOptions$elements, _options$elementsOpti;\n\n if (!ctx.checkoutSdk) {\n return;\n }\n\n if (options.clientSecret && !isUnknownObject(prevOptions) && !isEqual(options.clientSecret, prevOptions.clientSecret)) {\n console.warn('Unsupported prop change: options.clientSecret is not a mutable property.');\n }\n\n var previousAppearance = prevOptions === null || prevOptions === void 0 ? void 0 : (_prevOptions$elements = prevOptions.elementsOptions) === null || _prevOptions$elements === void 0 ? void 0 : _prevOptions$elements.appearance;\n var currentAppearance = options === null || options === void 0 ? void 0 : (_options$elementsOpti = options.elementsOptions) === null || _options$elementsOpti === void 0 ? void 0 : _options$elementsOpti.appearance;\n\n if (currentAppearance && !isEqual(currentAppearance, previousAppearance)) {\n ctx.checkoutSdk.changeAppearance(currentAppearance);\n }\n }, [options, prevOptions, ctx.checkoutSdk]); // Attach react-stripe-js version to stripe.js instance\n\n React.useEffect(function () {\n registerWithStripeJs(ctx.stripe);\n }, [ctx.stripe]);\n var checkoutContextValue = React.useMemo(function () {\n return extractCheckoutContextValue(ctx.checkoutSdk, session);\n }, [ctx.checkoutSdk, session]);\n\n if (!ctx.checkoutSdk) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(CheckoutSdkContext.Provider, {\n value: ctx\n }, /*#__PURE__*/React.createElement(CheckoutContext.Provider, {\n value: checkoutContextValue\n }, children));\n };\n CheckoutProvider.propTypes = {\n stripe: PropTypes.any,\n options: PropTypes.shape({\n clientSecret: PropTypes.string.isRequired,\n elementsOptions: PropTypes.object\n }).isRequired\n };\n var useCheckoutSdkContextWithUseCase = function useCheckoutSdkContextWithUseCase(useCaseString) {\n var ctx = React.useContext(CheckoutSdkContext);\n return parseCheckoutSdkContext(ctx, useCaseString);\n };\n var useElementsOrCheckoutSdkContextWithUseCase = function useElementsOrCheckoutSdkContextWithUseCase(useCaseString) {\n var checkoutSdkContext = React.useContext(CheckoutSdkContext);\n var elementsContext = React.useContext(ElementsContext);\n\n if (checkoutSdkContext && elementsContext) {\n throw new Error(\"You cannot wrap the part of your app that \".concat(useCaseString, \" in both <CheckoutProvider> and <Elements> providers.\"));\n }\n\n if (checkoutSdkContext) {\n return parseCheckoutSdkContext(checkoutSdkContext, useCaseString);\n }\n\n return parseElementsContext(elementsContext, useCaseString);\n };\n var useCheckout = function useCheckout() {\n // ensure it's in CheckoutProvider\n useCheckoutSdkContextWithUseCase('calls useCheckout()');\n var ctx = React.useContext(CheckoutContext);\n\n if (!ctx) {\n throw new Error('Could not find Checkout Context; You need to wrap the part of your app that calls useCheckout() in an <CheckoutProvider> provider.');\n }\n\n return ctx;\n };\n\n var capitalized = function capitalized(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n };\n\n var createElementComponent = function createElementComponent(type, isServer) {\n var displayName = \"\".concat(capitalized(type), \"Element\");\n\n var ClientElement = function ClientElement(_ref) {\n var id = _ref.id,\n className = _ref.className,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n onBlur = _ref.onBlur,\n onFocus = _ref.onFocus,\n onReady = _ref.onReady,\n onChange = _ref.onChange,\n onEscape = _ref.onEscape,\n onClick = _ref.onClick,\n onLoadError = _ref.onLoadError,\n onLoaderStart = _ref.onLoaderStart,\n onNetworksChange = _ref.onNetworksChange,\n onConfirm = _ref.onConfirm,\n onCancel = _ref.onCancel,\n onShippingAddressChange = _ref.onShippingAddressChange,\n onShippingRateChange = _ref.onShippingRateChange;\n var ctx = useElementsOrCheckoutSdkContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n var elements = 'elements' in ctx ? ctx.elements : null;\n var checkoutSdk = 'checkoutSdk' in ctx ? ctx.checkoutSdk : null;\n\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n element = _React$useState2[0],\n setElement = _React$useState2[1];\n\n var elementRef = React.useRef(null);\n var domNode = React.useRef(null); // For every event where the merchant provides a callback, call element.on\n // with that callback. If the merchant ever changes the callback, removes\n // the old callback with element.off and then call element.on with the new one.\n\n useAttachEvent(element, 'blur', onBlur);\n useAttachEvent(element, 'focus', onFocus);\n useAttachEvent(element, 'escape', onEscape);\n useAttachEvent(element, 'click', onClick);\n useAttachEvent(element, 'loaderror', onLoadError);\n useAttachEvent(element, 'loaderstart', onLoaderStart);\n useAttachEvent(element, 'networkschange', onNetworksChange);\n useAttachEvent(element, 'confirm', onConfirm);\n useAttachEvent(element, 'cancel', onCancel);\n useAttachEvent(element, 'shippingaddresschange', onShippingAddressChange);\n useAttachEvent(element, 'shippingratechange', onShippingRateChange);\n useAttachEvent(element, 'change', onChange);\n var readyCallback;\n\n if (onReady) {\n if (type === 'expressCheckout') {\n // Passes through the event, which includes visible PM types\n readyCallback = onReady;\n } else {\n // For other Elements, pass through the Element itself.\n readyCallback = function readyCallback() {\n onReady(element);\n };\n }\n }\n\n useAttachEvent(element, 'ready', readyCallback);\n React.useLayoutEffect(function () {\n if (elementRef.current === null && domNode.current !== null && (elements || checkoutSdk)) {\n var newElement = null;\n\n if (checkoutSdk) {\n newElement = checkoutSdk.createElement(type, options);\n } else if (elements) {\n newElement = elements.create(type, options);\n } // Store element in a ref to ensure it's _immediately_ available in cleanup hooks in StrictMode\n\n\n elementRef.current = newElement; // Store element in state to facilitate event listener attachment\n\n setElement(newElement);\n\n if (newElement) {\n newElement.mount(domNode.current);\n }\n }\n }, [elements, checkoutSdk, options]);\n var prevOptions = usePrevious(options);\n React.useEffect(function () {\n if (!elementRef.current) {\n return;\n }\n\n var updates = extractAllowedOptionsUpdates(options, prevOptions, ['paymentRequest']);\n\n if (updates && 'update' in elementRef.current) {\n elementRef.current.update(updates);\n }\n }, [options, prevOptions]);\n React.useLayoutEffect(function () {\n return function () {\n if (elementRef.current && typeof elementRef.current.destroy === 'function') {\n try {\n elementRef.current.destroy();\n elementRef.current = null;\n } catch (error) {// Do nothing\n }\n }\n };\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n className: className,\n ref: domNode\n });\n }; // Only render the Element wrapper in a server environment.\n\n\n var ServerElement = function ServerElement(props) {\n useElementsOrCheckoutSdkContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n var id = props.id,\n className = props.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n className: className\n });\n };\n\n var Element = isServer ? ServerElement : ClientElement;\n Element.propTypes = {\n id: PropTypes.string,\n className: PropTypes.string,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n onFocus: PropTypes.func,\n onReady: PropTypes.func,\n onEscape: PropTypes.func,\n onClick: PropTypes.func,\n onLoadError: PropTypes.func,\n onLoaderStart: PropTypes.func,\n onNetworksChange: PropTypes.func,\n onConfirm: PropTypes.func,\n onCancel: PropTypes.func,\n onShippingAddressChange: PropTypes.func,\n onShippingRateChange: PropTypes.func,\n options: PropTypes.object\n };\n Element.displayName = displayName;\n Element.__elementType = type;\n return Element;\n };\n\n var isServer = typeof window === 'undefined';\n\n var EmbeddedCheckoutContext = /*#__PURE__*/React.createContext(null);\n EmbeddedCheckoutContext.displayName = 'EmbeddedCheckoutProviderContext';\n var useEmbeddedCheckoutContext = function useEmbeddedCheckoutContext() {\n var ctx = React.useContext(EmbeddedCheckoutContext);\n\n if (!ctx) {\n throw new Error('<EmbeddedCheckout> must be used within <EmbeddedCheckoutProvider>');\n }\n\n return ctx;\n };\n var INVALID_STRIPE_ERROR = 'Invalid prop `stripe` supplied to `EmbeddedCheckoutProvider`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.';\n var EmbeddedCheckoutProvider = function EmbeddedCheckoutProvider(_ref) {\n var rawStripeProp = _ref.stripe,\n options = _ref.options,\n children = _ref.children;\n var parsed = React.useMemo(function () {\n return parseStripeProp(rawStripeProp, INVALID_STRIPE_ERROR);\n }, [rawStripeProp]);\n var embeddedCheckoutPromise = React.useRef(null);\n var loadedStripe = React.useRef(null);\n\n var _React$useState = React.useState({\n embeddedCheckout: null\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n ctx = _React$useState2[0],\n setContext = _React$useState2[1];\n\n React.useEffect(function () {\n // Don't support any ctx updates once embeddedCheckout or stripe is set.\n if (loadedStripe.current || embeddedCheckoutPromise.current) {\n return;\n }\n\n var setStripeAndInitEmbeddedCheckout = function setStripeAndInitEmbeddedCheckout(stripe) {\n if (loadedStripe.current || embeddedCheckoutPromise.current) return;\n loadedStripe.current = stripe;\n embeddedCheckoutPromise.current = loadedStripe.current.initEmbeddedCheckout(options).then(function (embeddedCheckout) {\n setContext({\n embeddedCheckout: embeddedCheckout\n });\n });\n }; // For an async stripePromise, store it once resolved\n\n\n if (parsed.tag === 'async' && !loadedStripe.current && (options.clientSecret || options.fetchClientSecret)) {\n parsed.stripePromise.then(function (stripe) {\n if (stripe) {\n setStripeAndInitEmbeddedCheckout(stripe);\n }\n });\n } else if (parsed.tag === 'sync' && !loadedStripe.current && (options.clientSecret || options.fetchClientSecret)) {\n // Or, handle a sync stripe instance going from null -> populated\n setStripeAndInitEmbeddedCheckout(parsed.stripe);\n }\n }, [parsed, options, ctx, loadedStripe]);\n React.useEffect(function () {\n // cleanup on unmount\n return function () {\n // If embedded checkout is fully initialized, destroy it.\n if (ctx.embeddedCheckout) {\n embeddedCheckoutPromise.current = null;\n ctx.embeddedCheckout.destroy();\n } else if (embeddedCheckoutPromise.current) {\n // If embedded checkout is still initializing, destroy it once\n // it's done. This could be caused by unmounting very quickly\n // after mounting.\n embeddedCheckoutPromise.current.then(function () {\n embeddedCheckoutPromise.current = null;\n\n if (ctx.embeddedCheckout) {\n ctx.embeddedCheckout.destroy();\n }\n });\n }\n };\n }, [ctx.embeddedCheckout]); // Attach react-stripe-js version to stripe.js instance\n\n React.useEffect(function () {\n registerWithStripeJs(loadedStripe);\n }, [loadedStripe]); // Warn on changes to stripe prop.\n // The stripe prop value can only go from null to non-null once and\n // can't be changed after that.\n\n var prevStripe = usePrevious(rawStripeProp);\n React.useEffect(function () {\n if (prevStripe !== null && prevStripe !== rawStripeProp) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the `stripe` prop after setting it.');\n }\n }, [prevStripe, rawStripeProp]); // Warn on changes to options.\n\n var prevOptions = usePrevious(options);\n React.useEffect(function () {\n if (prevOptions == null) {\n return;\n }\n\n if (options == null) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot unset options after setting them.');\n return;\n }\n\n if (options.clientSecret === undefined && options.fetchClientSecret === undefined) {\n console.warn('Invalid props passed to EmbeddedCheckoutProvider: You must provide one of either `options.fetchClientSecret` or `options.clientSecret`.');\n }\n\n if (prevOptions.clientSecret != null && options.clientSecret !== prevOptions.clientSecret) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the client secret after setting it. Unmount and create a new instance of EmbeddedCheckoutProvider instead.');\n }\n\n if (prevOptions.fetchClientSecret != null && options.fetchClientSecret !== prevOptions.fetchClientSecret) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change fetchClientSecret after setting it. Unmount and create a new instance of EmbeddedCheckoutProvider instead.');\n }\n\n if (prevOptions.onComplete != null && options.onComplete !== prevOptions.onComplete) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onComplete option after setting it.');\n }\n\n if (prevOptions.onShippingDetailsChange != null && options.onShippingDetailsChange !== prevOptions.onShippingDetailsChange) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onShippingDetailsChange option after setting it.');\n }\n\n if (prevOptions.onLineItemsChange != null && options.onLineItemsChange !== prevOptions.onLineItemsChange) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onLineItemsChange option after setting it.');\n }\n }, [prevOptions, options]);\n return /*#__PURE__*/React.createElement(EmbeddedCheckoutContext.Provider, {\n value: ctx\n }, children);\n };\n\n var EmbeddedCheckoutClientElement = function EmbeddedCheckoutClientElement(_ref) {\n var id = _ref.id,\n className = _ref.className;\n\n var _useEmbeddedCheckoutC = useEmbeddedCheckoutContext(),\n embeddedCheckout = _useEmbeddedCheckoutC.embeddedCheckout;\n\n var isMounted = React.useRef(false);\n var domNode = React.useRef(null);\n React.useLayoutEffect(function () {\n if (!isMounted.current && embeddedCheckout && domNode.current !== null) {\n embeddedCheckout.mount(domNode.current);\n isMounted.current = true;\n } // Clean up on unmount\n\n\n return function () {\n if (isMounted.current && embeddedCheckout) {\n try {\n embeddedCheckout.unmount();\n isMounted.current = false;\n } catch (e) {// Do nothing.\n // Parent effects are destroyed before child effects, so\n // in cases where both the EmbeddedCheckoutProvider and\n // the EmbeddedCheckout component are removed at the same\n // time, the embeddedCheckout instance will be destroyed,\n // which causes an error when calling unmount.\n }\n }\n };\n }, [embeddedCheckout]);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: domNode,\n id: id,\n className: className\n });\n }; // Only render the wrapper in a server environment.\n\n\n var EmbeddedCheckoutServerElement = function EmbeddedCheckoutServerElement(_ref2) {\n var id = _ref2.id,\n className = _ref2.className;\n // Validate that we are in the right context by calling useEmbeddedCheckoutContext.\n useEmbeddedCheckoutContext();\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n className: className\n });\n };\n\n var EmbeddedCheckout = isServer ? EmbeddedCheckoutServerElement : EmbeddedCheckoutClientElement;\n\n /**\n * @docs https://stripe.com/docs/stripe-js/react#usestripe-hook\n */\n\n var useStripe = function useStripe() {\n var _useElementsOrCheckou = useElementsOrCheckoutSdkContextWithUseCase('calls useStripe()'),\n stripe = _useElementsOrCheckou.stripe;\n\n return stripe;\n };\n\n /**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var AuBankAccountElement = createElementComponent('auBankAccount', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var CardElement = createElementComponent('card', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var CardNumberElement = createElementComponent('cardNumber', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var CardExpiryElement = createElementComponent('cardExpiry', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var CardCvcElement = createElementComponent('cardCvc', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var FpxBankElement = createElementComponent('fpxBank', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var IbanElement = createElementComponent('iban', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var IdealBankElement = createElementComponent('idealBank', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var P24BankElement = createElementComponent('p24Bank', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var EpsBankElement = createElementComponent('epsBank', isServer);\n var PaymentElement = createElementComponent('payment', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var ExpressCheckoutElement = createElementComponent('expressCheckout', isServer);\n /**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n */\n\n var CurrencySelectorElement = createElementComponent('currencySelector', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var PaymentRequestButtonElement = createElementComponent('paymentRequestButton', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var LinkAuthenticationElement = createElementComponent('linkAuthentication', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var AddressElement = createElementComponent('address', isServer);\n /**\n * @deprecated\n * Use `AddressElement` instead.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var ShippingAddressElement = createElementComponent('shippingAddress', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var PaymentMethodMessagingElement = createElementComponent('paymentMethodMessaging', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var AffirmMessageElement = createElementComponent('affirmMessage', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var AfterpayClearpayMessageElement = createElementComponent('afterpayClearpayMessage', isServer);\n\n exports.AddressElement = AddressElement;\n exports.AffirmMessageElement = AffirmMessageElement;\n exports.AfterpayClearpayMessageElement = AfterpayClearpayMessageElement;\n exports.AuBankAccountElement = AuBankAccountElement;\n exports.CardCvcElement = CardCvcElement;\n exports.CardElement = CardElement;\n exports.CardExpiryElement = CardExpiryElement;\n exports.CardNumberElement = CardNumberElement;\n exports.CheckoutProvider = CheckoutProvider;\n exports.CurrencySelectorElement = CurrencySelectorElement;\n exports.Elements = Elements;\n exports.ElementsConsumer = ElementsConsumer;\n exports.EmbeddedCheckout = EmbeddedCheckout;\n exports.EmbeddedCheckoutProvider = EmbeddedCheckoutProvider;\n exports.EpsBankElement = EpsBankElement;\n exports.ExpressCheckoutElement = ExpressCheckoutElement;\n exports.FpxBankElement = FpxBankElement;\n exports.IbanElement = IbanElement;\n exports.IdealBankElement = IdealBankElement;\n exports.LinkAuthenticationElement = LinkAuthenticationElement;\n exports.P24BankElement = P24BankElement;\n exports.PaymentElement = PaymentElement;\n exports.PaymentMethodMessagingElement = PaymentMethodMessagingElement;\n exports.PaymentRequestButtonElement = PaymentRequestButtonElement;\n exports.ShippingAddressElement = ShippingAddressElement;\n exports.useCheckout = useCheckout;\n exports.useElements = useElements;\n exports.useStripe = useStripe;\n\n}));\n", "// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `rails generate channel` command.\n/* global App */\n/* eslint no-unused-expressions: 0 */\n\nimport { createConsumer } from '@rails/actioncable'\n;(function () {\n 'use strict'\n this.App || (this.App = {})\n window.App = this.App\n\n App.cable = createConsumer()\n}.call(this))\n", "(function (root) {/*global exports, Intl*/\n/**\n * This script gives you the zone info key representing your device's time zone setting.\n *\n * @name jsTimezoneDetect\n * @version 1.0.6\n * @author Jon Nylander\n * @license MIT License - https://bitbucket.org/pellepim/jstimezonedetect/src/default/LICENCE.txt\n *\n * For usage and examples, visit:\n * http://pellepim.bitbucket.org/jstz/\n *\n * Copyright (c) Jon Nylander\n */\n\n\n/**\n * Namespace to hold all the code for timezone detection.\n */\nvar jstz = (function () {\n 'use strict';\n var HEMISPHERE_SOUTH = 's',\n\n consts = {\n DAY: 86400000,\n HOUR: 3600000,\n MINUTE: 60000,\n SECOND: 1000,\n BASELINE_YEAR: 2014,\n MAX_SCORE: 864000000, // 10 days\n AMBIGUITIES: {\n 'America/Denver': ['America/Mazatlan'],\n 'Europe/London': ['Africa/Casablanca'],\n 'America/Chicago': ['America/Mexico_City'],\n 'America/Asuncion': ['America/Campo_Grande', 'America/Santiago'],\n 'America/Montevideo': ['America/Sao_Paulo', 'America/Santiago'],\n // Europe/Minsk should not be in this list... but Windows.\n 'Asia/Beirut': ['Asia/Amman', 'Asia/Jerusalem', 'Europe/Helsinki', 'Asia/Damascus', 'Africa/Cairo', 'Asia/Gaza', 'Europe/Minsk'],\n 'Pacific/Auckland': ['Pacific/Fiji'],\n 'America/Los_Angeles': ['America/Santa_Isabel'],\n 'America/New_York': ['America/Havana'],\n 'America/Halifax': ['America/Goose_Bay'],\n 'America/Godthab': ['America/Miquelon'],\n 'Asia/Dubai': ['Asia/Yerevan'],\n 'Asia/Jakarta': ['Asia/Krasnoyarsk'],\n 'Asia/Shanghai': ['Asia/Irkutsk', 'Australia/Perth'],\n 'Australia/Sydney': ['Australia/Lord_Howe'],\n 'Asia/Tokyo': ['Asia/Yakutsk'],\n 'Asia/Dhaka': ['Asia/Omsk'],\n // In the real world Yerevan is not ambigous for Baku... but Windows.\n 'Asia/Baku': ['Asia/Yerevan'],\n 'Australia/Brisbane': ['Asia/Vladivostok'],\n 'Pacific/Noumea': ['Asia/Vladivostok'],\n 'Pacific/Majuro': ['Asia/Kamchatka', 'Pacific/Fiji'],\n 'Pacific/Tongatapu': ['Pacific/Apia'],\n 'Asia/Baghdad': ['Europe/Minsk', 'Europe/Moscow'],\n 'Asia/Karachi': ['Asia/Yekaterinburg'],\n 'Africa/Johannesburg': ['Asia/Gaza', 'Africa/Cairo']\n }\n },\n\n /**\n * Gets the offset in minutes from UTC for a certain date.\n * @param {Date} date\n * @returns {Number}\n */\n get_date_offset = function get_date_offset(date) {\n var offset = -date.getTimezoneOffset();\n return (offset !== null ? offset : 0);\n },\n\n /**\n * This function does some basic calculations to create information about\n * the user's timezone. It uses REFERENCE_YEAR as a solid year for which\n * the script has been tested rather than depend on the year set by the\n * client device.\n *\n * Returns a key that can be used to do lookups in jstz.olson.timezones.\n * eg: \"720,1,2\".\n *\n * @returns {String}\n */\n lookup_key = function lookup_key() {\n var january_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 0, 2)),\n june_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 5, 2)),\n diff = january_offset - june_offset;\n\n if (diff < 0) {\n return january_offset + \",1\";\n } else if (diff > 0) {\n return june_offset + \",1,\" + HEMISPHERE_SOUTH;\n }\n\n return january_offset + \",0\";\n },\n\n\n /**\n * Tries to get the time zone key directly from the operating system for those\n * environments that support the ECMAScript Internationalization API.\n */\n get_from_internationalization_api = function get_from_internationalization_api() {\n var format, timezone;\n if (typeof Intl === \"undefined\" || typeof Intl.DateTimeFormat === \"undefined\") {\n return;\n }\n format = Intl.DateTimeFormat();\n if (typeof format === \"undefined\" || typeof format.resolvedOptions === \"undefined\") {\n return;\n }\n timezone = format.resolvedOptions().timeZone;\n if (timezone && (timezone.indexOf(\"/\") > -1 || timezone === 'UTC') && timezone.indexOf(\"Etc\") != 0) {\n return timezone;\n }\n },\n\n /**\n * Starting point for getting all the DST rules for a specific year\n * for the current timezone (as described by the client system).\n *\n * Returns an object with start and end attributes, or false if no\n * DST rules were found for the year.\n *\n * @param year\n * @returns {Object} || {Boolean}\n */\n dst_dates = function dst_dates(year) {\n var yearstart = new Date(year, 0, 1, 0, 0, 1, 0).getTime();\n var yearend = new Date(year, 12, 31, 23, 59, 59).getTime();\n var current = yearstart;\n var offset = (new Date(current)).getTimezoneOffset();\n var dst_start = null;\n var dst_end = null;\n\n while (current < yearend - 86400000) {\n var dateToCheck = new Date(current);\n var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\n if (dateToCheckOffset !== offset) {\n if (dateToCheckOffset < offset) {\n dst_start = dateToCheck;\n }\n if (dateToCheckOffset > offset) {\n dst_end = dateToCheck;\n }\n offset = dateToCheckOffset;\n }\n\n current += 86400000;\n }\n\n if (dst_start && dst_end) {\n return {\n s: find_dst_fold(dst_start).getTime(),\n e: find_dst_fold(dst_end).getTime()\n };\n }\n\n return false;\n },\n\n /**\n * Probably completely unnecessary function that recursively finds the\n * exact (to the second) time when a DST rule was changed.\n *\n * @param a_date - The candidate Date.\n * @param padding - integer specifying the padding to allow around the candidate\n * date for finding the fold.\n * @param iterator - integer specifying how many milliseconds to iterate while\n * searching for the fold.\n *\n * @returns {Date}\n */\n find_dst_fold = function find_dst_fold(a_date, padding, iterator) {\n if (typeof padding === 'undefined') {\n padding = consts.DAY;\n iterator = consts.HOUR;\n }\n\n var date_start = new Date(a_date.getTime() - padding).getTime();\n var date_end = a_date.getTime() + padding;\n var offset = new Date(date_start).getTimezoneOffset();\n\n var current = date_start;\n\n var dst_change = null;\n while (current < date_end - iterator) {\n var dateToCheck = new Date(current);\n var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\n if (dateToCheckOffset !== offset) {\n dst_change = dateToCheck;\n break;\n }\n current += iterator;\n }\n\n if (padding === consts.DAY) {\n return find_dst_fold(dst_change, consts.HOUR, consts.MINUTE);\n }\n\n if (padding === consts.HOUR) {\n return find_dst_fold(dst_change, consts.MINUTE, consts.SECOND);\n }\n\n return dst_change;\n },\n\n windows7_adaptations = function windows7_adaptions(rule_list, preliminary_timezone, score, sample) {\n if (score !== 'N/A') {\n return score;\n }\n if (preliminary_timezone === 'Asia/Beirut') {\n if (sample.name === 'Africa/Cairo') {\n if (rule_list[6].s === 1398376800000 && rule_list[6].e === 1411678800000) {\n return 0;\n }\n }\n if (sample.name === 'Asia/Jerusalem') {\n if (rule_list[6].s === 1395964800000 && rule_list[6].e === 1411858800000) {\n return 0;\n }\n }\n } else if (preliminary_timezone === 'America/Santiago') {\n if (sample.name === 'America/Asuncion') {\n if (rule_list[6].s === 1412481600000 && rule_list[6].e === 1397358000000) {\n return 0;\n }\n }\n if (sample.name === 'America/Campo_Grande') {\n if (rule_list[6].s === 1413691200000 && rule_list[6].e === 1392519600000) {\n return 0;\n }\n }\n } else if (preliminary_timezone === 'America/Montevideo') {\n if (sample.name === 'America/Sao_Paulo') {\n if (rule_list[6].s === 1413687600000 && rule_list[6].e === 1392516000000) {\n return 0;\n }\n }\n } else if (preliminary_timezone === 'Pacific/Auckland') {\n if (sample.name === 'Pacific/Fiji') {\n if (rule_list[6].s === 1414245600000 && rule_list[6].e === 1396101600000) {\n return 0;\n }\n }\n }\n\n return score;\n },\n\n /**\n * Takes the DST rules for the current timezone, and proceeds to find matches\n * in the jstz.olson.dst_rules.zones array.\n *\n * Compares samples to the current timezone on a scoring basis.\n *\n * Candidates are ruled immediately if either the candidate or the current zone\n * has a DST rule where the other does not.\n *\n * Candidates are ruled out immediately if the current zone has a rule that is\n * outside the DST scope of the candidate.\n *\n * Candidates are included for scoring if the current zones rules fall within the\n * span of the samples rules.\n *\n * Low score is best, the score is calculated by summing up the differences in DST\n * rules and if the consts.MAX_SCORE is overreached the candidate is ruled out.\n *\n * Yah follow? :)\n *\n * @param rule_list\n * @param preliminary_timezone\n * @returns {*}\n */\n best_dst_match = function best_dst_match(rule_list, preliminary_timezone) {\n var score_sample = function score_sample(sample) {\n var score = 0;\n\n for (var j = 0; j < rule_list.length; j++) {\n\n // Both sample and current time zone report DST during the year.\n if (!!sample.rules[j] && !!rule_list[j]) {\n\n // The current time zone's DST rules are inside the sample's. Include.\n if (rule_list[j].s >= sample.rules[j].s && rule_list[j].e <= sample.rules[j].e) {\n score = 0;\n score += Math.abs(rule_list[j].s - sample.rules[j].s);\n score += Math.abs(sample.rules[j].e - rule_list[j].e);\n\n // The current time zone's DST rules are outside the sample's. Discard.\n } else {\n score = 'N/A';\n break;\n }\n\n // The max score has been reached. Discard.\n if (score > consts.MAX_SCORE) {\n score = 'N/A';\n break;\n }\n }\n }\n\n score = windows7_adaptations(rule_list, preliminary_timezone, score, sample);\n\n return score;\n };\n var scoreboard = {};\n var dst_zones = jstz.olson.dst_rules.zones;\n var dst_zones_length = dst_zones.length;\n var ambiguities = consts.AMBIGUITIES[preliminary_timezone];\n\n for (var i = 0; i < dst_zones_length; i++) {\n var sample = dst_zones[i];\n var score = score_sample(dst_zones[i]);\n\n if (score !== 'N/A') {\n scoreboard[sample.name] = score;\n }\n }\n\n for (var tz in scoreboard) {\n if (scoreboard.hasOwnProperty(tz)) {\n for (var j = 0; j < ambiguities.length; j++) {\n if (ambiguities[j] === tz) {\n return tz;\n }\n }\n }\n }\n\n return preliminary_timezone;\n },\n\n /**\n * Takes the preliminary_timezone as detected by lookup_key().\n *\n * Builds up the current timezones DST rules for the years defined\n * in the jstz.olson.dst_rules.years array.\n *\n * If there are no DST occurences for those years, immediately returns\n * the preliminary timezone. Otherwise proceeds and tries to solve\n * ambiguities.\n *\n * @param preliminary_timezone\n * @returns {String} timezone_name\n */\n get_by_dst = function get_by_dst(preliminary_timezone) {\n var get_rules = function get_rules() {\n var rule_list = [];\n for (var i = 0; i < jstz.olson.dst_rules.years.length; i++) {\n var year_rules = dst_dates(jstz.olson.dst_rules.years[i]);\n rule_list.push(year_rules);\n }\n return rule_list;\n };\n var check_has_dst = function check_has_dst(rules) {\n for (var i = 0; i < rules.length; i++) {\n if (rules[i] !== false) {\n return true;\n }\n }\n return false;\n };\n var rules = get_rules();\n var has_dst = check_has_dst(rules);\n\n if (has_dst) {\n return best_dst_match(rules, preliminary_timezone);\n }\n\n return preliminary_timezone;\n },\n\n /**\n * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary.\n *\n * Returns an object with one function \".name()\"\n *\n * @returns Object\n */\n determine = function determine() {\n var preliminary_tz = get_from_internationalization_api();\n\n if (!preliminary_tz) {\n preliminary_tz = jstz.olson.timezones[lookup_key()];\n\n if (typeof consts.AMBIGUITIES[preliminary_tz] !== 'undefined') {\n preliminary_tz = get_by_dst(preliminary_tz);\n }\n }\n\n return {\n name: function () {\n return preliminary_tz;\n },\n stdTimezoneOffset : function () {\n // negative to match what (new Date).getTimezoneOffset() will return\n return -lookup_key().split(',')[0];\n },\n timezoneOffset : function () {\n // negative to match what (new Date).getTimezoneOffset() will return\n return -get_date_offset(new Date())\n }\n };\n };\n\n return {\n determine: determine\n };\n}());\n\n\njstz.olson = jstz.olson || {};\n\n/**\n * The keys in this dictionary are comma separated as such:\n *\n * First the offset compared to UTC time in minutes.\n *\n * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it\n * does.\n *\n * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere,\n * only interesting for timezones with DST.\n *\n * The mapped arrays is used for constructing the jstz.TimeZone object from within\n * jstz.determine();\n */\njstz.olson.timezones = {\n '-720,0': 'Etc/GMT+12',\n '-660,0': 'Pacific/Pago_Pago',\n '-660,1,s': 'Pacific/Apia', // Why? Because windows... cry!\n '-600,1': 'America/Adak',\n '-600,0': 'Pacific/Honolulu',\n '-570,0': 'Pacific/Marquesas',\n '-540,0': 'Pacific/Gambier',\n '-540,1': 'America/Anchorage',\n '-480,1': 'America/Los_Angeles',\n '-480,0': 'Pacific/Pitcairn',\n '-420,0': 'America/Phoenix',\n '-420,1': 'America/Denver',\n '-360,0': 'America/Guatemala',\n '-360,1': 'America/Chicago',\n '-360,1,s': 'Pacific/Easter',\n '-300,0': 'America/Bogota',\n '-300,1': 'America/New_York',\n '-270,0': 'America/Caracas',\n '-240,1': 'America/Halifax',\n '-240,0': 'America/Santo_Domingo',\n '-240,1,s': 'America/Asuncion',\n '-210,1': 'America/St_Johns',\n '-180,1': 'America/Godthab',\n '-180,0': 'America/Argentina/Buenos_Aires',\n '-180,1,s': 'America/Montevideo',\n '-120,0': 'America/Noronha',\n '-120,1': 'America/Noronha',\n '-60,1': 'Atlantic/Azores',\n '-60,0': 'Atlantic/Cape_Verde',\n '0,0': 'UTC',\n '0,1': 'Europe/London',\n '60,1': 'Europe/Berlin',\n '60,0': 'Africa/Lagos',\n '60,1,s': 'Africa/Windhoek',\n '120,1': 'Asia/Beirut',\n '120,0': 'Africa/Johannesburg',\n '180,0': 'Asia/Baghdad',\n '180,1': 'Europe/Moscow',\n '210,1': 'Asia/Tehran',\n '240,0': 'Asia/Dubai',\n '240,1': 'Asia/Baku',\n '270,0': 'Asia/Kabul',\n '300,1': 'Asia/Yekaterinburg',\n '300,0': 'Asia/Karachi',\n '330,0': 'Asia/Kolkata',\n '345,0': 'Asia/Kathmandu',\n '360,0': 'Asia/Dhaka',\n '360,1': 'Asia/Omsk',\n '390,0': 'Asia/Rangoon',\n '420,1': 'Asia/Krasnoyarsk',\n '420,0': 'Asia/Jakarta',\n '480,0': 'Asia/Shanghai',\n '480,1': 'Asia/Irkutsk',\n '525,0': 'Australia/Eucla',\n '525,1,s': 'Australia/Eucla',\n '540,1': 'Asia/Yakutsk',\n '540,0': 'Asia/Tokyo',\n '570,0': 'Australia/Darwin',\n '570,1,s': 'Australia/Adelaide',\n '600,0': 'Australia/Brisbane',\n '600,1': 'Asia/Vladivostok',\n '600,1,s': 'Australia/Sydney',\n '630,1,s': 'Australia/Lord_Howe',\n '660,1': 'Asia/Kamchatka',\n '660,0': 'Pacific/Noumea',\n '690,0': 'Pacific/Norfolk',\n '720,1,s': 'Pacific/Auckland',\n '720,0': 'Pacific/Majuro',\n '765,1,s': 'Pacific/Chatham',\n '780,0': 'Pacific/Tongatapu',\n '780,1,s': 'Pacific/Apia',\n '840,0': 'Pacific/Kiritimati'\n};\n\n/* Build time: 2015-11-02 13:01:00Z Build by invoking python utilities/dst.py generate */\njstz.olson.dst_rules = {\n \"years\": [\n 2008,\n 2009,\n 2010,\n 2011,\n 2012,\n 2013,\n 2014\n ],\n \"zones\": [\n {\n \"name\": \"Africa/Cairo\",\n \"rules\": [\n {\n \"e\": 1219957200000,\n \"s\": 1209074400000\n },\n {\n \"e\": 1250802000000,\n \"s\": 1240524000000\n },\n {\n \"e\": 1285880400000,\n \"s\": 1284069600000\n },\n false,\n false,\n false,\n {\n \"e\": 1411678800000,\n \"s\": 1406844000000\n }\n ]\n },\n {\n \"name\": \"Africa/Casablanca\",\n \"rules\": [\n {\n \"e\": 1220223600000,\n \"s\": 1212278400000\n },\n {\n \"e\": 1250809200000,\n \"s\": 1243814400000\n },\n {\n \"e\": 1281222000000,\n \"s\": 1272758400000\n },\n {\n \"e\": 1312066800000,\n \"s\": 1301788800000\n },\n {\n \"e\": 1348970400000,\n \"s\": 1345428000000\n },\n {\n \"e\": 1382839200000,\n \"s\": 1376100000000\n },\n {\n \"e\": 1414288800000,\n \"s\": 1406944800000\n }\n ]\n },\n {\n \"name\": \"America/Asuncion\",\n \"rules\": [\n {\n \"e\": 1205031600000,\n \"s\": 1224388800000\n },\n {\n \"e\": 1236481200000,\n \"s\": 1255838400000\n },\n {\n \"e\": 1270954800000,\n \"s\": 1286078400000\n },\n {\n \"e\": 1302404400000,\n \"s\": 1317528000000\n },\n {\n \"e\": 1333854000000,\n \"s\": 1349582400000\n },\n {\n \"e\": 1364094000000,\n \"s\": 1381032000000\n },\n {\n \"e\": 1395543600000,\n \"s\": 1412481600000\n }\n ]\n },\n {\n \"name\": \"America/Campo_Grande\",\n \"rules\": [\n {\n \"e\": 1203217200000,\n \"s\": 1224388800000\n },\n {\n \"e\": 1234666800000,\n \"s\": 1255838400000\n },\n {\n \"e\": 1266721200000,\n \"s\": 1287288000000\n },\n {\n \"e\": 1298170800000,\n \"s\": 1318737600000\n },\n {\n \"e\": 1330225200000,\n \"s\": 1350792000000\n },\n {\n \"e\": 1361070000000,\n \"s\": 1382241600000\n },\n {\n \"e\": 1392519600000,\n \"s\": 1413691200000\n }\n ]\n },\n {\n \"name\": \"America/Goose_Bay\",\n \"rules\": [\n {\n \"e\": 1225594860000,\n \"s\": 1205035260000\n },\n {\n \"e\": 1257044460000,\n \"s\": 1236484860000\n },\n {\n \"e\": 1289098860000,\n \"s\": 1268539260000\n },\n {\n \"e\": 1320555600000,\n \"s\": 1299988860000\n },\n {\n \"e\": 1352005200000,\n \"s\": 1331445600000\n },\n {\n \"e\": 1383454800000,\n \"s\": 1362895200000\n },\n {\n \"e\": 1414904400000,\n \"s\": 1394344800000\n }\n ]\n },\n {\n \"name\": \"America/Havana\",\n \"rules\": [\n {\n \"e\": 1224997200000,\n \"s\": 1205643600000\n },\n {\n \"e\": 1256446800000,\n \"s\": 1236488400000\n },\n {\n \"e\": 1288501200000,\n \"s\": 1268542800000\n },\n {\n \"e\": 1321160400000,\n \"s\": 1300597200000\n },\n {\n \"e\": 1352005200000,\n \"s\": 1333256400000\n },\n {\n \"e\": 1383454800000,\n \"s\": 1362891600000\n },\n {\n \"e\": 1414904400000,\n \"s\": 1394341200000\n }\n ]\n },\n {\n \"name\": \"America/Mazatlan\",\n \"rules\": [\n {\n \"e\": 1225008000000,\n \"s\": 1207472400000\n },\n {\n \"e\": 1256457600000,\n \"s\": 1238922000000\n },\n {\n \"e\": 1288512000000,\n \"s\": 1270371600000\n },\n {\n \"e\": 1319961600000,\n \"s\": 1301821200000\n },\n {\n \"e\": 1351411200000,\n \"s\": 1333270800000\n },\n {\n \"e\": 1382860800000,\n \"s\": 1365325200000\n },\n {\n \"e\": 1414310400000,\n \"s\": 1396774800000\n }\n ]\n },\n {\n \"name\": \"America/Mexico_City\",\n \"rules\": [\n {\n \"e\": 1225004400000,\n \"s\": 1207468800000\n },\n {\n \"e\": 1256454000000,\n \"s\": 1238918400000\n },\n {\n \"e\": 1288508400000,\n \"s\": 1270368000000\n },\n {\n \"e\": 1319958000000,\n \"s\": 1301817600000\n },\n {\n \"e\": 1351407600000,\n \"s\": 1333267200000\n },\n {\n \"e\": 1382857200000,\n \"s\": 1365321600000\n },\n {\n \"e\": 1414306800000,\n \"s\": 1396771200000\n }\n ]\n },\n {\n \"name\": \"America/Miquelon\",\n \"rules\": [\n {\n \"e\": 1225598400000,\n \"s\": 1205038800000\n },\n {\n \"e\": 1257048000000,\n \"s\": 1236488400000\n },\n {\n \"e\": 1289102400000,\n \"s\": 1268542800000\n },\n {\n \"e\": 1320552000000,\n \"s\": 1299992400000\n },\n {\n \"e\": 1352001600000,\n \"s\": 1331442000000\n },\n {\n \"e\": 1383451200000,\n \"s\": 1362891600000\n },\n {\n \"e\": 1414900800000,\n \"s\": 1394341200000\n }\n ]\n },\n {\n \"name\": \"America/Santa_Isabel\",\n \"rules\": [\n {\n \"e\": 1225011600000,\n \"s\": 1207476000000\n },\n {\n \"e\": 1256461200000,\n \"s\": 1238925600000\n },\n {\n \"e\": 1288515600000,\n \"s\": 1270375200000\n },\n {\n \"e\": 1319965200000,\n \"s\": 1301824800000\n },\n {\n \"e\": 1351414800000,\n \"s\": 1333274400000\n },\n {\n \"e\": 1382864400000,\n \"s\": 1365328800000\n },\n {\n \"e\": 1414314000000,\n \"s\": 1396778400000\n }\n ]\n },\n {\n \"name\": \"America/Santiago\",\n \"rules\": [\n {\n \"e\": 1206846000000,\n \"s\": 1223784000000\n },\n {\n \"e\": 1237086000000,\n \"s\": 1255233600000\n },\n {\n \"e\": 1270350000000,\n \"s\": 1286683200000\n },\n {\n \"e\": 1304823600000,\n \"s\": 1313899200000\n },\n {\n \"e\": 1335668400000,\n \"s\": 1346558400000\n },\n {\n \"e\": 1367118000000,\n \"s\": 1378612800000\n },\n {\n \"e\": 1398567600000,\n \"s\": 1410062400000\n }\n ]\n },\n {\n \"name\": \"America/Sao_Paulo\",\n \"rules\": [\n {\n \"e\": 1203213600000,\n \"s\": 1224385200000\n },\n {\n \"e\": 1234663200000,\n \"s\": 1255834800000\n },\n {\n \"e\": 1266717600000,\n \"s\": 1287284400000\n },\n {\n \"e\": 1298167200000,\n \"s\": 1318734000000\n },\n {\n \"e\": 1330221600000,\n \"s\": 1350788400000\n },\n {\n \"e\": 1361066400000,\n \"s\": 1382238000000\n },\n {\n \"e\": 1392516000000,\n \"s\": 1413687600000\n }\n ]\n },\n {\n \"name\": \"Asia/Amman\",\n \"rules\": [\n {\n \"e\": 1225404000000,\n \"s\": 1206655200000\n },\n {\n \"e\": 1256853600000,\n \"s\": 1238104800000\n },\n {\n \"e\": 1288303200000,\n \"s\": 1269554400000\n },\n {\n \"e\": 1319752800000,\n \"s\": 1301608800000\n },\n false,\n false,\n {\n \"e\": 1414706400000,\n \"s\": 1395957600000\n }\n ]\n },\n {\n \"name\": \"Asia/Damascus\",\n \"rules\": [\n {\n \"e\": 1225486800000,\n \"s\": 1207260000000\n },\n {\n \"e\": 1256850000000,\n \"s\": 1238104800000\n },\n {\n \"e\": 1288299600000,\n \"s\": 1270159200000\n },\n {\n \"e\": 1319749200000,\n \"s\": 1301608800000\n },\n {\n \"e\": 1351198800000,\n \"s\": 1333058400000\n },\n {\n \"e\": 1382648400000,\n \"s\": 1364508000000\n },\n {\n \"e\": 1414702800000,\n \"s\": 1395957600000\n }\n ]\n },\n {\n \"name\": \"Asia/Dubai\",\n \"rules\": [\n false,\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Gaza\",\n \"rules\": [\n {\n \"e\": 1219957200000,\n \"s\": 1206655200000\n },\n {\n \"e\": 1252015200000,\n \"s\": 1238104800000\n },\n {\n \"e\": 1281474000000,\n \"s\": 1269640860000\n },\n {\n \"e\": 1312146000000,\n \"s\": 1301608860000\n },\n {\n \"e\": 1348178400000,\n \"s\": 1333058400000\n },\n {\n \"e\": 1380229200000,\n \"s\": 1364508000000\n },\n {\n \"e\": 1414098000000,\n \"s\": 1395957600000\n }\n ]\n },\n {\n \"name\": \"Asia/Irkutsk\",\n \"rules\": [\n {\n \"e\": 1224957600000,\n \"s\": 1206813600000\n },\n {\n \"e\": 1256407200000,\n \"s\": 1238263200000\n },\n {\n \"e\": 1288461600000,\n \"s\": 1269712800000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Jerusalem\",\n \"rules\": [\n {\n \"e\": 1223161200000,\n \"s\": 1206662400000\n },\n {\n \"e\": 1254006000000,\n \"s\": 1238112000000\n },\n {\n \"e\": 1284246000000,\n \"s\": 1269561600000\n },\n {\n \"e\": 1317510000000,\n \"s\": 1301616000000\n },\n {\n \"e\": 1348354800000,\n \"s\": 1333065600000\n },\n {\n \"e\": 1382828400000,\n \"s\": 1364515200000\n },\n {\n \"e\": 1414278000000,\n \"s\": 1395964800000\n }\n ]\n },\n {\n \"name\": \"Asia/Kamchatka\",\n \"rules\": [\n {\n \"e\": 1224943200000,\n \"s\": 1206799200000\n },\n {\n \"e\": 1256392800000,\n \"s\": 1238248800000\n },\n {\n \"e\": 1288450800000,\n \"s\": 1269698400000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Krasnoyarsk\",\n \"rules\": [\n {\n \"e\": 1224961200000,\n \"s\": 1206817200000\n },\n {\n \"e\": 1256410800000,\n \"s\": 1238266800000\n },\n {\n \"e\": 1288465200000,\n \"s\": 1269716400000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Omsk\",\n \"rules\": [\n {\n \"e\": 1224964800000,\n \"s\": 1206820800000\n },\n {\n \"e\": 1256414400000,\n \"s\": 1238270400000\n },\n {\n \"e\": 1288468800000,\n \"s\": 1269720000000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Vladivostok\",\n \"rules\": [\n {\n \"e\": 1224950400000,\n \"s\": 1206806400000\n },\n {\n \"e\": 1256400000000,\n \"s\": 1238256000000\n },\n {\n \"e\": 1288454400000,\n \"s\": 1269705600000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Yakutsk\",\n \"rules\": [\n {\n \"e\": 1224954000000,\n \"s\": 1206810000000\n },\n {\n \"e\": 1256403600000,\n \"s\": 1238259600000\n },\n {\n \"e\": 1288458000000,\n \"s\": 1269709200000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Yekaterinburg\",\n \"rules\": [\n {\n \"e\": 1224968400000,\n \"s\": 1206824400000\n },\n {\n \"e\": 1256418000000,\n \"s\": 1238274000000\n },\n {\n \"e\": 1288472400000,\n \"s\": 1269723600000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Asia/Yerevan\",\n \"rules\": [\n {\n \"e\": 1224972000000,\n \"s\": 1206828000000\n },\n {\n \"e\": 1256421600000,\n \"s\": 1238277600000\n },\n {\n \"e\": 1288476000000,\n \"s\": 1269727200000\n },\n {\n \"e\": 1319925600000,\n \"s\": 1301176800000\n },\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Australia/Lord_Howe\",\n \"rules\": [\n {\n \"e\": 1207407600000,\n \"s\": 1223134200000\n },\n {\n \"e\": 1238857200000,\n \"s\": 1254583800000\n },\n {\n \"e\": 1270306800000,\n \"s\": 1286033400000\n },\n {\n \"e\": 1301756400000,\n \"s\": 1317483000000\n },\n {\n \"e\": 1333206000000,\n \"s\": 1349537400000\n },\n {\n \"e\": 1365260400000,\n \"s\": 1380987000000\n },\n {\n \"e\": 1396710000000,\n \"s\": 1412436600000\n }\n ]\n },\n {\n \"name\": \"Australia/Perth\",\n \"rules\": [\n {\n \"e\": 1206813600000,\n \"s\": 1224957600000\n },\n false,\n false,\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Europe/Helsinki\",\n \"rules\": [\n {\n \"e\": 1224982800000,\n \"s\": 1206838800000\n },\n {\n \"e\": 1256432400000,\n \"s\": 1238288400000\n },\n {\n \"e\": 1288486800000,\n \"s\": 1269738000000\n },\n {\n \"e\": 1319936400000,\n \"s\": 1301187600000\n },\n {\n \"e\": 1351386000000,\n \"s\": 1332637200000\n },\n {\n \"e\": 1382835600000,\n \"s\": 1364691600000\n },\n {\n \"e\": 1414285200000,\n \"s\": 1396141200000\n }\n ]\n },\n {\n \"name\": \"Europe/Minsk\",\n \"rules\": [\n {\n \"e\": 1224979200000,\n \"s\": 1206835200000\n },\n {\n \"e\": 1256428800000,\n \"s\": 1238284800000\n },\n {\n \"e\": 1288483200000,\n \"s\": 1269734400000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Europe/Moscow\",\n \"rules\": [\n {\n \"e\": 1224975600000,\n \"s\": 1206831600000\n },\n {\n \"e\": 1256425200000,\n \"s\": 1238281200000\n },\n {\n \"e\": 1288479600000,\n \"s\": 1269730800000\n },\n false,\n false,\n false,\n false\n ]\n },\n {\n \"name\": \"Pacific/Apia\",\n \"rules\": [\n false,\n false,\n false,\n {\n \"e\": 1301752800000,\n \"s\": 1316872800000\n },\n {\n \"e\": 1333202400000,\n \"s\": 1348927200000\n },\n {\n \"e\": 1365256800000,\n \"s\": 1380376800000\n },\n {\n \"e\": 1396706400000,\n \"s\": 1411826400000\n }\n ]\n },\n {\n \"name\": \"Pacific/Fiji\",\n \"rules\": [\n false,\n false,\n {\n \"e\": 1269698400000,\n \"s\": 1287842400000\n },\n {\n \"e\": 1327154400000,\n \"s\": 1319292000000\n },\n {\n \"e\": 1358604000000,\n \"s\": 1350741600000\n },\n {\n \"e\": 1390050000000,\n \"s\": 1382796000000\n },\n {\n \"e\": 1421503200000,\n \"s\": 1414850400000\n }\n ]\n },\n {\n \"name\": \"Europe/London\",\n \"rules\": [\n {\n \"e\": 1224982800000,\n \"s\": 1206838800000\n },\n {\n \"e\": 1256432400000,\n \"s\": 1238288400000\n },\n {\n \"e\": 1288486800000,\n \"s\": 1269738000000\n },\n {\n \"e\": 1319936400000,\n \"s\": 1301187600000\n },\n {\n \"e\": 1351386000000,\n \"s\": 1332637200000\n },\n {\n \"e\": 1382835600000,\n \"s\": 1364691600000\n },\n {\n \"e\": 1414285200000,\n \"s\": 1396141200000\n }\n ]\n }\n ]\n};\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = jstz;\n} else if ((typeof define !== 'undefined' && define !== null) && (define.amd != null)) {\n define([], function() {\n return jstz;\n });\n} else {\n if (typeof root === 'undefined') {\n window.jstz = jstz;\n } else {\n root.jstz = jstz;\n }\n}\n}());\n", "module.exports = require('./dist/jstz.js');\n", "(function(){var t=this;(function(){(function(){var t=[].slice;this.LocalTime={config:{},run:function(){return this.getController().processElements()},process:function(){var e,n,r,a;for(n=1<=arguments.length?t.call(arguments,0):[],r=0,a=n.length;r<a;r++)e=n[r],this.getController().processElement(e);return n.length},getController:function(){return null!=this.controller?this.controller:this.controller=new e.Controller}}}).call(this)}).call(t);var e=t.LocalTime;(function(){(function(){e.config.i18n={en:{date:{dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],abbrDayNames:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],abbrMonthNames:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],yesterday:\"yesterday\",today:\"today\",tomorrow:\"tomorrow\",on:\"on {date}\",formats:{\"default\":\"%b %e, %Y\",thisYear:\"%b %e\"}},time:{am:\"am\",pm:\"pm\",singular:\"a {time}\",singularAn:\"an {time}\",elapsed:\"{time} ago\",second:\"second\",seconds:\"seconds\",minute:\"minute\",minutes:\"minutes\",hour:\"hour\",hours:\"hours\",formats:{\"default\":\"%l:%M%P\"}},datetime:{at:\"{date} at {time}\",formats:{\"default\":\"%B %e, %Y at %l:%M%P %Z\"}}}}}).call(this),function(){e.config.locale=\"en\",e.config.defaultLocale=\"en\"}.call(this),function(){e.config.timerInterval=6e4}.call(this),function(){var t,n,r;r=!isNaN(Date.parse(\"2011-01-01T12:00:00-05:00\")),e.parseDate=function(t){return t=t.toString(),r||(t=n(t)),new Date(Date.parse(t))},t=/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(Z|[-+]?[\\d:]+)$/,n=function(e){var n,r,a,i,o,s,u,c,l;if(a=e.match(t))return a[0],c=a[1],o=a[2],n=a[3],r=a[4],i=a[5],u=a[6],l=a[7],\"Z\"!==l&&(s=l.replace(\":\",\"\")),c+\"/\"+o+\"/\"+n+\" \"+r+\":\"+i+\":\"+u+\" GMT\"+[s]}}.call(this),function(){e.elementMatchesSelector=function(){var t,e,n,r,a,i;return t=document.documentElement,e=null!=(n=null!=(r=null!=(a=null!=(i=t.matches)?i:t.matchesSelector)?a:t.webkitMatchesSelector)?r:t.mozMatchesSelector)?n:t.msMatchesSelector,function(t,n){if((null!=t?t.nodeType:void 0)===Node.ELEMENT_NODE)return e.call(t,n)}}()}.call(this),function(){var t,n,r;t=e.config,r=t.i18n,e.getI18nValue=function(a,i){var o,s;return null==a&&(a=\"\"),o=(null!=i?i:{locale:t.locale}).locale,s=n(r[o],a),null!=s?s:o!==t.defaultLocale?e.getI18nValue(a,{locale:t.defaultLocale}):void 0},e.translate=function(t,n,r){var a,i,o;null==n&&(n={}),o=e.getI18nValue(t,r);for(a in n)i=n[a],o=o.replace(\"{\"+a+\"}\",i);return o},n=function(t,e){var n,r,a,i,o;for(o=t,i=e.split(\".\"),n=0,a=i.length;n<a;n++){if(r=i[n],null==o[r])return null;o=o[r]}return o}}.call(this),function(){var t,n,r,a,i;t=e.getI18nValue,i=e.translate,e.strftime=a=function(e,o){var s,u,c,l,d,h,f;return u=e.getDay(),s=e.getDate(),d=e.getMonth(),f=e.getFullYear(),c=e.getHours(),l=e.getMinutes(),h=e.getSeconds(),o.replace(/%(-?)([%aAbBcdeHIlmMpPSwyYZ])/g,function(o,m,p){switch(p){case\"%\":return\"%\";case\"a\":return t(\"date.abbrDayNames\")[u];case\"A\":return t(\"date.dayNames\")[u];case\"b\":return t(\"date.abbrMonthNames\")[d];case\"B\":return t(\"date.monthNames\")[d];case\"c\":return e.toString();case\"d\":return n(s,m);case\"e\":return s;case\"H\":return n(c,m);case\"I\":return n(a(e,\"%l\"),m);case\"l\":return 0===c||12===c?12:(c+12)%12;case\"m\":return n(d+1,m);case\"M\":return n(l,m);case\"p\":return i(\"time.\"+(c>11?\"pm\":\"am\")).toUpperCase();case\"P\":return i(\"time.\"+(c>11?\"pm\":\"am\"));case\"S\":return n(h,m);case\"w\":return u;case\"y\":return n(f%100,m);case\"Y\":return f;case\"Z\":return r(e)}})},n=function(t,e){switch(e){case\"-\":return t;default:return(\"0\"+t).slice(-2)}},r=function(t){var e,n,r,a,i;return i=t.toString(),(e=null!=(n=i.match(/\\(([\\w\\s]+)\\)$/))?n[1]:void 0)?/\\s/.test(e)?e.match(/\\b(\\w)/g).join(\"\"):e:(e=null!=(r=i.match(/(\\w{3,4})\\s\\d{4}$/))?r[1]:void 0)?e:(e=null!=(a=i.match(/(UTC[\\+\\-]\\d+)/))?a[1]:void 0)?e:\"\"}}.call(this),function(){e.CalendarDate=function(){function t(t,e,n){this.date=new Date(Date.UTC(t,e-1)),this.date.setUTCDate(n),this.year=this.date.getUTCFullYear(),this.month=this.date.getUTCMonth()+1,this.day=this.date.getUTCDate(),this.value=this.date.getTime()}return t.fromDate=function(t){return new this(t.getFullYear(),t.getMonth()+1,t.getDate())},t.today=function(){return this.fromDate(new Date)},t.prototype.equals=function(t){return(null!=t?t.value:void 0)===this.value},t.prototype.is=function(t){return this.equals(t)},t.prototype.isToday=function(){return this.is(this.constructor.today())},t.prototype.occursOnSameYearAs=function(t){return this.year===(null!=t?t.year:void 0)},t.prototype.occursThisYear=function(){return this.occursOnSameYearAs(this.constructor.today())},t.prototype.daysSince=function(t){if(t)return(this.date-t.date)/864e5},t.prototype.daysPassed=function(){return this.constructor.today().daysSince(this)},t}()}.call(this),function(){var t,n,r;n=e.strftime,r=e.translate,t=e.getI18nValue,e.RelativeTime=function(){function a(t){this.date=t,this.calendarDate=e.CalendarDate.fromDate(this.date)}return a.prototype.toString=function(){var t,e;return(e=this.toTimeElapsedString())?r(\"time.elapsed\",{time:e}):(t=this.toWeekdayString())?(e=this.toTimeString(),r(\"datetime.at\",{date:t,time:e})):r(\"date.on\",{date:this.toDateString()})},a.prototype.toTimeOrDateString=function(){return this.calendarDate.isToday()?this.toTimeString():this.toDateString()},a.prototype.toTimeElapsedString=function(){var t,e,n,a,i;return n=(new Date).getTime()-this.date.getTime(),a=Math.round(n/1e3),e=Math.round(a/60),t=Math.round(e/60),n<0?null:a<10?(i=r(\"time.second\"),r(\"time.singular\",{time:i})):a<45?a+\" \"+r(\"time.seconds\"):a<90?(i=r(\"time.minute\"),r(\"time.singular\",{time:i})):e<45?e+\" \"+r(\"time.minutes\"):e<90?(i=r(\"time.hour\"),r(\"time.singularAn\",{time:i})):t<24?t+\" \"+r(\"time.hours\"):\"\"},a.prototype.toWeekdayString=function(){switch(this.calendarDate.daysPassed()){case 0:return r(\"date.today\");case 1:return r(\"date.yesterday\");case-1:return r(\"date.tomorrow\");case 2:case 3:case 4:case 5:case 6:return n(this.date,\"%A\");default:return\"\"}},a.prototype.toDateString=function(){var e;return e=t(this.calendarDate.occursThisYear()?\"date.formats.thisYear\":\"date.formats.default\"),n(this.date,e)},a.prototype.toTimeString=function(){return n(this.date,t(\"time.formats.default\"))},a}()}.call(this),function(){var t,n=function(t,e){return function(){return t.apply(e,arguments)}};t=e.elementMatchesSelector,e.PageObserver=function(){function e(t,e){this.selector=t,this.callback=e,this.processInsertion=n(this.processInsertion,this),this.processMutations=n(this.processMutations,this)}return e.prototype.start=function(){if(!this.started)return this.observeWithMutationObserver()||this.observeWithMutationEvent(),this.started=!0},e.prototype.observeWithMutationObserver=function(){var t;if(\"undefined\"!=typeof MutationObserver&&null!==MutationObserver)return t=new MutationObserver(this.processMutations),t.observe(document.documentElement,{childList:!0,subtree:!0}),!0},e.prototype.observeWithMutationEvent=function(){return addEventListener(\"DOMNodeInserted\",this.processInsertion,!1),!0},e.prototype.findSignificantElements=function(e){var n;return n=[],(null!=e?e.nodeType:void 0)===Node.ELEMENT_NODE&&(t(e,this.selector)&&n.push(e),n.push.apply(n,e.querySelectorAll(this.selector))),n},e.prototype.processMutations=function(t){var e,n,r,a,i,o,s,u;for(e=[],n=0,a=t.length;n<a;n++)switch(o=t[n],o.type){case\"childList\":for(u=o.addedNodes,r=0,i=u.length;r<i;r++)s=u[r],e.push.apply(e,this.findSignificantElements(s))}return this.notify(e)},e.prototype.processInsertion=function(t){var e;return e=this.findSignificantElements(t.target),this.notify(e)},e.prototype.notify=function(t){if(null!=t?t.length:void 0)return\"function\"==typeof this.callback?this.callback(t):void 0},e}()}.call(this),function(){var t,n,r,a,i=function(t,e){return function(){return t.apply(e,arguments)}};r=e.parseDate,a=e.strftime,n=e.getI18nValue,t=e.config,e.Controller=function(){function o(){this.processElements=i(this.processElements,this),this.pageObserver=new e.PageObserver(s,this.processElements)}var s,u,c;return s=\"time[data-local]:not([data-localized])\",o.prototype.start=function(){if(!this.started)return this.processElements(),this.startTimer(),this.pageObserver.start(),this.started=!0},o.prototype.startTimer=function(){var e;if(e=t.timerInterval)return null!=this.timer?this.timer:this.timer=setInterval(this.processElements,e)},o.prototype.processElements=function(t){var e,n,r;for(null==t&&(t=document.querySelectorAll(s)),n=0,r=t.length;n<r;n++)e=t[n],this.processElement(e);return t.length},o.prototype.processElement=function(t){var e,i,o,s,l,d;if(i=t.getAttribute(\"datetime\"),o=t.getAttribute(\"data-format\"),s=t.getAttribute(\"data-local\"),l=r(i),!isNaN(l))return t.hasAttribute(\"title\")||(d=a(l,n(\"datetime.formats.default\")),t.setAttribute(\"title\",d)),t.textContent=e=function(){switch(s){case\"time\":return u(t),a(l,o);case\"date\":return u(t),c(l).toDateString();case\"time-ago\":return c(l).toString();case\"time-or-date\":return c(l).toTimeOrDateString();case\"weekday\":return c(l).toWeekdayString();case\"weekday-or-date\":return c(l).toWeekdayString()||c(l).toDateString()}}(),t.hasAttribute(\"aria-label\")?void 0:t.setAttribute(\"aria-label\",e)},u=function(t){return t.setAttribute(\"data-localized\",\"\")},c=function(t){return new e.RelativeTime(t)},o}()}.call(this),function(){var t,n,r,a;a=!1,t=function(){return document.attachEvent?\"complete\"===document.readyState:\"loading\"!==document.readyState},n=function(t){var e;return null!=(e=\"function\"==typeof requestAnimationFrame?requestAnimationFrame(t):void 0)?e:setTimeout(t,17)},r=function(){var t;return t=e.getController(),t.start()},e.start=function(){if(!a)return a=!0,\"undefined\"!=typeof MutationObserver&&null!==MutationObserver||t()?r():n(r)},window.LocalTime===e&&e.start()}.call(this)}).call(this),\"object\"==typeof module&&module.exports?module.exports=e:\"function\"==typeof define&&define.amd&&define(e)}).call(this);", "\"use strict\";\n\n// Note: This regex matches even invalid JSON strings, but since we\u2019re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don\u2019t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nmodule.exports = function stringify(passedObj, options) {\n var indent, maxLength, replacer;\n\n options = options || {};\n indent = JSON.stringify(\n [1],\n undefined,\n options.indent === undefined ? 2 : options.indent\n ).slice(2, -3);\n maxLength =\n indent === \"\"\n ? Infinity\n : options.maxLength === undefined\n ? 80\n : options.maxLength;\n replacer = options.replacer;\n\n return (function _stringify(obj, currentIndent, reserved) {\n // prettier-ignore\n var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n\n string = JSON.stringify(obj, replacer);\n\n if (string === undefined) {\n return string;\n }\n\n length = maxLength - currentIndent.length - reserved;\n\n if (string.length <= length) {\n prettified = string.replace(\n stringOrChar,\n function (match, stringLiteral) {\n return stringLiteral || match + \" \";\n }\n );\n if (prettified.length <= length) {\n return prettified;\n }\n }\n\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n\n if (typeof obj === \"object\" && obj !== null) {\n nextIndent = currentIndent + indent;\n items = [];\n index = 0;\n\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n length = obj.length;\n for (; index < length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n \"null\"\n );\n }\n } else {\n start = \"{\";\n end = \"}\";\n keys = Object.keys(obj);\n length = keys.length;\n for (; index < length; index++) {\n key = keys[index];\n keyPart = JSON.stringify(key) + \": \";\n value = _stringify(\n obj[key],\n nextIndent,\n keyPart.length + (index === length - 1 ? 0 : 1)\n );\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n\n if (items.length > 0) {\n return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\n \"\\n\" + currentIndent\n );\n }\n }\n\n return string;\n })(passedObj, \"\", 0);\n};\n", "/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n }\n else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n} (function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 =(function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n\n var id = 0;\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id with a prefix.\n // If an id already exists, it simply returns it with a prefix.\n\n var select2Id = element.getAttribute('data-select2-id');\n\n if (select2Id != null) {\n return select2Id;\n }\n\n // If element has id, use it.\n if (element.id) {\n select2Id = 'select2-data-' + element.id;\n } else {\n select2Id = 'select2-data-' + (++id).toString() +\n '-' + Utils.generateChars(4);\n }\n\n element.setAttribute('data-select2-id', select2Id);\n\n return select2Id;\n };\n\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n\n Utils.__cache[id][name] = value;\n };\n\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n Utils.copyNonInternalCssClasses = function (dest, src) {\n var classes;\n\n var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n destinationClasses = destinationClasses.filter(function (clazz) {\n // Save all Select2 classes\n return clazz.indexOf('select2-') === 0;\n });\n\n var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n sourceClasses = sourceClasses.filter(function (clazz) {\n // Only copy non-Select2 classes\n return clazz.indexOf('select2-') !== 0;\n });\n\n var replacements = destinationClasses.concat(sourceClasses);\n\n dest.setAttribute('class', replacements.join(' '));\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n '<li role=\"alert\" aria-live=\"assertive\"' +\n ' class=\"select2-results__option\"></li>'\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option--selectable');\n\n var $selected = $options.filter('.select2-results__option--selected');\n\n // Check if there are any selected options\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = selected.map(function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option--selectable');\n\n $options.each(function () {\n var $option = $(this);\n\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n\n if ((item.element != null && item.element.selected) ||\n (item.element == null && selectedIds.indexOf(id) > -1)) {\n this.classList.add('select2-results__option--selected');\n $option.attr('aria-selected', 'true');\n } else {\n this.classList.remove('select2-results__option--selected');\n $option.attr('aria-selected', 'false');\n }\n });\n\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.classList.add('select2-results__option');\n option.classList.add('select2-results__option--selectable');\n\n var attrs = {\n 'role': 'option'\n };\n\n var matches = window.Element.prototype.matches ||\n window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector;\n\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\n (data.element == null && data.disabled)) {\n attrs['aria-disabled'] = 'true';\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--disabled');\n }\n\n if (data.id == null) {\n option.classList.remove('select2-results__option--selectable');\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--group');\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('<ul></ul>', {\n 'class': 'select2-results__options select2-results__options--nested',\n 'role': 'none'\n });\n\n $childrenContainer.append($children);\n\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-results';\n\n this.$results.attr('id', id);\n\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n\n self.setClasses();\n self.ensureHighlightVisible();\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.hasClass('select2-results__option--selected')) {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var nextIndex = currentIndex + 1;\n\n // If we are at the last option, stay there\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:focus', function (params) {\n params.element[0].classList.add('select2-results__option--highlighted');\n params.element[0].setAttribute('aria-selected', 'true');\n });\n\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(\n self.$results.get(0).scrollHeight - self.$results.height()\n );\n\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option--selectable',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\n if ($this.hasClass('select2-results__option--selected')) {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n\n this.$results.on('mouseenter', '.select2-results__option--selectable',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted')\n .attr('aria-selected', 'false');\n\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results\n .find('.select2-results__option--highlighted');\n\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n\n return KEYS;\n});\n\nS2.define('select2/selection/base',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function BaseSelection ($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $(\n '<span class=\"select2-selection\" role=\"combobox\" ' +\n ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n '</span>'\n );\n\n this._tabindex = 0;\n\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n\n this.$selection = $selection;\n\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n this.container = container;\n\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this;\n\n // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (\n (document.activeElement == self.$selection[0]) ||\n ($.contains(self.$selection[0], document.activeElement))\n ) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n\n var $select = $target.closest('.select2');\n\n var $all = $('.select2.select2-container--open');\n\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\n\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n 'jquery',\n './base',\n '../utils',\n '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection () {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--single');\n\n $selection.html(\n '<span class=\"select2-selection__rendered\"></span>' +\n '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n '<b role=\"presentation\"></b>' +\n '</span>'\n );\n\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n\n this.$selection.find('.select2-selection__rendered')\n .attr('id', id)\n .attr('role', 'textbox')\n .attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n this.$selection.attr('aria-controls', id);\n\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on empty\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('<span></span>');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n\n $rendered.empty().append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n 'jquery',\n './base',\n '../utils'\n], function ($, BaseSelection, Utils) {\n function MultipleSelection ($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--multiple');\n\n $selection.html(\n '<ul class=\"select2-selection__rendered\"></ul>'\n );\n\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on(\n 'click',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n\n var data = Utils.GetData($selection[0], 'data');\n\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n }\n );\n\n this.$selection.on(\n 'keydown',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n evt.stopPropagation();\n }\n );\n };\n\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n };\n\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $(\n '<li class=\"select2-selection__choice\">' +\n '<button type=\"button\" class=\"select2-selection__choice__remove\" ' +\n 'tabindex=\"-1\">' +\n '<span aria-hidden=\"true\">×</span>' +\n '</button>' +\n '<span class=\"select2-selection__choice__display\"></span>' +\n '</li>'\n );\n\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n .attr('id') + '-choice-';\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n\n var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n if (selection.id) {\n selectionId += selection.id;\n } else {\n selectionId += Utils.generateChars(4);\n }\n\n $selection.find('.select2-selection__choice__display')\n .append(formatted)\n .attr('id', selectionId);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n var removeItem = this.options.get('translations').get('removeItem');\n\n var $remove = $selection.find('.select2-selection__choice__remove');\n\n $remove.attr('title', removeItem());\n $remove.attr('aria-label', removeItem());\n $remove.attr('aria-describedby', selectionId);\n\n Utils.StoreData($selection[0], 'data', selection);\n\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n\n $rendered.append($selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n function Placeholder (decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n\n $placeholder.html(this.display(placeholder));\n $placeholder[0].classList.add('select2-selection__placeholder');\n $placeholder[0].classList.remove('select2-selection__choice');\n\n var placeholderTitle = placeholder.title ||\n placeholder.text ||\n $placeholder.text();\n\n this.$selection.find('.select2-selection__rendered').attr(\n 'title',\n placeholderTitle\n );\n\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = (\n data.length == 1 && data[0].id != this.placeholder.id\n );\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n\n var $placeholder = this.createPlaceholder(this.placeholder);\n\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n 'jquery',\n '../keys',\n '../utils'\n], function ($, KEYS, Utils) {\n function AllowClear () { }\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error(\n 'Select2: The `allowClear` option should be used in combination ' +\n 'with the `placeholder` option.'\n );\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear',\n function (evt) {\n self._handleClear(evt);\n });\n\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear');\n\n // Ignore the event if nothing has been selected\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n\n var data = Utils.GetData($clear[0], 'data');\n\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n\n for (var d = 0; d < data.length; d++) {\n unselectData = {\n data: data[d]\n };\n\n // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n this.trigger('unselect', unselectData);\n\n // If the event was prevented, don't clear it out.\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n\n this.$element.trigger('input').trigger('change');\n\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n this.$selection.find('.select2-selection__clear').remove();\n this.$selection[0].classList.remove('select2-selection--clearable');\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var selectionId = this.$selection.find('.select2-selection__rendered')\n .attr('id');\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n\n var $remove = $(\n '<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' +\n '<span aria-hidden=\"true\">×</span>' +\n '</button>'\n );\n $remove.attr('title', removeAll());\n $remove.attr('aria-label', removeAll());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($remove[0], 'data', data);\n\n this.$selection.prepend($remove);\n this.$selection[0].classList.add('select2-selection--clearable');\n };\n\n return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function Search (decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var searchLabel = this.options.get('translations').get('search');\n var $search = $(\n '<span class=\"select2-search select2-search--inline\">' +\n '<textarea class=\"select2-search__field\"'+\n ' type=\"search\" tabindex=\"-1\"' +\n ' autocorrect=\"off\" autocapitalize=\"none\"' +\n ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" >' +\n '</textarea>' +\n '</span>'\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('textarea');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n $rendered.append(this.$searchContainer);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n var selectionId = container.id + '-container';\n\n decorated.call(this, container, $container);\n\n self.$search.attr('aria-describedby', selectionId);\n\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n\n container.on('close', function () {\n self.$search.val('');\n self.resizeSearch();\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$selection\n .find('.select2-selection__choice').last();\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n\n self.searchRemoveChoice(item);\n\n evt.preventDefault();\n }\n }\n });\n\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\n }\n });\n\n // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11;\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$selection.on(\n 'input.searchcheck',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n // Unbind the duplicated `keyup` event\n self.$selection.off('keyup.search');\n }\n );\n\n this.$selection.on(\n 'keyup.search input.search',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which;\n\n // We can freely ignore events from modifier keys\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n }\n\n // Tabbing will be handled during the `keydown` phase\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n }\n );\n };\n\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n\n this.$search.attr('placeholder', '');\n\n decorated.call(this, data);\n\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n\n var width = '100%';\n\n if (this.$search.attr('placeholder') === '') {\n var minimumWidth = this.$search.val().length + 1;\n\n width = (minimumWidth * 0.75) + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n '../utils'\n], function (Utils) {\n function SelectionCSS () { }\n\n SelectionCSS.prototype.render = function (decorated) {\n var $selection = decorated.call(this);\n\n var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n if (selectionCssClass.indexOf(':all:') !== -1) {\n selectionCssClass = selectionCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n }\n\n $selection.addClass(selectionCssClass);\n\n return $selection;\n };\n\n return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n 'jquery'\n], function ($) {\n function EventRelay () { }\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = [\n 'open', 'opening',\n 'close', 'closing',\n 'select', 'selecting',\n 'unselect', 'unselecting',\n 'clear', 'clearing'\n ];\n\n var preventableEvents = [\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n ];\n\n decorated.call(this, container, $container);\n\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if (relayEvents.indexOf(name) === -1) {\n return;\n }\n\n // The parameters should always be an object\n params = params || {};\n\n // Generate the jQuery event for the Select2 event\n var evt = $.Event('select2:' + name, {\n params: params\n });\n\n self.$element.trigger(evt);\n\n // Only handle preventable events if it was one\n if (preventableEvents.indexOf(name) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n});\n\nS2.define('select2/translation',[\n 'jquery',\n 'require'\n], function ($, require) {\n function Translation (dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n };\n\n // Static functions\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n var diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u0152': 'OE',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u0153': 'oe',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03CE': '\\u03C9',\n '\\u03C2': '\\u03C3',\n '\\u2019': '\\''\n };\n\n return diacritics;\n});\n\nS2.define('select2/data/base',[\n '../utils'\n], function (Utils) {\n function BaseAdapter ($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n\n return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n './base',\n '../utils',\n 'jquery'\n], function (BaseAdapter, Utils, $) {\n function SelectAdapter ($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var self = this;\n\n var data = Array.prototype.map.call(\n this.$element[0].querySelectorAll(':checked'),\n function (selectedElement) {\n return self.item($(selectedElement));\n }\n );\n\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if (\n data.element != null && data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = true;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if (val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if (\n data.element != null &&\n data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = false;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n\n this.container = container;\n\n container.on('select', function (params) {\n self.select(params.data);\n });\n\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n\n var $options = this.$element.children();\n\n $options.each(function () {\n if (\n this.tagName.toLowerCase() !== 'option' &&\n this.tagName.toLowerCase() !== 'optgroup'\n ) {\n return;\n }\n\n var $option = $(this);\n\n var option = self.item($option);\n\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n this.$element.append($options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n Utils.StoreData(option, 'data', normalizedData);\n\n return $(option);\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n var option = $option[0];\n\n if (option.tagName.toLowerCase() === 'option') {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if (option.tagName.toLowerCase() === 'optgroup') {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n\n var child = this.item($child);\n\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n\n Utils.StoreData($option[0], 'data', data);\n\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n\n return matcher(params, data);\n };\n\n return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n './select',\n '../utils',\n 'jquery'\n], function (SelectAdapter, Utils, $) {\n function ArrayAdapter ($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n\n var $options = [];\n\n // Filter out all items except for the one passed in the argument\n function onlyItem (item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]);\n\n // Skip items which were pre-loaded, only merge the data\n if (existingIds.indexOf(item.id) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n\n var $newOption = this.option(newData);\n\n $existingOption.replaceWith($newOption);\n\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n\n $option.append($children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n './array',\n '../utils',\n 'jquery'\n], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter ($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function (params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function (params, success, failure) {\n var $request = $.ajax(params);\n\n $request.then(success);\n $request.fail(failure);\n\n return $request;\n }\n };\n\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if (typeof this._request.abort === 'function') {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request () {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !Array.isArray(results.results)) {\n console.error(\n 'Select2: The AJAX results did not return an array in the ' +\n '`results` key of the response.'\n );\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request &&\n ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n 'jquery'\n], function ($) {\n function Tags (decorated, $element, options) {\n var tags = options.get('tags');\n\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if (Array.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper (obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n\n var checkChildren = (\n option.children != null &&\n !wrapper({\n results: option.children\n }, true)\n );\n\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', 'true');\n\n self.addOptions([$option]);\n\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n if (params.term == null) {\n return null;\n }\n\n var term = params.term.trim();\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n 'jquery'\n], function ($) {\n function Tokenizer (decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n\n this.$search = container.dropdown.$search || container.selection.$search ||\n $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect (data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data);\n\n // Check if the data object already exists as a tag\n // Select it if it doesn't\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n });\n\n // If an existing option wasn't found for it, create the option\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n self.addOptions([$option]);\n }\n\n // Select the item, now that we know there is an option for it\n select(item);\n }\n\n function select (data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if (separators.indexOf(termChar) === -1) {\n i++;\n\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data);\n\n // Reset the term to not include the tokenized portion\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n function MinimumInputLength (decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n function MaximumInputLength (decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 &&\n params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n function MaximumSelectionLength (decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind =\n function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query =\n function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected =\n function (_, successCallback) {\n var self = this;\n\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 &&\n count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Dropdown ($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $(\n '<span class=\"select2-dropdown\">' +\n '<span class=\"select2-results\"></span>' +\n '</span>'\n );\n\n $dropdown.attr('dir', this.options.get('dir'));\n\n this.$dropdown = $dropdown;\n\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n 'jquery'\n], function ($) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var searchLabel = this.options.get('translations').get('search');\n\n var $search = $(\n '<span class=\"select2-search select2-search--dropdown\">' +\n '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n ' autocorrect=\"off\" autocapitalize=\"none\"' +\n ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n '</span>'\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n $rendered.prepend($search);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n });\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n\n self.$search.trigger('focus');\n\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n\n self.$search.val('');\n self.$search.trigger('blur');\n });\n\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer[0].classList.remove('select2-search--hide');\n } else {\n self.$searchContainer[0].classList.add('select2-search--hide');\n }\n }\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n 'jquery'\n], function ($) {\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n\n decorated.call(this, $element, options, dataAdapter);\n\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(\n document.documentElement,\n this.$loadingMore[0]\n );\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top +\n this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top +\n this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n\n var params = $.extend({}, {page: 1}, this.lastParams);\n\n params.page++;\n\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(\n '<li ' +\n 'class=\"select2-results__option select2-results__option--load-more\"' +\n 'role=\"option\" aria-disabled=\"true\"></li>'\n );\n\n var message = this.options.get('translations').get('loadingMore');\n\n $option.html(message(this.lastParams));\n\n return $option;\n };\n\n return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function AttachBody (decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self._showDropdown();\n self._attachPositioningHandler(container);\n\n // Must bind after the results handlers to ensure correct sizing\n self._bindContainerResultHandlers(container);\n });\n\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n\n $dropdown[0].classList.remove('select2');\n $dropdown[0].classList.add('select2-container--open');\n\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('<span></span>');\n\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n\n this.$dropdownContainer = $container;\n\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers =\n function (decorated, container) {\n\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler =\n function (decorated, container) {\n var self = this;\n\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler =\n function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n\n var isCurrentlyAbove = this.$dropdown[0].classList\n .contains('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown[0].classList\n .contains('select2-dropdown--below');\n\n var newDirection = null;\n\n var offset = this.$container.offset();\n\n offset.bottom = offset.top + this.$container.outerHeight(false);\n\n var container = {\n height: this.$container.outerHeight(false)\n };\n\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for calculating the offset\n var $offsetParent = this.$dropdownParent;\n\n // For statically positioned elements, we need to get the element\n // that is determining the offset\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if (\n $.contains(document.body, $offsetParent[0]) ||\n $offsetParent[0].isConnected\n ) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' ||\n (isCurrentlyAbove && newDirection !== 'below')) {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown[0].classList.remove('select2-dropdown--below');\n this.$dropdown[0].classList.remove('select2-dropdown--above');\n this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n this.$container[0].classList.remove('select2-container--below');\n this.$container[0].classList.remove('select2-container--above');\n this.$container[0].classList.add('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n this._resizeDropdown();\n };\n\n return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n function countResults (data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n '../utils'\n], function (Utils) {\n function SelectOnClose () { }\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event;\n\n // Don't select an item if the close event was triggered from a select or\n // unselect event\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (\n (data.element != null && data.element.selected) ||\n (data.element == null && data.selected)\n ) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n function CloseOnSelect () { }\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent;\n\n // Don't close if the control key is being held\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n '../utils'\n], function (Utils) {\n function DropdownCSS () { }\n\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n }\n\n $dropdown.addClass(dropdownCssClass);\n\n return $dropdown;\n };\n\n return DropdownCSS;\n});\n\nS2.define('select2/dropdown/tagsSearchHighlight',[\n '../utils'\n], function (Utils) {\n function TagsSearchHighlight () { }\n\n TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n var $options = this.$results\n .find(\n '.select2-results__option--selectable' +\n ':not(.select2-results__option--selected)'\n );\n\n if ($options.length > 0) {\n var $firstOption = $options.first();\n var data = Utils.GetData($firstOption[0], 'data');\n var firstElement = data.element;\n\n if (firstElement && firstElement.getAttribute) {\n if (firstElement.getAttribute('data-select2-tag') === 'true') {\n $firstOption.trigger('mouseenter');\n\n return;\n }\n }\n }\n\n decorated.call(this);\n };\n\n return TagsSearchHighlight;\n});\n\nS2.define('select2/i18n/en',[],function () {\n // English\n return {\n errorLoading: function () {\n return 'The results could not be loaded.';\n },\n inputTooLong: function (args) {\n var overChars = args.input.length - args.maximum;\n\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n\n var message = 'Please enter ' + remainingChars + ' or more characters';\n\n return message;\n },\n loadingMore: function () {\n return 'Loading more results\u2026';\n },\n maximumSelected: function (args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching\u2026';\n },\n removeAllItems: function () {\n return 'Remove all items';\n },\n removeItem: function () {\n return 'Remove item';\n },\n search: function() {\n return 'Search';\n }\n };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/selectionCss',\n './selection/eventRelay',\n\n './utils',\n './translation',\n './diacritics',\n\n './data/select',\n './data/array',\n './data/ajax',\n './data/tags',\n './data/tokenizer',\n './data/minimumInputLength',\n './data/maximumInputLength',\n './data/maximumSelectionLength',\n\n './dropdown',\n './dropdown/search',\n './dropdown/hidePlaceholder',\n './dropdown/infiniteScroll',\n './dropdown/attachBody',\n './dropdown/minimumResultsForSearch',\n './dropdown/selectOnClose',\n './dropdown/closeOnSelect',\n './dropdown/dropdownCss',\n './dropdown/tagsSearchHighlight',\n\n './i18n/en'\n], function ($,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, SelectionCSS, EventRelay,\n\n Utils, Translation, DIACRITICS,\n\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n DropdownCSS, TagsSearchHighlight,\n\n EnglishTranslation) {\n function Defaults () {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MinimumInputLength\n );\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumInputLength\n );\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumSelectionLength\n );\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Tokenizer\n );\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n InfiniteScroll\n );\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n HidePlaceholder\n );\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n SelectOnClose\n );\n }\n\n if (options.tags) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n TagsSearchHighlight\n );\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n MinimumResultsForSearch\n );\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n CloseOnSelect\n );\n }\n\n if (options.dropdownCssClass != null) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n DropdownCSS\n );\n }\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n AttachBody\n );\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n }\n\n // Add the placeholder mixin if a placeholder was specified\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n Placeholder\n );\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n AllowClear\n );\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionSearch\n );\n }\n\n if (options.selectionCssClass != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionCSS\n );\n }\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n EventRelay\n );\n }\n\n // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n options.language = this._resolveLanguage(options.language);\n\n // Always fall back to English since it will always be complete\n options.language.push('en');\n\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n\n options.translations = this._processTranslations(\n options.language,\n options.debug\n );\n\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics (text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher (params, data) {\n // Always return the object if there is nothing to compare\n if (params.term == null || params.term.trim() === '') {\n return data;\n }\n\n // Do a recursive check for options with children\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data);\n\n // Check each child of the option\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n\n var matches = matcher(params, child);\n\n // If there wasn't a match, remove the object in the array\n if (matches == null) {\n match.children.splice(c, 1);\n }\n }\n\n // If any children matched, return the new object\n if (match.children.length > 0) {\n return match;\n }\n\n // If there were no matching children, check just the plain object\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase();\n\n // Check if the text contains the term\n if (original.indexOf(term) > -1) {\n return data;\n }\n\n // If it doesn't contain the term, don't return anything\n return null;\n }\n\n this.defaults = {\n amdLanguageBase: './i18n/',\n autocomplete: 'off',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function (data) {\n return data;\n },\n templateResult: function (result) {\n return result.text;\n },\n templateSelection: function (selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n\n Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n\n var languages = Array.prototype.concat.call(\n this._resolveLanguage(elementLanguage),\n this._resolveLanguage(optionLanguage),\n this._resolveLanguage(defaultLanguage),\n this._resolveLanguage(parentLanguage)\n );\n\n options.language = languages;\n\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!Array.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n\n var language = languages[l];\n\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files\n if (debug && window.console && console.warn) {\n console.warn(\n 'Select2: The language file for \"' + language + '\" could ' +\n 'not be automatically loaded. A fallback will be used instead.'\n );\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n\n return defaults;\n});\n\nS2.define('select2/options',[\n 'jquery',\n './defaults',\n './utils'\n], function ($, Defaults, Utils) {\n function Options (options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n this.options.autocomplete = $e.prop('autocomplete');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n 'removed in future versions of Select2.'\n );\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\n '`data-ajax--url` and support for the old attribute will be removed' +\n ' in future versions of Select2.'\n );\n }\n\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n\n var dataset = {};\n\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n }\n\n // Pre-load all of the attributes which are prefixed with `data-`\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length);\n\n // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n var dataValue = Utils.GetData($e[0], dataName);\n\n // camelCase the attribute name to match the spec\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n // Store the data attribute contents into the dataset since\n dataset[camelDataName] = dataValue;\n }\n }\n\n // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n }\n\n // Prefer our internal data cache if it exists\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n data = Utils._convertData(data);\n\n for (var key in data) {\n if (excludedData.indexOf(key) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n});\n\nS2.define('select2/core',[\n 'jquery',\n './options',\n './utils',\n './keys'\n], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n\n this.id = this._generateId($element);\n\n options = options || {};\n\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1');\n\n // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n\n this.selection.position(this.$selection, $container);\n\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n\n this.dropdown.position(this.$dropdown, $container);\n\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n\n this.results.position(this.$results, this.$dropdown);\n\n // Bind events\n\n var self = this;\n\n // Bind the container to all of the adapters\n this._bindAdapters();\n\n // Register any DOM event handlers\n this._registerDomEvents();\n\n // Register any internal event handlers\n this._registerDataEvents();\n this._registerSelectionEvents();\n this._registerDropdownEvents();\n this._registerResultsEvents();\n this._registerEvents();\n\n // Set the initial state\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n });\n\n // Hide the original select\n $element[0].classList.add('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof(style) !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n this._observer = new window.MutationObserver(function (mutations) {\n self._syncA();\n self._syncS(mutations);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n\n this.selection.on('*', function (name, params) {\n if (nonRelayEvents.indexOf(name) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n\n this.on('open', function () {\n self.$container[0].classList.add('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container[0].classList.remove('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container[0].classList.remove('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container[0].classList.add('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container[0].classList.remove('select2-container--focus');\n });\n\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) {\n self.close(evt);\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n self.trigger('results:select', {});\n\n evt.preventDefault();\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n self.trigger('results:toggle', {});\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\n (key === KEYS.DOWN && evt.altKey)) {\n self.open();\n\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (mutations) {\n var self = this;\n\n if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n return true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n return true;\n } else if (Array.isArray(mutations)) {\n return mutations.some(function (mutation) {\n return self._isChangeMutation(mutation);\n });\n }\n\n return false;\n };\n\n Select2.prototype._syncSubtree = function (mutations) {\n var changed = this._isChangeMutation(mutations);\n var self = this;\n\n // Only re-pull the data if we think there is a change\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting',\n 'clear': 'clearing'\n };\n\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n if (this.isDisabled()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', { originalEvent : evt });\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container[0].classList.contains('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container[0].classList.contains('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container[0].classList.add('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n ' instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') &&\n arguments.length > 0 && window.console && console.warn) {\n console.warn(\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n 'should consider setting the value instead using `$element.val()`.'\n );\n }\n\n var data = [];\n\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n ' removed in later Select2 versions. Use $element.val() instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if (Array.isArray(newVal)) {\n newVal = newVal.map(function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n Utils.RemoveData(this.$container[0]);\n this.$container.remove();\n\n this._observer.disconnect();\n this._observer = null;\n\n this._syncA = null;\n this._syncS = null;\n\n this.$element.off('.select2');\n this.$element.attr('tabindex',\n Utils.GetData(this.$element[0], 'old-tabindex'));\n\n this.$element[0].classList.remove('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $(\n '<span class=\"select2 select2-container\">' +\n '<span class=\"selection\"></span>' +\n '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n '</span>'\n );\n\n $container.attr('dir', this.options.get('dir'));\n\n this.$container = $container;\n\n this.$container[0].classList\n .add('select2-container--' + this.options.get('theme'));\n\n Utils.StoreData($container[0], 'element', this.$element);\n\n return $container;\n };\n\n return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults',\n './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\n\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if (thisMethods.indexOf(options) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n});\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n}());\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n}));\n", "/*\nTurbo 7.2.4\nCopyright \u00A9 2022 37signals LLC\n */\n(function () {\n if (window.Reflect === undefined ||\n window.customElements === undefined ||\n window.customElements.polyfillWrapFlushCallback) {\n return;\n }\n const BuiltInHTMLElement = HTMLElement;\n const wrapperForTheName = {\n HTMLElement: function HTMLElement() {\n return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n },\n };\n window.HTMLElement = wrapperForTheName[\"HTMLElement\"];\n HTMLElement.prototype = BuiltInHTMLElement.prototype;\n HTMLElement.prototype.constructor = HTMLElement;\n Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n if (typeof prototype.requestSubmit == \"function\") return\n\n prototype.requestSubmit = function(submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n(function () {\n if (\"submitter\" in Event.prototype)\n return;\n let prototype;\n if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n prototype = window.SubmitEvent.prototype;\n }\n else if (\"SubmitEvent\" in window) {\n return;\n }\n else {\n prototype = window.Event.prototype;\n }\n addEventListener(\"click\", clickCaptured, true);\n Object.defineProperty(prototype, \"submitter\", {\n get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target);\n }\n },\n });\n})();\n\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n FrameLoadingStyle[\"eager\"] = \"eager\";\n FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n constructor() {\n super();\n this.loaded = Promise.resolve();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n static get observedAttributes() {\n return [\"disabled\", \"complete\", \"loading\", \"src\"];\n }\n connectedCallback() {\n this.delegate.connect();\n }\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n reload() {\n return this.delegate.sourceURLReloaded();\n }\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n }\n else if (name == \"complete\") {\n this.delegate.completeChanged();\n }\n else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n }\n else {\n this.delegate.disabledChanged();\n }\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n }\n else {\n this.removeAttribute(\"src\");\n }\n }\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n }\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n }\n else {\n this.removeAttribute(\"loading\");\n }\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n }\n else {\n this.removeAttribute(\"disabled\");\n }\n }\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\");\n }\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n }\n else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n get complete() {\n return !this.delegate.isLoading;\n }\n get isActive() {\n return this.ownerDocument === document && !this.isPreview;\n }\n get isPreview() {\n var _a, _b;\n return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n }\n}\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy;\n default:\n return FrameLoadingStyle.eager;\n }\n}\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1);\n }\n else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n return anchorMatch[1];\n }\n}\nfunction getAction(form, submitter) {\n const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n return expandURL(action);\n}\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n get succeeded() {\n return this.response.ok;\n }\n get failed() {\n return !this.succeeded;\n }\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499;\n }\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599;\n }\n get redirected() {\n return this.response.redirected;\n }\n get location() {\n return expandURL(this.response.url);\n }\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n }\n get statusCode() {\n return this.response.status;\n }\n get contentType() {\n return this.header(\"Content-Type\");\n }\n get responseText() {\n return this.response.clone().text();\n }\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text();\n }\n else {\n return Promise.resolve(undefined);\n }\n }\n header(name) {\n return this.response.headers.get(name);\n }\n}\n\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\n\nfunction activateScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element;\n }\n else {\n const createdScriptElement = document.createElement(\"script\");\n const cspNonce = getMetaContent(\"csp-nonce\");\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement;\n }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of sourceElement.attributes) {\n destinationElement.setAttribute(name, value);\n }\n}\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content;\n}\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n const event = new CustomEvent(eventName, {\n cancelable,\n bubbles: true,\n detail,\n });\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n }\n else {\n document.documentElement.dispatchEvent(event);\n }\n return event;\n}\nfunction nextAnimationFrame() {\n return new Promise((resolve) => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value;\n }, \"\");\n}\nfunction uuid() {\n return Array.from({ length: 36 })\n .map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\";\n }\n else if (i == 14) {\n return \"4\";\n }\n else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16);\n }\n else {\n return Math.floor(Math.random() * 15).toString(16);\n }\n })\n .join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n if (typeof value == \"string\")\n return value;\n }\n return null;\n}\nfunction hasAttribute(attributeName, ...elements) {\n return elements.some((element) => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\nfunction clearBusyState(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n element.removeAttribute(\"aria-busy\");\n }\n}\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n return new Promise((resolve) => {\n const onComplete = () => {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n element.addEventListener(\"load\", onComplete, { once: true });\n element.addEventListener(\"error\", onComplete, { once: true });\n setTimeout(resolve, timeoutInMilliseconds);\n });\n}\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n}\nfunction getVisitAction(...elements) {\n const action = getAttribute(\"data-turbo-action\", ...elements);\n return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content;\n}\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n document.head.appendChild(element);\n }\n element.setAttribute(\"content\", content);\n return element;\n}\n\nvar FetchMethod;\n(function (FetchMethod) {\n FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get;\n case \"post\":\n return FetchMethod.post;\n case \"put\":\n return FetchMethod.put;\n case \"patch\":\n return FetchMethod.patch;\n case \"delete\":\n return FetchMethod.delete;\n }\n}\nclass FetchRequest {\n constructor(delegate, method, location, body = new URLSearchParams(), target = null) {\n this.abortController = new AbortController();\n this.resolveRequestPromise = (_value) => { };\n this.delegate = delegate;\n this.method = method;\n this.headers = this.defaultHeaders;\n this.body = body;\n this.url = location;\n this.target = target;\n }\n get location() {\n return this.url;\n }\n get params() {\n return this.url.searchParams;\n }\n get entries() {\n return this.body ? Array.from(this.body.entries()) : [];\n }\n cancel() {\n this.abortController.abort();\n }\n async perform() {\n var _a, _b;\n const { fetchOptions } = this;\n (_b = (_a = this.delegate).prepareHeadersForRequest) === null || _b === void 0 ? void 0 : _b.call(_a, this.headers, this);\n await this.allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n const response = await fetch(this.url.href, fetchOptions);\n return await this.receive(response);\n }\n catch (error) {\n if (error.name !== \"AbortError\") {\n if (this.willDelegateErrorHandling(error)) {\n this.delegate.requestErrored(this, error);\n }\n throw error;\n }\n }\n finally {\n this.delegate.requestFinished(this);\n }\n }\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: { fetchResponse },\n target: this.target,\n });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n }\n else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n }\n else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse;\n }\n get fetchOptions() {\n var _a;\n return {\n method: FetchMethod[this.method].toUpperCase(),\n credentials: \"same-origin\",\n headers: this.headers,\n redirect: \"follow\",\n body: this.isIdempotent ? null : this.body,\n signal: this.abortSignal,\n referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href,\n };\n }\n get defaultHeaders() {\n return {\n Accept: \"text/html, application/xhtml+xml\",\n };\n }\n get isIdempotent() {\n return this.method == FetchMethod.get;\n }\n get abortSignal() {\n return this.abortController.signal;\n }\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n async allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise((resolve) => (this.resolveRequestPromise = resolve));\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.resolveRequestPromise,\n },\n target: this.target,\n });\n if (event.defaultPrevented)\n await requestInterception;\n }\n willDelegateErrorHandling(error) {\n const event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: { request: this, error: error },\n });\n return !event.defaultPrevented;\n }\n}\n\nclass AppearanceObserver {\n constructor(delegate, element) {\n this.started = false;\n this.intersect = (entries) => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n };\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n}\n\nclass StreamMessage {\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message));\n }\n else {\n return message;\n }\n }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n element.replaceWith(streamElement);\n }\n return fragment;\n}\n\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n FormEnctype[\"multipart\"] = \"multipart/form-data\";\n FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FormEnctype.multipart:\n return FormEnctype.multipart;\n case FormEnctype.plain:\n return FormEnctype.plain;\n default:\n return FormEnctype.urlEncoded;\n }\n}\nclass FormSubmission {\n constructor(delegate, formElement, submitter, mustRedirect = false) {\n this.state = FormSubmissionState.initialized;\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.formData = buildFormData(formElement, submitter);\n this.location = expandURL(this.action);\n if (this.method == FetchMethod.get) {\n mergeFormDataEntries(this.location, [...this.body.entries()]);\n }\n this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n this.mustRedirect = mustRedirect;\n }\n static confirmMethod(message, _element, _submitter) {\n return Promise.resolve(confirm(message));\n }\n get method() {\n var _a;\n const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n }\n get action() {\n var _a;\n const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n return this.submitter.getAttribute(\"formaction\") || \"\";\n }\n else {\n return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n }\n }\n get body() {\n if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n return new URLSearchParams(this.stringFormData);\n }\n else {\n return this.formData;\n }\n }\n get enctype() {\n var _a;\n return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n }\n get isIdempotent() {\n return this.fetchRequest.isIdempotent;\n }\n get stringFormData() {\n return [...this.formData].reduce((entries, [name, value]) => {\n return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n }, []);\n }\n async start() {\n const { initialized, requesting } = FormSubmissionState;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n if (typeof confirmationMessage === \"string\") {\n const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return;\n }\n }\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform();\n }\n }\n stop() {\n const { stopping, stopped } = FormSubmissionState;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true;\n }\n }\n prepareHeadersForRequest(headers, request) {\n if (!request.isIdempotent) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n headers[\"X-CSRF-Token\"] = token;\n }\n }\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n var _a;\n this.state = FormSubmissionState.waiting;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: { formSubmission: this },\n });\n this.delegate.formSubmissionStarted(this);\n }\n requestPreventedHandlingResponse(request, response) {\n this.result = { success: response.succeeded, fetchResponse: response };\n }\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n }\n else {\n this.state = FormSubmissionState.receiving;\n this.result = { success: true, fetchResponse: response };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n requestFailedWithResponse(request, response) {\n this.result = { success: false, fetchResponse: response };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n requestErrored(request, error) {\n this.result = { success: false, error };\n this.delegate.formSubmissionErrored(this, error);\n }\n requestFinished(_request) {\n var _a;\n this.state = FormSubmissionState.stopped;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: Object.assign({ formSubmission: this }, this.result),\n });\n this.delegate.formSubmissionFinished(this);\n }\n requestMustRedirect(request) {\n return !request.isIdempotent && this.mustRedirect;\n }\n requestAcceptsTurboStreamResponse(request) {\n return !request.isIdempotent || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n }\n}\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n if (name) {\n formData.append(name, value || \"\");\n }\n return formData;\n}\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined;\n }\n }\n}\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n const searchParams = new URLSearchParams();\n for (const [name, value] of entries) {\n if (value instanceof File)\n continue;\n searchParams.append(name, value);\n }\n url.search = searchParams.toString();\n return url;\n}\n\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n get activeElement() {\n return this.element.ownerDocument.activeElement;\n }\n get children() {\n return [...this.element.children];\n }\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null;\n }\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n }\n get isConnected() {\n return this.element.isConnected;\n }\n get firstAutofocusableElement() {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n if (element.closest(inertDisabledOrHidden) == null)\n return element;\n else\n continue;\n }\n return null;\n }\n get permanentElements() {\n return queryPermanentElementsAll(this.element);\n }\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id);\n }\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n for (const currentPermanentElement of this.permanentElements) {\n const { id } = currentPermanentElement;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n return permanentElementMap;\n }\n}\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\n\nclass FormSubmitObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n };\n this.submitBubbled = ((event) => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n if (form &&\n submissionDoesNotDismissDialog(form, submitter) &&\n submissionDoesNotTargetIFrame(form, submitter) &&\n this.delegate.willSubmitForm(form, submitter)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n });\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n for (const element of document.getElementsByName(target)) {\n if (element instanceof HTMLIFrameElement)\n return false;\n }\n return true;\n}\n\nclass View {\n constructor(delegate, element) {\n this.resolveRenderPromise = (_value) => { };\n this.resolveInterceptionPromise = (_value) => { };\n this.delegate = delegate;\n this.element = element;\n }\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n }\n else {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n }\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n scrollToElement(element) {\n element.scrollIntoView();\n }\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n }\n else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n scrollToPosition({ x, y }) {\n this.scrollRoot.scrollTo(x, y);\n }\n scrollToTop() {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n get scrollRoot() {\n return window;\n }\n async render(renderer) {\n const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n if (shouldRender) {\n try {\n this.renderPromise = new Promise((resolve) => (this.resolveRenderPromise = resolve));\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n const renderInterception = new Promise((resolve) => (this.resolveInterceptionPromise = resolve));\n const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n if (!immediateRender)\n await renderInterception;\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n }\n finally {\n delete this.renderer;\n this.resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n }\n else {\n this.invalidate(renderer.reloadReason);\n }\n }\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n }\n else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\n\nclass FrameView extends View {\n invalidate() {\n this.element.innerHTML = \"\";\n }\n get snapshot() {\n return new Snapshot(this.element);\n }\n}\n\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.clickBubbled = (event) => {\n if (this.respondsToEventTarget(event.target)) {\n this.clickEvent = event;\n }\n else {\n delete this.clickEvent;\n }\n };\n this.linkClicked = ((event) => {\n if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n delete this.clickEvent;\n });\n this.willVisit = ((_event) => {\n delete this.clickEvent;\n });\n this.delegate = delegate;\n this.element = element;\n }\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n respondsToEventTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n return element && element.closest(\"turbo-frame, html\") == this.element;\n }\n}\n\nclass LinkClickObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n };\n this.clickBubbled = (event) => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = (event.composedPath && event.composedPath()[0]) || event.target;\n const link = this.findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link)) {\n const location = this.getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n };\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n clickEventIsSignificant(event) {\n return !((event.target && event.target.isContentEditable) ||\n event.defaultPrevented ||\n event.which > 1 ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey);\n }\n findLinkFromClickTarget(target) {\n if (target instanceof Element) {\n return target.closest(\"a[href]:not([target^=_]):not([download])\");\n }\n }\n getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\");\n }\n}\nfunction doesNotTargetIFrame(anchor) {\n for (const element of document.getElementsByName(anchor.target)) {\n if (element instanceof HTMLIFrameElement)\n return false;\n }\n return true;\n}\n\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n }\n stop() {\n this.linkInterceptor.stop();\n }\n willFollowLinkToLocation(link, location, originalEvent) {\n return (this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n link.hasAttribute(\"data-turbo-method\"));\n }\n followedLinkToLocation(link, location) {\n const action = location.href;\n const form = document.createElement(\"form\");\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action);\n form.setAttribute(\"hidden\", \"\");\n const method = link.getAttribute(\"data-turbo-method\");\n if (method)\n form.setAttribute(\"method\", method);\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame)\n form.setAttribute(\"data-turbo-frame\", turboFrame);\n const turboAction = link.getAttribute(\"data-turbo-action\");\n if (turboAction)\n form.setAttribute(\"data-turbo-action\", turboAction);\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm)\n form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream)\n form.setAttribute(\"data-turbo-stream\", \"\");\n this.delegate.submittedFormLinkToLocation(link, location, form);\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n requestAnimationFrame(() => form.requestSubmit());\n }\n}\n\nclass Bardo {\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n static preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n callback();\n bardo.leave();\n }\n enter() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n leave() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement] = this.permanentElementMap[id];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n }\n getPlaceholderById(id) {\n return this.placeholders.find((element) => element.content == id);\n }\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element;\n}\n\nclass Renderer {\n constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n this.activeElement = null;\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = renderElement;\n this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n }\n get shouldRender() {\n return true;\n }\n get reloadReason() {\n return;\n }\n prepareToRender() {\n return;\n }\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n preservingPermanentElements(callback) {\n Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n focusFirstAutofocusableElement() {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (elementIsFocusable(element)) {\n element.focus();\n }\n }\n enteringBardo(currentPermanentElement) {\n if (this.activeElement)\n return;\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n this.activeElement = this.currentSnapshot.activeElement;\n }\n }\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n this.activeElement.focus();\n this.activeElement = null;\n }\n }\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n }\n get currentElement() {\n return this.currentSnapshot.element;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n }\n}\nfunction elementIsFocusable(element) {\n return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n static renderElement(currentElement, newElement) {\n var _a;\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n const frameElement = newElement;\n const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n get shouldRender() {\n return true;\n }\n async render() {\n await nextAnimationFrame();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextAnimationFrame();\n this.focusFirstAutofocusableElement();\n await nextAnimationFrame();\n this.activateScriptElements();\n }\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n if (element) {\n element.scrollIntoView({ block, behavior });\n return true;\n }\n }\n return false;\n }\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\");\n }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value;\n }\n else {\n return defaultValue;\n }\n}\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value;\n }\n else {\n return defaultValue;\n }\n}\n\nclass ProgressBar {\n constructor() {\n this.hiding = false;\n this.value = 0;\n this.visible = false;\n this.trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n };\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n static get defaultCSS() {\n return unindent `\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 2147483647;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `;\n }\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\n }\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n if (this.cspNonce) {\n element.nonce = this.cspNonce;\n }\n return element;\n }\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element;\n }\n get cspNonce() {\n return getMetaContent(\"csp-nonce\");\n }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n constructor() {\n super(...arguments);\n this.detailsByOuterHTML = this.children\n .filter((element) => !elementIsNoscript(element))\n .map((element) => elementWithoutNonce(element))\n .reduce((result, element) => {\n const { outerHTML } = element;\n const details = outerHTML in result\n ? result[outerHTML]\n : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: [],\n };\n return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n }, {});\n }\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n .join(\"\");\n }\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n }\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n }\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n .filter(({ type }) => type == matchedType)\n .map(({ elements: [element] }) => element);\n }\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n if (type == null && !tracked) {\n return [...result, ...elements];\n }\n else if (elements.length > 1) {\n return [...result, ...elements.slice(1)];\n }\n else {\n return result;\n }\n }, []);\n }\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null;\n }\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { elements: [element], } = this.detailsByOuterHTML[outerHTML];\n return elementIsMetaElementWithName(element, name) ? element : result;\n }, undefined);\n }\n}\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\";\n }\n else if (elementIsStylesheet(element)) {\n return \"stylesheet\";\n }\n}\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n const tagName = element.localName;\n return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n const tagName = element.localName;\n return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n const tagName = element.localName;\n return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n return element;\n}\n\nclass PageSnapshot extends Snapshot {\n constructor(element, headSnapshot) {\n super(element);\n this.headSnapshot = headSnapshot;\n }\n static fromHTMLString(html = \"\") {\n return this.fromDocument(parseHTMLDocument(html));\n }\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument);\n }\n static fromDocument({ head, body }) {\n return new this(body, new HeadSnapshot(head));\n }\n clone() {\n const clonedElement = this.element.cloneNode(true);\n const selectElements = this.element.querySelectorAll(\"select\");\n const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n for (const [index, source] of selectElements.entries()) {\n const clone = clonedSelectElements[index];\n for (const option of clone.selectedOptions)\n option.selected = false;\n for (const option of source.selectedOptions)\n clone.options[option.index].selected = true;\n }\n for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n clonedPasswordInput.value = \"\";\n }\n return new PageSnapshot(clonedElement, this.headSnapshot);\n }\n get headElement() {\n return this.headSnapshot.element;\n }\n get rootLocation() {\n var _a;\n const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n get cacheControlValue() {\n return this.getSetting(\"cache-control\");\n }\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\";\n }\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\";\n }\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\";\n }\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`);\n }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n TimingMetric[\"visitStart\"] = \"visitStart\";\n TimingMetric[\"requestStart\"] = \"requestStart\";\n TimingMetric[\"requestEnd\"] = \"requestEnd\";\n TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n VisitState[\"initialized\"] = \"initialized\";\n VisitState[\"started\"] = \"started\";\n VisitState[\"canceled\"] = \"canceled\";\n VisitState[\"failed\"] = \"failed\";\n VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => { },\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n constructor(delegate, location, restorationIdentifier, options = {}) {\n this.identifier = uuid();\n this.timingMetrics = {};\n this.followedRedirect = false;\n this.historyChanged = false;\n this.scrolled = false;\n this.shouldCacheSnapshot = true;\n this.acceptsStreamResponse = false;\n this.snapshotCached = false;\n this.state = VisitState.initialized;\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse, } = Object.assign(Object.assign({}, defaultOptions), options);\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshot = snapshot;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.updateHistory = updateHistory;\n this.scrolled = !willRender;\n this.shouldCacheSnapshot = shouldCacheSnapshot;\n this.acceptsStreamResponse = acceptsStreamResponse;\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n }\n get silent() {\n return this.isSamePage;\n }\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.state = VisitState.completed;\n this.followRedirect();\n if (!this.followedRedirect) {\n this.adapter.visitCompleted(this);\n this.delegate.visitCompleted(this);\n }\n }\n }\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n }\n }\n changeHistory() {\n var _a;\n if (!this.historyChanged && this.updateHistory) {\n const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n const method = getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n }\n else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n recordResponse(response = this.response) {\n this.response = response;\n if (response) {\n const { statusCode } = response;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n }\n else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n loadResponse() {\n if (this.response) {\n const { statusCode, responseHTML } = this.response;\n this.render(async () => {\n if (this.shouldCacheSnapshot)\n this.cacheSnapshot();\n if (this.view.renderPromise)\n await this.view.renderPromise;\n if (isSuccessful(statusCode) && responseHTML != null) {\n await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n this.performScroll();\n this.adapter.visitRendered(this);\n this.complete();\n }\n else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot;\n }\n }\n }\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML);\n }\n }\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null;\n }\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage) {\n this.adapter.visitRendered(this);\n }\n else {\n if (this.view.renderPromise)\n await this.view.renderPromise;\n await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n this.performScroll();\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n followRedirect() {\n var _a;\n if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: \"replace\",\n response: this.response,\n });\n this.followedRedirect = true;\n }\n }\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.performScroll();\n this.changeHistory();\n this.adapter.visitRendered(this);\n });\n }\n }\n prepareHeadersForRequest(headers, request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted() {\n this.startRequest();\n }\n requestPreventedHandlingResponse(_request, _response) { }\n async requestSucceededWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected,\n });\n }\n else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected,\n });\n }\n else {\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false,\n });\n }\n requestFinished() {\n this.finishRequest();\n }\n performScroll() {\n if (!this.scrolled && !this.view.forceReloaded) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n }\n else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n this.scrolled = true;\n }\n }\n scrollToRestoredPosition() {\n const { scrollPosition } = this.restorationData;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true;\n }\n }\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true;\n }\n }\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n getTimingMetrics() {\n return Object.assign({}, this.timingMetrics);\n }\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n }\n hasPreloadedResponse() {\n return typeof this.response == \"object\";\n }\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false;\n }\n else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot();\n }\n else {\n return this.willRender;\n }\n }\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n async render(callback) {\n this.cancelRender();\n await new Promise((resolve) => {\n this.frame = requestAnimationFrame(() => resolve());\n });\n await callback();\n delete this.frame;\n }\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n constructor(session) {\n this.progressBar = new ProgressBar();\n this.showProgressBar = () => {\n this.progressBar.show();\n };\n this.session = session;\n }\n visitProposedToLocation(location, options) {\n this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n }\n visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n }\n else {\n this.showProgressBar();\n }\n }\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload({\n reason: \"request_failed\",\n context: {\n statusCode,\n },\n });\n default:\n return visit.loadResponse();\n }\n }\n visitRequestFinished(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n visitCompleted(_visit) { }\n pageInvalidated(reason) {\n this.reload(reason);\n }\n visitFailed(_visit) { }\n visitRendered(_visit) { }\n formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n reload(reason) {\n var _a;\n dispatch(\"turbo:reload\", { detail: reason });\n window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n }\n get navigator() {\n return this.session.navigator;\n }\n}\n\nclass CacheObserver {\n constructor() {\n this.started = false;\n this.removeStaleElements = ((_event) => {\n const staleElements = [...document.querySelectorAll('[data-turbo-cache=\"false\"]')];\n for (const element of staleElements) {\n element.remove();\n }\n });\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n }\n }\n}\n\nclass FrameRedirector {\n constructor(session, element) {\n this.session = session;\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formSubmitObserver = new FormSubmitObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n shouldInterceptLinkClick(element, _location, _event) {\n return this.shouldRedirect(element);\n }\n linkClickIntercepted(element, url, event) {\n const frame = this.findFrameElement(element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url, event);\n }\n }\n willSubmitForm(element, submitter) {\n return (element.closest(\"turbo-frame\") == null &&\n this.shouldSubmit(element, submitter) &&\n this.shouldRedirect(element, submitter));\n }\n formSubmitted(element, submitter) {\n const frame = this.findFrameElement(element, submitter);\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n shouldSubmit(form, submitter) {\n var _a;\n const action = getAction(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n }\n shouldRedirect(element, submitter) {\n const isNavigatable = element instanceof HTMLFormElement\n ? this.session.submissionIsNavigatable(element, submitter)\n : this.session.elementIsNavigatable(element);\n if (isNavigatable) {\n const frame = this.findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false;\n }\n else {\n return false;\n }\n }\n findFrameElement(element, submitter) {\n const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame;\n }\n }\n }\n}\n\nclass History {\n constructor(delegate) {\n this.restorationIdentifier = uuid();\n this.restorationData = {};\n this.started = false;\n this.pageLoaded = false;\n this.onPopState = (event) => {\n if (this.shouldHandlePopState()) {\n const { turbo } = event.state || {};\n if (turbo) {\n this.location = new URL(window.location.href);\n const { restorationIdentifier } = turbo;\n this.restorationIdentifier = restorationIdentifier;\n this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n }\n }\n };\n this.onPageLoad = async (_event) => {\n await nextMicrotask();\n this.pageLoaded = true;\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n update(method, location, restorationIdentifier = uuid()) {\n const state = { turbo: { restorationIdentifier } };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {};\n }\n updateRestorationData(additionalData) {\n const { restorationIdentifier } = this;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n }\n assumeControlOfScrollRestoration() {\n var _a;\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n shouldHandlePopState() {\n return this.pageIsLoaded();\n }\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\";\n }\n}\n\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n proposeVisit(location, options = {}) {\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n else {\n window.location.href = location.toString();\n }\n }\n }\n startVisit(locatable, restorationIdentifier, options = {}) {\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n this.currentVisit.start();\n }\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n this.formSubmission.start();\n }\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n formSubmissionStarted(formSubmission) {\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const shouldCacheSnapshot = formSubmission.method == FetchMethod.get;\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n const { statusCode, redirected } = fetchResponse;\n const action = this.getActionForFormSubmission(formSubmission);\n const visitOptions = {\n action,\n shouldCacheSnapshot,\n response: { statusCode, responseHTML, redirected },\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot, this.currentVisit);\n }\n else {\n await this.view.renderPage(snapshot, false, true, this.currentVisit);\n }\n this.view.scrollToTop();\n this.view.clearSnapshotCache();\n }\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished(formSubmission) {\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n }\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n return (action !== \"replace\" &&\n getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n (isRestorationToTop || (anchor != null && anchor !== currentAnchor)));\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n getActionForFormSubmission(formSubmission) {\n const { formElement, submitter } = formSubmission;\n const action = getAttribute(\"data-turbo-action\", submitter, formElement);\n return isAction(action) ? action : \"advance\";\n }\n}\n\nvar PageStage;\n(function (PageStage) {\n PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n constructor(delegate) {\n this.stage = PageStage.initial;\n this.started = false;\n this.interpretReadyState = () => {\n const { readyState } = this;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n }\n else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n };\n this.pageWillUnload = () => {\n this.delegate.pageWillUnload();\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n get readyState() {\n return document.readyState;\n }\n}\n\nclass ScrollObserver {\n constructor(delegate) {\n this.started = false;\n this.onScroll = () => {\n this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\n\nclass StreamMessageRenderer {\n render({ fragment }) {\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n }\n enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n leavingBardo() { }\n}\nfunction getPermanentElementMapForFragment(fragment) {\n const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n const permanentElementMap = {};\n for (const permanentElementInDocument of permanentElementsInDocument) {\n const { id } = permanentElementInDocument;\n for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n if (elementInStream) {\n permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n }\n }\n }\n return permanentElementMap;\n}\n\nclass StreamObserver {\n constructor(delegate) {\n this.sources = new Set();\n this.started = false;\n this.inspectFetchResponse = ((event) => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n });\n this.receiveMessageEvent = (event) => {\n if (this.started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n streamSourceIsConnected(source) {\n return this.sources.has(source);\n }\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n}\nfunction fetchResponseFromEvent(event) {\n var _a;\n const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse;\n }\n}\nfunction fetchResponseIsStream(response) {\n var _a;\n const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const { documentElement, body } = document;\n documentElement.replaceChild(newElement, body);\n }\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n replaceHeadAndBody() {\n const { documentElement, head } = document;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = activateScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n get newHead() {\n return this.newSnapshot.headSnapshot.element;\n }\n get scriptElements() {\n return document.documentElement.querySelectorAll(\"script\");\n }\n}\n\nclass PageRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n if (document.body && newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(newElement);\n }\n else {\n document.documentElement.appendChild(newElement);\n }\n }\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n }\n get reloadReason() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\",\n };\n }\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\",\n };\n }\n }\n async prepareToRender() {\n await this.mergeHead();\n }\n async render() {\n if (this.willRender) {\n this.replaceBody();\n }\n }\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot;\n }\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n async mergeHead() {\n const newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n this.removeCurrentHeadProvisionalElements();\n this.copyNewHeadProvisionalElements();\n await newStylesheetElements;\n }\n replaceBody() {\n this.preservingPermanentElements(() => {\n this.activateNewBody();\n this.assignNewBody();\n });\n }\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n }\n async copyNewHeadStylesheetElements() {\n const loadingElements = [];\n for (const element of this.newHeadStylesheetElements) {\n loadingElements.push(waitForLoad(element));\n document.head.appendChild(element);\n }\n await Promise.all(loadingElements);\n }\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(activateScriptElement(element));\n }\n }\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n assignNewBody() {\n this.renderElement(this.currentElement, this.newElement);\n }\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements;\n }\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements;\n }\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\");\n }\n}\n\nclass SnapshotCache {\n constructor(size) {\n this.keys = [];\n this.snapshots = {};\n this.size = size;\n }\n has(location) {\n return toCacheKey(location) in this.snapshots;\n }\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot;\n }\n }\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot;\n }\n clear() {\n this.snapshots = {};\n }\n read(location) {\n return this.snapshots[toCacheKey(location)];\n }\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1)\n this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\n\nclass PageView extends View {\n constructor() {\n super(...arguments);\n this.snapshotCache = new SnapshotCache(10);\n this.lastRenderedLocation = new URL(location.href);\n this.forceReloaded = false;\n }\n renderPage(snapshot, isPreview = false, willRender = true, visit) {\n const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n }\n else {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n }\n return this.render(renderer);\n }\n renderError(snapshot, visit) {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n return this.render(renderer);\n }\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n async cacheSnapshot(snapshot = this.snapshot) {\n if (snapshot.isCacheable) {\n this.delegate.viewWillCacheSnapshot();\n const { lastRenderedLocation: location } = this;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot;\n }\n }\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location);\n }\n get snapshot() {\n return PageSnapshot.fromElement(this.element);\n }\n}\n\nclass Preloader {\n constructor(delegate) {\n this.selector = \"a[data-turbo-preload]\";\n this.delegate = delegate;\n }\n get snapshotCache() {\n return this.delegate.navigator.view.snapshotCache;\n }\n start() {\n if (document.readyState === \"loading\") {\n return document.addEventListener(\"DOMContentLoaded\", () => {\n this.preloadOnLoadLinksForView(document.body);\n });\n }\n else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n preloadOnLoadLinksForView(element) {\n for (const link of element.querySelectorAll(this.selector)) {\n this.preloadURL(link);\n }\n }\n async preloadURL(link) {\n const location = new URL(link.href);\n if (this.snapshotCache.has(location)) {\n return;\n }\n try {\n const response = await fetch(location.toString(), { headers: { \"VND.PREFETCH\": \"true\", Accept: \"text/html\" } });\n const responseText = await response.text();\n const snapshot = PageSnapshot.fromHTMLString(responseText);\n this.snapshotCache.put(location, snapshot);\n }\n catch (_) {\n }\n }\n}\n\nclass Session {\n constructor() {\n this.navigator = new Navigator(this);\n this.history = new History(this);\n this.preloader = new Preloader(this);\n this.view = new PageView(this, document.documentElement);\n this.adapter = new BrowserAdapter(this);\n this.pageObserver = new PageObserver(this);\n this.cacheObserver = new CacheObserver();\n this.linkClickObserver = new LinkClickObserver(this, window);\n this.formSubmitObserver = new FormSubmitObserver(this, document);\n this.scrollObserver = new ScrollObserver(this);\n this.streamObserver = new StreamObserver(this);\n this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n this.frameRedirector = new FrameRedirector(this, document.documentElement);\n this.streamMessageRenderer = new StreamMessageRenderer();\n this.drive = true;\n this.enabled = true;\n this.progressBarDelay = 500;\n this.started = false;\n this.formMode = \"on\";\n }\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.formLinkClickObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.preloader.start();\n this.started = true;\n this.enabled = true;\n }\n }\n disable() {\n this.enabled = false;\n }\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.started = false;\n }\n }\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n visit(location, options = {}) {\n const frameElement = options.frame ? document.getElementById(options.frame) : null;\n if (frameElement instanceof FrameElement) {\n frameElement.src = location.toString();\n frameElement.loaded;\n }\n else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n clearCache() {\n this.view.clearSnapshotCache();\n }\n setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n setFormMode(mode) {\n this.formMode = mode;\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true,\n });\n }\n else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\",\n });\n }\n }\n scrollPositionChanged(position) {\n this.history.updateRestorationData({ scrollPosition: position });\n }\n willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n }\n submittedFormLinkToLocation() { }\n willFollowLinkToLocation(link, location, event) {\n return (this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation) &&\n this.applicationAllowsFollowingLinkToLocation(link, location, event));\n }\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n this.visit(location.href, { action, acceptsStreamResponse });\n }\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n }\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n }\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n visitCompleted(visit) {\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action);\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n willSubmitForm(form, submitter) {\n const action = getAction(form, submitter);\n return (this.submissionIsNavigatable(form, submitter) &&\n locationIsVisitable(expandURL(action), this.snapshot.rootLocation));\n }\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n viewWillCacheSnapshot() {\n var _a;\n if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n allowsImmediateRender({ element }, options) {\n const event = this.notifyApplicationBeforeRender(element, options);\n const { defaultPrevented, detail: { render }, } = event;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender();\n }\n preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n }\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n applicationAllowsFollowingLinkToLocation(link, location, ev) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented;\n }\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented;\n }\n notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: { url: location.href, originalEvent: event },\n cancelable: true,\n });\n }\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: { url: location.href },\n cancelable: true,\n });\n }\n notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n }\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\");\n }\n notifyApplicationBeforeRender(newBody, options) {\n return dispatch(\"turbo:before-render\", {\n detail: Object.assign({ newBody }, options),\n cancelable: true,\n });\n }\n notifyApplicationAfterRender() {\n return dispatch(\"turbo:render\");\n }\n notifyApplicationAfterPageLoad(timing = {}) {\n return dispatch(\"turbo:load\", {\n detail: { url: this.location.href, timing },\n });\n }\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString(),\n }));\n }\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", { target: frame });\n }\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: { fetchResponse },\n target: frame,\n cancelable: true,\n });\n }\n submissionIsNavigatable(form, submitter) {\n if (this.formMode == \"off\") {\n return false;\n }\n else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n if (this.formMode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n }\n else {\n return submitterIsNavigatable && this.elementIsNavigatable(form);\n }\n }\n }\n elementIsNavigatable(element) {\n const container = element.closest(\"[data-turbo]\");\n const withinFrame = element.closest(\"turbo-frame\");\n if (this.drive || withinFrame) {\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\";\n }\n else {\n return true;\n }\n }\n else {\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\";\n }\n else {\n return false;\n }\n }\n }\n getActionForLink(link) {\n const action = link.getAttribute(\"data-turbo-action\");\n return isAction(action) ? action : \"advance\";\n }\n get snapshot() {\n return this.view.snapshot;\n }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString();\n },\n },\n};\n\nclass Cache {\n constructor(session) {\n this.session = session;\n }\n clear() {\n this.session.clearCache();\n }\n resetCacheControl() {\n this.setCacheControl(\"\");\n }\n exemptPageFromCache() {\n this.setCacheControl(\"no-cache\");\n }\n exemptPageFromPreview() {\n this.setCacheControl(\"no-preview\");\n }\n setCacheControl(value) {\n setMetaContent(\"turbo-cache-control\", value);\n }\n}\n\nconst StreamActions = {\n after() {\n this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n },\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.append(this.templateContent));\n },\n before() {\n this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n },\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.prepend(this.templateContent));\n },\n remove() {\n this.targetElements.forEach((e) => e.remove());\n },\n replace() {\n this.targetElements.forEach((e) => e.replaceWith(this.templateContent));\n },\n update() {\n this.targetElements.forEach((e) => e.replaceChildren(this.templateContent));\n },\n};\n\nconst session = new Session();\nconst cache = new Cache(session);\nconst { navigator: navigator$1 } = session;\nfunction start() {\n session.start();\n}\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\nfunction clearCache() {\n console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n cache: cache,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n FrameRenderer: FrameRenderer,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod,\n setFormMode: setFormMode,\n StreamActions: StreamActions\n});\n\nclass FrameController {\n constructor(element) {\n this.fetchResponseLoaded = (_fetchResponse) => { };\n this.currentFetchRequest = null;\n this.resolveVisitPromise = () => { };\n this.connected = false;\n this.hasBeenLoaded = false;\n this.ignoredAttributes = new Set();\n this.action = null;\n this.visitCachedSnapshot = ({ element }) => {\n const frame = element.querySelector(\"#\" + this.element.id);\n if (frame && this.previousFrameElement) {\n frame.replaceChildren(...this.previousFrameElement.children);\n }\n delete this.previousFrameElement;\n };\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.restorationIdentifier = uuid();\n this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n }\n connect() {\n if (!this.connected) {\n this.connected = true;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n else {\n this.loadSourceURL();\n }\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }\n disconnect() {\n if (this.connected) {\n this.connected = false;\n this.appearanceObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n }\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.loadSourceURL();\n }\n }\n sourceURLChanged() {\n if (this.isIgnoringChangesTo(\"src\"))\n return;\n if (this.element.isConnected) {\n this.complete = false;\n }\n if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n this.loadSourceURL();\n }\n }\n sourceURLReloaded() {\n const { src } = this.element;\n this.ignoringChangesToAttribute(\"complete\", () => {\n this.element.removeAttribute(\"complete\");\n });\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded;\n }\n completeChanged() {\n if (this.isIgnoringChangesTo(\"complete\"))\n return;\n this.loadSourceURL();\n }\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n }\n else {\n this.appearanceObserver.stop();\n this.loadSourceURL();\n }\n }\n async loadSourceURL() {\n if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n this.element.loaded = this.visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n this.hasBeenLoaded = true;\n }\n }\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n this.sourceURL = fetchResponse.response.url;\n }\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const { body } = parseHTMLDocument(html);\n const newFrameElement = await this.extractForeignFrameElement(body);\n if (newFrameElement) {\n const snapshot = new Snapshot(newFrameElement);\n const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n if (this.view.renderPromise)\n await this.view.renderPromise;\n this.changeHistory();\n await this.view.render(renderer);\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n this.fetchResponseLoaded(fetchResponse);\n }\n else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n console.warn(`A matching frame for #${this.element.id} was missing from the response, transforming into full-page Visit.`);\n this.visitResponse(fetchResponse.response);\n }\n }\n }\n catch (error) {\n console.error(error);\n this.view.invalidate();\n }\n finally {\n this.fetchResponseLoaded = () => { };\n }\n }\n elementAppearedInViewport(_element) {\n this.loadSourceURL();\n }\n willSubmitFormLinkToLocation(link) {\n return this.shouldInterceptNavigation(link);\n }\n submittedFormLinkToLocation(link, _location, form) {\n const frame = this.findFrameElement(link);\n if (frame)\n form.setAttribute(\"data-turbo-frame\", frame.id);\n }\n shouldInterceptLinkClick(element, _location, _event) {\n return this.shouldInterceptNavigation(element);\n }\n linkClickIntercepted(element, location) {\n this.navigateFrame(element, location);\n }\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n }\n formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n this.formSubmission = new FormSubmission(this, element, submitter);\n const { fetchRequest } = this.formSubmission;\n this.prepareHeadersForRequest(fetchRequest.headers, fetchRequest);\n this.formSubmission.start();\n }\n prepareHeadersForRequest(headers, request) {\n var _a;\n headers[\"Turbo-Frame\"] = this.id;\n if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n markAsBusy(this.element);\n }\n requestPreventedHandlingResponse(_request, _response) {\n this.resolveVisitPromise();\n }\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n async requestFailedWithResponse(request, response) {\n console.error(response);\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n requestErrored(request, error) {\n console.error(error);\n this.resolveVisitPromise();\n }\n requestFinished(_request) {\n clearBusyState(this.element);\n }\n formSubmissionStarted({ formElement }) {\n markAsBusy(formElement, this.findFrameElement(formElement));\n }\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n frame.delegate.loadResponse(response);\n }\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished({ formElement }) {\n clearBusyState(formElement, this.findFrameElement(formElement));\n }\n allowsImmediateRender({ element: newFrame }, options) {\n const event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: Object.assign({ newFrame }, options),\n cancelable: true,\n });\n const { defaultPrevented, detail: { render }, } = event;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview) { }\n preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n viewInvalidated() { }\n willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n async visit(url) {\n var _a;\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n this.currentFetchRequest = request;\n return new Promise((resolve) => {\n this.resolveVisitPromise = () => {\n this.resolveVisitPromise = () => { };\n this.currentFetchRequest = null;\n resolve();\n };\n request.perform();\n });\n }\n navigateFrame(element, url, submitter) {\n const frame = this.findFrameElement(element, submitter);\n this.pageSnapshot = PageSnapshot.fromElement(frame).clone();\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n this.withCurrentNavigationElement(element, () => {\n frame.src = url;\n });\n }\n proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n this.action = getVisitAction(submitter, element, frame);\n if (isAction(this.action)) {\n const { visitCachedSnapshot } = frame.delegate;\n frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n if (frame.src) {\n const { statusCode, redirected } = fetchResponse;\n const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n const response = { statusCode, redirected, responseHTML };\n const options = {\n response,\n visitCachedSnapshot,\n willRender: false,\n updateHistory: false,\n restorationIdentifier: this.restorationIdentifier,\n snapshot: this.pageSnapshot,\n };\n if (this.action)\n options.action = this.action;\n session.visit(frame.src, options);\n }\n };\n }\n }\n changeHistory() {\n if (this.action) {\n const method = getHistoryMethodForAction(this.action);\n session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n }\n }\n willHandleFrameMissingFromResponse(fetchResponse) {\n this.element.setAttribute(\"complete\", \"\");\n const response = fetchResponse.response;\n const visit = async (url, options = {}) => {\n if (url instanceof Response) {\n this.visitResponse(url);\n }\n else {\n session.visit(url, options);\n }\n };\n const event = dispatch(\"turbo:frame-missing\", {\n target: this.element,\n detail: { response, visit },\n cancelable: true,\n });\n return !event.defaultPrevented;\n }\n async visitResponse(response) {\n const wrapped = new FetchResponse(response);\n const responseHTML = await wrapped.responseHTML;\n const { location, redirected, statusCode } = wrapped;\n return session.visit(location, { response: { redirected, statusCode, responseHTML } });\n }\n findFrameElement(element, submitter) {\n var _a;\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n }\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n try {\n element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n if (element) {\n return element;\n }\n element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n if (element) {\n await element.loaded;\n return await this.extractForeignFrameElement(element);\n }\n }\n catch (error) {\n console.error(error);\n return new FrameElement();\n }\n return null;\n }\n formActionIsVisitable(form, submitter) {\n const action = getAction(form, submitter);\n return locationIsVisitable(expandURL(action), this.rootLocation);\n }\n shouldInterceptNavigation(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n return false;\n }\n if (!this.enabled || id == \"_top\") {\n return false;\n }\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled;\n }\n }\n if (!session.elementIsNavigatable(element)) {\n return false;\n }\n if (submitter && !session.elementIsNavigatable(submitter)) {\n return false;\n }\n return true;\n }\n get id() {\n return this.element.id;\n }\n get enabled() {\n return !this.element.disabled;\n }\n get sourceURL() {\n if (this.element.src) {\n return this.element.src;\n }\n }\n set sourceURL(sourceURL) {\n this.ignoringChangesToAttribute(\"src\", () => {\n this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n });\n }\n get loadingStyle() {\n return this.element.loading;\n }\n get isLoading() {\n return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n }\n get complete() {\n return this.element.hasAttribute(\"complete\");\n }\n set complete(value) {\n this.ignoringChangesToAttribute(\"complete\", () => {\n if (value) {\n this.element.setAttribute(\"complete\", \"\");\n }\n else {\n this.element.removeAttribute(\"complete\");\n }\n });\n }\n get isActive() {\n return this.element.isActive && this.connected;\n }\n get rootLocation() {\n var _a;\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n isIgnoringChangesTo(attributeName) {\n return this.ignoredAttributes.has(attributeName);\n }\n ignoringChangesToAttribute(attributeName, callback) {\n this.ignoredAttributes.add(attributeName);\n callback();\n this.ignoredAttributes.delete(attributeName);\n }\n withCurrentNavigationElement(element, callback) {\n this.currentNavigationElement = element;\n callback();\n delete this.currentNavigationElement;\n }\n}\nfunction getFrameElementById(id) {\n if (id != null) {\n const element = document.getElementById(id);\n if (element instanceof FrameElement) {\n return element;\n }\n }\n}\nfunction activateElement(element, currentURL) {\n if (element) {\n const src = element.getAttribute(\"src\");\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`);\n }\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element;\n }\n }\n}\n\nclass StreamElement extends HTMLElement {\n static async renderElement(newElement) {\n await newElement.performAction();\n }\n async connectedCallback() {\n try {\n await this.render();\n }\n catch (error) {\n console.error(error);\n }\n finally {\n this.disconnect();\n }\n }\n async render() {\n var _a;\n return ((_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n const event = this.beforeRenderEvent;\n if (this.dispatchEvent(event)) {\n await nextAnimationFrame();\n await event.detail.render(this);\n }\n })()));\n }\n disconnect() {\n try {\n this.remove();\n }\n catch (_a) { }\n }\n removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach((c) => c.remove());\n }\n get duplicateChildren() {\n var _a;\n const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter((c) => !!c.id).map((c) => c.id);\n return existingChildren.filter((c) => newChildrenIds.includes(c.id));\n }\n get performAction() {\n if (this.action) {\n const actionFunction = StreamActions[this.action];\n if (actionFunction) {\n return actionFunction;\n }\n this.raise(\"unknown action\");\n }\n this.raise(\"action attribute is missing\");\n }\n get targetElements() {\n if (this.target) {\n return this.targetElementsById;\n }\n else if (this.targets) {\n return this.targetElementsByQuery;\n }\n else {\n this.raise(\"target or targets attribute is missing\");\n }\n }\n get templateContent() {\n return this.templateElement.content.cloneNode(true);\n }\n get templateElement() {\n if (this.firstElementChild === null) {\n const template = this.ownerDocument.createElement(\"template\");\n this.appendChild(template);\n return template;\n }\n else if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild;\n }\n this.raise(\"first child element must be a <template> element\");\n }\n get action() {\n return this.getAttribute(\"action\");\n }\n get target() {\n return this.getAttribute(\"target\");\n }\n get targets() {\n return this.getAttribute(\"targets\");\n }\n raise(message) {\n throw new Error(`${this.description}: ${message}`);\n }\n get description() {\n var _a, _b;\n return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : \"<turbo-stream>\";\n }\n get beforeRenderEvent() {\n return new CustomEvent(\"turbo:before-stream-render\", {\n bubbles: true,\n cancelable: true,\n detail: { newStream: this, render: StreamElement.renderElement },\n });\n }\n get targetElementsById() {\n var _a;\n const element = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target);\n if (element !== null) {\n return [element];\n }\n else {\n return [];\n }\n }\n get targetElementsByQuery() {\n var _a;\n const elements = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.targets);\n if (elements.length !== 0) {\n return Array.prototype.slice.call(elements);\n }\n else {\n return [];\n }\n }\n}\n\nclass StreamSourceElement extends HTMLElement {\n constructor() {\n super(...arguments);\n this.streamSource = null;\n }\n connectedCallback() {\n this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n connectStreamSource(this.streamSource);\n }\n disconnectedCallback() {\n if (this.streamSource) {\n disconnectStreamSource(this.streamSource);\n }\n }\n get src() {\n return this.getAttribute(\"src\") || \"\";\n }\n}\n\nFrameElement.delegateConstructor = FrameController;\nif (customElements.get(\"turbo-frame\") === undefined) {\n customElements.define(\"turbo-frame\", FrameElement);\n}\nif (customElements.get(\"turbo-stream\") === undefined) {\n customElements.define(\"turbo-stream\", StreamElement);\n}\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n let element = document.currentScript;\n if (!element)\n return;\n if (element.hasAttribute(\"data-turbo-suppress-warning\"))\n return;\n element = element.parentElement;\n while (element) {\n if (element == document.body) {\n return console.warn(unindent `\n You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n Load your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n \u2014\u2014\n Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n `, element.outerHTML);\n }\n element = element.parentElement;\n }\n})();\n\nwindow.Turbo = Turbo;\nstart();\n\nexport { FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, connectStreamSource, disconnectStreamSource, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n const { subscriptions } = await getConsumer()\n return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n if (!obj || typeof obj !== 'object') return obj;\n if (obj instanceof Date || obj instanceof RegExp) return obj;\n if (Array.isArray(obj)) return obj.map(walk);\n return Object.keys(obj).reduce(function (acc, key) {\n var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n return '_' + x.toLowerCase();\n });\n acc[camel] = walk(obj[key]);\n return acc;\n }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n async connectedCallback() {\n connectStreamSource(this)\n this.subscription = await subscribeTo(this.channel, { received: this.dispatchMessageEvent.bind(this) })\n }\n\n disconnectedCallback() {\n disconnectStreamSource(this)\n if (this.subscription) this.subscription.unsubscribe()\n }\n\n dispatchMessageEvent(data) {\n const event = new MessageEvent(\"message\", { data })\n return this.dispatchEvent(event)\n }\n\n get channel() {\n const channel = this.getAttribute(\"channel\")\n const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n }\n}\n\ncustomElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n", "export function encodeMethodIntoRequestBody(event) {\n if (event.target instanceof HTMLFormElement) {\n const { target: form, detail: { fetchOptions } } = event\n\n form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n const method = (submitter && submitter.formMethod) || (fetchOptions.body && fetchOptions.body.get(\"_method\")) || form.getAttribute(\"method\")\n\n if (!/get/i.test(method)) {\n if (/post/i.test(method)) {\n fetchOptions.body.delete(\"_method\")\n } else {\n fetchOptions.body.set(\"_method\", method)\n }\n\n fetchOptions.method = \"post\"\n }\n }, { once: true })\n }\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "/*\n * TurboPower 0.6.0\n */\nvar DOCUMENT_FRAGMENT_NODE = 11;\n\nfunction morphAttrs(fromNode, toNode) {\n var toNodeAttrs = toNode.attributes;\n var attr;\n var attrName;\n var attrNamespaceURI;\n var attrValue;\n var fromValue;\n // document-fragments dont have attributes so lets not do anything\n if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE || fromNode.nodeType === DOCUMENT_FRAGMENT_NODE) {\n return;\n }\n // update attributes on original DOM element\n for (var i = toNodeAttrs.length - 1; i >= 0; i--) {\n attr = toNodeAttrs[i];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n attrValue = attr.value;\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);\n if (fromValue !== attrValue) {\n if (attr.prefix === \"xmlns\") {\n attrName = attr.name;\n // It's not allowed to set an attribute with the XMLNS namespace without specifying the `xmlns` prefix\n }\n fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);\n }\n } else {\n fromValue = fromNode.getAttribute(attrName);\n if (fromValue !== attrValue) {\n fromNode.setAttribute(attrName, attrValue);\n }\n }\n }\n // Remove any extra attributes found on the original DOM element that\n // weren't found on the target element.\n var fromNodeAttrs = fromNode.attributes;\n for (var d = fromNodeAttrs.length - 1; d >= 0; d--) {\n attr = fromNodeAttrs[d];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {\n fromNode.removeAttributeNS(attrNamespaceURI, attrName);\n }\n } else {\n if (!toNode.hasAttribute(attrName)) {\n fromNode.removeAttribute(attrName);\n }\n }\n }\n}\n\nvar range;\n\n // Create a range object for efficently rendering strings to elements.\nvar NS_XHTML = \"http://www.w3.org/1999/xhtml\";\n\nvar doc = typeof document === \"undefined\" ? undefined : document;\n\nvar HAS_TEMPLATE_SUPPORT = !!doc && \"content\" in doc.createElement(\"template\");\n\nvar HAS_RANGE_SUPPORT = !!doc && doc.createRange && \"createContextualFragment\" in doc.createRange();\n\nfunction createFragmentFromTemplate(str) {\n var template = doc.createElement(\"template\");\n template.innerHTML = str;\n return template.content.childNodes[0];\n}\n\nfunction createFragmentFromRange(str) {\n if (!range) {\n range = doc.createRange();\n range.selectNode(doc.body);\n }\n var fragment = range.createContextualFragment(str);\n return fragment.childNodes[0];\n}\n\nfunction createFragmentFromWrap(str) {\n var fragment = doc.createElement(\"body\");\n fragment.innerHTML = str;\n return fragment.childNodes[0];\n}\n\n/**\n * This is about the same\n * var html = new DOMParser().parseFromString(str, 'text/html');\n * return html.body.firstChild;\n *\n * @method toElement\n * @param {String} str\n */ function toElement(str) {\n str = str.trim();\n if (HAS_TEMPLATE_SUPPORT) {\n // avoid restrictions on content for things like `<tr><th>Hi</th></tr>` which\n // createContextualFragment doesn't support\n // <template> support not available in IE\n return createFragmentFromTemplate(str);\n } else if (HAS_RANGE_SUPPORT) {\n return createFragmentFromRange(str);\n }\n return createFragmentFromWrap(str);\n}\n\n/**\n * Returns true if two node's names are the same.\n *\n * NOTE: We don't bother checking `namespaceURI` because you will never find two HTML elements with the same\n * nodeName and different namespace URIs.\n *\n * @param {Element} a\n * @param {Element} b The target element\n * @return {boolean}\n */ function compareNodeNames(fromEl, toEl) {\n var fromNodeName = fromEl.nodeName;\n var toNodeName = toEl.nodeName;\n var fromCodeStart, toCodeStart;\n if (fromNodeName === toNodeName) {\n return true;\n }\n fromCodeStart = fromNodeName.charCodeAt(0);\n toCodeStart = toNodeName.charCodeAt(0);\n // If the target element is a virtual DOM node or SVG node then we may\n // need to normalize the tag name before comparing. Normal HTML elements that are\n // in the \"http://www.w3.org/1999/xhtml\"\n // are converted to upper case\n if (fromCodeStart <= 90 && toCodeStart >= 97) {\n // from is upper and to is lower\n return fromNodeName === toNodeName.toUpperCase();\n } else if (toCodeStart <= 90 && fromCodeStart >= 97) {\n // to is upper and from is lower\n return toNodeName === fromNodeName.toUpperCase();\n } else {\n return false;\n }\n}\n\n/**\n * Create an element, optionally with a known namespace URI.\n *\n * @param {string} name the element name, e.g. 'div' or 'svg'\n * @param {string} [namespaceURI] the element's namespace URI, i.e. the value of\n * its `xmlns` attribute or its inferred namespace.\n *\n * @return {Element}\n */ function createElementNS(name, namespaceURI) {\n return !namespaceURI || namespaceURI === NS_XHTML ? doc.createElement(name) : doc.createElementNS(namespaceURI, name);\n}\n\n/**\n * Copies the children of one DOM element to another DOM element\n */ function moveChildren(fromEl, toEl) {\n var curChild = fromEl.firstChild;\n while (curChild) {\n var nextChild = curChild.nextSibling;\n toEl.appendChild(curChild);\n curChild = nextChild;\n }\n return toEl;\n}\n\nfunction syncBooleanAttrProp(fromEl, toEl, name) {\n if (fromEl[name] !== toEl[name]) {\n fromEl[name] = toEl[name];\n if (fromEl[name]) {\n fromEl.setAttribute(name, \"\");\n } else {\n fromEl.removeAttribute(name);\n }\n }\n}\n\nvar specialElHandlers = {\n OPTION: function(fromEl, toEl) {\n var parentNode = fromEl.parentNode;\n if (parentNode) {\n var parentName = parentNode.nodeName.toUpperCase();\n if (parentName === \"OPTGROUP\") {\n parentNode = parentNode.parentNode;\n parentName = parentNode && parentNode.nodeName.toUpperCase();\n }\n if (parentName === \"SELECT\" && !parentNode.hasAttribute(\"multiple\")) {\n if (fromEl.hasAttribute(\"selected\") && !toEl.selected) {\n // Workaround for MS Edge bug where the 'selected' attribute can only be\n // removed if set to a non-empty value:\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12087679/\n fromEl.setAttribute(\"selected\", \"selected\");\n fromEl.removeAttribute(\"selected\");\n }\n // We have to reset select element's selectedIndex to -1, otherwise setting\n // fromEl.selected using the syncBooleanAttrProp below has no effect.\n // The correct selectedIndex will be set in the SELECT special handler below.\n parentNode.selectedIndex = -1;\n }\n }\n syncBooleanAttrProp(fromEl, toEl, \"selected\");\n },\n /**\n * The \"value\" attribute is special for the <input> element since it sets\n * the initial value. Changing the \"value\" attribute without changing the\n * \"value\" property will have no effect since it is only used to the set the\n * initial value. Similar for the \"checked\" attribute, and \"disabled\".\n */\n INPUT: function(fromEl, toEl) {\n syncBooleanAttrProp(fromEl, toEl, \"checked\");\n syncBooleanAttrProp(fromEl, toEl, \"disabled\");\n if (fromEl.value !== toEl.value) {\n fromEl.value = toEl.value;\n }\n if (!toEl.hasAttribute(\"value\")) {\n fromEl.removeAttribute(\"value\");\n }\n },\n TEXTAREA: function(fromEl, toEl) {\n var newValue = toEl.value;\n if (fromEl.value !== newValue) {\n fromEl.value = newValue;\n }\n var firstChild = fromEl.firstChild;\n if (firstChild) {\n // Needed for IE. Apparently IE sets the placeholder as the\n // node value and vise versa. This ignores an empty update.\n var oldValue = firstChild.nodeValue;\n if (oldValue == newValue || !newValue && oldValue == fromEl.placeholder) {\n return;\n }\n firstChild.nodeValue = newValue;\n }\n },\n SELECT: function(fromEl, toEl) {\n if (!toEl.hasAttribute(\"multiple\")) {\n var selectedIndex = -1;\n var i = 0;\n // We have to loop through children of fromEl, not toEl since nodes can be moved\n // from toEl to fromEl directly when morphing.\n // At the time this special handler is invoked, all children have already been morphed\n // and appended to / removed from fromEl, so using fromEl here is safe and correct.\n var curChild = fromEl.firstChild;\n var optgroup;\n var nodeName;\n while (curChild) {\n nodeName = curChild.nodeName && curChild.nodeName.toUpperCase();\n if (nodeName === \"OPTGROUP\") {\n optgroup = curChild;\n curChild = optgroup.firstChild;\n } else {\n if (nodeName === \"OPTION\") {\n if (curChild.hasAttribute(\"selected\")) {\n selectedIndex = i;\n break;\n }\n i++;\n }\n curChild = curChild.nextSibling;\n if (!curChild && optgroup) {\n curChild = optgroup.nextSibling;\n optgroup = null;\n }\n }\n }\n fromEl.selectedIndex = selectedIndex;\n }\n }\n};\n\nvar ELEMENT_NODE = 1;\n\nvar DOCUMENT_FRAGMENT_NODE$1 = 11;\n\nvar TEXT_NODE = 3;\n\nvar COMMENT_NODE = 8;\n\nfunction noop() {}\n\nfunction defaultGetNodeKey(node) {\n if (node) {\n return node.getAttribute && node.getAttribute(\"id\") || node.id;\n }\n}\n\nfunction morphdomFactory(morphAttrs) {\n return function morphdom(fromNode, toNode, options) {\n if (!options) {\n options = {};\n }\n if (typeof toNode === \"string\") {\n if (fromNode.nodeName === \"#document\" || fromNode.nodeName === \"HTML\" || fromNode.nodeName === \"BODY\") {\n var toNodeHtml = toNode;\n toNode = doc.createElement(\"html\");\n toNode.innerHTML = toNodeHtml;\n } else {\n toNode = toElement(toNode);\n }\n } else if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE$1) {\n toNode = toNode.firstElementChild;\n }\n var getNodeKey = options.getNodeKey || defaultGetNodeKey;\n var onBeforeNodeAdded = options.onBeforeNodeAdded || noop;\n var onNodeAdded = options.onNodeAdded || noop;\n var onBeforeElUpdated = options.onBeforeElUpdated || noop;\n var onElUpdated = options.onElUpdated || noop;\n var onBeforeNodeDiscarded = options.onBeforeNodeDiscarded || noop;\n var onNodeDiscarded = options.onNodeDiscarded || noop;\n var onBeforeElChildrenUpdated = options.onBeforeElChildrenUpdated || noop;\n var skipFromChildren = options.skipFromChildren || noop;\n var addChild = options.addChild || function(parent, child) {\n return parent.appendChild(child);\n };\n var childrenOnly = options.childrenOnly === true;\n // This object is used as a lookup to quickly find all keyed elements in the original DOM tree.\n var fromNodesLookup = Object.create(null);\n var keyedRemovalList = [];\n function addKeyedRemoval(key) {\n keyedRemovalList.push(key);\n }\n function walkDiscardedChildNodes(node, skipKeyedNodes) {\n if (node.nodeType === ELEMENT_NODE) {\n var curChild = node.firstChild;\n while (curChild) {\n var key = undefined;\n if (skipKeyedNodes && (key = getNodeKey(curChild))) {\n // If we are skipping keyed nodes then we add the key\n // to a list so that it can be handled at the very end.\n addKeyedRemoval(key);\n } else {\n // Only report the node as discarded if it is not keyed. We do this because\n // at the end we loop through all keyed elements that were unmatched\n // and then discard them in one final pass.\n onNodeDiscarded(curChild);\n if (curChild.firstChild) {\n walkDiscardedChildNodes(curChild, skipKeyedNodes);\n }\n }\n curChild = curChild.nextSibling;\n }\n }\n }\n /**\n * Removes a DOM node out of the original DOM\n *\n * @param {Node} node The node to remove\n * @param {Node} parentNode The nodes parent\n * @param {Boolean} skipKeyedNodes If true then elements with keys will be skipped and not discarded.\n * @return {undefined}\n */ function removeNode(node, parentNode, skipKeyedNodes) {\n if (onBeforeNodeDiscarded(node) === false) {\n return;\n }\n if (parentNode) {\n parentNode.removeChild(node);\n }\n onNodeDiscarded(node);\n walkDiscardedChildNodes(node, skipKeyedNodes);\n }\n // // TreeWalker implementation is no faster, but keeping this around in case this changes in the future\n // function indexTree(root) {\n // var treeWalker = document.createTreeWalker(\n // root,\n // NodeFilter.SHOW_ELEMENT);\n \n // var el;\n // while((el = treeWalker.nextNode())) {\n // var key = getNodeKey(el);\n // if (key) {\n // fromNodesLookup[key] = el;\n // }\n // }\n // }\n // // NodeIterator implementation is no faster, but keeping this around in case this changes in the future\n \n // function indexTree(node) {\n // var nodeIterator = document.createNodeIterator(node, NodeFilter.SHOW_ELEMENT);\n // var el;\n // while((el = nodeIterator.nextNode())) {\n // var key = getNodeKey(el);\n // if (key) {\n // fromNodesLookup[key] = el;\n // }\n // }\n // }\n function indexTree(node) {\n if (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE$1) {\n var curChild = node.firstChild;\n while (curChild) {\n var key = getNodeKey(curChild);\n if (key) {\n fromNodesLookup[key] = curChild;\n }\n // Walk recursively\n indexTree(curChild);\n curChild = curChild.nextSibling;\n }\n }\n }\n indexTree(fromNode);\n function handleNodeAdded(el) {\n onNodeAdded(el);\n var curChild = el.firstChild;\n while (curChild) {\n var nextSibling = curChild.nextSibling;\n var key = getNodeKey(curChild);\n if (key) {\n var unmatchedFromEl = fromNodesLookup[key];\n // if we find a duplicate #id node in cache, replace `el` with cache value\n // and morph it to the child node.\n if (unmatchedFromEl && compareNodeNames(curChild, unmatchedFromEl)) {\n curChild.parentNode.replaceChild(unmatchedFromEl, curChild);\n morphEl(unmatchedFromEl, curChild);\n } else {\n handleNodeAdded(curChild);\n }\n } else {\n // recursively call for curChild and it's children to see if we find something in\n // fromNodesLookup\n handleNodeAdded(curChild);\n }\n curChild = nextSibling;\n }\n }\n function cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey) {\n // We have processed all of the \"to nodes\". If curFromNodeChild is\n // non-null then we still have some from nodes left over that need\n // to be removed\n while (curFromNodeChild) {\n var fromNextSibling = curFromNodeChild.nextSibling;\n if (curFromNodeKey = getNodeKey(curFromNodeChild)) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n }\n curFromNodeChild = fromNextSibling;\n }\n }\n function morphEl(fromEl, toEl, childrenOnly) {\n var toElKey = getNodeKey(toEl);\n if (toElKey) {\n // If an element with an ID is being morphed then it will be in the final\n // DOM so clear it out of the saved elements collection\n delete fromNodesLookup[toElKey];\n }\n if (!childrenOnly) {\n // optional\n if (onBeforeElUpdated(fromEl, toEl) === false) {\n return;\n }\n // update attributes on original DOM element first\n morphAttrs(fromEl, toEl);\n // optional\n onElUpdated(fromEl);\n if (onBeforeElChildrenUpdated(fromEl, toEl) === false) {\n return;\n }\n }\n if (fromEl.nodeName !== \"TEXTAREA\") {\n morphChildren(fromEl, toEl);\n } else {\n specialElHandlers.TEXTAREA(fromEl, toEl);\n }\n }\n function morphChildren(fromEl, toEl) {\n var skipFrom = skipFromChildren(fromEl);\n var curToNodeChild = toEl.firstChild;\n var curFromNodeChild = fromEl.firstChild;\n var curToNodeKey;\n var curFromNodeKey;\n var fromNextSibling;\n var toNextSibling;\n var matchingFromEl;\n // walk the children\n outer: while (curToNodeChild) {\n toNextSibling = curToNodeChild.nextSibling;\n curToNodeKey = getNodeKey(curToNodeChild);\n // walk the fromNode children all the way through\n while (!skipFrom && curFromNodeChild) {\n fromNextSibling = curFromNodeChild.nextSibling;\n if (curToNodeChild.isSameNode && curToNodeChild.isSameNode(curFromNodeChild)) {\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n continue outer;\n }\n curFromNodeKey = getNodeKey(curFromNodeChild);\n var curFromNodeType = curFromNodeChild.nodeType;\n // this means if the curFromNodeChild doesnt have a match with the curToNodeChild\n var isCompatible = undefined;\n if (curFromNodeType === curToNodeChild.nodeType) {\n if (curFromNodeType === ELEMENT_NODE) {\n // Both nodes being compared are Element nodes\n if (curToNodeKey) {\n // The target node has a key so we want to match it up with the correct element\n // in the original DOM tree\n if (curToNodeKey !== curFromNodeKey) {\n // The current element in the original DOM tree does not have a matching key so\n // let's check our lookup to see if there is a matching element in the original\n // DOM tree\n if (matchingFromEl = fromNodesLookup[curToNodeKey]) {\n if (fromNextSibling === matchingFromEl) {\n // Special case for single element removals. To avoid removing the original\n // DOM node out of the tree (since that can break CSS transitions, etc.),\n // we will instead discard the current node and wait until the next\n // iteration to properly match up the keyed target element with its matching\n // element in the original tree\n isCompatible = false;\n } else {\n // We found a matching keyed element somewhere in the original DOM tree.\n // Let's move the original DOM node into the current position and morph\n // it.\n // NOTE: We use insertBefore instead of replaceChild because we want to go through\n // the `removeNode()` function for the node that is being discarded so that\n // all lifecycle hooks are correctly invoked\n fromEl.insertBefore(matchingFromEl, curFromNodeChild);\n // fromNextSibling = curFromNodeChild.nextSibling;\n if (curFromNodeKey) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n }\n curFromNodeChild = matchingFromEl;\n }\n } else {\n // The nodes are not compatible since the \"to\" node has a key and there\n // is no matching keyed node in the source tree\n isCompatible = false;\n }\n }\n } else if (curFromNodeKey) {\n // The original has a key\n isCompatible = false;\n }\n isCompatible = isCompatible !== false && compareNodeNames(curFromNodeChild, curToNodeChild);\n if (isCompatible) {\n // We found compatible DOM elements so transform\n // the current \"from\" node to match the current\n // target DOM node.\n // MORPH\n morphEl(curFromNodeChild, curToNodeChild);\n }\n } else if (curFromNodeType === TEXT_NODE || curFromNodeType == COMMENT_NODE) {\n // Both nodes being compared are Text or Comment nodes\n isCompatible = true;\n // Simply update nodeValue on the original node to\n // change the text value\n if (curFromNodeChild.nodeValue !== curToNodeChild.nodeValue) {\n curFromNodeChild.nodeValue = curToNodeChild.nodeValue;\n }\n }\n }\n if (isCompatible) {\n // Advance both the \"to\" child and the \"from\" child since we found a match\n // Nothing else to do as we already recursively called morphChildren above\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n continue outer;\n }\n // No compatible match so remove the old node from the DOM and continue trying to find a\n // match in the original DOM. However, we only do this if the from node is not keyed\n // since it is possible that a keyed node might match up with a node somewhere else in the\n // target tree and we don't want to discard it just yet since it still might find a\n // home in the final DOM tree. After everything is done we will remove any keyed nodes\n // that didn't find a home\n if (curFromNodeKey) {\n // Since the node is keyed it might be matched up later so we defer\n // the actual removal to later\n addKeyedRemoval(curFromNodeKey);\n } else {\n // NOTE: we skip nested keyed nodes from being removed since there is\n // still a chance they will be matched up later\n removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n }\n curFromNodeChild = fromNextSibling;\n }\n // END: while(curFromNodeChild) {}\n // If we got this far then we did not find a candidate match for\n // our \"to node\" and we exhausted all of the children \"from\"\n // nodes.\n if (curToNodeKey && (matchingFromEl = fromNodesLookup[curToNodeKey]) && compareNodeNames(matchingFromEl, curToNodeChild)) {\n // MORPH\n addChild(fromEl, matchingFromEl);\n morphEl(matchingFromEl, curToNodeChild);\n } else {\n var onBeforeNodeAddedResult = onBeforeNodeAdded(curToNodeChild);\n if (onBeforeNodeAddedResult !== false) {\n if (onBeforeNodeAddedResult) {\n curToNodeChild = onBeforeNodeAddedResult;\n }\n if (curToNodeChild.actualize) {\n curToNodeChild = curToNodeChild.actualize(fromEl.ownerDocument || doc);\n }\n addChild(fromEl, curToNodeChild);\n handleNodeAdded(curToNodeChild);\n }\n }\n curToNodeChild = toNextSibling;\n curFromNodeChild = fromNextSibling;\n }\n cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey);\n var specialElHandler = specialElHandlers[fromEl.nodeName];\n if (specialElHandler) {\n specialElHandler(fromEl, toEl);\n }\n }\n // END: morphChildren(...)\n var morphedNode = fromNode;\n var morphedNodeType = morphedNode.nodeType;\n var toNodeType = toNode.nodeType;\n if (!childrenOnly) {\n // Handle the case where we are given two DOM nodes that are not\n // compatible (e.g. <div> --> <span> or <div> --> TEXT)\n if (morphedNodeType === ELEMENT_NODE) {\n if (toNodeType === ELEMENT_NODE) {\n if (!compareNodeNames(fromNode, toNode)) {\n onNodeDiscarded(fromNode);\n morphedNode = moveChildren(fromNode, createElementNS(toNode.nodeName, toNode.namespaceURI));\n }\n } else {\n // Going from an element node to a text node\n morphedNode = toNode;\n }\n } else if (morphedNodeType === TEXT_NODE || morphedNodeType === COMMENT_NODE) {\n // Text or comment node\n if (toNodeType === morphedNodeType) {\n if (morphedNode.nodeValue !== toNode.nodeValue) {\n morphedNode.nodeValue = toNode.nodeValue;\n }\n return morphedNode;\n } else {\n // Text node to something else\n morphedNode = toNode;\n }\n }\n }\n if (morphedNode === toNode) {\n // The \"to node\" was not compatible with the \"from node\" so we had to\n // toss out the \"from node\" and use the \"to node\"\n onNodeDiscarded(fromNode);\n } else {\n if (toNode.isSameNode && toNode.isSameNode(morphedNode)) {\n return;\n }\n morphEl(morphedNode, toNode, childrenOnly);\n // We now need to loop over any keyed nodes that might need to be\n // removed. We only do the removal if we know that the keyed node\n // never found a match. When a keyed node is matched up we remove\n // it out of fromNodesLookup and we use fromNodesLookup to determine\n // if a keyed node has been matched up or not\n if (keyedRemovalList) {\n for (var i = 0, len = keyedRemovalList.length; i < len; i++) {\n var elToRemove = fromNodesLookup[keyedRemovalList[i]];\n if (elToRemove) {\n removeNode(elToRemove, elToRemove.parentNode, false);\n }\n }\n }\n }\n if (!childrenOnly && morphedNode !== fromNode && fromNode.parentNode) {\n if (morphedNode.actualize) {\n morphedNode = morphedNode.actualize(fromNode.ownerDocument || doc);\n }\n // If we had to swap out the from node with a new node because the old\n // node was not compatible with the target node then we need to\n // replace the old DOM node in the original DOM tree. This is only\n // possible if the original DOM node was part of a DOM tree which\n // we know is the case if it has a parent node.\n fromNode.parentNode.replaceChild(morphedNode, fromNode);\n }\n return morphedNode;\n };\n}\n\nvar morphdom = morphdomFactory(morphAttrs);\n\n/*\n * TurboMorph 0.2.0\n */ function morph() {\n const options = {\n childrenOnly: this.hasAttribute(\"children-only\")\n };\n this.targetElements.forEach((element => {\n morphdom(element, options.childrenOnly ? this.templateContent : this.templateElement.innerHTML, options);\n }));\n}\n\nconst initialize$1 = streamActions => {\n streamActions.morph = morph;\n};\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, ((_, char) => char.toUpperCase()));\n}\n\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, ((_, char) => `-${char.toLowerCase()}`));\n}\n\nfunction tokenize(value) {\n return value ? value.match(/[^\\s]+/g) || [] : [];\n}\n\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n}\n\nvar Utils = Object.freeze({\n __proto__: null,\n camelize: camelize,\n capitalize: capitalize,\n dasherize: dasherize,\n tokenize: tokenize,\n typecast: typecast\n});\n\nfunction add_css_class() {\n const classes = tokenize(this.getAttribute(\"classes\"));\n if (classes.length > 0) {\n this.targetElements.forEach((element => element.classList.add(...classes)));\n } else {\n console.warn(`[TurboPower] no \"classes\" provided for Turbo Streams operation \"add_css_class\"`);\n }\n}\n\nfunction remove_attribute() {\n const attribute = this.getAttribute(\"attribute\");\n if (attribute) {\n this.targetElements.forEach((element => element.removeAttribute(attribute)));\n } else {\n console.warn(`[TurboPower] no \"attribute\" provided for Turbo Streams operation \"remove_attribute\"`);\n }\n}\n\nfunction remove_css_class() {\n const classes = tokenize(this.getAttribute(\"classes\"));\n if (classes.length > 0) {\n this.targetElements.forEach((element => element.classList.remove(...classes)));\n } else {\n console.warn(`[TurboPower] no \"classes\" provided for Turbo Streams operation \"remove_css_class\"`);\n }\n}\n\nfunction set_attribute() {\n const attribute = this.getAttribute(\"attribute\");\n const value = this.getAttribute(\"value\") || \"\";\n if (attribute) {\n this.targetElements.forEach((element => element.setAttribute(attribute, value)));\n } else {\n console.warn(`[TurboPower] no \"attribute\" provided for Turbo Streams operation \"set_attribute\"`);\n }\n}\n\nfunction set_dataset_attribute() {\n const attribute = this.getAttribute(\"attribute\");\n const value = this.getAttribute(\"value\") || \"\";\n if (attribute) {\n this.targetElements.forEach((element => element.dataset[camelize(attribute)] = value));\n } else {\n console.warn(`[TurboPower] no \"attribute\" provided for Turbo Streams operation \"set_dataset_attribute\"`);\n }\n}\n\nfunction set_property() {\n const name = this.getAttribute(\"name\");\n const value = typecast(this.getAttribute(\"value\") || \"\");\n if (name) {\n this.targetElements.forEach((element => element[name] = value));\n } else {\n console.error(`[TurboPower] no \"name\" provided for Turbo Streams operation \"set_property\"`);\n }\n}\n\nfunction set_style() {\n const name = this.getAttribute(\"name\");\n const value = this.getAttribute(\"value\") || \"\";\n if (name) {\n this.targetElements.forEach((element => element.style[name] = value));\n } else {\n console.error(`[TurboPower] no \"name\" provided for Turbo Streams operation \"set_style\"`);\n }\n}\n\nfunction set_styles() {\n const styles = this.getAttribute(\"styles\") || \"\";\n this.targetElements.forEach((element => element.setAttribute(\"style\", styles)));\n}\n\nfunction set_value() {\n const value = this.getAttribute(\"value\") || \"\";\n this.targetElements.forEach((element => element.value = value));\n}\n\nfunction toggle_css_class() {\n const classes = tokenize(this.getAttribute(\"classes\"));\n if (classes.length > 0) {\n this.targetElements.forEach((element => {\n classes.forEach((className => element.classList.toggle(className)));\n }));\n } else {\n console.warn(`[TurboPower] no \"classes\" provided for Turbo Streams operation \"toggle_css_class\"`);\n }\n}\n\nfunction replace_css_class() {\n const from = this.getAttribute(\"from\") || \"\";\n const to = this.getAttribute(\"to\") || \"\";\n if (from && to) {\n this.targetElements.forEach((element => {\n const wasReplaced = element.classList.replace(from, to);\n if (!wasReplaced) {\n console.warn(`[TurboPower] The \"${from}\" CSS class provided in the \"from\" attribute for the \"replace_css_class\" action was not found on the target element. No replacements made.`, element);\n }\n }));\n } else {\n console.warn(`[TurboPower] no \"from\" or \"to\" class provided for Turbo Streams operation \"replace_css_class\"`);\n }\n}\n\nfunction registerAttributesActions(streamActions) {\n streamActions.add_css_class = add_css_class;\n streamActions.remove_css_class = remove_css_class;\n streamActions.remove_attribute = remove_attribute;\n streamActions.set_attribute = set_attribute;\n streamActions.set_dataset_attribute = set_dataset_attribute;\n streamActions.set_property = set_property;\n streamActions.set_style = set_style;\n streamActions.set_styles = set_styles;\n streamActions.set_value = set_value;\n streamActions.toggle_css_class = toggle_css_class;\n streamActions.replace_css_class = replace_css_class;\n}\n\nfunction reload() {\n window.location.reload();\n}\n\nfunction scroll_into_view() {\n const alignToTop = this.getAttribute(\"align-to-top\");\n const block = this.getAttribute(\"block\");\n const inline = this.getAttribute(\"inline\");\n const behavior = this.getAttribute(\"behavior\");\n if (alignToTop) {\n this.targetElements.forEach((element => element.scrollIntoView(alignToTop === \"true\")));\n } else if (block || inline || behavior) {\n const options = {};\n if (block) options.block = block;\n if (inline) options.inline = inline;\n if (behavior) options.behavior = behavior;\n this.targetElements.forEach((element => element.scrollIntoView(options)));\n } else {\n this.targetElements.forEach((element => element.scrollIntoView()));\n }\n}\n\nfunction set_focus() {\n this.targetElements.forEach((element => element.focus()));\n}\n\nfunction set_title() {\n const title = this.getAttribute(\"title\") || \"\";\n let titleElement = document.head.querySelector(\"title\");\n if (!titleElement) {\n titleElement = document.createElement(\"title\");\n document.head.appendChild(titleElement);\n }\n titleElement.textContent = title;\n}\n\nfunction registerBrowserActions(streamActions) {\n streamActions.reload = reload;\n streamActions.scroll_into_view = scroll_into_view;\n streamActions.set_focus = set_focus;\n streamActions.set_title = set_title;\n}\n\nfunction console_log() {\n const message = this.getAttribute(\"message\");\n const level = this.getAttribute(\"level\") || \"log\";\n console[level](message);\n}\n\nfunction console_table() {\n const data = JSON.parse(this.getAttribute(\"data\") || \"[]\");\n const columns = JSON.parse(this.getAttribute(\"columns\") || \"[]\");\n console.table(data, columns);\n}\n\nfunction registerDebugActions(streamActions) {\n streamActions.console_log = console_log;\n streamActions.console_table = console_table;\n}\n\nfunction invoke() {\n console.warn(\"[TurboPower] The `invoke` Turbo Stream Action was removed from TurboPower. If you'd like to continue using this action please use the successor library instead. Read more here: https://github.com/hopsoft/turbo_boost-streams\");\n}\n\nfunction registerDeprecatedActions(streamActions) {\n if (!streamActions.invoke) {\n streamActions.invoke = invoke;\n }\n}\n\nclass CookieStringBuilder {\n constructor(streamElement) {\n this.ATTRIBUTE_TO_COOKIE_KEY_MAPPING = [ [ \"domain\", \"Domain\", false ], [ \"path\", \"Path\", false ], [ \"expires\", \"Expires\", false ], [ \"max-age\", \"Max-Age\", false ], [ \"http-only\", \"HttpOnly\", true ], [ \"secure\", \"Secure\", true ], [ \"same-site\", \"SameSite\", false ] ];\n this.streamElement = streamElement;\n }\n build() {\n let cookieString = `${this.streamElement.getAttribute(\"name\")}=${this.streamElement.getAttribute(\"value\")}`;\n this.ATTRIBUTE_TO_COOKIE_KEY_MAPPING.forEach((([streamElementAttribute, cookieKey, isBooleanAttribute]) => {\n const cookieValue = this.streamElement.getAttribute(streamElementAttribute);\n if (cookieValue !== null) {\n const cookieKeyPair = isBooleanAttribute ? cookieKey : `${cookieKey}=${cookieValue}`;\n cookieString = `${cookieString}; ${cookieKeyPair}`;\n }\n }));\n return cookieString;\n }\n}\n\nfunction set_cookie() {\n const cookie = this.getAttribute(\"cookie\") || \"\";\n document.cookie = cookie;\n}\n\nfunction set_cookie_item() {\n const cookieStringBuilder = new CookieStringBuilder(this);\n document.cookie = cookieStringBuilder.build();\n}\n\nfunction registerDocumentActions(streamActions) {\n streamActions.set_cookie = set_cookie;\n streamActions.set_cookie_item = set_cookie_item;\n}\n\nfunction graft() {\n const selector = this.getAttribute(\"parent\");\n if (selector) {\n const parent = document.querySelector(selector);\n if (parent) {\n this.targetElements.forEach((element => parent.appendChild(element)));\n } else {\n console.error(`[TurboPower] couldn't find parent element using selector \"${selector}\" for Turbo Streams operation \"graft\"`);\n }\n } else {\n console.error(`[TurboPower] no \"parent\" selector provided for Turbo Streams operation \"graft\"`);\n }\n}\n\nfunction inner_html() {\n const html = this.templateContent.textContent || \"\";\n this.targetElements.forEach((element => element.innerHTML = html));\n}\n\nfunction insert_adjacent_html() {\n const position = this.getAttribute(\"position\") || \"beforebegin\";\n const html = this.templateContent.textContent || \"\";\n this.targetElements.forEach((element => element.insertAdjacentHTML(position, html)));\n}\n\nfunction insert_adjacent_text() {\n const position = this.getAttribute(\"position\") || \"beforebegin\";\n const message = this.getAttribute(\"text\") || \"\";\n this.targetElements.forEach((element => element.insertAdjacentText(position, message)));\n}\n\nfunction outer_html() {\n const html = this.templateContent.textContent || \"\";\n this.targetElements.forEach((element => element.outerHTML = html));\n}\n\nfunction set_meta() {\n const name = this.getAttribute(\"name\");\n const content = this.getAttribute(\"content\") || \"\";\n if (name) {\n let meta = document.head.querySelector(`meta[name='${name}']`);\n if (!meta) {\n meta = document.createElement(\"meta\");\n meta.name = name;\n document.head.appendChild(meta);\n }\n meta.content = content;\n } else {\n console.error(`[TurboPower] no \"name\" provided for Turbo Streams operation \"set_meta\"`);\n }\n}\n\nfunction text_content() {\n const text = this.getAttribute(\"text\") || \"\";\n this.targetElements.forEach((element => element.textContent = text));\n}\n\nfunction registerDOMActions(streamActions) {\n streamActions.graft = graft;\n streamActions.inner_html = inner_html;\n streamActions.insert_adjacent_html = insert_adjacent_html;\n streamActions.insert_adjacent_text = insert_adjacent_text;\n streamActions.outer_html = outer_html;\n streamActions.text_content = text_content;\n streamActions.set_meta = set_meta;\n}\n\nfunction dispatch_event() {\n const name = this.getAttribute(\"name\");\n let template = null;\n try {\n template = this.templateContent.textContent;\n } catch (e) {}\n try {\n const detail = template ? JSON.parse(template) : {};\n if (name) {\n const options = {\n bubbles: true,\n cancelable: true,\n detail: detail\n };\n const event = new CustomEvent(name, options);\n this.targetElements.forEach((element => element.dispatchEvent(event)));\n } else {\n console.warn(`[TurboPower] no \"name\" provided for Turbo Streams operation \"dispatch_event\"`);\n }\n } catch (error) {\n console.error(`[TurboPower] error proccessing provided \"detail\" in \"<template>\" (\"${template}\") for Turbo Streams operation \"dispatch_event\".`, `Error: \"${error.message}\"`);\n }\n}\n\nfunction registerEventsActions(streamActions) {\n streamActions.dispatch_event = dispatch_event;\n}\n\nfunction reset_form() {\n this.targetElements.forEach((form => form.reset()));\n}\n\nfunction registerFormActions(streamActions) {\n streamActions.reset_form = reset_form;\n}\n\nfunction push_state() {\n const url = this.getAttribute(\"url\");\n const state = this.getAttribute(\"state\");\n const title = this.getAttribute(\"title\") || \"\";\n window.history.pushState(state, title, url);\n}\n\nfunction replace_state() {\n const url = this.getAttribute(\"url\");\n const state = this.getAttribute(\"state\");\n const title = this.getAttribute(\"title\") || \"\";\n window.history.replaceState(state, title, url);\n}\n\nfunction history_back() {\n window.history.back();\n}\n\nfunction history_forward() {\n window.history.forward();\n}\n\nfunction history_go() {\n const delta = Number(this.getAttribute(\"delta\")) || 0;\n window.history.go(delta);\n}\n\nfunction registerHistoryActions(streamActions) {\n streamActions.push_state = push_state;\n streamActions.replace_state = replace_state;\n streamActions.history_back = history_back;\n streamActions.history_go = history_go;\n}\n\nconst PERMITTED_ATTRIBUTES = [ \"dir\", \"lang\", \"badge\", \"body\", \"tag\", \"icon\", \"image\", \"data\", \"vibrate\", \"renotify\", \"require-interaction\", \"actions\", \"silent\" ];\n\nconst createNotification = streamElement => {\n const title = streamElement.getAttribute(\"title\") || \"\";\n const attributes = Array.from(streamElement.attributes).filter((attribute => PERMITTED_ATTRIBUTES.includes(attribute.name))).map((attribute => [ camelize(attribute.name), typecast(attribute.value) ]));\n const options = Object.fromEntries(attributes);\n new Notification(title, options);\n};\n\nfunction notification() {\n if (!window.Notification) {\n alert(\"This browser does not support desktop notification\");\n } else if (Notification.permission === \"granted\") {\n createNotification(this);\n } else if (Notification.permission !== \"denied\") {\n Notification.requestPermission().then((permission => {\n if (permission === \"granted\") {\n createNotification(this);\n }\n }));\n }\n}\n\nfunction registerNotificationActions(streamActions) {\n streamActions.notification = notification;\n}\n\nfunction storage(type) {\n return type === \"session\" ? window.sessionStorage : window.localStorage;\n}\n\nfunction clear_storage() {\n const type = this.getAttribute(\"type\");\n storage(type).clear();\n}\n\nfunction set_storage_item() {\n const key = this.getAttribute(\"key\");\n const value = this.getAttribute(\"value\") || \"\";\n const type = this.getAttribute(\"type\");\n if (key) {\n storage(type).setItem(key, value);\n } else {\n console.warn(`[TurboPower] no \"key\" provided for Turbo Streams operation \"set_storage_item\"`);\n }\n}\n\nfunction remove_storage_item() {\n const key = this.getAttribute(\"key\");\n const type = this.getAttribute(\"type\");\n if (key) {\n storage(type).removeItem(key);\n } else {\n console.warn(`[TurboPower] no \"key\" provided for Turbo Streams operation \"remove_storage_item\"`);\n }\n}\n\nfunction registerStorageActions(streamActions) {\n streamActions.clear_storage = clear_storage;\n streamActions.set_storage_item = set_storage_item;\n streamActions.remove_storage_item = remove_storage_item;\n}\n\nvar Proxy = {\n get location() {\n return window.TurboPowerLocation || window.location;\n }\n};\n\nfunction redirect_to() {\n const url = this.getAttribute(\"url\") || \"/\";\n const turboAction = this.getAttribute(\"turbo-action\") || \"advance\";\n const turboFrame = this.getAttribute(\"turbo-frame\");\n const turbo = this.getAttribute(\"turbo\") !== \"false\";\n const options = {\n action: turboAction\n };\n if (turboFrame) {\n options.frame = turboFrame;\n }\n if (turbo && window.Turbo) {\n window.Turbo.visit(url, options);\n } else {\n Proxy.location.assign(url);\n }\n}\n\nfunction turbo_clear_cache() {\n window.Turbo.cache.clear();\n}\n\nfunction registerTurboActions(streamActions) {\n streamActions.redirect_to = redirect_to;\n streamActions.turbo_clear_cache = turbo_clear_cache;\n}\n\nfunction turbo_progress_bar_set_value() {\n const value = this.getAttribute(\"value\") || 0;\n window.Turbo.navigator.adapter.progressBar.setValue(Number(value));\n}\n\nfunction turbo_progress_bar_show() {\n window.Turbo.navigator.adapter.progressBar.show();\n}\n\nfunction turbo_progress_bar_hide() {\n window.Turbo.navigator.adapter.progressBar.hide();\n}\n\nfunction registerTurboProgressBarActions(streamActions) {\n streamActions.turbo_progress_bar_set_value = turbo_progress_bar_set_value;\n streamActions.turbo_progress_bar_show = turbo_progress_bar_show;\n streamActions.turbo_progress_bar_hide = turbo_progress_bar_hide;\n}\n\nfunction turbo_frame_reload() {\n this.targetElements.forEach((element => element.reload()));\n}\n\nfunction turbo_frame_set_src() {\n const src = this.getAttribute(\"src\");\n this.targetElements.forEach((element => element.src = src));\n}\n\nfunction registerTurboFrameActions(streamActions) {\n streamActions.turbo_frame_reload = turbo_frame_reload;\n streamActions.turbo_frame_set_src = turbo_frame_set_src;\n}\n\nfunction register$1(streamActions) {\n registerAttributesActions(streamActions);\n registerBrowserActions(streamActions);\n registerDebugActions(streamActions);\n registerDeprecatedActions(streamActions);\n registerDocumentActions(streamActions);\n registerDOMActions(streamActions);\n registerEventsActions(streamActions);\n registerFormActions(streamActions);\n registerHistoryActions(streamActions);\n registerNotificationActions(streamActions);\n registerStorageActions(streamActions);\n registerTurboActions(streamActions);\n registerTurboProgressBarActions(streamActions);\n registerTurboFrameActions(streamActions);\n}\n\nvar Actions = Object.freeze({\n __proto__: null,\n add_css_class: add_css_class,\n clear_storage: clear_storage,\n console_log: console_log,\n console_table: console_table,\n dispatch_event: dispatch_event,\n graft: graft,\n history_back: history_back,\n history_forward: history_forward,\n history_go: history_go,\n inner_html: inner_html,\n insert_adjacent_html: insert_adjacent_html,\n insert_adjacent_text: insert_adjacent_text,\n invoke: invoke,\n notification: notification,\n outer_html: outer_html,\n push_state: push_state,\n redirect_to: redirect_to,\n register: register$1,\n registerAttributesActions: registerAttributesActions,\n registerBrowserActions: registerBrowserActions,\n registerDOMActions: registerDOMActions,\n registerDebugActions: registerDebugActions,\n registerDeprecatedActions: registerDeprecatedActions,\n registerDocumentActions: registerDocumentActions,\n registerEventsActions: registerEventsActions,\n registerFormActions: registerFormActions,\n registerHistoryActions: registerHistoryActions,\n registerNotificationActions: registerNotificationActions,\n registerStorageActions: registerStorageActions,\n registerTurboActions: registerTurboActions,\n registerTurboFrameActions: registerTurboFrameActions,\n registerTurboProgressBarActions: registerTurboProgressBarActions,\n reload: reload,\n remove_attribute: remove_attribute,\n remove_css_class: remove_css_class,\n remove_storage_item: remove_storage_item,\n replace_css_class: replace_css_class,\n replace_state: replace_state,\n reset_form: reset_form,\n scroll_into_view: scroll_into_view,\n set_attribute: set_attribute,\n set_cookie: set_cookie,\n set_cookie_item: set_cookie_item,\n set_dataset_attribute: set_dataset_attribute,\n set_focus: set_focus,\n set_meta: set_meta,\n set_property: set_property,\n set_storage_item: set_storage_item,\n set_style: set_style,\n set_styles: set_styles,\n set_title: set_title,\n set_value: set_value,\n text_content: text_content,\n toggle_css_class: toggle_css_class,\n turbo_clear_cache: turbo_clear_cache,\n turbo_frame_reload: turbo_frame_reload,\n turbo_frame_set_src: turbo_frame_set_src,\n turbo_progress_bar_hide: turbo_progress_bar_hide,\n turbo_progress_bar_set_value: turbo_progress_bar_set_value,\n turbo_progress_bar_show: turbo_progress_bar_show\n});\n\nfunction initialize(streamActions) {\n initialize$1(streamActions);\n register$1(streamActions);\n}\n\nfunction register(name, action, streamActions) {\n streamActions[name] = action;\n}\n\nvar index = {\n initialize: initialize,\n register: register,\n Actions: Actions,\n Utils: Utils\n};\n\nexport { Actions, Utils, index as default, initialize, register };\n", "// Entry point for the build script in your package.json\nif (navigator.serviceWorker) {\n navigator.serviceWorker.register('/serviceworker.js')\n}\n\nif (!navigator.cookieEnabled) {\n window.location.replace('/cookies_required')\n}\n\nimport '@hotwired/turbo-rails'\nimport { StreamActions } from '@hotwired/turbo'\nimport TurboPower from 'turbo_power'\nTurboPower.initialize(StreamActions)\nimport '@rails/actioncable'\n\nimport './initializers'\n\nimport '../assets/javascripts/layout'\nimport 'bootstrap-sass'\nimport 'bootstrap-toggle'\nimport 'jquery-minicolors'\nrequire('select2')()\nimport '../../vendor/assets/javascripts/jquery.gauge'\nimport '../../vendor/assets/javascripts/intl-tel-input/utils'\nimport './controllers'\nimport '../assets/javascripts'\n\nimport LocalTime from 'local-time'\nLocalTime.start()\n\nimport { setupConfirmations } from '../components/confirm_button_to/component'\nsetupConfirmations()\n\nimport embed from 'vega-embed'\n\nwindow.vegaEmbed = embed\nwindow.dispatchEvent(new Event('vega:load'))\n\nimport * as ActiveStorage from '@rails/activestorage'\nActiveStorage.start()\n", "// This has to exist to make jquery work because of the way\n// that js hoists imports\n// I hate jquery!\nimport jquery from 'jquery'\nwindow.jQuery = jquery\nwindow.$ = jquery\n", "$(document).on('turbo:load', function () {\n // Tooltips\n initializeTooltips()\n\n // Dropdowns as Tabs\n initializeDropdownTabs()\n})\n\nexport function initializeTooltips(parent) {\n var selector = '[data-toggle=\"tooltip\"]'\n if (parent === undefined) {\n var $elements = $(selector)\n } else {\n var $elements = $(parent).find(selector)\n }\n\n $elements.tooltip({ html: true, delay: { show: 250, hide: 100 } })\n}\n\nexport function initializeDropdownTabs(parent) {\n var selector = '.dropdown-tabs'\n if (parent === undefined) {\n var $elements = $(selector)\n } else {\n var $elements = $(parent).find(selector)\n }\n\n $elements.each(function () {\n var $this = $(this)\n $this.fadeIn()\n if ($this.find('.dropdown-tabs-menu li.active').length) {\n var selText = $this.find('.dropdown-tabs-menu li.active').text()\n $this.find('.dropdown-toggle').html(selText + ' <i class=\"fas fa-chevron-down\"></i>')\n }\n\n $(this)\n .find('.dropdown-tabs-menu li a')\n .click(function () {\n if ($this.find('.dropdown-tabs-menu li.active').length) {\n var selText = $(this).text()\n $(this)\n .parents('.dropdown-tabs')\n .find('.dropdown-toggle')\n .html(selText + ' <i class=\"fas fa-chevron-down\"></i>')\n $(this).parents('.dropdown-tabs').find('.dropdown-tabs-menu li').removeClass('active')\n }\n\n $(this).trigger('voltage:dropdown-tabs:selected')\n })\n })\n}\n\nexport function initializeCounters(parent) {\n var selector = '.counter-value'\n if (parent === undefined) {\n var $elements = $(selector)\n } else {\n var $elements = $(parent).find(selector)\n }\n\n $elements.each(function () {\n var $this = $(this),\n countTo = $this.attr('data-count')\n\n $({ countNum: $this.text() }).animate(\n {\n countNum: countTo,\n },\n {\n duration: 1000,\n easing: 'linear',\n step: function () {\n $this.text(Math.floor(this.countNum))\n },\n complete: function () {\n $this.text(this.countNum)\n },\n },\n )\n })\n}\n", "import {\n initializeTooltips,\n initializeDropdownTabs,\n initializeCounters,\n} from '../../../vendor/assets/javascripts/voltage'\n\nwindow.initializeTooltips = initializeTooltips\nwindow.initializeDropdownTabs = initializeDropdownTabs\nwindow.initializeCounters = initializeCounters\n", "/* global Turbo */\n// TODO: Delete this file\n// eslint-disable-next-line no-unused-vars\nexport function initializeWidgetCollapseExpand($collapsiblePanel) {\n $collapsiblePanel.on('hidden.bs.collapse', function () {\n var $this = $(this)\n var $toggler = $this.parent().find('.collapse-toggler')\n $toggler.addClass('fa-chevron-down')\n $toggler.removeClass('fa-chevron-up')\n $this.removeClass('in')\n $this.parent().addClass('collapsed')\n\n var pref_update = {}\n var $section = $(this).closest('.lazy-load')\n var section_name = $section\n .attr('id')\n .replace(/-module$/, '')\n .replace(/-/, '_')\n pref_update[section_name] = 'collapsed'\n\n updateDashboardCollapsePreferences(pref_update)\n })\n\n $collapsiblePanel.on('shown.bs.collapse', function () {\n var $this = $(this)\n var $toggler = $this.parent().find('.collapse-toggler')\n $toggler.addClass('fa-chevron-up')\n $toggler.removeClass('fa-chevron-down')\n $this.addClass('in')\n $this.parent().removeClass('collapsed')\n\n var pref_update = {}\n var $section = $(this).closest('.lazy-load')\n var section_name = $section\n .attr('id')\n .replace(/-module$/, '')\n .replace(/-/, '_')\n pref_update[section_name] = 'expanded'\n\n updateDashboardCollapsePreferences(pref_update)\n })\n}\n\nfunction updateDashboardCollapsePreferences(preferences) {\n var path = '/preferences/'\n $.ajax({\n type: 'PUT',\n url: path,\n data: {\n key: 'dashboard_collapse',\n preferences,\n },\n complete(data) {\n if (data.status === 200) Turbo.cache.clear()\n else $('#global-alerts').append(data.responseText)\n },\n })\n}\n", "import { initializeWidgetCollapseExpand } from '../../assets/javascripts/collapse_expand'\n\nwindow.initializeWidgetCollapseExpand = initializeWidgetCollapseExpand\n", "import Trix from 'trix'\n\n// TODO: make this not so terrible\nexport function initializeTrix() {\n addHeadingAttributes()\n addForegroundColorAttributes()\n addBackgroundColorAttributes()\n\n addEventListener('trix-initialize', function (event) {\n new TrixExt(event.target)\n })\n\n addEventListener('trix-action-invoke', function (event) {\n if (event.actionName.includes('x-token-')) {\n insertToken()\n }\n if (event.actionName === 'x-horizontal-rule') {\n insertHorizontalRule()\n }\n\n function insertToken() {\n var editor = event.target.editor\n\n // strip off 'x-token-'\n var token = event.actionName.substring(8)\n\n // I don't know what this is, but it's highlighting our text?\n editor.composition.currentAttributes.frozen = false\n\n // insert token\n editor.insertString(`((${token}))`)\n }\n\n function insertHorizontalRule() {\n event.target.editor.insertAttachment(buildHorizontalRule())\n }\n\n function buildHorizontalRule() {\n return new Trix.Attachment({\n content: '<hr>',\n contentType: 'vnd.rubyonrails.horizontal-rule.html',\n })\n }\n })\n}\n\n// This class should be its own file probably\nclass TrixExt {\n constructor(element) {\n this.element = element\n\n var isAgreementEditor = element.classList.value.includes('agreement-trix')\n if (isAgreementEditor) this.insertTokenElements()\n this.insertDividerElements()\n this.insertHeadingElements()\n this.insertColorElements()\n }\n\n insertTokenElements() {\n this.buttonGroupFileTools.insertAdjacentHTML('afterbegin', this.tokenButtonTemplate)\n this.dialogsElement.insertAdjacentHTML('beforeend', this.tokenDialogTemplate)\n }\n\n insertDividerElements() {\n this.quoteButton.insertAdjacentHTML('afterend', this.horizontalButtonTemplate)\n }\n\n insertHeadingElements() {\n this.removeOriginalHeadingButton()\n this.insertNewHeadingButton()\n this.insertHeadingDialog()\n }\n\n removeOriginalHeadingButton() {\n this.buttonGroupBlockTools.removeChild(this.originalHeadingButton)\n }\n\n insertNewHeadingButton() {\n this.buttonGroupBlockTools.insertAdjacentHTML('afterbegin', this.headingButtonTemplate)\n }\n\n insertHeadingDialog() {\n this.dialogsElement.insertAdjacentHTML('beforeend', this.dialogHeadingTemplate)\n }\n\n insertColorElements() {\n this.insertColorButton()\n this.insertDialogColor()\n }\n\n insertColorButton() {\n this.buttonGroupTextTools.insertAdjacentHTML('beforeend', this.colorButtonTemplate)\n }\n\n insertDialogColor() {\n this.dialogsElement.insertAdjacentHTML('beforeend', this.dialogColorTemplate)\n }\n\n get buttonGroupBlockTools() {\n return this.toolbarElement.querySelector('[data-trix-button-group=block-tools]')\n }\n\n get buttonGroupFileTools() {\n return this.toolbarElement.querySelector('[data-trix-button-group=file-tools]')\n }\n\n get buttonGroupTextTools() {\n return this.toolbarElement.querySelector('[data-trix-button-group=text-tools]')\n }\n\n get dialogsElement() {\n return this.toolbarElement.querySelector('[data-trix-dialogs]')\n }\n\n get originalHeadingButton() {\n return this.toolbarElement.querySelector('[data-trix-attribute=heading1]')\n }\n\n get quoteButton() {\n return this.toolbarElement.querySelector('[data-trix-attribute=quote]')\n }\n\n get uploadButton() {\n return this.toolbarElement.querySelector('[data-trix-attribute=quote]')\n }\n\n get toolbarElement() {\n return this.element.toolbarElement\n }\n\n /* eslint-disable max-len */\n get horizontalButtonTemplate() {\n return '<button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-horizontal-rule\" data-trix-action=\"x-horizontal-rule\" tabindex=\"-1\" title=\"Divider\">Divider</button>'\n }\n\n get tokenButtonTemplate() {\n return '<button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-tokens\" data-trix-action=\"x-tokens\" tabindex=\"-1\" title=\"Tokens\">Tokens</button>'\n }\n\n get headingButtonTemplate() {\n return '<button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-action=\"x-heading\" title=\"Heading\" tabindex=\"-1\">Heading</button>'\n }\n\n get colorButtonTemplate() {\n return '<button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-color\" data-trix-action=\"x-color\" title=\"Color\" tabindex=\"-1\">Color</button>'\n }\n\n get tokenDialogTemplate() {\n return `\n <div class=\"trix-dialog trix-dialog--tokens\" data-trix-dialog=\"x-tokens\" data-trix-dialog-attribute=\"x-tokens\">\n <div class=\"trix-dialog__link-fields\">\n <input type=\"text\" name=\"x-tokens\" class=\"trix-dialog-hidden__input\" data-trix-input>\n <div class=\"trix-button-group\">\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-signature_area\">Signature Area</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-first_name\">First Name</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-last_name\">Last Name</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-street\">Street Address</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-street_2\">Street Address 2</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-city\">City</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-state\">State</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-zip\">Zip Code</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-country\">Country</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-date_of_birth\">Date of Birth</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-memberships\">Memberships</button>\n </div>\n </div>\n </div>\n `\n }\n\n get dialogHeadingTemplate() {\n return `\n <div class=\"trix-dialog trix-dialog--heading\" data-trix-dialog=\"x-heading\" data-trix-dialog-attribute=\"x-heading\">\n <div class=\"trix-dialog__link-fields\">\n <input type=\"text\" name=\"x-heading\" class=\"trix-dialog-hidden__input\" data-trix-input>\n <div class=\"trix-button-group\">\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"heading1\">H1</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"heading2\">H2</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"heading3\">H3</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"heading4\">H4</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"heading5\">H5</button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"heading6\">H6</button>\n </div>\n </div>\n </div>\n `\n }\n\n get dialogColorTemplate() {\n return `\n <div class=\"trix-dialog trix-dialog--color\" data-trix-dialog=\"x-color\" data-trix-dialog-attribute=\"x-color\">\n <div class=\"trix-dialog__link-fields\">\n <input type=\"text\" name=\"x-color\" class=\"trix-dialog-hidden__input\" data-trix-input>\n <div class=\"trix-button-group\">\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor1\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor2\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor3\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor4\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor5\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor6\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor7\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor8\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor9\" data-trix-method=\"hideDialog\"></button>\n </div>\n <div class=\"trix-button-group\">\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor1\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor2\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor3\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor4\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor5\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor6\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor7\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor8\" data-trix-method=\"hideDialog\"></button>\n <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor9\" data-trix-method=\"hideDialog\"></button>\n </div>\n </div>\n </div>\n `\n }\n}\n/* eslint-enable */\n\nfunction addHeadingAttributes() {\n Array.from(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']).forEach((tagName, i) => {\n Trix.config.blockAttributes[`heading${i + 1}`] = {\n tagName,\n terminal: true,\n breakOnReturn: true,\n group: false,\n }\n })\n}\n\nfunction addForegroundColorAttributes() {\n Array.from([\n 'rgb(136, 118, 38)',\n 'rgb(185, 94, 6)',\n 'rgb(207, 0, 0)',\n 'rgb(216, 28, 170)',\n 'rgb(144, 19, 254)',\n 'rgb(5, 98, 185)',\n 'rgb(17, 138, 15)',\n 'rgb(148, 82, 22)',\n 'rgb(102, 102, 102)',\n ]).forEach((color, i) => {\n Trix.config.textAttributes[`fgColor${i + 1}`] = {\n style: { color },\n inheritable: true,\n parser: (e) => e.style.color === color,\n }\n })\n}\n\nfunction addBackgroundColorAttributes() {\n Array.from([\n 'rgb(250, 247, 133)',\n 'rgb(255, 240, 219)',\n 'rgb(255, 229, 229)',\n 'rgb(255, 228, 247)',\n 'rgb(242, 237, 255)',\n 'rgb(225, 239, 252)',\n 'rgb(228, 248, 226)',\n 'rgb(238, 226, 215)',\n 'rgb(242, 242, 242)',\n ]).forEach((color, i) => {\n Trix.config.textAttributes[`bgColor${i + 1}`] = {\n style: { backgroundColor: color },\n inheritable: true,\n parser: (e) => e.style.backgroundColor === color,\n }\n })\n}\n\nTrix.config.attachments.preview.caption = {\n name: false,\n size: false,\n}\n\nTrix.config.css.attachment = 'img-fluid'\n\nfunction uploadAttachment(attachment) {\n 'use strict'\n\n var file = attachment.file\n var form = new FormData()\n form.append('Content-Type', file.type)\n form.append('file', file)\n\n var xhr = new XMLHttpRequest()\n xhr.open('POST', '/files.js', true)\n xhr.setRequestHeader('X-CSRF-Token', $(\"meta[name='csrf-token']\").attr('content'))\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n\n xhr.upload.onprogress = function (event) {\n var progress = (event.loaded / event.total) * 100\n attachment.setUploadProgress(progress)\n }\n\n xhr.onload = function () {\n if (xhr.status === 201 || xhr.status === 200) {\n var data = JSON.parse(xhr.responseText)\n return attachment.setAttributes({\n url: data.url,\n })\n }\n\n $('#global-alerts').append(xhr.responseText)\n return attachment.remove()\n }\n\n return xhr.send(form)\n}\n\ndocument.addEventListener('trix-attachment-add', function (event) {\n 'use strict'\n\n var attachment = event.attachment\n\n if (attachment.file) return uploadAttachment(attachment)\n\n return false\n})\n", "import { initializeTrix } from '../helpers/trix_helper'\n\ninitializeTrix()\n", "/* eslint-disable no-unused-vars */\n/* global initializeProspectOffWarning */\n/* global initializeClipboardCopyButton */\n/* global initializeProgramSignup */\n/* global initializeSchedulerBehavior */\n/* global loadLazyPartial */\n/* global initializeInventoryItemCheckbox */\n/* global initializeProgramSignupBehavior */\n/* global initializeLandingPageModules */\n/* global initializeTrialMembershipBehavior */\n/* global intlTelInput */\n\n// TODO: Move all this stuff to a stimulus controller or something\nexport function enableApplyToPreviewButton() {\n 'use strict'\n\n $('.apply-btn').addClass('btn-primary')\n}\n\nexport function removeDeletedElements() {\n for (const d of document.querySelectorAll('.delete')) {\n if (d.value === '1') {\n d.closest('.selected-module.hidden').remove()\n }\n }\n}\n\nexport function initializeEmbedCodeModal() {\n 'use strict'\n\n var $modal = $('#view-embed-code-modal')\n $modal.on('show.bs.modal', function (e) {\n var $this = $(this)\n var $target = $this.find('pre.embed-code code')\n var embedcode = $(e.relatedTarget).data('embedcode')\n $target.text(embedcode)\n $this.find('textarea.embed-code').val(embedcode)\n initializeClipboardCopyButton($modal)\n })\n}\n\nexport function initializeTemplateStartDatePicker() {\n 'use strict'\n\n $('.start-date-field').change(function () {\n const $checkboxField = $(this).closest('.table-row').find('.membership-template-check')\n $checkboxField.trigger('click')\n enableApplyToPreviewButton()\n })\n}\n\nexport function initializeDeleteMembershipTemplateCheckboxes() {\n $('.membership-template-check').click(function () {\n const $this = $(this)\n if ($this.hasClass('checked')) {\n $this.siblings('.delete').val(0)\n } else {\n $this.siblings('.delete').val(1)\n }\n })\n}\n\nexport function initializeCollapsibleModule($module) {\n 'use strict'\n $module.on('show.bs.collapse', function () {\n const $selectedModule = $(this).closest('.selected-module.row')\n $selectedModule.removeClass('collapsed')\n\n $selectedModule.find('.expand-module').find('svg').toggleClass('chevron-rotate')\n })\n\n $module.on('hidden.bs.collapse', function () {\n const $selectedModule = $(this).closest('.selected-module.row')\n $selectedModule.addClass('collapsed')\n\n $selectedModule.find('.expand-module').find('svg').toggleClass('chevron-rotate')\n })\n}\n\nexport function initializeCollapsibleModules() {\n 'use-strict'\n const moduleNames = [\n 'header',\n 'agreement',\n 'description',\n 'inventory',\n 'lcf',\n 'program',\n 'scheduler',\n 'trial-membership',\n ]\n for (const moduleName of moduleNames) {\n initializeCollapsibleModule($(`#${moduleName}-module-content`))\n }\n}\n\nexport function handleProspectCreationToggle() {\n 'use strict'\n\n // Gather data on all of the form fields currently displayed\n var formFieldInputs = $('.selected-form-field')\n var formFieldInputsRequiredToCreateProspects = []\n $.each(formFieldInputs, function (index, value) {\n var key = $(value).find('.selected-form-field-label input:first-child').attr('value')\n var requireness = $(value).find('.selected-form-field-requireness input').is(':checked')\n\n if (key === 'email' && requireness === true) formFieldInputsRequiredToCreateProspects.push(key)\n\n if (key === 'name' && requireness === true) formFieldInputsRequiredToCreateProspects.push(key)\n })\n\n // Check and see if the form fields necessary for creating a prospect exist\n var requiredFieldsPresent =\n jQuery.inArray('email', formFieldInputsRequiredToCreateProspects) !== -1 &&\n jQuery.inArray('name', formFieldInputsRequiredToCreateProspects) !== -1\n\n // Check and see if this form currently has \"prospect creation\" enabled.\n var $prospectCreationToggle = $('#prospect-creation-toggle')\n let profitItemOptions = document.querySelectorAll(\n '.module-option-programs, .module-option-inventory_items, .module-option-trial_memberships',\n )\n\n if (\n requiredFieldsPresent ||\n $('.selected-module .lead-capture-form-item input:checked').data('canEnableProspecting')\n ) {\n // has the necessary fields\n $prospectCreationToggle.bootstrapToggle('destroy')\n $prospectCreationToggle.bootstrapToggle()\n $prospectCreationToggle.bootstrapToggle('enable')\n if ($prospectCreationToggle.hasClass('disabled')) {\n $prospectCreationToggle.parent().addClass('disabled')\n }\n\n enableProfitItemOptions(profitItemOptions)\n\n $('#name-warning').addClass('hidden')\n } else {\n // does not have the necessary fields required to permit \"prospect creation\"\n if ($('#prospect-creation-toggle').length > 0 && $('#prospect-creation-toggle')[0].checked) {\n $('#name-warning-modal').modal('show')\n }\n\n $('#name-warning').removeClass('hidden')\n\n disableProfitItemOptions(profitItemOptions)\n\n $prospectCreationToggle.bootstrapToggle('destroy')\n $prospectCreationToggle.bootstrapToggle()\n $prospectCreationToggle.bootstrapToggle('off')\n $prospectCreationToggle.bootstrapToggle('disable')\n }\n}\n\nexport function disableProfitItemOptions(options) {\n for (const option of options) {\n option.classList.add('disabled')\n }\n}\n\nexport function enableProfitItemOptions(options) {\n for (const option of options) {\n let modName = option.dataset.moduleName\n let selectedModule = document.querySelector(`.selected-module input[name=\"modules[${modName}][key]\"]`)\n\n if (option.classList.contains('disabled') && !selectedModule) {\n option.classList.remove('disabled')\n }\n }\n}\n\n// Reload Telephone Input\nexport function initializeTelephoneInputBehavior(element) {\n const phoneInputs = element.contentWindow.document.querySelectorAll('.public input[type=tel]')\n\n for (const phoneInput of phoneInputs) {\n intlTelInput(phoneInput, {\n utilsScript: '/assets/intl-tel-input/utils.js',\n hiddenInput: phoneInput.dataset.inputname || '',\n formatOnDisplay: true,\n separateDialCode: true,\n initialCountry: document.body.dataset.countryCode || 'us',\n })\n }\n}\n\nexport function reloadPreview() {\n const preview = document.querySelector('#preview-container')\n const oldFrame = preview.querySelector('iframe')\n const newFrame = document.createElement('iframe')\n newFrame.src = oldFrame.src\n newFrame.classList.add('hidden')\n preview.appendChild(newFrame)\n newFrame.addEventListener('load', () => {\n preview.removeChild(oldFrame)\n preview.style['background-color'] = document\n .querySelector('.third-color')\n .querySelector('.minicolors-swatch-color').style['background-color']\n newFrame.classList.remove('hidden')\n initializeTelephoneInputBehavior(newFrame)\n })\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n initializeTemplateStartDatePicker()\n initializeDeleteMembershipTemplateCheckboxes()\n initializeCollapsibleModules()\n $('.apply-btn').click(function () {\n if (!$(this).hasClass('btn-primary')) return\n\n var $form = $('#lead-capture-form, #landing-page-form')\n $.ajax({\n type: $form.attr('method'),\n url: $form.attr('action'),\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', $(\"meta[name='csrf-token']\").attr('content'))\n },\n data: $form.serialize(),\n complete(data) {\n if (data.status === 200 || data.status === 204) {\n reloadPreview()\n $(document).trigger('lazy-load:complete')\n $('.lazy-load#landing-pages').trigger('lazy-load:complete')\n const leftSection = $('.reload-left-section')\n let collapsdModules = {}\n leftSection.find('.selected-module').each(function () {\n const $module = $(this).find('.content')\n const id = $module.attr('id').split('-')[0]\n if ($module.hasClass('in')) {\n collapsdModules[id] = false\n } else {\n collapsdModules[id] = true\n }\n })\n const encodedCollapsedModules = encodeURIComponent(JSON.stringify(collapsdModules))\n $.ajax({\n type: 'GET',\n url: `${leftSection.data('path')}?collapsed_modules=${encodedCollapsedModules}`,\n dataType: 'json',\n success(_data) {\n leftSection.html(_data.partial)\n initializeInventoryItemCheckbox()\n initializeSchedulerBehavior()\n initializeTemplateStartDatePicker()\n initializeDeleteMembershipTemplateCheckboxes()\n initializeProgramSignupBehavior()\n initializeCollapsibleModules()\n initializeLandingPageModules($('#additional-sidebar'))\n removeDeletedElements()\n initializeTrialMembershipBehavior()\n },\n })\n } else {\n $('#global-alerts').append(data.responseText)\n }\n\n return false\n },\n })\n\n $('.apply-btn').removeClass('btn-primary')\n })\n\n $('input.color-picker').change(function () {\n enableApplyToPreviewButton()\n })\n\n $('.settings-toggle').click(function (event) {\n event.preventDefault()\n\n const settings = $('#settings')\n if (settings.hasClass('hidden')) {\n handleProspectCreationToggle()\n\n const membershipItemsWrapper = document.querySelector('.membership-items')\n const checkboxes = membershipItemsWrapper\n ? membershipItemsWrapper.querySelectorAll('input[type=\"checkbox\"]')\n : []\n const hasMemberships = [...checkboxes].some((checkbox) => checkbox.checked)\n const toggleCreateProspectButton = document\n .querySelector('.create-prospect-toggle-container')\n .querySelector('.toggle.btn')\n\n if (hasMemberships) {\n if (toggleCreateProspectButton.classList.contains('off')) {\n toggleCreateProspectButton.click()\n }\n toggleCreateProspectButton.classList.add('disabled')\n }\n\n settings.animate({ left: '0px' }, 'fast').removeClass('hidden')\n } else {\n settings.animate({ left: '-1000px' }, 'fast', function () {\n settings.addClass('hidden')\n })\n }\n\n initializeProspectOffWarning()\n return false\n })\n})\n/* eslint-enable no-unused-vars */\n", "import {\n enableApplyToPreviewButton,\n removeDeletedElements,\n initializeEmbedCodeModal,\n initializeTemplateStartDatePicker,\n initializeDeleteMembershipTemplateCheckboxes,\n initializeCollapsibleModule,\n initializeCollapsibleModules,\n handleProspectCreationToggle,\n disableProfitItemOptions,\n enableProfitItemOptions,\n reloadPreview,\n} from '../../assets/javascripts/school/bizbuilders.js'\n\nwindow.enableApplyToPreviewButton = enableApplyToPreviewButton\nwindow.removeDeletedElements = removeDeletedElements\nwindow.initializeEmbedCodeModal = initializeEmbedCodeModal\nwindow.initializeTemplateStartDatePicker = initializeTemplateStartDatePicker\nwindow.initializeDeleteMembershipTemplateCheckboxes = initializeDeleteMembershipTemplateCheckboxes\nwindow.initializeCollapsibleModule = initializeCollapsibleModule\nwindow.initializeCollapsibleModules = initializeCollapsibleModules\nwindow.handleProspectCreationToggle = handleProspectCreationToggle\nwindow.disableProfitItemOptions = disableProfitItemOptions\nwindow.enableProfitItemOptions = enableProfitItemOptions\nwindow.reloadPreview = reloadPreview\n", "/* eslint-disable no-unused-vars */\n/* global enableApplyToPreviewButton */\n/* global initializeProgramSignupBehavior */\n/* global initializeSchedulerBehavior */\n\nimport { enableApplyToPreviewButton } from '../../bizbuilders'\n\nexport function addCountToCounter(inputName) {\n 'use strict'\n var count = $(`.${inputName}-item-check:checked`).length\n $(`.${inputName}-count`).text(count)\n}\n\nexport function enableApplyButtonOnNewMembershipSelection() {\n $('#add-new-trial-membership').on('click', function () {\n enableApplyToPreviewButton()\n })\n}\n\nexport function activateApplyButtonWhenMembershipChecked() {\n 'use strict'\n $('body').on('click', 'label[id^=membership]', function () {\n enableApplyToPreviewButton()\n })\n $('label[id^=membership]').off()\n $('label[id^=membership]').on('click', function () {\n const inputId = $(this).siblings()[0].id\n $(`#${inputId}`).prop('checked', !$(`#${inputId}`).prop('checked'))\n\n enableApplyToPreviewButton()\n addCountToCounter('membership')\n })\n enableApplyButtonOnNewMembershipSelection()\n}\n\nexport function initializeTrialMembershipBehavior() {\n 'use strict'\n\n activateApplyButtonWhenMembershipChecked()\n}\n\nexport function initializeProspectOffWarning() {\n 'use strict'\n $('.create-prospect-toggle-container .toggle').on('click', function () {\n if ($('.membership-items-container').hasClass('active')) {\n if ($(this).find('input').is(':checked')) {\n $('#prospect-warning').show()\n } else {\n $('#prospect-warning').hide()\n }\n }\n })\n\n $('.membership-item').on('click', function () {\n $('#prospect-warning').hide()\n })\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n initializeTrialMembershipBehavior()\n initializeProgramSignupBehavior()\n initializeSchedulerBehavior()\n initializeProspectOffWarning()\n})\n/* eslint-enable no-unused-vars */\n", "import {\n addCountToCounter,\n activateApplyButtonWhenMembershipChecked,\n initializeTrialMembershipBehavior,\n initializeProspectOffWarning,\n} from '../../assets/javascripts/school/bizbuilder/landing_pages/trial_memberships'\n\nwindow.addCountToCounter = addCountToCounter\nwindow.activateApplyButtonWhenMembershipChecked = activateApplyButtonWhenMembershipChecked\nwindow.initializeTrialMembershipBehavior = initializeTrialMembershipBehavior\nwindow.initializeProspectOffWarning = initializeProspectOffWarning\n", "/* global addCountToCounter */\n/* global enableApplyToPreviewButton */\n\nexport function activateApplyButtonWhenProgramChecked() {\n 'use strict'\n $('.program-item-check').off()\n $('.program-item-check').on('click', function () {\n if ($(this).is(':checked')) {\n $(this).siblings('.delete').attr('value', 0)\n } else {\n $(this).siblings('.delete').attr('value', 1)\n }\n\n enableApplyToPreviewButton()\n addCountToCounter('program')\n })\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function initializeProgramSignupBehavior() {\n 'use strict'\n\n activateApplyButtonWhenProgramChecked()\n}\n", "import {\n activateApplyButtonWhenProgramChecked,\n initializeProgramSignupBehavior,\n} from '../../assets/javascripts/school/bizbuilder/landing_pages/programs'\n\nwindow.activateApplyButtonWhenProgramChecked = activateApplyButtonWhenProgramChecked\nwindow.initializeProgramSignupBehavior = initializeProgramSignupBehavior\n", "/* global enableApplyToPreviewButton */\n\n// eslint-disable-next-line no-unused-vars\nexport function initializeSchedulerBehavior() {\n 'use strict'\n\n $('#scheduler-required').change(function () {\n enableApplyToPreviewButton()\n })\n}\n", "import { initializeSchedulerBehavior } from '../../assets/javascripts/school/bizbuilder/landing_pages/scheduler'\n\nwindow.initializeSchedulerBehavior = initializeSchedulerBehavior\n", "window.moment = require('moment')\n", "const fc = require('../../../vendor/assets/javascripts/fullcalendar/main.min')\nwindow.FullCalendar = fc.FullCalendar\n", "/* eslint-env jquery */\n/* eslint no-unused-vars: 0 */\n\n/* global SignaturePad */\n/* global intlTelInput */\n\nvar SIGNATURE_PADS = []\n\nexport function formatSelect2Option(state) {\n 'use strict'\n\n if (!state.id) return state.text\n\n let $state = $(`<span class=\"flex items-center\">${state.text}</span>`)\n if ($(state.element).data('image') !== undefined) {\n const image_data = $(state.element).data('image')\n $state = $(`<span class=\"flex items-center\">\n <img src=\"${image_data}\" class=\"employee-image\" />\n ${state.text}\n </span>`)\n }\n if (state.image) {\n $state = $(`<span class=\"flex items-center\">\n <img src=\"${state.image}\" class=\"employee-image\" />\n ${state.text}\n </span>`)\n }\n return $state\n}\n\nexport function initializeSelect2Fields(parent) {\n 'use strict'\n\n var fields = []\n var tagFields = []\n if (parent === undefined || parent === null) {\n fields = $('select.select2:not([multiple=\"multiple\"]):not([data-controller=\"select2\"])')\n tagFields = $('select.select2[multiple=\"multiple\"]:not([data-controller=\"select2\"])')\n } else {\n fields = $(parent).find('select.select2:not([multiple=\"multiple\"]):not([data-controller=\"select2\"])')\n tagFields = $(parent).find('select.select2[multiple=\"multiple\"]:not([data-controller=\"select2\"])')\n }\n\n fields.select2({\n theme: 'bootstrap',\n templateSelection: formatSelect2Option,\n templateResult: formatSelect2Option,\n width: null,\n })\n tagFields.select2({\n theme: 'bootstrap',\n tags: true,\n allowClear: false,\n placeholder: '',\n insertTag(data, tag) {\n data.push({\n id: tag.id,\n text: `${tag.text} (New)`,\n })\n },\n width: null,\n })\n\n $('select.select2.no-search').select2({\n theme: 'bootstrap',\n minimumResultsForSearch: Infinity,\n })\n}\n\nexport function findCheckedCheckBoxes() {\n 'use strict'\n\n var checkedCheckBoxes = $(\"input.select-all-item[type='checkbox']:checked\")\n return checkedCheckBoxes\n}\n\nexport function initializeSelectAllCheckboxes(checkboxes, initializeAllCheckbox) {\n 'use strict'\n\n if (initializeAllCheckbox) {\n $('#select-all').on('click', function () {\n var desiredState = $(this).prop('checked')\n var checkBoxes = $(\"input.select-all-item[type='checkbox']\")\n checkBoxes.prop('checked', desiredState)\n })\n\n $('#select-all').on('click', function () {\n var checkedCheckBoxes = $(\"input.select-all-item[type='checkbox']:checked\")\n\n if (checkedCheckBoxes.length > 0) $('#select-all-action').prop('disabled', false)\n else $('#select-all-action').prop('disabled', true)\n })\n }\n\n $(checkboxes).on('click', function () {\n var totalCheckBoxes = $(\"input.select-all-item[type='checkbox']\").length\n var totalCheckedCheckBoxes = $(\"input.select-all-item[type='checkbox']:checked\").length\n\n if (totalCheckedCheckBoxes === totalCheckBoxes) $('#select-all').prop('checked', true)\n else $('#select-all').prop('checked', false)\n })\n\n $(checkboxes).on('click', function () {\n var checkedCheckBoxes = $(\"input.select-all-item[type='checkbox']:checked\")\n\n if (checkedCheckBoxes.length > 0) $('#select-all-action').prop('disabled', false)\n else $('#select-all-action').prop('disabled', true)\n })\n}\n\nexport function initializeColorPickerFields() {\n 'use strict'\n\n jQuery(function ($) {\n $('.color-picker').minicolors({ theme: 'bootstrap' })\n })\n}\n\nexport function initializeButtonToggleFormFields(parent) {\n 'use strict'\n\n var fields = []\n if (parent === undefined) fields = $('.btn-group.btn-group-toggle label.btn')\n else fields = $(parent).find('.btn-group.btn-group-toggle label.btn')\n\n fields.click(function () {\n $(this).parent().find('input').removeAttr('checked')\n $(this).find('input').attr('checked', '')\n })\n}\n\nexport function autoexpandDefinedInputs() {\n 'use strict'\n\n $('input.auto-expand').each(function () {\n $(this).width($(this).val().length * 7)\n })\n\n $('input.auto-expand').keyup(function () {\n $(this).width($(this).val().length * 7)\n })\n}\n\nexport function clickedOutsideInPlaceEditableField(e, $target) {\n 'use strict'\n\n return (\n e.target !== $target[0] &&\n $(e.target).closest('.form-field.editable')[0] !== $target[0] &&\n !e.target.classList.contains('select2-selection__choice__remove')\n )\n}\n\n// Discard the changes to a field by clicking the \"discard\" button\nexport function initializeDiscardButton($field) {\n var path = $field.data('path')\n\n $field.find('.discard').on('click', function () {\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n $.ajax({\n type: 'GET',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(updatedData) {\n if (updatedData.status === 200) {\n $field.html(updatedData.responseText)\n $field.removeClass('active')\n $field.removeClass('processing')\n } else {\n $('#global-alerts').append(updatedData.responseText)\n $.ajax({\n type: 'GET',\n url: path,\n complete(errorData) {\n $field.html(errorData.responseText)\n $field.removeClass('active')\n $field.removeClass('processing')\n },\n })\n }\n\n $('body').off('click')\n },\n })\n })\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n // NOTE: This is no longer used by landing_pages agreement signature, but\n // might be in use by the public profile agreement signature code?\n $('canvas.signature-pad').each(function () {\n const signaturePad = new SignaturePad(this, { penColor: '#5d5c57' })\n signaturePad.addEventListener(\n 'beginStroke',\n () => {\n this.closest('.signature-wrapper').querySelector('label').classList.add('hidden')\n },\n { once: true },\n )\n\n SIGNATURE_PADS.push(signaturePad)\n })\n\n // Add new profile modal\n const phoneContainerInput = document.querySelector('.phone-toggle-container input[type=tel].fancy')\n if (phoneContainerInput) {\n intlTelInput(phoneContainerInput, {\n utilsScript: '/assets/intl-tel-input/utils.js',\n formatOnDisplay: true,\n separateDialCode: true,\n hiddenInput: 'full_number',\n initialCountry: document.body.dataset.countryCode || 'us',\n })\n }\n\n // Other phone fields\n const phoneInputs = document.querySelectorAll('input[type=tel].fancy:not(.new-profile)')\n for (const phoneInput of phoneInputs) {\n if (window.intlTelInputGlobals.getInstance(phoneInput) === undefined) {\n intlTelInput(phoneInput, {\n utilsScript: '/assets/intl-tel-input/utils.js',\n hiddenInput: phoneInput.dataset.inputname || '',\n formatOnDisplay: true,\n separateDialCode: true,\n initialCountry: document.body.dataset.countryCode || 'us',\n })\n }\n }\n\n $(function () {\n var requiredCheckboxes = $('.options :checkbox[required]')\n requiredCheckboxes.change(function () {\n if (requiredCheckboxes.is(':checked')) requiredCheckboxes.removeAttr('required')\n else requiredCheckboxes.attr('required', 'required')\n })\n })\n\n // Handle fancy styling when user is focused on a field\n $('input, select, textarea').on('focus', function () {\n $(this).prev('label').addClass('active')\n })\n $('input, select, textarea').on('focusout', function () {\n if (!$(this).val()) $(this).prev('label').removeClass('active')\n })\n\n autoexpandDefinedInputs()\n\n $(\"input[type='number']\").keypress(function (e) {\n if (e.currentTarget.classList.contains('decimals')) return true\n\n var regex\n var str\n regex = /^[0-9]+$/\n str = String.fromCharCode(e.charCode ? e.charCode : e.which)\n if (e.charCode === 0 || regex.test(str)) return true\n\n e.preventDefault()\n return false\n })\n\n initializeSelect2Fields(null)\n initializeColorPickerFields()\n\n initializeButtonToggleFormFields()\n\n $('.form-field.editable, .form-field.editable svg.fa-pencil-alt').click(function (e) {\n initializeFormFieldEdits($(this), e)\n })\n})\n\nexport function initializeFormFieldEdits($this, e) {\n if ($this.hasClass('fa-pencil-alt')) $this = $($this.closest('.form-field.editable'))\n\n if ($this.hasClass('active')) return\n\n if ($(e.target).is('a') || ($(e.target).is('i') && !$(e.target).hasClass('fa-pencil-alt'))) return\n\n var path = $this.data('path')\n var $target = $this\n\n $.ajax({\n type: 'GET',\n url: `${path}/edit`,\n complete(data) {\n $target.addClass('active')\n if (data.status === 200) {\n $target.html(data.responseText)\n $target.find('select.select2:not([multiple=\"multiple\"])').select2({\n theme: 'bootstrap',\n templateSelection: formatSelect2Option, // these will format data-image\n templateResult: formatSelect2Option, // paths as images if provided\n })\n $target.find('select.select2.no-search').select2({\n theme: 'bootstrap',\n minimumResultsForSearch: Infinity,\n })\n $target.find('select.select2[multiple=\"multiple\"]').select2({\n theme: 'bootstrap',\n tags: true,\n allowClear: false,\n placeholder: '',\n insertTag(insertData, tag) {\n insertData.push({\n id: tag.id,\n text: `${tag.text} (New)`,\n })\n },\n })\n $target.find('select.select2').select2('open')\n const targetPhoneInput = $target.find('input[type=tel].fancy').get(0)\n if (\n targetPhoneInput !== undefined &&\n window.intlTelInputGlobals.getInstance(targetPhoneInput) === undefined\n ) {\n intlTelInput(targetPhoneInput, {\n utilsScript: '/assets/intl-tel-input/utils.js',\n formatOnDisplay: true,\n separateDialCode: true,\n initialCountry: document.body.dataset.countryCode || 'us',\n })\n }\n\n initializeBootstrapToggle($target)\n\n initializeDiscardButton($target)\n\n // click out of body to update\n $('body').on('click', function (error) {\n if ($target.hasClass('processing')) return\n\n if (clickedOutsideInPlaceEditableField(error, $target)) handleEditableFieldUpdate($target, path)\n })\n\n // press enter to update\n $target.keypress(function (_e) {\n if ($target.hasClass('processing')) return\n\n var keycode = _e.keyCode ? _e.keyCode : _e.which\n if (keycode === '13') handleEditableFieldUpdate($target, path)\n })\n } else {\n $('#global-alerts').append(data.responseText)\n }\n },\n })\n}\n\nfunction initializeBootstrapToggle($target) {\n let toggle = $target.find('.bootstrap-toggle')\n toggle.bootstrapToggle({\n size: 'mini',\n })\n}\n\nfunction handleDiscardButton($target, tooltip) {\n var btn = $('#dismiss-x')\n if (tooltip) {\n btn.tooltip('show')\n setTimeout(function () {\n btn.tooltip('hide')\n }, 2000)\n }\n $target.find('.discardable .fas.fa-xmark').css({ color: 'red' })\n initializeDiscardButton($target)\n}\n\n/* eslint-disable complexity */\n// This function has a cyclomatic complexity of 9 because of the giant\n// condition to find the targets value -- and I'm not feeling up to refactoring\n// it right now.\nfunction handleEditableFieldUpdate($target, path) {\n $target.addClass('processing')\n\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n var value\n\n if ($target.find('select.select2').length) {\n value = $target.find('select.select2').select2().val()\n } else if ($target.find('.bootstrap-toggle').length) {\n value = !$target.find('.bootstrap-toggle').parent().hasClass('off')\n } else if ($target.find('input').is(':checkbox')) {\n value = $target.find('input')[0].checked\n } else if ($target.find('input').length) {\n value = $target.find('input').val()\n const targetInput = $target.find('input')\n if (targetInput[0].type === 'tel') {\n const targetTelInput = window.intlTelInputGlobals.getInstance(targetInput.get(0))\n value = targetTelInput.getNumber()\n }\n } else if ($target.find('textarea').length) {\n value = $target.find('textarea').val()\n }\n\n $.ajax({\n type: 'PUT',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n data: { value },\n dataType: 'json',\n success(updatedData) {\n $target.html(updatedData.partial)\n $target.removeClass('processing')\n $target.removeClass('active')\n $('body').off('click')\n },\n error(updatedData) {\n var responseData = updatedData.responseJSON\n\n if (\n !responseData.additional_params ||\n (responseData.additional_params && !responseData.additional_params.inline_error)\n ) {\n $('#global-alerts').append(responseData.partial)\n $.ajax({\n type: 'GET',\n url: path,\n complete(errorData) {\n $target.html(errorData.responseText)\n $target.removeClass('active')\n $target.removeClass('processing')\n },\n })\n $('body').off('click')\n } else {\n $target.html(responseData.partial)\n $target.removeClass('processing')\n\n if (responseData.additional_params.intl_phone_input) {\n const phoneInput = $target.find('input[type=tel].fancy').get(0)\n\n if (phoneInput !== undefined && window.intlTelInputGlobals.getInstance(phoneInput) === undefined) {\n intlTelInput(phoneInput, {\n utilsScript: '/assets/intl-tel-input/utils.js',\n formatOnDisplay: true,\n separateDialCode: true,\n initialCountry: document.body.dataset.countryCode || 'us',\n })\n }\n }\n\n handleDiscardButton($target, responseData.additional_params.dismissal_tooltip)\n }\n },\n })\n}\n/* eslint-enable complexity*/\n", "import {\n formatSelect2Option,\n initializeSelect2Fields,\n findCheckedCheckBoxes,\n initializeSelectAllCheckboxes,\n initializeColorPickerFields,\n initializeButtonToggleFormFields,\n autoexpandDefinedInputs,\n clickedOutsideInPlaceEditableField,\n initializeDiscardButton,\n initializeFormFieldEdits,\n} from '../../assets/javascripts/forms'\n\nwindow.formatSelect2Option = formatSelect2Option\nwindow.initializeSelect2Fields = initializeSelect2Fields\nwindow.findCheckedCheckBoxes = findCheckedCheckBoxes\nwindow.initializeSelectAllCheckboxes = initializeSelectAllCheckboxes\nwindow.initializeColorPickerFields = initializeColorPickerFields\nwindow.initializeButtonToggleFormFields = initializeButtonToggleFormFields\nwindow.autoexpandDefinedInputs = autoexpandDefinedInputs\nwindow.clickedOutsideInPlaceEditableField = clickedOutsideInPlaceEditableField\nwindow.initializeDiscardButton = initializeDiscardButton\nwindow.initializeFormFieldEdits = initializeFormFieldEdits\n", "/* global initializeSelect2Fields */\n/* global initializeButtonToggleFormFields */\n\n// eslint-disable-next-line no-unused-vars\nexport function initializeAdditionalInfoModalContent() {\n 'use strict'\n\n $(function () {\n initializeSelect2Fields()\n initializeButtonToggleFormFields()\n })\n}\n", "import { initializeAdditionalInfoModalContent } from '../../assets/javascripts/init_modal_content'\n\nwindow.initializeAdditionalInfoModalContent = initializeAdditionalInfoModalContent\n", "/* eslint-env jquery */\n\nfunction handleLazyLoadResponse(target, data) {\n 'use strict'\n\n target.html(data.responseText)\n if (data.status === 200) {\n loadLazyPartials(target)\n target.find('.more-results-footer .lazy-load-more-results').on('click', function () {\n var path = $(this).data('path')\n loadLazyPartial(path, $(this).closest('.more-results-footer'), false)\n })\n target.addClass('lazy-loaded')\n target.removeClass('lazy-loading')\n target.trigger('lazy-load:complete')\n }\n}\n\nexport function loadLazyPartial(path, target, isReload, fadeIn) {\n 'use strict'\n\n target.addClass('lazy-loading')\n\n if (isReload === undefined) isReload = true\n\n if (fadeIn === undefined) fadeIn = isReload\n\n var request = $.ajax({\n type: 'GET',\n url: path,\n dataType: 'html',\n complete(data) {\n if (fadeIn) {\n target.fadeOut('fast', function () {\n handleLazyLoadResponse(target, data)\n target.fadeIn('fast')\n })\n } else {\n handleLazyLoadResponse(target, data)\n }\n },\n })\n\n if (isReload && target.find('.loading-small').length > 0) {\n setTimeout(function () {\n if (request.readyState !== 0 && request.readyState !== 4) {\n target.find('.loading-small').hide()\n target.find('.loading-small').removeClass('hidden')\n target.find('.loading-small').fadeIn('fast')\n }\n }, 2000)\n }\n\n return request\n}\n\nfunction loadLazyPartials(parent) {\n 'use strict'\n\n var $containers = []\n if (parent === undefined) $containers = $('.lazy-load:not(.lazy-loading):not(.lazy-loaded)')\n else $containers = $(parent).find('.lazy-load:not(.lazy-loading):not(.lazy-loaded)')\n\n $containers.each(function () {\n var $this = $(this)\n if ($this.find('.auto-results').length && $this.find('.auto-results').css('display') === 'none') {\n // why would you have a noop branch...\n } else {\n var path = $this.data('path')\n loadLazyPartial(path, $this, false)\n }\n })\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n loadLazyPartials()\n\n window.onscroll = function () {\n loadLazyPartials()\n }\n})\n", "import { loadLazyPartial } from '../../assets/javascripts/lazy_load'\n\nwindow.loadLazyPartial = loadLazyPartial\n", "/* eslint-env jquery */\n\n/* global initializeDropdownTabs */\n/* eslint no-use-before-define: 0 */\n/* global initializeAdditionalInfoModalContent */\n/* global initializeInfiniteViewAll */\n/* global initializeTooltips */\n/* global Turbo */\n/* global initializeSelectAllCheckboxes */\n\nfunction updateStudentStatus(container, path, button) {\n 'use strict'\n\n button.attr('disabled', true)\n\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n $.ajax({\n type: 'PUT',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(data) {\n if (data.status === 200) {\n handleUpdateStudentStatusResponse(container, path, button, data)\n } else if (data.status === 400) {\n $('#update-student-modal').html('<div class=\"spinner spinner-grow center\" />')\n $('#update-student-modal').modal('show')\n $('#update-student-modal').on('hidden.bs.modal', function () {\n $('#update-student-modal').unbind()\n })\n $('#update-student-modal').html(data.responseText)\n $('#update-student-modal')\n .find('form')\n .on('ajax:complete', function (e) {\n if (e.originalEvent.detail[0].status === 200) {\n getStudentStatus(container, path, null)\n } else {\n $('#global-alerts').append(e.originalEvent.detail[0].responseText)\n $('#update-student-modal').modal('hide')\n }\n })\n $('#update-student-modal')\n .find(\"button:contains('Cancel'), button.close\")\n .on('click', function () {\n getStudentStatus(container, path, null)\n })\n return false\n } else {\n $('#global-alerts').append(data.responseText)\n getStudentStatus(container, path, button)\n return false\n }\n return false\n },\n })\n return true\n}\n\nexport function initializeStudentStatusDropdowns(parent) {\n 'use strict'\n\n initializeDropdownTabs($(parent))\n\n $(parent)\n .find('.status-modifier .dropdown-tabs-menu li a')\n .on('voltage:dropdown-tabs:selected', function () {\n var $this = $(this)\n var $target = $this.closest('.student-wrapper')\n var path = $this.data('path')\n var $parentButton = $this.closest('.dropdown-tabs').find('button')\n\n return updateStudentStatus($target, path, $parentButton)\n })\n}\n\nfunction handleAdditionalInfoNeededUpdateStudentResponse(container, path, button, data) {\n 'use strict'\n\n $('#update-student-modal').html(data.responseText)\n initializeAdditionalInfoModalContent()\n $('#update-student-modal').modal('show')\n $('#update-student-modal').on('hidden.bs.modal', function () {\n $('#update-student-modal').unbind()\n getStudentStatus(container, path, button)\n })\n $('#update-student-modal')\n .find('form')\n .on('ajax:complete', function (e) {\n if (e.originalEvent.detail[0].status === 200) {\n updateStudentStatus(container, path, button)\n } else {\n $('#global-alerts').append(e.originalEvent.detail[0].responseText)\n $('#update-student-modal').modal('hide')\n }\n })\n}\n\nfunction handleUpdateStudentStatusResponse(container, path, button, data) {\n 'use strict'\n\n if (data.status === 200) {\n if ($('.student-wrapper').length === 0) {\n $('#update-student-modal').unbind()\n $('#update-student-modal').modal('hide')\n Turbo.visit(window.location.toString(), { action: 'replace' })\n } else {\n container.fadeOut('fast', function () {\n $('#update-student-modal').unbind()\n $('#update-student-modal').modal('hide')\n container.html(data.responseText)\n initializeTooltips(container)\n initializeStudentStatusDropdowns(container)\n initializeSelectAllCheckboxes(container.find(\"input.select-all-item[type='checkbox']\"), false)\n initializeStudentAttendanceLog(container)\n container.fadeIn('fast')\n })\n }\n } else if (data.status === 400) {\n handleAdditionalInfoNeededUpdateStudentResponse(container, path, button, data)\n } else if (data.status === 401) {\n $('#global-alerts').append(data.responseText)\n return false\n } else if (data.status === 404) {\n $('#global-alerts').append(data.responseText)\n return false\n } else {\n $('#global-alerts').append(data.responseText)\n getStudentStatus(container, path, button)\n return false\n }\n\n return true\n}\n\nfunction getStudentStatus(container, path, button) {\n 'use strict'\n\n if (button !== null) button.attr('disabled', true)\n\n $.ajax({\n type: 'GET',\n url: path,\n complete(data) {\n return handleUpdateStudentStatusResponse(container, path, button, data)\n },\n })\n}\n\nfunction populateProgramAttendances(path, programId) {\n 'use strict'\n\n $.ajax({\n type: 'GET',\n url: path,\n data: { programId },\n complete(data) {\n var $table = $('.attendance-base-container').find('table')\n var $footer = $('.attendance-base-container').find('.footer')\n\n $table.html(data.responseJSON.table_data)\n $footer.html(data.responseJSON.footer)\n initializeViewMoreAttendancesActionable($('.attendance-base-container a.view-more-results'))\n initializeInfiniteViewAll($('.attendance-base-container a.view-all'), $('.attendance-base-container'))\n initializeAttendanceDelete()\n initializeSelectAllCheckboxes($(\".attendance-base-container input[type='checkbox']\"), true)\n },\n })\n}\n\nfunction initializeViewMoreAttendancesActionable(actionableElement) {\n 'use strict'\n\n $(actionableElement).on('click', function () {\n var $this = $(this)\n var $table = $(this).closest('.attendance-base-container').find('table')\n var $footer = $(this).closest('.attendance-base-container').find('.footer')\n var path = $this.data('path')\n\n $.ajax({\n type: 'GET',\n url: path,\n complete(data) {\n $table.append(data.responseJSON.table_data)\n $footer.html(data.responseJSON.footer)\n if (data.status === 200) {\n initializeViewMoreAttendancesActionable($footer.find('.view-more-results'))\n initializeAttendanceDelete()\n\n $('.attendance-base-container input.select-all[type=checkbox]:checked').prop('checked', false)\n } else {\n $('#global-alerts').append(data.responseText)\n }\n },\n })\n })\n}\n\nexport function initializeAttendanceLogProgramSelector(selectedProgram) {\n 'use strict'\n\n if ($('#student-programs-selector').length) {\n var programAttendanceContainerPath = $('.program-attendance-container').data('path')\n var initialSelectedProgram\n if (selectedProgram === undefined) {\n initialSelectedProgram = $('#student-programs-selector').find('.selected')[0].getAttribute('value')\n } else {\n initialSelectedProgram = selectedProgram\n }\n\n populateProgramAttendances(programAttendanceContainerPath, initialSelectedProgram)\n\n $('#student-programs-selector .select-option').on('click', function (e) {\n var target = e.target\n var programId = target.getAttribute('value')\n var isSelected = target.classList.contains('selected')\n\n // No need to load again if it's already selected.\n if (isSelected) return\n\n programAttendanceContainerPath = $('.program-attendance-container').data('path')\n\n // Remove any \"selected\" classes\n $('#student-programs-selector .select-option').each(function () {\n this.classList.remove('selected')\n })\n\n // Add \"selected\" back to just this element\n target.classList.add('selected')\n\n populateProgramAttendances(programAttendanceContainerPath, programId)\n })\n }\n}\n\nexport function initializeStudentAttendanceLog(parent) {\n 'use strict'\n\n if ($('.person-profile').length) {\n var $this = $(this)\n var path = $this.data('path')\n $.ajax({\n type: 'GET',\n url: path,\n complete() {\n initializeAttendanceLogProgramSelector()\n },\n })\n }\n\n $(parent)\n .find('a.student-attendance-log')\n .on('click', function () {\n var urlPath = $(this).data('path')\n $('#update-student-modal').html('<div class=\"spinner spinner-grow center\" />')\n $('#update-student-modal').modal('show')\n $('#update-student-modal').on('hidden.bs.modal', function () {\n $('#update-student-modal').unbind()\n })\n\n $.ajax({\n type: 'GET',\n url: urlPath,\n complete(data) {\n $('#update-student-modal').html(data.responseText)\n initializeAdditionalInfoModalContent()\n initializeAttendanceLogProgramSelector()\n },\n })\n })\n}\n\nfunction initializeAttendanceDelete() {\n 'use strict'\n\n var deleteButtonElement = $('.btn.delete-attendances')\n var path = $(deleteButtonElement).data('path')\n var programId = $('.student-attendance-log-items #student-programs-selector .selected').attr('value')\n\n $(deleteButtonElement).on('click', function () {\n var checkedAttendanceCheckboxes = $(\n '.program-attendance-container input.select-all-item[type=checkbox]:checked',\n )\n var selectedAttendanceIds = $(checkedAttendanceCheckboxes)\n .map(function () {\n return parseInt($(this).attr('id').replace('attendance_', ''))\n })\n .toArray()\n\n $.ajax({\n type: 'POST',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', $(\"meta[name='csrf-token']\").attr('content'))\n },\n data: {\n programId,\n attendanceIds: selectedAttendanceIds,\n },\n complete(data) {\n if (data.status !== 200) $('#global-alerts').append(data.responseText)\n\n return false\n },\n })\n\n return true\n })\n}\n\nfunction initializeStudentDelete(element) {\n 'use strict'\n\n $(element).on('click', function (e) {\n e.preventDefault()\n var path = element.data('path')\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n $.ajax({\n type: 'DELETE',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(data) {\n if (data.status === 400) {\n $('#update-student-modal').html('<div class=\"spinner spinner-grow center\" />')\n $('#update-student-modal').modal('show')\n $('#update-student-modal').on('hidden.bs.modal', function () {\n $('#update-student-modal').unbind()\n })\n $('#update-student-modal').html(data.responseText)\n return false\n }\n $('#global-alerts').append(data.responseText)\n return false\n },\n })\n return true\n })\n}\n\nexport function initializeStudentRestore(element) {\n 'use strict'\n\n $(element).on('click', function (e) {\n e.preventDefault()\n var path = $(e.target).data('path')\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n $.ajax({\n type: 'PUT',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n })\n return true\n })\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n var cw = $('.profile-photo').width()\n $('.profile-photo').css({ height: `${cw}px` })\n\n $(window).resize(function () {\n var width = $('.profile-photo').width()\n $('.profile-photo').css({ height: `${width}px` })\n })\n\n initializeStudentStatusDropdowns($('#student-profile.panel.left-sidebar'))\n initializeStudentDelete($('#student-delete'))\n})\n", "import {\n initializeStudentStatusDropdowns,\n initializeAttendanceLogProgramSelector,\n initializeStudentAttendanceLog,\n} from '../../assets/javascripts/school/students'\n\nwindow.initializeStudentStatusDropdowns = initializeStudentStatusDropdowns\nwindow.initializeAttendanceLogProgramSelector = initializeAttendanceLogProgramSelector\nwindow.initializeStudentAttendanceLog = initializeStudentAttendanceLog\n", "/* eslint-env jquery */\n/* global Userback */\n/* eslint no-global-assign: 0 */\n/* eslint no-use-before-define: 0 */\n/* eslint camelcase: 0 */\n/* eslint no-unused-vars: 0 */\n/* eslint no-native-reassign: 0 */\n\nUserback = window.Userback || {}\n\nexport function initializeFeedback() {\n 'use strict'\n\n Userback.open('capture')\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n if ($('body.has-feedback').length) {\n var projectId = $('body').data('feedback-project')\n Userback.access_token = `8566|${projectId}|BcbFm1QUKVNOwg4RcNBWdJ4xc5YRBRY7m1I47JAqsQ65v8B9Cq`\n Userback.widget_settings = {\n language: $('body').data('locale'),\n }\n Userback.email = $('body').data('user-email')\n Userback.user_data = {\n id: $('body').data('user-id'),\n info: {\n name: $('body').data('user-name'),\n school_name: $('body').data('school-name'),\n school_id: $('body').data('school-id'),\n },\n }\n ;(function (id) {\n var s = document.createElement('script')\n s.async = 1\n s.src = 'https://static.userback.io/widget/v1.js'\n var parent_node = document.head || document.body\n parent_node.appendChild(s)\n })('userback-sdk')\n\n // 15046 is the default project ID for General Feedback (production bugs/feature reqs/etc).\n // 15048 is the Beta Feedback project -- we want it to be active but hidden so that we can\n // manually render the button in sections that we care about.\n var hide = projectId === 15048\n Userback.widget_settings.autohide = hide\n\n $('.feedback-initializer').click(function () {\n Userback.open()\n })\n }\n})\n", "import { initializeFeedback } from '../../assets/javascripts/support'\n\nwindow.initializeFeedback = initializeFeedback\n", "/* global AdobeDC */\n\nexport const DEFAULT_TIMEOUT = 15000\n\n// eslint-disable-next-line no-unused-vars\nexport function addPDFPreview(target) {\n const waitPromise = (ms) => new Promise((resolve) => setTimeout(resolve, ms))\n const pdfTimeout = (pdfPromise, ms) =>\n Promise.race([\n pdfPromise,\n waitPromise(ms).then(() => {\n throw new Error(`PDF Viewer timeout after ${ms} ms`)\n }),\n ])\n\n const adobeDCView = new AdobeDC.View({\n clientId: target.dataset.adobeClientId,\n divId: target.id,\n })\n const previewFilePromise = adobeDCView.previewFile(\n {\n content: { location: { url: target.dataset.path } },\n metaData: { fileName: target.dataset.name },\n },\n {\n embedMode: 'SIZED_CONTAINER',\n },\n )\n\n pdfTimeout(previewFilePromise, DEFAULT_TIMEOUT).catch(() => {\n // eslint-disable-next-line max-len\n const objectElement = `<object data='${target.dataset.path}' class=\"h-full\" type: 'application/pdf' width=\"100%\" height:\"100%\"></object>`\n target.innerHTML = objectElement\n })\n}\n", "import { addPDFPreview } from '../../assets/javascripts/adobe_pdf'\n\nwindow.addPDFPreview = addPDFPreview\n", "// eslint-disable-next-line no-unused-vars\nexport function initializeClipboardCopyButton(parent) {\n 'use strict'\n\n $(parent)\n .find('.copy-btn')\n .unbind()\n .on('click', function () {\n var btn = $(this)\n btn.tooltip('show')\n setTimeout(function () {\n btn.tooltip('hide')\n }, 1000)\n\n $(parent).find('.copiable').removeClass('hidden')\n $(parent).find('.copiable').select()\n document.execCommand('copy')\n $(parent).find('.copiable').addClass('hidden')\n })\n}\n", "import { initializeClipboardCopyButton } from '../../assets/javascripts/clipboard'\n\nwindow.initializeClipboardCopyButton = initializeClipboardCopyButton\n", "/* global moment */\n/* eslint-disable no-unused-vars */\n\n// TODO: Refactor this to use components + hydration\nexport function buildListViewElement(segs, calendar) {\n const content = document.createElement('div')\n const scroller = document.createElement('div')\n const list = document.createElement('div')\n const days = dateRange(calendar.view.currentStart, calendar.view.currentEnd)\n const segsByDay = sliceSegmentsByDay(segs, calendar)\n const items = segsByDay.map((_segs, index) => buildListViewItem(_segs, calendar, moment.utc(days[index])))\n\n content.classList.add('fc-list', 'fc-list-sticky', 'fc-customListView')\n scroller.classList.add('fc-scroller', 'fc-scroller-liquid')\n list.classList.add('fc-customListView-list')\n\n for (const item of items) {\n list.appendChild(item)\n }\n\n scroller.appendChild(list)\n content.appendChild(scroller)\n\n return content\n}\n\nfunction buildListViewItem(segs, calendar, date) {\n const item = document.createElement('div')\n const itemDate = buildListViewItemDateBit(date, calendar)\n\n item.classList.add('fc-customListView-item')\n item.appendChild(itemDate)\n\n if (segs.length) {\n const itemEvents = document.createElement('div')\n const events = segs.map((seg) => buildListViewSegmentAnchor(seg, calendar, itemEvents))\n\n for (const event of events) {\n itemEvents.appendChild(event)\n }\n\n item.appendChild(itemEvents)\n }\n\n return item\n}\n\nexport function buildEventContent(info, showFormFields, calendar) {\n const eventContent = info.event.extendedProps.eventContent\n const mainDiv = document.createElement('div')\n const timeDiv = document.createElement('div')\n const subjectDiv = document.createElement('div')\n const subjectLink = document.createElement('a')\n const titleContainerDiv = document.createElement('div')\n const titleDiv = document.createElement('div')\n\n const iconMap = {\n scheduled: 'fa-calendar-day',\n rescheduled: 'fa-history',\n confirmed: 'fa-check-square',\n noshowed: 'fa-user-slash',\n todo: 'fa-clipboard-list',\n overdue: 'fa-exclamation-circle',\n }\n\n mainDiv.classList.add('fc-event-main-frame-state')\n timeDiv.classList.add('fc-event-time')\n titleContainerDiv.classList.add('fc-event-title-container')\n titleDiv.classList.add('fc-event-title')\n titleDiv.classList.add('fc-sticky')\n\n if (!(info.event.id?.includes('class') || info.event._def?.ui?.classNames?.includes('completed'))) {\n const htmlDiv = document.createElement('div')\n const customIcon = document.createElement('i')\n\n htmlDiv.classList.add('fc-event-custom-icon')\n customIcon.classList.add('fas')\n customIcon.classList.add(iconMap[info.event.extendedProps.eventContent])\n\n htmlDiv.appendChild(customIcon)\n mainDiv.appendChild(htmlDiv)\n }\n\n timeDiv.textContent = info.timeText\n titleDiv.textContent = info.event.title\n titleContainerDiv.appendChild(timeDiv)\n titleContainerDiv.appendChild(titleDiv)\n\n if (info.event.extendedProps.subject && info.event.extendedProps.subject.name) {\n const linkIcon = document.createElement('i')\n linkIcon.classList.add('fas', 'fa-arrow-up-right-from-square', 'pl-1')\n subjectLink.textContent = info.event.extendedProps.subject.name\n subjectLink.href = info.event.extendedProps.subject.path\n subjectLink.target = '_blank'\n subjectLink.appendChild(linkIcon)\n\n subjectLink.classList.add('!text-white', '!underline')\n subjectDiv.appendChild(subjectLink)\n subjectDiv.classList.add('pt-1')\n titleDiv.appendChild(subjectDiv)\n }\n\n mainDiv.appendChild(titleContainerDiv)\n\n if (showFormFields && info.event.extendedProps.eventContent !== 'completed') {\n const formFields = buildListViewFormFields(info, calendar)\n mainDiv.appendChild(formFields)\n }\n\n return mainDiv\n}\n\nfunction buildListViewSegmentAnchor(seg, calendar, parent) {\n const anchor = document.createElement('a')\n const eventFrame = document.createElement('div')\n const start = moment.utc(seg.range.start)\n const end = moment.utc(seg.range.end)\n const timeText = `${start.format('h:mm A')} - ${end.format('h:mm A')}`\n\n anchor.classList.add('fc-event', 'fc-customlistView-event', ...seg.ui.classNames)\n eventFrame.classList.add('fc-event-main')\n eventFrame.appendChild(\n buildEventContent(\n {\n timeText,\n event: seg.def,\n range: seg.range,\n },\n true,\n calendar,\n ),\n )\n\n parent.classList.add('fc-customListView-item-events')\n\n anchor.appendChild(eventFrame)\n\n anchor.addEventListener('click', (jsEvent) => {\n if (jsEvent.target.href) return\n if (jsEvent.target.closest('.dropdown')) return\n\n calendar.trigger('eventClick', {\n el: anchor,\n event: seg.def,\n jsEvent,\n view: calendar.view,\n })\n })\n\n return anchor\n}\n\nfunction buildListViewItemDateBit(date, calendar) {\n const itemDate = document.createElement('div')\n const itemDateMonthBit = document.createElement('div')\n const itemDateDayBit = document.createElement('div')\n const itemDateDayOfWeekBit = document.createElement('div')\n const itemDateWrapper = document.createElement('a')\n const itemDateMonthDayWrapper = document.createElement('div')\n\n itemDate.classList.add('fc-customListView-item-date')\n itemDateMonthBit.classList.add('fc-customListView-item-date-month-bit')\n itemDateDayBit.classList.add('fc-customListView-item-date-day-bit')\n itemDateDayOfWeekBit.classList.add('fc-customListView-item-date-day-of-week-bit')\n itemDateWrapper.classList.add('fc-customListView-item-date-wrapper')\n\n itemDateMonthBit.textContent = moment(date).format('MMM').toUpperCase()\n itemDateDayBit.textContent = moment(date).format('D')\n itemDateDayOfWeekBit.textContent = moment(date).format('ddd')\n\n itemDateMonthDayWrapper.appendChild(itemDateMonthBit)\n itemDateMonthDayWrapper.appendChild(itemDateDayOfWeekBit)\n itemDateWrapper.appendChild(itemDateMonthDayWrapper)\n itemDateWrapper.appendChild(itemDateDayBit)\n itemDate.appendChild(itemDateWrapper)\n\n itemDateWrapper.addEventListener('click', () => {\n calendar.trigger('navLinkDayClick', date)\n })\n\n return itemDate\n}\n\nfunction buildListViewFormFields(info, calendar) {\n const quickActionsWrapper = document.createElement('div')\n const eventType = parseEventType(info)\n\n let values = []\n if (eventType === 'appointment') {\n values = ['scheduled', 'rescheduled', 'confirmed', 'no showed', 'completed']\n } else if (eventType === 'task') {\n values = ['to do', 'completed']\n }\n\n const statusToggler = buildListViewStatusToggler(values, info, calendar)\n\n quickActionsWrapper.classList.add('fc-customListView-form-fields')\n\n if (statusToggler) {\n const statusText = document.createElement('span')\n statusText.classList.add('fc-customListView-form-status-text')\n statusText.textContent = 'Status:'\n quickActionsWrapper.appendChild(statusText)\n quickActionsWrapper.appendChild(statusToggler)\n }\n\n return quickActionsWrapper\n}\n\nfunction buildListViewStatusToggler(values, info, calendar) {\n const updateCallback = debounce(updateEvent, 500) // debounce to prevent rapid updates\n if (!values.length) return\n\n const statusDropdown = document.createElement('div')\n const statusDropdownToggler = document.createElement('div')\n const statusDropdownList = document.createElement('ul')\n const path = info.event.extendedProps.dataPath.replace('/edit', '')\n const eventType = parseEventType(info)\n\n statusDropdown.classList.add('dropdown')\n statusDropdownToggler.classList.add('dropdown-toggle')\n statusDropdownToggler.setAttribute('data-toggle', 'dropdown')\n statusDropdownToggler.setAttribute('aria-haspopup', 'true')\n statusDropdownToggler.setAttribute('aria-expanded', 'false')\n statusDropdownToggler.setAttribute('role', 'button')\n\n statusDropdownList.classList.add('dropdown-menu')\n statusDropdownToggler.textContent = values[0]\n for (const value of values) {\n if (value.replace(/\\s/g, '') === info.event.extendedProps.eventContent) {\n statusDropdownToggler.textContent = value\n }\n\n const statusDropdownListItem = document.createElement('li')\n const statusDropdownListItemLink = document.createElement('a')\n statusDropdownListItemLink.textContent = value\n statusDropdownListItemLink.addEventListener('click', () => {\n statusDropdownToggler.textContent = value\n updateCallback(path, { [`${eventType}[state]`]: value.replace(/\\s/g, '') }, calendar)\n })\n statusDropdownListItem.appendChild(statusDropdownListItemLink)\n statusDropdownList.appendChild(statusDropdownListItem)\n }\n\n statusDropdown.appendChild(statusDropdownToggler)\n statusDropdown.appendChild(statusDropdownList)\n\n return statusDropdown\n}\n\nfunction sliceSegmentsByDay(segs, calendar) {\n const days = dateRange(calendar.view.currentStart, calendar.view.currentEnd)\n\n return days.map((day) => segs.filter((seg) => moment.utc(day).isSame(moment.utc(seg.range.start), 'day')))\n}\n\nfunction dateRange(start, end) {\n let days = []\n for (let day = start; day < end; day.setDate(day.getDate() + 1)) {\n days.push(new Date(day))\n }\n\n return days\n}\n\nfunction updateEvent(path, value, calendar) {\n path = path.replace('unpersisted_', '')\n\n const [modifiedPath, oldQueryString] = path.split('?')\n const queryString = new URLSearchParams(value)\n\n if (oldQueryString) {\n queryString.append(...oldQueryString.split('='))\n }\n\n fetch(`${modifiedPath}?${queryString}`, {\n method: 'PUT',\n headers: {\n 'X-CSRF-Token': document.querySelector('meta[name=\"csrf-token\"]').content,\n 'Content-Type': 'application/json',\n },\n }).then((response) => {\n if (response.ok) {\n calendar.shouldReloadView = true\n calendar.refetchEvents()\n return\n }\n\n return response.json()\n })\n}\n\nfunction parseEventType(info) {\n let type = info.event.publicId.split('_')[0]\n if (type === 'class') type = 'class_event'\n return type\n}\n\nfunction debounce(func, time, immediate) {\n let timeout\n\n return (...args) => {\n const context = this\n function later() {\n timeout = null\n if (!immediate) func.apply(context, args)\n }\n\n const callNow = immediate && !timeout\n clearTimeout(timeout)\n timeout = setTimeout(later, time)\n if (callNow) func.apply(context, args)\n }\n}\n", "import { buildListViewElement, buildEventContent } from '../../assets/javascripts/custom_list_view'\n\nwindow.buildListViewElement = buildListViewElement\nwindow.buildEventContent = buildEventContent\n", "$(document).on('turbo:load', onLoad)\n\nfunction onLoad() {\n 'use strict'\n\n initializeTooltips()\n}\n\n/* eslint-disable no-unused-vars */\nexport function hideLoadingIndicator() {\n $('.loading-indicator').addClass('hidden')\n $('.dim-screen').addClass('hidden')\n}\n\nexport function showLoadingIndicator() {\n $('.loading-indicator').removeClass('hidden')\n $('.dim-screen').removeClass('hidden')\n}\n/* eslint-enable no-unused-vars */\n\n// Not actually sure if this actually enables any tooltips?\nfunction initializeTooltips(parent) {\n var selector = '[data-toggle=\"tooltip\"]'\n var $elements\n if (parent === undefined) $elements = $(selector)\n else $elements = $(parent).find(selector)\n\n $elements.tooltip({\n html: true,\n delay: {\n show: 250,\n hide: 100,\n },\n })\n}\n", "import { hideLoadingIndicator, showLoadingIndicator } from '../../assets/javascripts/embedded'\n\nwindow.hideLoadingIndicator = hideLoadingIndicator\nwindow.showLoadingIndicator = showLoadingIndicator\n", "/* eslint-disable no-unused-vars */\n\nexport function isMobile() {\n 'use strict'\n return navigator.userAgent.indexOf('Mob') >= 0\n}\n", "import { isMobile } from '../../assets/javascripts/is_mobile'\n\nwindow.isMobile = isMobile\n", "/**\n * Convert a base64 string in a Blob according to the data and contentType.\n *\n * @param b64Data {String} Pure base64 string without contentType\n * @param contentType {String} the content type of the file i.e (image/jpeg - image/png - text/plain)\n * @param sliceSize {Int} SliceSize to process the byteCharacters\n * @see http://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript\n * @return Blob\n */\nexport function b64toBlob(b64Data, contentType, sliceSize) {\n contentType = contentType || ''\n sliceSize = sliceSize || 512\n\n var byteCharacters = atob(b64Data)\n var byteArrays = []\n\n for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n var slice = byteCharacters.slice(offset, offset + sliceSize)\n\n var byteNumbers = new Array(slice.length)\n for (var i = 0; i < slice.length; i++) byteNumbers[i] = slice.charCodeAt(i)\n\n var byteArray = new Uint8Array(byteNumbers)\n\n byteArrays.push(byteArray)\n }\n\n var blob = new Blob(byteArrays, { type: contentType })\n return blob\n}\n", "import { b64toBlob } from '../../assets/javascripts/signature'\n\nwindow.b64toBlob = b64toBlob\n", "/* global loadLazyPartial */\n\n// TODO: Componentitize Me Captain\n\n// Takes a module by key (#memberships, #attendances)\n// and focuses the nav bar and the module\nexport function highlightModule(selectedModule) {\n var name = selectedModule.substring(1)\n\n // scroll back to the top since the default behavior when setting the anchor\n // is to scroll to an id matching it and we don't want that.\n // Unless we're mobile, in which case we have to be scrolled down to see the things.\n if (window.innerWidth > 768) window.scrollTo({ top: 0 })\n\n focusModules(name)\n focusNav(name)\n}\n\nfunction showAll() {\n window.location.hash = ''\n unfocusModule()\n unfocusNav()\n}\n\nfunction focusModules(selectedType) {\n 'use strict'\n\n var $selectedModules = $(`.person-profile #${selectedType}, .dashboard-${selectedType}`)\n $selectedModules.removeClass('hidden')\n\n // hide others\n var possibleModules = $.map($('.person-profile .nav-link, .dashboard .nav-link'), (div) =>\n div.id.replace(/-nav$/, ''),\n )\n possibleModules.forEach(function (module) {\n if (module !== selectedType) $(`.person-profile #${module}, .dashboard-${module}`).addClass('hidden')\n })\n\n // Lazy load if needed\n var lazyLoad\n if (selectedType === 'attendances') lazyLoad = $selectedModules.children().find('.lazy-load')\n else lazyLoad = $selectedModules\n\n $.each(lazyLoad, function (i, lazyLoadItem) {\n var item = $(lazyLoadItem)\n if (item.hasClass('lazy-load') && !item.hasClass('lazy-loaded')) loadLazyPartial(item.data('path'), item)\n })\n}\n\nfunction focusNav(selectedName) {\n $('.nav-link').each(function () {\n $(this).removeClass('active')\n })\n\n $(`.nav-link#${selectedName}-nav`).addClass('active')\n}\n\nfunction unfocusModule() {\n var possible_modules = $.map($('.person-profile .nav-link, .dashboard .nav-link'), (div) =>\n div.id.replace(/-nav$/, ''),\n )\n possible_modules.forEach(function (module) {\n $(`.person-profile #${module}, .dashboard-${module}`).each(function () {\n if (this.hasAttribute('data-visible') && !$(this).data('visible')) $(this).addClass('hidden')\n else $(this).removeClass('hidden')\n })\n })\n}\n\nfunction unfocusNav() {\n $('.nav-link').each(function () {\n $(this).removeClass('active')\n })\n\n $('#all-nav.nav-link').addClass('active')\n}\n\n//\n// Focuses a module that is selected from the nav bar\n//\n$(document).on('turbo:load', function () {\n 'use strict'\n\n // Mobile select dropdown\n $('.module-nav-select .mobile-select-menu').on('change', function () {\n var selectedModule = $(this.value)[0].id.replace(/-nav$/, '')\n if (selectedModule === 'all') showAll()\n else highlightModule(`#${selectedModule}`)\n })\n\n // Desktop & Tablet nav link\n $('.nav-link').on('click', function () {\n var wasActive = $(this).hasClass('active')\n\n // Toggle shown module\n var selectedModule = this.id.replace(/-nav$/, '')\n if (wasActive || selectedModule === 'all') showAll()\n else highlightModule(`#${selectedModule}`)\n })\n})\n", "import { highlightModule } from '../../assets/javascripts/school/navbar_highlight'\n\nwindow.highlightModule = highlightModule\n", "/* eslint-disable no-unused-vars */\n/* global $globalAlerts, loadLazyPartial, */\n\nexport function initializeAccountFormSubmit() {\n $('#student-account')\n .find('form')\n .submit(function (e) {\n var btn = $(this).find(\"input[type='submit']\")\n $(btn).val('Submitting')\n $(btn).prop('disabled', true)\n\n return true\n })\n\n $('#student-account')\n .find('form')\n .on('ajax:complete', function (e) {\n var status = e.originalEvent.detail[0].status\n if (status === 200 || status === 201) {\n var $target = $(this).closest('.lazy-load')\n var path = $target[0].dataset.path\n\n loadLazyPartial(path, $target)\n if (status === 201) $('#account-created-modal').modal('show')\n } else {\n $globalAlerts.append(e.originalEvent.detail[0].responseText)\n }\n })\n}\n\nexport function initializeCloseUserAccount() {\n $('#close-student-account').on('click', function () {\n $('#confirm-close-account-modal').modal('show')\n })\n\n $('#confirm-close-account').on('click', function (e) {\n e.preventDefault()\n $(this).addClass('disabled')\n var path = $('#close-student-account').data('path')\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n $.ajax({\n type: 'DELETE',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(data) {\n $('#confirm-close-account-modal').modal('hide')\n var $target = $('#student-account')\n var loadPath = $target.data('path')\n\n loadLazyPartial(loadPath, $target)\n },\n })\n })\n}\n\nexport function initializeAccountRestrictionChecks() {\n $('.restriction-check').unbind('click')\n\n // TODO: Can we abstract this + inventory-item-check?\n $('.restriction-check').on('click', function () {\n if ($(this)[0].classList.contains('unchecked')) {\n $(this).removeClass('unchecked')\n $(this).addClass('checked')\n $(this).prev().prop('checked', true)\n } else {\n $(this).removeClass('checked')\n $(this).addClass('unchecked')\n $(this).prev().prop('checked', false)\n }\n })\n}\n\nexport function initializeChangeUserAccountPassword() {\n $('#student-account #change-password').on('click', function () {\n var path = $(this).data('path')\n\n const $modal = $('#change-password-modal')\n $modal.modal('show')\n\n $modal.on('click', '.toggle-vis', function () {\n $(this).toggleClass('fa-eye')\n $(this).toggleClass('fa-eye-slash')\n var input = $(this).closest('.password-form').find('input')\n\n if (input[0].type === 'password') input[0].type = 'text'\n else input[0].type = 'password'\n })\n\n $(document).on('hidden.bs.modal', '#change-password-modal', function () {\n $('#change-password-modal').find('#password').val('')\n $('#change-password-modal').find('#password_confirmation').val('')\n $('#confirm-change-password').attr('disabled', false)\n })\n\n $modal.on('click', '#confirm-change-password', function () {\n var password = $modal.find('#password').val()\n var confirmation = $modal.find('#password_confirmation').val()\n\n // TODO: This logic (matching password confirmation and length) should really be\n // pushed further down the stack, but our user password validation is currently\n // almost completely non-existant, so that would be a bigger task that it\n // should be. This can be a part of DEV-5384 maybe.\n if (password !== confirmation) {\n $modal.find('#password_confirmation').css({ 'border-bottom-color': '#d9433e' })\n $modal.find('.no-matchy-error').removeClass('hidden')\n } else if (password.length < 3) {\n $modal.find('#password_confirmation').css({ 'border-bottom-color': '#d9433e' })\n $modal.find('.too-short-error').removeClass('hidden')\n } else {\n $modal.find('.no-matchy-error').addClass('hidden')\n $modal.find('.too-short-error').addClass('hidden')\n $modal.find('#password_confirmation').css({ 'border-bottom-color': '' })\n $(this).attr('disabled', true)\n\n $.ajax({\n url: path,\n type: 'PUT',\n data: { user: { password } },\n success() {\n $modal.modal('hide')\n $('#password-updated-modal').modal('show')\n },\n })\n }\n })\n })\n}\n", "import {\n initializeAccountFormSubmit,\n initializeCloseUserAccount,\n initializeAccountRestrictionChecks,\n initializeChangeUserAccountPassword,\n} from '../../assets/javascripts/school/people/profile/student_user_account'\n\nwindow.initializeAccountFormSubmit = initializeAccountFormSubmit\nwindow.initializeCloseUserAccount = initializeCloseUserAccount\nwindow.initializeAccountRestrictionChecks = initializeAccountRestrictionChecks\nwindow.initializeChangeUserAccountPassword = initializeChangeUserAccountPassword\n", "/* global initializeAttendanceLogProgramSelector */\n/* global initializeTooltips */\n/* global initializeDropdownTabs */\n/* global loadLazyPartial */\n/* global highlightModule */\n/* global initializeAccountFormSubmit */\n/* global initializeCloseUserAccount */\n/* global initializeAccountRestrictionChecks */\n/* global initializeChangeUserAccountPassword */\n/* global $updateEventModal */\n/* global initializeAdditionalInfoModalContent */\n/* global gon, filestack */\n\nexport function registerProfileModulesDropdownClickEvents(module) {\n 'use strict'\n $(module)\n .find('.dropdown-tabs .dropdown-tabs-menu li a')\n .on('voltage:dropdown-tabs:selected', function () {\n var $this = $(this)\n var path = $this.data('path')\n\n if (module.hasClass('.lazy-load')) {\n var $target = $(this).closest('.lazy-load')\n loadLazyPartial(path, $target)\n } else {\n module[0].src = path\n }\n })\n}\n\nexport function initializeViewAllProfileItemsActionable(actionableElement) {\n 'use strict'\n\n $(actionableElement).on('click', function () {\n var $this = $(this)\n var $table = $(this).closest('.panel.module').find('table')\n var $footer = $(this).closest('.panel.module').find('.footer')\n var path = $this.data('path')\n if (path === undefined) return\n\n $.ajax({\n type: 'GET',\n url: path,\n complete(data) {\n $table.find('tbody').html(data.responseJSON.table_data)\n $footer.html(data.responseJSON.footer)\n if (data.status === 200) {\n initializeTooltips($table)\n initializeAgreementDeletes()\n }\n },\n })\n })\n}\n\nexport function initializeViewMoreProfileItemsActionable(actionableElement) {\n 'use strict'\n\n $(actionableElement).on('click', function () {\n var $this = $(this)\n var $table = $(this).closest('.panel.module').find('table')\n var $footer = $(this).closest('.panel.module').find('.footer')\n var path = $this.data('path')\n\n $.ajax({\n type: 'GET',\n url: path,\n complete(data) {\n $table.append(data.responseJSON.table_data)\n $footer.html(data.responseJSON.footer)\n if (data.status === 200) {\n initializeTooltips($table)\n initializeViewMoreProfileItemsActionable($footer.find('.view-more-results'))\n initializeViewAllProfileItemsActionable($footer.find('.view-all'))\n initializeInfiniteViewAll($footer.find('.view-all'))\n initializeAgreementDeletes()\n initializeHoverTooltips($table)\n initializePaymentNotesModal($table)\n initializeDocumentDeletes()\n }\n },\n })\n })\n}\n\nexport function initializeInfiniteViewAll(actionableElement, module) {\n 'use strict'\n\n if (module === undefined) module = $(actionableElement).closest('.panel.module')\n\n $(actionableElement).click(function () {\n var $viewMoreResults = module.find('.view-more-results')\n var $viewAllResults = module.find('.view-all')\n var $infinityScrollable = module.find('.infinity-scroll')\n\n $viewMoreResults.click()\n $viewMoreResults.addClass('disabled')\n $viewAllResults.addClass('disabled')\n\n function onScroll() {\n $infinityScrollable.scroll(function () {\n var bottom = this.scrollTop >= this.scrollHeight - this.offsetHeight\n\n if (bottom) {\n $('.history-spinner').remove()\n $(this).append(\"<span class='history-spinner fa fa-spinner fa-spin' <span/>\")\n\n if ($(this).parent().find('.btn-group.at-bottom').length > 0) {\n $('.history-spinner').remove()\n } else {\n $viewMoreResults = module.find('.view-more-results')\n $viewMoreResults.click()\n $(this).unbind('scroll')\n\n if ($viewMoreResults.length <= 0) $('.history-spinner').remove()\n }\n }\n })\n }\n\n onScroll()\n\n $(document).ajaxComplete(function () {\n module.find('.view-more-results').addClass('disabled')\n module.find('.view-all').addClass('disabled')\n $('.history-spinner').remove()\n $('input.select-all[type=checkbox]:checked').prop('checked', false)\n onScroll()\n })\n })\n}\n\nfunction initializeFileUpload() {\n var post_url = $('#customer-document-upload').data('postUrl')\n var options = {\n maxFiles: 5,\n fromSources: ['local_file_system', 'url'],\n displayMode: 'inline',\n container: '#document-upload-inline',\n onUploadDone(files) {\n store_filestack_data(files.filesUploaded, post_url)\n\n $('#add-documents-modal').modal('hide')\n },\n }\n\n var client = filestack.init(gon.filestack_api_key)\n client.picker(options).open()\n\n $('#customer-document-upload').click(function (e) {\n e.preventDefault()\n\n $('#add-documents-modal').modal('show')\n })\n\n function store_filestack_data(filesUploaded, url) {\n jQuery.ajax({\n type: 'POST',\n url,\n data: { filestack_attributes: JSON.stringify(filesUploaded) },\n success() {\n if ($('.lazy-load#documents').length) {\n var target = $('.lazy-load#documents')\n var path = target[0].dataset.path\n\n loadLazyPartial(path, target)\n } else {\n let frame = document.querySelector('#documents')\n if (frame) frame.reload()\n }\n },\n })\n }\n}\n\nfunction initializeDocumentDeletes() {\n $('.delete-documents').on('click', function (e) {\n e.preventDefault()\n\n var document_ids = []\n $('#documents')\n .find('.documents-checkbox:checked')\n .each(function (i, checkbox) {\n document_ids.push(checkbox.id)\n })\n\n remove_filestack_data({ document_ids }, $('.delete-documents').data('path'))\n })\n\n function remove_filestack_data(data, path) {\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n $.ajax({\n type: 'DELETE',\n url: path,\n data,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n success() {\n if ($('.lazy-load#documents').length) {\n var target = $('.lazy-load#documents')\n var docsPath = target[0].dataset.path\n\n loadLazyPartial(docsPath, target)\n } else {\n let frame = document.querySelector('turbo-frame#documents')\n if (frame) frame.reload()\n }\n },\n })\n }\n}\n\nexport function initializeAgreementDeletes() {\n 'use strict'\n\n $('.student-agreement-delete, .prospect-agreement-delete').on('click', function (e) {\n e.preventDefault()\n var path = $(this).data('path')\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n $.ajax({\n type: 'DELETE',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(data) {\n if (data.status !== 200) $('#global-alerts').append(data.responseText)\n\n var target = $('.lazy-load#agreements')\n loadLazyPartial(target[0].dataset.path, target)\n return false\n },\n })\n\n return true\n })\n}\n\nfunction initializeCommentDeletes() {\n 'use strict'\n\n $('.person-comment-delete').on('click', function (e) {\n e.preventDefault()\n var path = $(this).data('path')\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n $.ajax({\n type: 'DELETE',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(data) {\n if (data.status !== 200) $('#global-alerts').append(data.responseText)\n let frame = document.querySelector('turbo-frame#comments')\n if (frame) frame.reload()\n return false\n },\n })\n\n return true\n })\n}\n\nfunction initializeAddNewComment(actionableElement) {\n actionableElement.find('.new-comment').on('click', function (e) {\n e.preventDefault()\n\n var $globalAlerts = $('#global-alerts')\n var path = $(this)[0].dataset.path\n var $modal = $('#comment-modal')\n\n $modal.html('<div class=\"spinner spinner-grow center\" />')\n $modal.modal('show')\n\n $.get(path).done(function (data) {\n $modal.html(data)\n $modal.modal()\n\n $modal.find('.btn-primary').attr('disabled', 'disabled')\n $modal.find('textarea').on('input', function () {\n if (this.value.match('^ *$')) $modal.find('.btn-primary').attr('disabled', 'disabled')\n else $modal.find('.btn-primary').removeAttr('disabled')\n })\n\n $modal.find('form').on('ajax:complete', function (_e) {\n if (_e.originalEvent.detail[0].status === 200) {\n if ($(this.closest('.lazy-load')).length) {\n var $target = $(this).closest('.lazy-load')\n var loadPath = $target[0].dataset.path\n\n loadLazyPartial(loadPath, $target)\n } else {\n let frame = document.querySelector('turbo-frame#comments')\n if (frame) frame.reload()\n }\n\n $modal.modal('hide')\n } else {\n $globalAlerts.append(e.originalEvent.detail[0].responseText)\n $updateEventModal.modal('hide')\n }\n })\n })\n })\n}\n\nfunction defaultProgressionLevelSuccess(data) {\n $('.program-progression-level').html(data.responseText)\n $('.program-progression-level').closest('.item').removeClass('hidden')\n}\n\nfunction getProgramProgressionLevels(student_program_progression_levels_path, onlyExisting, onComplete) {\n 'use strict'\n onComplete = onComplete || defaultProgressionLevelSuccess\n onlyExisting = onlyExisting || false\n $.ajax({\n type: 'GET',\n data: { only_existing: onlyExisting },\n url: student_program_progression_levels_path,\n complete: onComplete,\n })\n}\n\nfunction initializeAttendanceModuleActionSelector() {\n 'use strict'\n\n $('#student #attendances ul li a').on('click', function (e) {\n e.preventDefault()\n\n var $this = $(this)\n var path = $this.data('path')\n var data = {}\n var includeAttendances = $this.data('editable')\n\n var checkedAttendanceCheckboxes = $(\n '.program-attendance-container input.select-all-item[type=checkbox]:checked',\n )\n if (includeAttendances) {\n if (checkedAttendanceCheckboxes.length > 0) {\n data.attendance_ids = $(checkedAttendanceCheckboxes)\n .map(function () {\n return parseInt($(this).attr('id').replace('attendance_', ''))\n })\n .toArray()\n }\n }\n\n initializeInfiniteViewAll($(this).find('a.view-all'))\n\n $('#update-student-modal').html('<div class=\"spinner spinner-grow center\" />')\n $('#update-student-modal').modal('show')\n $('#update-student-modal').on('hidden.bs.modal', function () {\n $('#update-student-modal').unbind()\n })\n $.ajax({\n type: 'GET',\n url: path,\n data,\n complete(_data) {\n $('#update-student-modal').html(_data.responseText)\n initializeAdditionalInfoModalContent()\n var $modalSubmitButton = $('#update-student-modal').find(\"form button[type='submit']\")\n if (!includeAttendances || (checkedAttendanceCheckboxes && checkedAttendanceCheckboxes.length === 0)) {\n $modalSubmitButton.addClass('disabled')\n $modalSubmitButton.prop('disabled', true)\n }\n $('#attendance-program').on('select2:select', function (_e) {\n _e.preventDefault()\n\n var program_progression_levels_path = $(this).select2('data')[0].element.dataset.path\n getProgramProgressionLevels(program_progression_levels_path, true)\n\n $modalSubmitButton.removeClass('disabled')\n $modalSubmitButton.prop('disabled', false)\n })\n $('#update-student-modal')\n .find('form')\n .on('ajax:complete', function (_e) {\n if (_e.originalEvent.detail[0].status === 200) {\n $('#update-student-modal').unbind()\n $('#update-student-modal').modal('hide')\n\n var lazy_load_path = $('#student #attendances .lazy-load').data('path')\n loadLazyPartial(lazy_load_path, $('#student #attendances .lazy-load'))\n } else {\n $('#global-alerts').append(_e.originalEvent.detail[0].responseText)\n $('#update-student-modal').modal('hide')\n }\n })\n },\n })\n\n return false\n })\n}\n\nfunction initializeTabModule(clickableElements) {\n clickableElements.on('click', function (e) {\n e.preventDefault()\n var path = $(this).data('path')\n\n var $target = $(this).closest('.lazy-load')\n\n // this sucks and refreshes the whole module\n if (path && $target.length > 0) {\n loadLazyPartial(path, $target)\n } else if (path) {\n let frame = $(this).closest('turbo-frame')\n if (frame) frame[0].src = path\n }\n })\n}\n\nfunction initializeHoverTooltips($this) {\n $this.find('.hover-tooltip').hover(\n function () {\n $(this).find('[data-toggle=\"tooltip\"]').tooltip('show')\n },\n function () {\n $(this).find('[data-toggle=\"tooltip\"]').tooltip('hide')\n },\n )\n}\n\nfunction initializePaymentNotesModal($this) {\n $this.find('.payment-notes').on('click', function () {\n if ($(this).hasClass('disabled')) return\n\n var $row = $(this)\n var path = $(this).data('path')\n var content = $(this).data('content')\n var $modal = $('#add-payment-notes-modal')\n\n $('#add-payment-notes-modal #add-notes-field').val(content)\n $modal.find('form').attr('action', path)\n $modal.modal('show')\n $('#add-payment-notes-modal #add-notes-field').focus()\n\n $('#add-payment-notes-modal')\n .find('form')\n .on('ajax:complete', function () {\n content = $('#add-notes-field').val()\n if (content === '') {\n $row.removeClass('fa-edit-note')\n $row.addClass('fa-add-note')\n $row.data('content', content)\n } else {\n $row.removeClass('fa-add-note')\n $row.addClass('fa-edit-note')\n $row.data('content', content)\n }\n\n $('#add-payment-notes-modal').modal('hide')\n })\n })\n}\n\nfunction initializeDropToggleThing($toggleable) {\n $toggleable.on('click', function (e) {\n if ($(e.target).is('a')) return true\n\n e.preventDefault()\n const row_id = $(this).data('id') || ''\n const el = document.getElementById(`drop-toggle-id-${row_id}`)\n\n // flip the arrow thingy\n const icon = $(this).find('svg')\n if (icon.css('transform') === 'none') icon.css({ transform: 'rotate(180deg)' })\n else icon.css({ transform: 'none' })\n\n el.hidden = !el.hidden\n })\n}\n\nexport function handleAttendanceModuleContextSwitching() {\n $('#attendance-log-context, #attendance-award-context').on('click', function () {\n var $this = $(this)\n var $target = $(this).closest('.lazy-load')\n var path = $this.data('path')\n var $footer = $('.attendance-base-container').find('.footer')\n $footer.html('')\n if ($this[0].id === 'attendance-award-context') {\n $('.attendances-header div.dropdown').addClass('hidden')\n } else {\n $('.attendances-header div.dropdown').removeClass('hidden')\n }\n loadLazyPartial(path, $target)\n })\n}\n\nfunction initializeLeftPanelSelection() {\n $('#profile-left-panel-selector .select-option').on('click', function () {\n var $target = $(this).closest('.lazy-load')\n var path = $(this).data('path')\n\n loadLazyPartial(path, $target)\n })\n $('#profile-left-panel-selector select').on('change', function () {\n var $target = $(this).closest('.lazy-load')\n var path = $(this).find('option:selected').data('path')\n\n loadLazyPartial(path, $target)\n })\n}\n\n// Assumes the button element has a path value in it's data attributes,\n// will invoke the path provided with a PUT, then refresh the lazy load\n// partial if successful\nfunction handleButtonUpdate(parentElement, buttonElement) {\n buttonElement.attr('disabled', true)\n var path = buttonElement.data('path')\n var modulePath = parentElement.data('path')\n var $target = parentElement.closest('.lazy-load')\n if (buttonElement.data('returnPath')) modulePath = buttonElement.data('returnPath')\n\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n $.ajax({\n type: 'PUT',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(data) {\n if (data.status === 200) {\n if ($target.length) loadLazyPartial(modulePath, $target)\n else parentElement.closest('turbo-frame')[0].reload()\n } else {\n $('#global-alerts').append(data.responseText)\n loadLazyPartial(modulePath, $target)\n return false\n }\n return false\n },\n })\n return true\n}\n\nfunction initializeMembershipActivationButtons(actionableElement) {\n actionableElement.find('.activate-membership').on('click', function () {\n handleButtonUpdate(actionableElement, $(this))\n })\n actionableElement.find('.deactivate-membership').on('click', function () {\n handleButtonUpdate(actionableElement, $(this))\n })\n}\n\nfunction initializeAttendanceAwardProgramSelector() {\n 'use strict'\n\n if ($('.student-attendance-award-items').length) {\n var path = $('.student-attendance-award-items').data('path')\n\n $('#student-programs-selector .select-option').on('click', function (e) {\n var target = e.target\n var programId = target.getAttribute('value')\n\n path = $('.student-attendance-award-items').data('path')\n\n // Remove any \"selected\" classes\n $('#student-programs-selector .select-option').each(function () {\n this.classList.remove('selected')\n })\n\n // Add \"selected\" back to just this element\n target.classList.add('selected')\n\n populateAttendanceAwards(path, programId)\n })\n }\n}\n\nfunction populateAttendanceAwards(path, programId) {\n 'use strict'\n\n $.ajax({\n type: 'GET',\n url: path,\n data: { programId },\n complete(data) {\n $('.program-attendance-awards-container .content').html(data.responseText)\n initializeTooltips($('.program-attendance-awards-container .content'))\n },\n })\n}\n\nfunction initializeSortingColumns(actionableElement) {\n 'use strict'\n\n $(actionableElement)\n .find('th.sortable-column')\n .click(function () {\n const $this = $(this)\n const sortColumn = this.classList[1]\n const sortAscending = !this.classList.contains('selected-up') && this.classList.contains('selected-down')\n\n const $target = $this.closest('.lazy-load')\n let path = $this.closest('table').data('path')\n\n const separator = path.includes('?') ? '&' : '?'\n path += `${separator}sort_by=${sortColumn}&sort_asc=${sortAscending}`\n\n loadLazyPartial(path, $target)\n })\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n if (window.location.hash) highlightModule(window.location.hash)\n\n //\n // Modules\n //\n $('#student #attendances .lazy-load').on('lazy-load:complete', function () {\n initializeAttendanceLogProgramSelector()\n initializeAttendanceModuleActionSelector()\n handleAttendanceModuleContextSwitching()\n initializeAttendanceAwardProgramSelector()\n initializeInfiniteViewAll($(this).find('a.view-all'))\n initializeTooltips($(this))\n })\n\n $('#prospect .lazy-load#finances, #student .lazy-load#finances').on('lazy-load:complete', function () {\n initializeTabModule($('#student #finances #finance-tab-toggle a'))\n initializeTabModule($('#prospect #finances #finance-tab-toggle a'))\n initializeViewMoreProfileItemsActionable($(this).find('a.view-more-results'))\n initializeInfiniteViewAll($(this).find('a.view-all'))\n initializeLeftPanelSelection()\n initializeTooltips($(this))\n initializeHoverTooltips($(this))\n initializeDropToggleThing($('#student #finances .report-year-toggle'))\n\n initializePaymentNotesModal($(this))\n initializeSortingColumns($(this))\n })\n\n $('#prospect .lazy-load#agreements, #student .lazy-load#agreements').on('lazy-load:complete', function () {\n initializeDropdownTabs($(this))\n registerProfileModulesDropdownClickEvents($(this))\n initializeViewMoreProfileItemsActionable($(this).find('a.view-more-results'))\n initializeViewAllProfileItemsActionable($(this).find('a.view-all'))\n initializeAgreementDeletes()\n initializeTooltips($(this))\n })\n\n $('#student .lazy-load#documents, #student #documents').on('lazy-load:complete turbo:frame-load', function () {\n initializeDropdownTabs($(this))\n registerProfileModulesDropdownClickEvents($(this))\n initializeViewMoreProfileItemsActionable($(this).find('a.view-more-results'))\n initializeInfiniteViewAll($(this).find('a.view-all'))\n initializeTooltips($(this))\n initializeFileUpload()\n initializeDocumentDeletes()\n })\n\n let historySections =\n '#prospect .lazy-load#history, #student .lazy-load#history, #prospect #history, #student #history'\n $(historySections).on('lazy-load:complete turbo:frame-load', function () {\n initializeViewMoreProfileItemsActionable($(this).find('a.view-more-results'))\n initializeInfiniteViewAll($(this).find('a.view-all'))\n initializeTooltips($(this))\n })\n\n $('#prospect .lazy-load#memberships, #student .lazy-load#memberships').on('lazy-load:complete', function () {\n initializeTooltips($(this))\n })\n\n $('#prospect .lazy-load#prospects-calendar, #student .lazy-load#students-calendar').on(\n 'lazy-load:complete',\n function () {\n initializeDropdownTabs($(this))\n\n $(this)\n .find('.dropdown-tabs .dropdown-tabs-menu li a')\n .on('voltage:dropdown-tabs:selected', function () {\n var $this = $(this)\n var $target = $(this).closest('.lazy-load')\n var path = $this.data('path')\n\n loadLazyPartial(path, $target)\n })\n },\n )\n\n let commentSections =\n '#prospect .lazy-load#comments, #student .lazy-load#comments, #prospect #comments, #student #comments'\n $(commentSections).on('lazy-load:complete turbo:frame-load', function () {\n initializeViewMoreProfileItemsActionable($(this).find('a.view-more-results'))\n initializeInfiniteViewAll($(this).find('a.view-all'))\n initializeAddNewComment($(this))\n initializeCommentDeletes()\n })\n\n $('#prospect .lazy-load#memberships, #student .lazy-load#memberships').on('lazy-load:complete', function () {\n initializeTabModule($('#student #memberships #memberships-tab-toggle a'))\n initializeLeftPanelSelection()\n initializeMembershipActivationButtons($(this))\n })\n\n $('#student .lazy-load#student-account').on('lazy-load:complete', function () {\n initializeAccountFormSubmit()\n initializeCloseUserAccount()\n initializeAccountRestrictionChecks()\n initializeChangeUserAccountPassword()\n })\n\n $('#student .lazy-load#student-family-info').on('lazy-load:complete', function () {\n initializeTooltips($(this))\n })\n})\n", "import {\n registerProfileModulesDropdownClickEvents,\n initializeViewAllProfileItemsActionable,\n initializeViewMoreProfileItemsActionable,\n initializeInfiniteViewAll,\n initializeAgreementDeletes,\n handleAttendanceModuleContextSwitching,\n} from '../../assets/javascripts/school/people/profile'\n\nwindow.registerProfileModulesDropdownClickEvents = registerProfileModulesDropdownClickEvents\nwindow.initializeViewAllProfileItemsActionable = initializeViewAllProfileItemsActionable\nwindow.initializeViewMoreProfileItemsActionable = initializeViewMoreProfileItemsActionable\nwindow.initializeInfiniteViewAll = initializeInfiniteViewAll\nwindow.initializeAgreementDeletes = initializeAgreementDeletes\nwindow.handleAttendanceModuleContextSwitching = handleAttendanceModuleContextSwitching\n", "/* eslint-env jquery */\n\n/* global enableApplyToPreviewButton */\n/* global addCountToCounter */\n\nexport function initializeInventoryItemCheckbox() {\n 'use strict'\n $('.inventory-item-check').off()\n $('.inventory-item-check').on('click', function () {\n enableApplyToPreviewButton()\n addCountToCounter('inventory')\n })\n}\n\n$(document).on('turbo:load lazy-load:complete ready', function () {\n 'use strict'\n addCountToCounter('inventory')\n $('.inventory-item-check').unbind('click')\n initializeInventoryItemCheckbox()\n})\n", "// eslint-disable-next-line max-len\nimport { initializeInventoryItemCheckbox } from '../../assets/javascripts/school/bizbuilder/landing_pages/inventory'\n\nwindow.initializeInventoryItemCheckbox = initializeInventoryItemCheckbox\n", "/* global initializeDropdownTabs */\n/* global initializeProgramSignupBehavior */\n/* global initializeSchedulerBehavior */\n/* global initializeTrialMembershipBehavior */\n/* global initializeProspectOffWarning */\n/* global enableApplyToPreviewButton */\n/* global initializeInventoryItemCheckbox */\n/* global handleProspectCreationToggle */\n/* global initializeEmbedCodeModal */\n/* global initializeCollapsibleModule */\n/* global enableCreateProspectToggle */\n\nexport function initializeLandingPageModules(parent) {\n 'use strict'\n $(parent)\n .find('.deselect-module')\n .click(function () {\n var $selectedModule = $(this).closest('.selected-module')\n var $keyField = $selectedModule.find('.selected-module-label input')\n\n var destroyFlag = $selectedModule.find('.delete')\n if (destroyFlag.length === 0) {\n $selectedModule.remove()\n } else {\n $selectedModule.addClass('hidden')\n destroyFlag.attr('value', 1)\n }\n\n $selectedModule.find('input[type=checkbox]').removeAttr('checked')\n\n // Could this not be $keyField.attr('value') ? value is header for the header, and they name is modules[header][key]\n var splittedString = $keyField.attr('name').split('[')\n\n if (splittedString.length > 1) {\n var key = splittedString[1].split(']')[0]\n const hasTrialMemberships = $selectedModule.find('#trial-membership-module-content').length > 0\n\n if (key === 'programs') {\n updateProgramModule($selectedModule)\n } else if (key === 'trial_memberships' && !hasTrialMemberships) {\n $('.module-options').find(`.module-option-programs`).removeClass('disabled')\n } else if (key === 'lead_capture_form') {\n if ($('#agreement-module-content').length > 0) {\n $('#agreement-module').find('.deselect-module').trigger('click')\n }\n $('.module-options').find(`.module-option-agreement`).addClass('disabled')\n }\n\n $('.module-options').find(`.module-option-${key}`).removeClass('disabled')\n enableApplyToPreviewButton()\n handleProspectCreationToggle()\n }\n })\n\n $('#landing-page-form input[type=radio]').click(function () {\n enableApplyToPreviewButton()\n handleProspectCreationToggle()\n })\n\n $('#landing-page-form input.landing-page-header-input').keyup(function () {\n enableApplyToPreviewButton()\n })\n\n handleProspectCreationToggle()\n}\n\nfunction updateProgramModule(programModule) {\n const hasScheduler = $('#scheduler-module').length > 0\n const hasPrograms = programModule.find('#program-module-content').length > 0\n if (hasScheduler) {\n $('#scheduler-module').find('.deselect-module').trigger('click')\n }\n // NOTE: This has to happen after clicking deselect, since deselecting it removes the disabled class.\n $('.module-options').find(`.module-option-scheduler`).addClass('disabled')\n\n if (hasPrograms) {\n $('.create-prospect-toggle-container .helper-text .either').addClass('hidden')\n $('.create-prospect-toggle-container .helper-text .prospect').removeClass('hidden')\n $('#prospect-creation-toggle').removeClass('disabled')\n } else {\n $('.module-options').find(`.module-option-trial_memberships`).removeClass('disabled')\n\n $('.create-prospect-toggle-container .helper-text .prospect').addClass('hidden')\n $('.create-prospect-toggle-container .helper-text .either').removeClass('hidden')\n enableCreateProspectToggle()\n }\n}\n\nfunction updateLandingPageStatus(container, path, button) {\n 'use strict'\n\n button.attr('disabled', true)\n\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n $.ajax({\n type: 'PUT',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(data) {\n if (data.status === 200) {\n container.fadeOut('fast', function () {\n container.html(data.responseText)\n initializeDropdownTabs(container)\n initializeLandingPageStatusDropdowns(container)\n\n container.fadeIn('fast')\n })\n } else {\n $('#global-alerts').append(data.responseText)\n }\n },\n })\n}\n\nfunction initializeLandingPageStatusDropdowns(parent) {\n 'use strict'\n\n $(parent)\n .find('.landing-page-container .dropdown-tabs .dropdown-tabs-menu li a')\n .on('voltage:dropdown-tabs:selected', function () {\n var $this = $(this)\n var $target = $this.closest('.landing-page-wrapper')\n var path = $this.data('path')\n var $parentButton = $this.closest('.dropdown-tabs').find('button')\n\n return updateLandingPageStatus($target, path, $parentButton)\n })\n}\n\nfunction loadModulePartial(targetElement, moduleElement) {\n const path = moduleElement.data('path')\n $.ajax({\n type: 'GET',\n url: path,\n complete(data) {\n if (data.status === 200) {\n targetElement.append(data.responseText)\n var $lastField = $('#additional-sidebar').find('.selected-module').last()\n initializeLandingPageModules($lastField)\n initializeCollapsibleModule($lastField.find('.content'))\n enableApplyToPreviewButton()\n initializeDropdownTabs()\n initializeInventoryItemCheckbox()\n initializeTrialMembershipBehavior()\n initializeProgramSignupBehavior()\n initializeSchedulerBehavior()\n initializeProspectOffWarning()\n $lastField[0].scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n inline: 'nearest',\n })\n } else {\n $('#global-alerts').append(data.responseText)\n moduleElement.removeClass('disabled')\n }\n },\n })\n}\n\nfunction initializeProgramModule() {\n $('.module-options').find(`.module-option-trial_memberships`).addClass('disabled')\n $('.module-options').find(`.module-option-scheduler`).removeClass('disabled')\n\n $('.create-prospect-toggle-container .helper-text .prospect').addClass('hidden')\n $('.create-prospect-toggle-container .helper-text .either').removeClass('hidden')\n enableCreateProspectToggle()\n}\n\nfunction initializeOtherModules(moduleName) {\n $('.create-prospect-toggle-container .helper-text .prospect').removeClass('hidden')\n $('.create-prospect-toggle-container .helper-text .either').addClass('hidden')\n $('#prospect-creation-toggle').parent().removeClass('disabled')\n\n if (moduleName === 'trial_memberships') {\n $('.module-options').find(`.module-option-programs`).addClass('disabled')\n } else if (moduleName === 'lead_capture_form') {\n $('.module-options').find('.module-option-agreement').removeClass('disabled')\n }\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n $('.lazy-load#landing-pages').on('lazy-load:complete', function () {\n initializeDropdownTabs($(this))\n initializeLandingPageStatusDropdowns($(this))\n initializeEmbedCodeModal()\n })\n\n initializeLandingPageStatusDropdowns($(this))\n\n initializeLandingPageModules($('#additional-sidebar'))\n\n $('.profit-item-dropdown').on('click', function () {\n initializeTrialMembershipBehavior()\n initializeProgramSignupBehavior()\n initializeSchedulerBehavior()\n initializeInventoryItemCheckbox()\n })\n\n document.addEventListener('trix-change', function () {\n if ($('#landing-page-form .apply-btn').length) enableApplyToPreviewButton()\n })\n\n $('.module-option').on('click', function () {\n if (!$(this).hasClass('disabled')) {\n var $this = $(this)\n var $target = $('#landing-page-form > .content')\n var moduleName = $(this).data('module-name')\n\n $this.addClass('disabled')\n\n if (moduleName === 'programs') {\n initializeProgramModule()\n } else {\n initializeOtherModules(moduleName)\n }\n\n if (moduleName === 'agreement') {\n if ($('#agreement-module').length > 0) {\n $('#agreement-module').removeClass('hidden')\n } else {\n loadModulePartial($target, $this)\n }\n } else if (moduleName === 'lead_capture_form') {\n if ($('#lead-capture-form-module').length > 0) {\n $('#lead-capture-form-module').removeClass('hidden')\n } else {\n loadModulePartial($target, $this)\n }\n } else {\n loadModulePartial($target, $this)\n }\n }\n })\n})\n", "import { initializeLandingPageModules } from '../../assets/javascripts/school/bizbuilder/landing_pages'\n\nwindow.initializeLandingPageModules = initializeLandingPageModules\n", null, null, null, null, null, "import SignaturePad from 'signature_pad'\n\nwindow.SignaturePad = SignaturePad\n", "export const Pallette = {\n primaryHighlight: '#f2a900',\n secondaryDark: '#93928F',\n secondaryDarker: '#717171',\n secondaryDarkest: '#404040',\n secondaryDarkerThanDarkest: '#333',\n secondaryLight: '#e9e9e8',\n secondaryLighter: '#f2f2f2',\n white: '#fff',\n black: '#5d5c57',\n gray: '#808080',\n red: '#d9433e',\n blue: '#337ab7',\n green: '#449d44',\n purple: '#7653ad',\n almostBlack: '#262626',\n pureBlack: '#000',\n lightOrange: '#fff0d2',\n darkOrange: '#e8cd95',\n notificationsRed: '#ab6868',\n notificationsGreen: '#548054',\n notificationsBlue: '#44637d',\n}\n\nexport const PalletteDark = {\n white: '#d9d9d9',\n}\n", "import { Pallette, PalletteDark } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\n\nwindow.Pallette = Pallette\nwindow.PalleteDark = PalletteDark\n", "/* eslint-disable no-unused-vars */\n$(document).on('turbo:load', function () {\n 'use strict'\n\n let $createProspectToggle = $('#prospect-creation-toggle')\n\n $createProspectToggle.bootstrapToggle('destroy')\n $createProspectToggle.bootstrapToggle()\n $createProspectToggle.bootstrapToggle('enable')\n\n if ($createProspectToggle.hasClass('disabled')) {\n $createProspectToggle.parent().addClass('disabled')\n }\n\n $createProspectToggle.change(function () {\n if (this.checked) {\n $('.create-prospect-toggle-container .helper-text').removeClass('hidden')\n } else {\n $('.create-prospect-toggle-container .helper-text').addClass('hidden')\n }\n })\n})\n\nexport function enableCreateProspectToggle() {\n let $createProspectToggle = $('#prospect-creation-toggle')\n $createProspectToggle.addClass('disabled')\n $createProspectToggle.parent().addClass('disabled')\n\n $createProspectToggle.bootstrapToggle('on')\n}\n/* eslint-disable no-unused-vars */\n", "// eslint-disable-next-line max-len\nimport { enableCreateProspectToggle } from '../../assets/javascripts/school/bizbuilder/landing_pages/create_prospect'\n\nwindow.enableCreateProspectToggle = enableCreateProspectToggle\n", "import Rails from '@rails/ujs'\nRails.start()\nwindow.Rails = Rails\n", "import intlTelInput from 'intl-tel-input'\n\nwindow.intlTelInput = intlTelInput\n", "$(document).on('turbo:load', function () {\n 'use strict'\n\n jQuery.expr.filters.onscreen = function (el) {\n if (navigator.webdriver) return true\n\n if ($(el).css('display') === 'none') return false\n\n var rect = el.getBoundingClientRect()\n return !(\n rect.x + rect.width < 0 ||\n rect.y + rect.height < 0 ||\n rect.x > window.innerWidth ||\n rect.y > window.innerHeight\n )\n }\n})\n", "/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n 'use strict';\n var version = $.fn.jquery.split(' ')[0].split('.')\n if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')\n }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // https://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.4.1'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n selector = selector === '#' ? [] : selector\n var $parent = $(document).find(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.4.1'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.4.1'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n if (typeof $next === 'object' && $next.length) {\n $next[0].offsetWidth // force reflow\n }\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n if (href) {\n href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n }\n\n var target = $this.attr('data-target') || href\n var $target = $(document).find(target)\n\n if (!$target.hasClass('carousel')) return\n\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.4.1'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(document).find(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(document).find(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.4.1'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.4.1'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n var scrollbarWidth = this.scrollbarWidth\n if (this.bodyIsOverflowing) {\n this.$body.css('padding-right', bodyPad + scrollbarWidth)\n $(this.fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight\n var calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n })\n }\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n $(this.fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var target = $this.attr('data-target') ||\n (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n var $target = $(document).find(target)\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n var uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n ]\n\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n }\n\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase()\n\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp\n })\n\n // Check if a regular expression validates the attribute.\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n // IE 8 and below don't support createHTMLDocument\n if (!document.implementation || !document.implementation.createHTMLDocument) {\n return unsafeHtml\n }\n\n var createdDocument = document.implementation.createHTMLDocument('sanitization')\n createdDocument.body.innerHTML = unsafeHtml\n\n var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n var elements = $(createdDocument.body).find('*')\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var el = elements[i]\n var elName = el.nodeName.toLowerCase()\n\n if ($.inArray(elName, whitelistKeys) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n var attributeList = $.map(el.attributes, function (el) { return el })\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n el.removeAttribute(attributeList[j].nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n }\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.4.1'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n },\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n var dataAttributes = this.$element.data()\n\n for (var dataAttr in dataAttributes) {\n if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr]\n }\n }\n\n options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n if (options.sanitize) {\n options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n if (this.options.html) {\n if (this.options.sanitize) {\n title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n }\n\n $tip.find('.tooltip-inner').html(title)\n } else {\n $tip.find('.tooltip-inner').text(title)\n }\n\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n }\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.4.1'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n if (this.options.html) {\n var typeContent = typeof content\n\n if (this.options.sanitize) {\n title = this.sanitizeHtml(title)\n\n if (typeContent === 'string') {\n content = this.sanitizeHtml(content)\n }\n }\n\n $tip.find('.popover-title').html(title)\n $tip.find('.popover-content').children().detach().end()[\n typeContent === 'string' ? 'html' : 'append'\n ](content)\n } else {\n $tip.find('.popover-title').text(title)\n $tip.find('.popover-content').children().detach().end().text(content)\n }\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.4.1'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.4.1'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(document).find(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n this.$target = target\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.4.1'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n", "/*! ========================================================================\n * Bootstrap Toggle: bootstrap-toggle.js v2.2.0\n * http://www.bootstraptoggle.com\n * ========================================================================\n * Copyright 2014 Min Hur, The New York Times Company\n * Licensed under MIT\n * ======================================================================== */\n\n\n +function ($) {\n \t'use strict';\n\n\t// TOGGLE PUBLIC CLASS DEFINITION\n\t// ==============================\n\n\tvar Toggle = function (element, options) {\n\t\tthis.$element = $(element)\n\t\tthis.options = $.extend({}, this.defaults(), options)\n\t\tthis.render()\n\t}\n\n\tToggle.VERSION = '2.2.0'\n\n\tToggle.DEFAULTS = {\n\t\ton: 'On',\n\t\toff: 'Off',\n\t\tonstyle: 'primary',\n\t\toffstyle: 'default',\n\t\tsize: 'normal',\n\t\tstyle: '',\n\t\twidth: null,\n\t\theight: null\n\t}\n\n\tToggle.prototype.defaults = function() {\n\t\treturn {\n\t\t\ton: this.$element.attr('data-on') || Toggle.DEFAULTS.on,\n\t\t\toff: this.$element.attr('data-off') || Toggle.DEFAULTS.off,\n\t\t\tonstyle: this.$element.attr('data-onstyle') || Toggle.DEFAULTS.onstyle,\n\t\t\toffstyle: this.$element.attr('data-offstyle') || Toggle.DEFAULTS.offstyle,\n\t\t\tsize: this.$element.attr('data-size') || Toggle.DEFAULTS.size,\n\t\t\tstyle: this.$element.attr('data-style') || Toggle.DEFAULTS.style,\n\t\t\twidth: this.$element.attr('data-width') || Toggle.DEFAULTS.width,\n\t\t\theight: this.$element.attr('data-height') || Toggle.DEFAULTS.height\n\t\t}\n\t}\n\n\tToggle.prototype.render = function () {\n\t\tthis._onstyle = 'btn-' + this.options.onstyle\n\t\tthis._offstyle = 'btn-' + this.options.offstyle\n\t\tvar size = this.options.size === 'large' ? 'btn-lg'\n\t\t\t: this.options.size === 'small' ? 'btn-sm'\n\t\t\t: this.options.size === 'mini' ? 'btn-xs'\n\t\t\t: ''\n\t\tvar $toggleOn = $('<label class=\"btn\">').html(this.options.on)\n\t\t\t.addClass(this._onstyle + ' ' + size)\n\t\tvar $toggleOff = $('<label class=\"btn\">').html(this.options.off)\n\t\t\t.addClass(this._offstyle + ' ' + size + ' active')\n\t\tvar $toggleHandle = $('<span class=\"toggle-handle btn btn-default\">')\n\t\t\t.addClass(size)\n\t\tvar $toggleGroup = $('<div class=\"toggle-group\">')\n\t\t\t.append($toggleOn, $toggleOff, $toggleHandle)\n\t\tvar $toggle = $('<div class=\"toggle btn\" data-toggle=\"toggle\">')\n\t\t\t.addClass( this.$element.prop('checked') ? this._onstyle : this._offstyle+' off' )\n\t\t\t.addClass(size).addClass(this.options.style)\n\n\t\tthis.$element.wrap($toggle)\n\t\t$.extend(this, {\n\t\t\t$toggle: this.$element.parent(),\n\t\t\t$toggleOn: $toggleOn,\n\t\t\t$toggleOff: $toggleOff,\n\t\t\t$toggleGroup: $toggleGroup\n\t\t})\n\t\tthis.$toggle.append($toggleGroup)\n\n\t\tvar width = this.options.width || Math.max($toggleOn.outerWidth(), $toggleOff.outerWidth())+($toggleHandle.outerWidth()/2)\n\t\tvar height = this.options.height || Math.max($toggleOn.outerHeight(), $toggleOff.outerHeight())\n\t\t$toggleOn.addClass('toggle-on')\n\t\t$toggleOff.addClass('toggle-off')\n\t\tthis.$toggle.css({ width: width, height: height })\n\t\tif (this.options.height) {\n\t\t\t$toggleOn.css('line-height', $toggleOn.height() + 'px')\n\t\t\t$toggleOff.css('line-height', $toggleOff.height() + 'px')\n\t\t}\n\t\tthis.update(true)\n\t\tthis.trigger(true)\n\t}\n\n\tToggle.prototype.toggle = function () {\n\t\tif (this.$element.prop('checked')) this.off()\n\t\telse this.on()\n\t}\n\n\tToggle.prototype.on = function (silent) {\n\t\tif (this.$element.prop('disabled')) return false\n\t\tthis.$toggle.removeClass(this._offstyle + ' off').addClass(this._onstyle)\n\t\tthis.$element.prop('checked', true)\n\t\tif (!silent) this.trigger()\n\t}\n\n\tToggle.prototype.off = function (silent) {\n\t\tif (this.$element.prop('disabled')) return false\n\t\tthis.$toggle.removeClass(this._onstyle).addClass(this._offstyle + ' off')\n\t\tthis.$element.prop('checked', false)\n\t\tif (!silent) this.trigger()\n\t}\n\n\tToggle.prototype.enable = function () {\n\t\tthis.$toggle.removeAttr('disabled')\n\t\tthis.$element.prop('disabled', false)\n\t}\n\n\tToggle.prototype.disable = function () {\n\t\tthis.$toggle.attr('disabled', 'disabled')\n\t\tthis.$element.prop('disabled', true)\n\t}\n\n\tToggle.prototype.update = function (silent) {\n\t\tif (this.$element.prop('disabled')) this.disable()\n\t\telse this.enable()\n\t\tif (this.$element.prop('checked')) this.on(silent)\n\t\telse this.off(silent)\n\t}\n\n\tToggle.prototype.trigger = function (silent) {\n\t\tthis.$element.off('change.bs.toggle')\n\t\tif (!silent) this.$element.change()\n\t\tthis.$element.on('change.bs.toggle', $.proxy(function() {\n\t\t\tthis.update()\n\t\t}, this))\n\t}\n\n\tToggle.prototype.destroy = function() {\n\t\tthis.$element.off('change.bs.toggle')\n\t\tthis.$toggleGroup.remove()\n\t\tthis.$element.removeData('bs.toggle')\n\t\tthis.$element.unwrap()\n\t}\n\n\t// TOGGLE PLUGIN DEFINITION\n\t// ========================\n\n\tfunction Plugin(option) {\n\t\treturn this.each(function () {\n\t\t\tvar $this = $(this)\n\t\t\tvar data = $this.data('bs.toggle')\n\t\t\tvar options = typeof option == 'object' && option\n\n\t\t\tif (!data) $this.data('bs.toggle', (data = new Toggle(this, options)))\n\t\t\tif (typeof option == 'string' && data[option]) data[option]()\n\t\t})\n\t}\n\n\tvar old = $.fn.bootstrapToggle\n\n\t$.fn.bootstrapToggle = Plugin\n\t$.fn.bootstrapToggle.Constructor = Toggle\n\n\t// TOGGLE NO CONFLICT\n\t// ==================\n\n\t$.fn.toggle.noConflict = function () {\n\t\t$.fn.bootstrapToggle = old\n\t\treturn this\n\t}\n\n\t// TOGGLE DATA-API\n\t// ===============\n\n\t$(function() {\n\t\t$('input[type=checkbox][data-toggle^=toggle]').bootstrapToggle()\n\t})\n\n\t$(document).on('click.bs.toggle', 'div[data-toggle^=toggle]', function(e) {\n\t\tvar $checkbox = $(this).find('input[type=checkbox]')\n\t\t$checkbox.bootstrapToggle('toggle')\n\t\te.preventDefault()\n\t})\n\n}(jQuery);\n", "(function($) {\n $.fn.gauge = function(value, options) {\n return this.each(function() {\n\n var settings = $.extend({\n min: 0,\n max: 100,\n unit: \"%\",\n color: \"black\",\n colorAlpha: 1,\n bgColor: \"#222\",\n fgColor: \"lightgreen\",\n fgSize: \"\",\n bgSize: \"\",\n fontSize: \"\",\n fontFamily: \"\",\n fontWeight: \"normal\",\n showDial: true,\n type: \"default\"\n }, options);\n\n settings.max = value > settings.max ? value : settings.max;\n\n //canvas initialization\n var ctx = this.getContext(\"2d\");\n\n var W = this.width;\n var H = this.height;\n var centerW = (W/2);\n\n var position = 0;\n var new_position = 0;\n var difference = 0;\n\n var text;\n var animation_loop, redraw_loop;\n\n // Angle in radians = angle in degrees * PI / 180\n function radians(degrees) {\n return degrees * Math.PI / 180;\n }\n\n if (settings.type === \"default\") {\n (function() {\n function update() {\n ctx.clearRect(0, 0, W, H);\n\n // The gauge will be an arc\n ctx.beginPath();\n ctx.lineCap = \"round\";\n ctx.strokeStyle = settings.bgColor;\n ctx.lineWidth = parseInt(settings.bgSize) ? parseInt(settings.bgSize) : (W * 0.07);\n ctx.arc(centerW, H - (centerW - ctx.lineWidth), (centerW) - ctx.lineWidth, radians(135), radians(45), false);\n ctx.stroke();\n\n ctx.beginPath();\n ctx.lineCap = \"round\";\n ctx.strokeStyle = settings.fgColor;\n ctx.lineWidth = parseInt(settings.fgSize) ? parseInt(settings.fgSize) : (W * 0.07);\n\n if (position > 0) {\n ctx.globalAlpha = settings.colorAlpha;\n ctx.arc(centerW, H - (centerW - ctx.lineWidth), (centerW) - ctx.lineWidth, radians(135), radians(135 + position), false);\n ctx.stroke();\n }\n\n // Add the text\n if (settings.showDial) {\n ctx.fillStyle = settings.color;\n var fontArgs = ctx.font.split(' ');\n fontSize = settings.fontSize.length ? settings.fontSize : (W*0.2);\n fontFamily = settings.fontFamily.length ? settings.fontFamily : fontArgs[fontArgs.length - 1];\n ctx.font = \"bold \" + parseInt(fontSize) + 'px ' + fontFamily;\n text = value + settings.unit;\n\n // Center the text, deducting half of text width from position x\n text_width = ctx.measureText(text).width;\n ctx.fillText(text, centerW - text_width / 2, H - (centerW - ctx.lineWidth) + 15);\n }\n }\n\n function draw() {\n // Cancel any animation if a new chart is requested\n if (typeof animation_loop !== undefined) clearInterval(animation_loop);\n\n if (settings.noDraw)\n new_position = 0;\n else\n new_position = Math.round((value / (settings.max - settings.min)) * 270);\n\n if (settings.quickDraw)\n position = new_position;\n\n difference = new_position - position;\n animation_loop = setInterval(animate_to, 100 / difference);\n }\n\n // Make the chart move to new degrees\n function animate_to() {\n // Clear animation loop if degrees reaches the new_degrees\n if (position == new_position)\n clearInterval(animation_loop);\n\n if (position < new_position)\n position++;\n else\n position--;\n\n update();\n }\n\n draw();\n })();\n }\n\n if (settings.type === \"halfcircle\") {\n (function() {\n function update() {\n ctx.clearRect(0, 0, W, H);\n capH = H * 0.07;\n\n // The gauge will be an arc\n ctx.beginPath();\n ctx.lineCap = \"round\";\n ctx.strokeStyle = settings.bgColor;\n ctx.lineWidth = parseInt(settings.bgSize) ? parseInt(settings.bgSize) : (W * 0.07);\n ctx.arc(centerW, H - capH, (centerW) - ctx.lineWidth - ((W * 0.07) - ctx.lineWidth), radians(180), radians(0), false);\n ctx.stroke();\n\n ctx.beginPath();\n ctx.lineCap = \"round\";\n ctx.strokeStyle = settings.fgColor;\n ctx.lineWidth = parseInt(settings.fgSize) ? parseInt(settings.fgSize) : (W * 0.07);\n\n if (position > 0) {\n ctx.globalAlpha = settings.colorAlpha;\n ctx.arc(centerW, H - capH, (centerW) - ctx.lineWidth - ((W * 0.07) - ctx.lineWidth), radians(180), radians(180 + position), false);\n ctx.stroke();\n }\n\n // Add the text\n if (settings.showDial) {\n ctx.fillStyle = settings.color;\n var fontArgs = ctx.font.split(' ');\n fontSize = settings.fontSize.length ? settings.fontSize : (W*0.2);\n fontFamily = settings.fontFamily.length ? settings.fontFamily : fontArgs[fontArgs.length - 1];\n ctx.font = settings.fontWeight + \" \" + parseInt(fontSize) + 'px ' + fontFamily;\n text = value + settings.unit;\n // Center the text, deducting half of text width from position x\n text_width = ctx.measureText(text).width;\n ctx.fillText(text, centerW - text_width / 2, centerW/4*3 + 0.1*centerW );\n }\n }\n\n function draw() {\n // Cancel any animation if a new chart is requested\n if (typeof animation_loop !== undefined) clearInterval(animation_loop);\n\n if (settings.noDraw)\n new_position = 0;\n else\n new_position = Math.round((value / (settings.max - settings.min)) * 180);\n\n if (settings.quickDraw)\n position = new_position;\n\n difference = new_position - position;\n animation_loop = setInterval(animate_to, 100 / difference);\n }\n\n // Make the chart move to new degrees\n function animate_to() {\n // Clear animation loop if degrees reaches the new_degrees\n if (position == new_position)\n clearInterval(animation_loop);\n\n if (position < new_position)\n position++;\n else\n position--;\n\n update();\n }\n draw();\n })();\n }\n });\n };\n})(jQuery);\n", "(function(){/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar aa=this||self;function k(a,b){a=a.split(\".\");var c=aa;a[0]in c||\"undefined\"==typeof c.execScript||c.execScript(\"var \"+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}:c[d]=b}function m(a,b){function c(){}c.prototype=b.prototype;a.$=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.fa=function(d,e,g){for(var f=Array(arguments.length-2),h=2;h<arguments.length;h++)f[h-2]=arguments[h];return b.prototype[e].apply(d,f)}};function ba(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};function ca(a,b){a.sort(b||da)}function da(a,b){return a>b?1:a<b?-1:0};function ea(a,b){this.g=a;this.m=!!b.o;this.i=b.h;this.v=b.type;this.u=!1;switch(this.i){case fa:case ha:case ia:case ja:case ka:case la:case ma:this.u=!0}this.l=b.defaultValue}var ma=1,la=2,fa=3,ha=4,ia=6,ja=16,ka=18;function na(a,b){this.i=a;this.g={};for(a=0;a<b.length;a++){var c=b[a];this.g[c.g]=c}}function oa(a){a=ba(a.g);ca(a,function(b,c){return b.g-c.g});return a};function n(){this.g={};this.l=this.j().g;this.i=this.m=null}n.prototype.has=function(a){return null!=this.g[a.g]};n.prototype.get=function(a,b){return p(this,a.g,b)};n.prototype.set=function(a,b){q(this,a.g,b)};n.prototype.add=function(a,b){r(this,a.g,b)};\nfunction t(a,b){for(var c=oa(a.j()),d=0;d<c.length;d++){var e=c[d],g=e.g;if(null!=b.g[g]){a.i&&delete a.i[e.g];var f=11==e.i||10==e.i;if(e.m){e=u(b,g);for(var h=0;h<e.length;h++)r(a,g,f?e[h].clone():e[h])}else e=v(b,g),f?(f=v(a,g))?t(f,e):q(a,g,e.clone()):q(a,g,e)}}}n.prototype.clone=function(){var a=new this.constructor;a!=this&&(a.g={},a.i&&(a.i={}),t(a,this));return a};\nfunction v(a,b){var c=a.g[b];if(null==c)return null;if(a.m){if(!(b in a.i)){var d=a.m,e=a.l[b];if(null!=c)if(e.m){for(var g=[],f=0;f<c.length;f++)g[f]=d.i(e,c[f]);c=g}else c=d.i(e,c);return a.i[b]=c}return a.i[b]}return c}function p(a,b,c){var d=v(a,b);return a.l[b].m?d[c||0]:d}function w(a,b){if(null!=a.g[b])a=p(a,b,void 0);else a:{a=a.l[b];if(void 0===a.l)if(b=a.v,b===Boolean)a.l=!1;else if(b===Number)a.l=0;else if(b===String)a.l=a.u?\"0\":\"\";else{a=new b;break a}a=a.l}return a}\nfunction u(a,b){return v(a,b)||[]}function x(a,b){return a.l[b].m?null!=a.g[b]?a.g[b].length:0:null!=a.g[b]?1:0}function q(a,b,c){a.g[b]=c;a.i&&(a.i[b]=c)}function r(a,b,c){a.g[b]||(a.g[b]=[]);a.g[b].push(c);a.i&&delete a.i[b]}function y(a,b){var c=[],d;for(d in b)0!=d&&c.push(new ea(d,b[d]));return new na(a,c)};function A(){}A.prototype.g=function(a){new a.i;throw Error(\"Unimplemented\");};A.prototype.i=function(a,b){if(11==a.i||10==a.i)return b instanceof n?b:this.g(a.v.prototype.j(),b);if(14==a.i)return\"string\"===typeof b&&B.test(b)&&(a=Number(b),0<a)?a:b;if(!a.u)return b;a=a.v;if(a===String){if(\"number\"===typeof b)return String(b)}else if(a===Number&&\"string\"===typeof b&&(\"Infinity\"===b||\"-Infinity\"===b||\"NaN\"===b||B.test(b)))return Number(b);return b};var B=/^-?[0-9]+$/;function C(){}m(C,A);C.prototype.g=function(a,b){a=new a.i;a.m=this;a.g=b;a.i={};return a};function D(){}m(D,C);D.prototype.i=function(a,b){return 8==a.i?!!b:A.prototype.i.apply(this,arguments)};D.prototype.g=function(a,b){return D.$.g.call(this,a,b)};function E(a,b){null!=a&&this.g.apply(this,arguments)}E.prototype.i=\"\";E.prototype.set=function(a){this.i=\"\"+a};E.prototype.g=function(a,b,c){this.i+=String(a);if(null!=b)for(var d=1;d<arguments.length;d++)this.i+=arguments[d];return this};E.prototype.toString=function(){return this.i};/*\n\n Protocol Buffer 2 Copyright 2008 Google Inc.\n All other code copyright its respective owners.\n Copyright (C) 2010 The Libphonenumber Authors\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*/\nfunction F(){n.call(this)}m(F,n);var pa=null;function G(){n.call(this)}m(G,n);var qa=null;function H(){n.call(this)}m(H,n);var ra=null;\nF.prototype.j=function(){var a=pa;a||(pa=a=y(F,{0:{name:\"NumberFormat\",s:\"i18n.phonenumbers.NumberFormat\"},1:{name:\"pattern\",required:!0,h:9,type:String},2:{name:\"format\",required:!0,h:9,type:String},3:{name:\"leading_digits_pattern\",o:!0,h:9,type:String},4:{name:\"national_prefix_formatting_rule\",h:9,type:String},6:{name:\"national_prefix_optional_when_formatting\",h:8,defaultValue:!1,type:Boolean},5:{name:\"domestic_carrier_code_formatting_rule\",h:9,type:String}}));return a};F.j=F.prototype.j;\nG.prototype.j=function(){var a=qa;a||(qa=a=y(G,{0:{name:\"PhoneNumberDesc\",s:\"i18n.phonenumbers.PhoneNumberDesc\"},2:{name:\"national_number_pattern\",h:9,type:String},9:{name:\"possible_length\",o:!0,h:5,type:Number},10:{name:\"possible_length_local_only\",o:!0,h:5,type:Number},6:{name:\"example_number\",h:9,type:String}}));return a};G.j=G.prototype.j;\nH.prototype.j=function(){var a=ra;a||(ra=a=y(H,{0:{name:\"PhoneMetadata\",s:\"i18n.phonenumbers.PhoneMetadata\"},1:{name:\"general_desc\",h:11,type:G},2:{name:\"fixed_line\",h:11,type:G},3:{name:\"mobile\",h:11,type:G},4:{name:\"toll_free\",h:11,type:G},5:{name:\"premium_rate\",h:11,type:G},6:{name:\"shared_cost\",h:11,type:G},7:{name:\"personal_number\",h:11,type:G},8:{name:\"voip\",h:11,type:G},21:{name:\"pager\",h:11,type:G},25:{name:\"uan\",h:11,type:G},27:{name:\"emergency\",h:11,type:G},28:{name:\"voicemail\",h:11,type:G},\n29:{name:\"short_code\",h:11,type:G},30:{name:\"standard_rate\",h:11,type:G},31:{name:\"carrier_specific\",h:11,type:G},33:{name:\"sms_services\",h:11,type:G},24:{name:\"no_international_dialling\",h:11,type:G},9:{name:\"id\",required:!0,h:9,type:String},10:{name:\"country_code\",h:5,type:Number},11:{name:\"international_prefix\",h:9,type:String},17:{name:\"preferred_international_prefix\",h:9,type:String},12:{name:\"national_prefix\",h:9,type:String},13:{name:\"preferred_extn_prefix\",h:9,type:String},15:{name:\"national_prefix_for_parsing\",\nh:9,type:String},16:{name:\"national_prefix_transform_rule\",h:9,type:String},18:{name:\"same_mobile_and_fixed_line_pattern\",h:8,defaultValue:!1,type:Boolean},19:{name:\"number_format\",o:!0,h:11,type:F},20:{name:\"intl_number_format\",o:!0,h:11,type:F},22:{name:\"main_country_for_code\",h:8,defaultValue:!1,type:Boolean},23:{name:\"leading_digits\",h:9,type:String},26:{name:\"leading_zero_possible\",h:8,defaultValue:!1,type:Boolean}}));return a};H.j=H.prototype.j;function I(){n.call(this)}m(I,n);var sa=null,ta={ea:0,da:1,ca:5,ba:10,aa:20};\nI.prototype.j=function(){var a=sa;a||(sa=a=y(I,{0:{name:\"PhoneNumber\",s:\"i18n.phonenumbers.PhoneNumber\"},1:{name:\"country_code\",required:!0,h:5,type:Number},2:{name:\"national_number\",required:!0,h:4,type:Number},3:{name:\"extension\",h:9,type:String},4:{name:\"italian_leading_zero\",h:8,type:Boolean},8:{name:\"number_of_leading_zeros\",h:5,defaultValue:1,type:Number},5:{name:\"raw_input\",h:9,type:String},6:{name:\"country_code_source\",h:14,defaultValue:0,type:ta},7:{name:\"preferred_domestic_carrier_code\",\nh:9,type:String}}));return a};I.ctor=I;I.ctor.j=I.prototype.j;/*\n\n Copyright (C) 2010 The Libphonenumber Authors\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*/\nvar J={1:\"US AG AI AS BB BM BS CA DM DO GD GU JM KN KY LC MP MS PR SX TC TT VC VG VI\".split(\" \"),7:[\"RU\",\"KZ\"],20:[\"EG\"],27:[\"ZA\"],30:[\"GR\"],31:[\"NL\"],32:[\"BE\"],33:[\"FR\"],34:[\"ES\"],36:[\"HU\"],39:[\"IT\",\"VA\"],40:[\"RO\"],41:[\"CH\"],43:[\"AT\"],44:[\"GB\",\"GG\",\"IM\",\"JE\"],45:[\"DK\"],46:[\"SE\"],47:[\"NO\",\"SJ\"],48:[\"PL\"],49:[\"DE\"],51:[\"PE\"],52:[\"MX\"],53:[\"CU\"],54:[\"AR\"],55:[\"BR\"],56:[\"CL\"],57:[\"CO\"],58:[\"VE\"],60:[\"MY\"],61:[\"AU\",\"CC\",\"CX\"],62:[\"ID\"],63:[\"PH\"],64:[\"NZ\"],65:[\"SG\"],66:[\"TH\"],81:[\"JP\"],82:[\"KR\"],84:[\"VN\"],\n86:[\"CN\"],90:[\"TR\"],91:[\"IN\"],92:[\"PK\"],93:[\"AF\"],94:[\"LK\"],95:[\"MM\"],98:[\"IR\"],211:[\"SS\"],212:[\"MA\",\"EH\"],213:[\"DZ\"],216:[\"TN\"],218:[\"LY\"],220:[\"GM\"],221:[\"SN\"],222:[\"MR\"],223:[\"ML\"],224:[\"GN\"],225:[\"CI\"],226:[\"BF\"],227:[\"NE\"],228:[\"TG\"],229:[\"BJ\"],230:[\"MU\"],231:[\"LR\"],232:[\"SL\"],233:[\"GH\"],234:[\"NG\"],235:[\"TD\"],236:[\"CF\"],237:[\"CM\"],238:[\"CV\"],239:[\"ST\"],240:[\"GQ\"],241:[\"GA\"],242:[\"CG\"],243:[\"CD\"],244:[\"AO\"],245:[\"GW\"],246:[\"IO\"],247:[\"AC\"],248:[\"SC\"],249:[\"SD\"],250:[\"RW\"],251:[\"ET\"],252:[\"SO\"],\n253:[\"DJ\"],254:[\"KE\"],255:[\"TZ\"],256:[\"UG\"],257:[\"BI\"],258:[\"MZ\"],260:[\"ZM\"],261:[\"MG\"],262:[\"RE\",\"YT\"],263:[\"ZW\"],264:[\"NA\"],265:[\"MW\"],266:[\"LS\"],267:[\"BW\"],268:[\"SZ\"],269:[\"KM\"],290:[\"SH\",\"TA\"],291:[\"ER\"],297:[\"AW\"],298:[\"FO\"],299:[\"GL\"],350:[\"GI\"],351:[\"PT\"],352:[\"LU\"],353:[\"IE\"],354:[\"IS\"],355:[\"AL\"],356:[\"MT\"],357:[\"CY\"],358:[\"FI\",\"AX\"],359:[\"BG\"],370:[\"LT\"],371:[\"LV\"],372:[\"EE\"],373:[\"MD\"],374:[\"AM\"],375:[\"BY\"],376:[\"AD\"],377:[\"MC\"],378:[\"SM\"],380:[\"UA\"],381:[\"RS\"],382:[\"ME\"],383:[\"XK\"],385:[\"HR\"],\n386:[\"SI\"],387:[\"BA\"],389:[\"MK\"],420:[\"CZ\"],421:[\"SK\"],423:[\"LI\"],500:[\"FK\"],501:[\"BZ\"],502:[\"GT\"],503:[\"SV\"],504:[\"HN\"],505:[\"NI\"],506:[\"CR\"],507:[\"PA\"],508:[\"PM\"],509:[\"HT\"],590:[\"GP\",\"BL\",\"MF\"],591:[\"BO\"],592:[\"GY\"],593:[\"EC\"],594:[\"GF\"],595:[\"PY\"],596:[\"MQ\"],597:[\"SR\"],598:[\"UY\"],599:[\"CW\",\"BQ\"],670:[\"TL\"],672:[\"NF\"],673:[\"BN\"],674:[\"NR\"],675:[\"PG\"],676:[\"TO\"],677:[\"SB\"],678:[\"VU\"],679:[\"FJ\"],680:[\"PW\"],681:[\"WF\"],682:[\"CK\"],683:[\"NU\"],685:[\"WS\"],686:[\"KI\"],687:[\"NC\"],688:[\"TV\"],689:[\"PF\"],690:[\"TK\"],\n691:[\"FM\"],692:[\"MH\"],800:[\"001\"],808:[\"001\"],850:[\"KP\"],852:[\"HK\"],853:[\"MO\"],855:[\"KH\"],856:[\"LA\"],870:[\"001\"],878:[\"001\"],880:[\"BD\"],881:[\"001\"],882:[\"001\"],883:[\"001\"],886:[\"TW\"],888:[\"001\"],960:[\"MV\"],961:[\"LB\"],962:[\"JO\"],963:[\"SY\"],964:[\"IQ\"],965:[\"KW\"],966:[\"SA\"],967:[\"YE\"],968:[\"OM\"],970:[\"PS\"],971:[\"AE\"],972:[\"IL\"],973:[\"BH\"],974:[\"QA\"],975:[\"BT\"],976:[\"MN\"],977:[\"NP\"],979:[\"001\"],992:[\"TJ\"],993:[\"TM\"],994:[\"AZ\"],995:[\"GE\"],996:[\"KG\"],998:[\"UZ\"]},va={AC:[,[,,\"(?:[01589]\\\\d|[46])\\\\d{4}\",\n,,,,,,[5,6]],[,,\"6[2-467]\\\\d{3}\",,,,\"62889\",,,[5]],[,,\"4\\\\d{4}\",,,,\"40123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AC\",247,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:0[1-9]|[1589]\\\\d)\\\\d{4}\",,,,\"542011\",,,[6]],,,[,,,,,,,,,[-1]]],AD:[,[,,\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",,,,,,,[6,8,9]],[,,\"[78]\\\\d{5}\",,,,\"712345\",,,[6]],[,,\"690\\\\d{6}|[356]\\\\d{5}\",,,,\"312345\",,,[6,9]],[,,\"180[02]\\\\d{4}\",,,,\"18001234\",,,[8]],[,,\"[19]\\\\d{5}\",,,,\"912345\",,,[6]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AD\",376,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],,[,,,,,,,,,[-1]],,,[,,\"1800\\\\d{4}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AE:[,[,,\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",,,,,,,[5,6,7,8,9,10,11,12]],[,,\"[2-4679][2-8]\\\\d{6}\",,,,\"22345678\",,,[8],[7]],[,,\"5[024-68]\\\\d{7}\",,,,\"501234567\",,,[9]],[,,\"400\\\\d{6}|800\\\\d{2,9}\",,,,\"800123456\"],\n[,,\"900[02]\\\\d{5}\",,,,\"900234567\",,,[9]],[,,\"700[05]\\\\d{5}\",,,,\"700012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AE\",971,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"600[25]\\\\d{5}\",,,,\"600212345\",,,[9]],,,[,,,,,,,,,[-1]]],AF:[,[,,\"[2-7]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\\\d{6}\",\n,,,\"234567890\",,,,[7]],[,,\"7\\\\d{8}\",,,,\"701234567\",,,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AF\",93,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AG:[,[,,\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"268(?:4(?:6[0-38]|84)|56[0-2])\\\\d{4}\",,,,\"2684601234\",\n,,,[7]],[,,\"268(?:464|7(?:1[3-9]|[28]\\\\d|3[0246]|64|7[0-689]))\\\\d{4}\",,,,\"2684641234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,\"26848[01]\\\\d{4}\",,,,\"2684801234\",,,,[7]],\n\"AG\",1,\"011\",\"1\",,,\"1|([457]\\\\d{6})$\",\"268$1\",,,,,[,,\"26840[69]\\\\d{4}\",,,,\"2684061234\",,,,[7]],,\"268\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AI:[,[,,\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"264(?:292|4(?:6[12]|9[78]))\\\\d{4}\",,,,\"2644612345\",,,,[7]],[,,\"264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\\\d{4}\",,,,\"2642351234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"AI\",1,\"011\",\"1\",,,\"1|([2457]\\\\d{6})$\",\"264$1\",,,,,[,,\"264724\\\\d{4}\",,,,\"2647241234\",,,,[7]],,\"264\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AL:[,[,,\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",,,,,,,[6,7,8,9],[5]],[,,\"4505[0-2]\\\\d{3}|(?:[2358][16-9]\\\\d[2-9]|4410)\\\\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\\\\d))\\\\d{5}\",,,,\"22345678\",,,[8],[5,6,7]],[,,\"6(?:[78][2-9]|9\\\\d)\\\\d{6}\",,,,\"672123456\",,,[9]],[,,\"800\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"900[1-9]\\\\d\\\\d\",\n,,,\"900123\",,,[6]],[,,\"808[1-9]\\\\d\\\\d\",,,,\"808123\",,,[6]],[,,\"700[2-9]\\\\d{4}\",,,,\"70021234\",,,[8]],[,,,,,,,,,[-1]],\"AL\",355,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AM:[,[,,\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",\n,,,,,,[8],[5,6]],[,,\"(?:(?:1[0-25]|47)\\\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\\\d{5}\",,,,\"10123456\",,,,[5,6]],[,,\"(?:33|4[1349]|55|77|88|9[13-9])\\\\d{6}\",,,,\"77123456\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"90[016]\\\\d{5}\",,,,\"90012345\"],[,,\"80[1-4]\\\\d{5}\",,,,\"80112345\"],[,,,,,,,,,[-1]],[,,\"60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\\\d|9[01])\\\\d{4}\",,,,\"60271234\"],\"AM\",374,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\n\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AO:[,[,,\"[29]\\\\d{8}\",,,,,,,[9]],[,,\"2\\\\d(?:[0134][25-9]|[25-9]\\\\d)\\\\d{5}\",,,,\"222123456\"],[,,\"9[1-49]\\\\d{7}\",,,,\"923123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AO\",244,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]]],AR:[,[,,\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",,,,,,,[10,11],[6,7,8]],[,,\"3888[013-9]\\\\d{5}|(?:29(?:54|66)|3(?:777|865))[2-8]\\\\d{5}|3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\\\d{5}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\\\d{5}|(?:2(?:284|302|657|920)|3(?:4(?:8[27]|92)|541|755|878))[2-7]\\\\d{5}|(?:2(?:(?:26|62)2|32[03]|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\\\d{5}|(?:(?:11[1-8]|670)\\\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-8]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:[03][45]|[17][2-6]|[58][3-6])))\\\\d{6}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\\\d{5}|(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\\\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\\\d{5}\",\n,,,\"1123456789\",,,[10],[6,7,8]],[,,\"93888[013-9]\\\\d{5}|9(?:29(?:54|66)|3(?:777|865))[2-8]\\\\d{5}|93(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\\\d{5}|9(?:2(?:284|302|657|920)|3(?:4(?:8[27]|92)|541|755|878))[2-7]\\\\d{5}|9(?:2(?:(?:26|62)2|32[03]|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\\\d{5}|(?:675\\\\d|9(?:11[1-8]\\\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-8]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:[03][45]|[17][2-6]|[58][3-6]))))\\\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\\\d{5}\",\n,,,\"91123456789\",,,,[6,7,8]],[,,\"800\\\\d{7,8}\",,,,\"8001234567\"],[,,\"60[04579]\\\\d{7}\",,,,\"6001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AR\",54,\"00\",\"0\",,,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\n\"9$1\",,,[[,\"(\\\\d{3})\",\"$1\",[\"0|1(?:0[0-35-7]|1[02-5]|2[015]|3[47]|4[478])|911\"]],[,\"(\\\\d{2})(\\\\d{4})\",\"$1-$2\",[\"[1-9]\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[1-8]\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\n\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\n\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",,1],[,\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\n\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\n\"0$1\"],[,\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\"]],[[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\n\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\n\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",,1],[,\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\n\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"]],\n[,\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"91\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"9\"]]],[,,,,,,,,,[-1]],,,[,,\"810\\\\d{7}\",,,,,,,[10]],[,,\"810\\\\d{7}\",,,,\"8101234567\",,,[10]],,,[,,,,,,,,,[-1]]],AS:[,[,,\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"6846(?:22|33|44|55|77|88|9[19])\\\\d{4}\",,,,\"6846221234\",,,,[7]],[,,\"684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\\\d{4}\",,,,\"6847331234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",\n,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"AS\",1,\"011\",\"1\",,,\"1|([267]\\\\d{6})$\",\"684$1\",,,,,[,,,,,,,,,[-1]],,\"684\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AT:[,[,,\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",\n,,,,,,[4,5,6,7,8,9,10,11,12,13],[3]],[,,\"1(?:11\\\\d|[2-9]\\\\d{3,11})|(?:316|463|(?:51|66|73)2)\\\\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-8]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\\\d{4,10}\",,,,\"1234567890\",,,,[3]],[,,\"6(?:5[0-3579]|6[013-9]|[7-9]\\\\d)\\\\d{4,10}\",,,,\"664123456\",,,[7,8,9,10,11,12,13]],[,,\"800\\\\d{6,10}\",\n,,,\"800123456\",,,[9,10,11,12,13]],[,,\"(?:8[69][2-68]|9(?:0[01]|3[019]))\\\\d{6,10}\",,,,\"900123456\",,,[9,10,11,12,13]],[,,\"8(?:10|2[018])\\\\d{6,10}|828\\\\d{5}\",,,,\"810123456\",,,[8,9,10,11,12,13]],[,,,,,,,,,[-1]],[,,\"5(?:0[1-9]|17|[79]\\\\d)\\\\d{2,10}|7[28]0\\\\d{6,10}\",,,,\"780123456\",,,[5,6,7,8,9,10,11,12,13]],\"AT\",43,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[,\"(\\\\d{6})\",\"$1\",[\"1\"]],\n[,\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],\n[,\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AU:[,[,,\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",,,,,,,[5,6,7,8,9,10,12]],[,,\"(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\",\n,,,\"212345678\",,,[9],[8]],[,,\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"190[0-26]\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",,,,\"1300123456\",,,[6,8,10,12]],[,,,,,,,,,[-1]],[,,\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",,,,\"147101234\",,,[9]],\"AU\",61,\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"0\",,,\"0|(183[12])\",\n,\"0011\",,[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"13\"]],[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"19\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"180\",\"1802\"]],[,\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"19\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\",\"$CC ($1)\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",\n[\"130\"]]],[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\",\"$CC ($1)\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],[,,\"163\\\\d{2,6}\",,,,\"1631234\",,,[5,6,7,8,9]],1,,[,,\"1(?:3(?:00\\\\d{5}|45[0-4])|802)\\\\d{3}|1[38]00\\\\d{6}|13\\\\d{4}\",,,,,,,[6,7,8,10,12]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AW:[,[,,\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",\n,,,,,,[7]],[,,\"5(?:2\\\\d|8[1-9])\\\\d{4}\",,,,\"5212345\"],[,,\"(?:290|5[69]\\\\d|6(?:[03]0|22|4[0-2]|[69]\\\\d)|7(?:[34]\\\\d|7[07])|9(?:6[45]|9[4-8]))\\\\d{4}\",,,,\"5601234\"],[,,\"800\\\\d{4}\",,,,\"8001234\"],[,,\"900\\\\d{4}\",,,,\"9001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:28\\\\d|501)\\\\d{4}\",,,,\"5011234\"],\"AW\",297,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AX:[,[,,\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",\n,,,,,,[5,6,7,8,9,10,11,12]],[,,\"18[1-8]\\\\d{3,6}\",,,,\"181234567\",,,[6,7,8,9]],[,,\"4946\\\\d{2,6}|(?:4[0-8]|50)\\\\d{4,8}\",,,,\"412345678\",,,[6,7,8,9,10]],[,,\"800\\\\d{4,6}\",,,,\"800123456\",,,[7,8,9]],[,,\"[67]00\\\\d{5,6}\",,,,\"600123456\",,,[8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AX\",358,\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"0\",,,\"0\",,\"00\",,,,[,,,,,,,,,[-1]],,\"18\",[,,,,,,,,,[-1]],[,,\"20\\\\d{4,8}|60[12]\\\\d{5,6}|7(?:099\\\\d{4,5}|5[03-9]\\\\d{3,7})|20[2-59]\\\\d\\\\d|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:10|29|3[09]|70[1-5]\\\\d)\\\\d{4,8}\",\n,,,\"10112345\"],,,[,,,,,,,,,[-1]]],AZ:[,[,,\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",,,,,,,[9],[7]],[,,\"(?:2[12]428|3655[02])\\\\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\\\\d{5}|(?:(?:1[28]|46)\\\\d|2(?:[014-6]2|[23]3))\\\\d{6}\",,,,\"123123456\",,,,[7]],[,,\"36554\\\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\\\d{7}\",,,,\"401234567\"],[,,\"88\\\\d{7}\",,,,\"881234567\"],[,,\"900200\\\\d{3}\",,,,\"900200123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AZ\",994,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[1-9]\"]],[,\n\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[13-9]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BA:[,[,,\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",,,,,,,[8,9],[6]],[,,\"(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\\\d{5}\",,,,\"30212345\",,,[8],[6]],[,,\"6040\\\\d{5}|6(?:03|[1-356]|44|7\\\\d)\\\\d{6}\",,,,\"61123456\"],[,,\"8[08]\\\\d{6}\",,,,\"80123456\",,,[8]],[,,\"9[0246]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"8[12]\\\\d{6}\",,,,\"82123456\",,,[8]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BA\",387,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]],[,,\"703[235]0\\\\d{3}|70(?:2[0-5]|3[0146]|[56]0)\\\\d{4}\",,,,\"70341234\",,,[8]],,,[,,,,,,,,,[-1]]],BB:[,[,,\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\\\d|3[2-9])|5(?:20|[34]\\\\d|54|7[1-3])|6(?:2\\\\d|38)|7[35]7|9(?:1[89]|63))\\\\d{4}\",,,,\"2464123456\",,,,[7]],[,,\"246(?:2(?:[3568]\\\\d|4[0-57-9])|45\\\\d|69[5-7]|8(?:[2-5]\\\\d|83))\\\\d{4}\",,,,\"2462501234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"(?:246976|900[2-9]\\\\d\\\\d)\\\\d{4}\",\n,,,\"9002123456\",,,,[7]],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,\"24631\\\\d{5}\",,,,\"2463101234\",,,,[7]],\"BB\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"246$1\",,,,,[,,,,,,,,,[-1]],,\"246\",[,,,,,,,,,[-1]],[,,\"246(?:292|367|4(?:1[7-9]|3[01]|44|67)|7(?:36|53))\\\\d{4}\",,,,\"2464301234\",,,,\n[7]],,,[,,,,,,,,,[-1]]],BD:[,[,,\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",,,,,,,[6,7,8,9,10]],[,,\"(?:4(?:31\\\\d\\\\d|423)|5222)\\\\d{3}(?:\\\\d{2})?|8332[6-9]\\\\d\\\\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\\\\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\\\\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\\\\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\\\\d{4}|(?:2(?:222|[45]\\\\d)\\\\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\\\\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\\\\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\\\\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\\\\d{5}|[59]1\\\\d{5}\",\n,,,\"27111234\"],[,,\"(?:1[13-9]\\\\d|644)\\\\d{7}|(?:3[78]|44|66)[02-9]\\\\d{7}\",,,,\"1812345678\",,,[10]],[,,\"80[03]\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"96(?:0[469]|1[0-47]|3[389]|6[69]|7[78])\\\\d{6}\",,,,\"9604123456\",,,[10]],\"BD\",880,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\n\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|22\"],\"0$1\"],[,\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BE:[,[,,\"4\\\\d{8}|[1-9]\\\\d{7}\",,,,,,,[8,9]],[,,\"80[2-8]\\\\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\\\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\\\d{6}\",,,,\"12345678\",,,[8]],[,,\"4[5-9]\\\\d{7}\",,,,\"470123456\",,,[9]],[,,\"800[1-9]\\\\d{4}\",,,,\"80012345\",,,[8]],[,,\"(?:70(?:2[0-57]|3[04-7]|44|69|7[0579])|90(?:0[0-8]|1[36]|2[0-3568]|3[013-689]|[47][2-68]|5[1-68]|6[0-378]|9[34679]))\\\\d{4}\",\n,,,\"90012345\",,,[8]],[,,\"7879\\\\d{4}\",,,,\"78791234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BE\",32,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"78(?:0[57]|1[0458]|2[25]|3[15-8]|48|[56]0|7[078]|9\\\\d)\\\\d{4}\",,,,\"78102345\",,,[8]],\n,,[,,,,,,,,,[-1]]],BF:[,[,,\"[025-7]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:0(?:49|5[23]|6[56]|9[016-9])|4(?:4[569]|5[4-6]|6[56]|7[0179])|5(?:[34]\\\\d|50|6[5-7]))\\\\d{4}\",,,,\"20491234\"],[,,\"(?:0[1267]|5[1-8]|[67]\\\\d)\\\\d{6}\",,,,\"70123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BF\",226,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BG:[,[,,\"[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",\n,,,,,,[6,7,8,9],[4,5]],[,,\"2\\\\d{5,7}|(?:43[1-6]|70[1-9])\\\\d{4,5}|(?:[36]\\\\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\\\\d{5,6}\",,,,\"2123456\",,,[6,7,8],[4,5]],[,,\"(?:43[07-9]|99[69]\\\\d)\\\\d{5}|(?:8[7-9]|98)\\\\d{7}\",,,,\"43012345\",,,[8,9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"90\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"700\\\\d{5}\",,,,\"70012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BG\",359,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{6})\",\"$1\",[\"1\"]],[,\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",\n[\"43[1-6]|70[1-9]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\n\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BH:[,[,,\"[136-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:1(?:3[1356]|6[0156]|7\\\\d)\\\\d|6(?:1[16]\\\\d|500|6(?:0\\\\d|3[12]|44|7[7-9]|88)|9[69][69])|7(?:1(?:11|78)|7\\\\d\\\\d))\\\\d{4}\",\n,,,\"17001234\"],[,,\"(?:3(?:[1-79]\\\\d|8[0-47-9])\\\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\\\d|7[0-6])))\\\\d{4}\",,,,\"36001234\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"(?:87|9[014578])\\\\d{6}\",,,,\"90123456\"],[,,\"84\\\\d{6}\",,,,\"84123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BH\",973,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[047]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BI:[,[,,\"(?:[267]\\\\d|31)\\\\d{6}\",,,,,,,[8]],[,,\"(?:22|31)\\\\d{6}\",,,,\"22201234\"],[,,\"(?:29|6[1257-9]|7[125-9])\\\\d{6}\",\n,,,\"79561234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BI\",257,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BJ:[,[,,\"[25689]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:02|1[037]|2[45]|3[68])\\\\d{5}\",,,,\"20211234\"],[,,\"(?:5[1-8]|6\\\\d|9[013-9])\\\\d{6}\",,,,\"90011234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"857[58]\\\\d{4}\",,,,\"85751234\"],\"BJ\",229,\"00\",\n,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[25689]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"81\\\\d{6}\",,,,\"81123456\"],,,[,,,,,,,,,[-1]]],BL:[,[,,\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",,,,,,,[9]],[,,\"590(?:2[7-9]|5[12]|87)\\\\d{4}\",,,,\"590271234\"],[,,\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\",,,,\"690001234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976[01]\\\\d{5}\",,,,\"976012345\"],\"BL\",590,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,\n,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BM:[,[,,\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"441(?:[46]\\\\d\\\\d|5(?:4\\\\d|60|89))\\\\d{4}\",,,,\"4414123456\",,,,[7]],[,,\"441(?:[2378]\\\\d|5[0-39])\\\\d{5}\",,,,\"4413701234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"BM\",1,\"011\",\"1\",,,\"1|([2-8]\\\\d{6})$\",\"441$1\",,,,,[,,,,,,,,,[-1]],,\"441\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BN:[,[,,\"[2-578]\\\\d{6}\",,,,,,,[7]],[,,\"22[0-7]\\\\d{4}|(?:2[013-9]|[34]\\\\d|5[0-25-9])\\\\d{5}\",,,,\"2345678\"],[,,\"(?:22[89]|[78]\\\\d\\\\d)\\\\d{4}\",,,,\"7123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[34]\\\\d{5}\",,,,\"5345678\"],\"BN\",673,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BO:[,[,,\"(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}\",,,,,,,[8,9],[7]],[,,\"(?:2(?:2\\\\d\\\\d|5(?:11|[258]\\\\d|9[67])|6(?:12|2\\\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\\\d\\\\d|4(?:6\\\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\\\d\\\\d|6(?:11|[24689]\\\\d|72)))\\\\d{4}\",,,,\"22123456\",,,[8],[7]],[,,\"[67]\\\\d{7}\",,,,\"71234567\",,,[8]],[,,\"8001[07]\\\\d{4}\",,,,\"800171234\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BO\",591,\"00(?:1\\\\d)?\",\"0\",\n,,\"0(1\\\\d)?\",,,,[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]\"],,\"0$CC $1\"],[,\"(\\\\d{8})\",\"$1\",[\"[67]\"],,\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],,\"0$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,\"8001[07]\\\\d{4}\",,,,,,,[9]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BQ:[,[,,\"(?:[34]1|7\\\\d)\\\\d{5}\",,,,,,,[7]],[,,\"(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\\\\d)\\\\d{3}\",,,,\"7151234\"],[,,\"(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\\\d|9[056])\\\\d)\\\\d{3}\",,,,\"3181234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,\n,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BQ\",599,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,\"[347]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BR:[,[,,\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-24679]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",,,,,,,[8,9,10,11]],[,,\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\\\d{7}\",,,,\"1123456789\",,,[10],[8]],[,,\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\\\d)\\\\d{7}\",,,,\"11961234567\",,,[10,11],[8,9]],[,,\"800\\\\d{6,7}\",,,,\"800123456\",,\n,[9,10]],[,,\"300\\\\d{6}|[59]00\\\\d{6,7}\",,,,\"300123456\",,,[9,10]],[,,\"300\\\\d{7}|[34]00\\\\d{5}|4(?:02|37)0\\\\d{4}\",,,,\"40041234\",,,[8,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BR\",55,\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"0\",,,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\",,,[[,\"(\\\\d{3,6})\",\"$1\",[\"1(?:1[25-8]|2[357-9]|3[02-68]|4[12568]|5|6[0-8]|8[015]|9[0-47-9])|321|610\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[2-57]\",\n\"[2357]|4(?:[0-24-9]|3(?:[0-689]|7[1-9]))\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"9\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\",\"0 $CC ($1)\"],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\",\"0 $CC ($1)\"]],[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\",\"0 $CC ($1)\"],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\",\"0 $CC ($1)\"]],[,,,,,,,,,[-1]],,,[,,\"4020\\\\d{4}|[34]00\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BS:[,[,,\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-4]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\\\d{4}\",,,,\"2423456789\",,,,[7]],[,,\"242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\\\d|[89]9))\\\\d{4}\",\n,,,\"2423591234\",,,,[7]],[,,\"242300\\\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\",,,,[7]],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"BS\",1,\"011\",\"1\",,,\"1|([3-8]\\\\d{6})$\",\"242$1\",,,,,[,,,,,,,,,[-1]],,\"242\",[,,,,\n,,,,,[-1]],[,,\"242225\\\\d{4}\",,,,\"2422250123\"],,,[,,,,,,,,,[-1]]],BT:[,[,,\"[17]\\\\d{7}|[2-8]\\\\d{6}\",,,,,,,[7,8],[6]],[,,\"(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\\\d{5}\",,,,\"2345678\",,,[7],[6]],[,,\"(?:1[67]|77)\\\\d{6}\",,,,\"17123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BT\",975,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[2-7]\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]],\n[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BW:[,[,,\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",,,,,,,[7,8,10]],[,,\"(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\\\d|7[013])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\\\d{4}\",,,,\"2401234\",,,[7]],[,,\"(?:321|7(?:[1-7]\\\\d|8[01]))\\\\d{5}\",,\n,,\"71123456\",,,[8]],[,,\"(?:0800|800\\\\d)\\\\d{6}\",,,,\"0800012345\",,,[10]],[,,\"90\\\\d{5}\",,,,\"9012345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"79(?:1(?:[01]\\\\d|20)|2[0-25-7]\\\\d)\\\\d{3}\",,,,\"79101234\",,,[8]],\"BW\",267,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-79]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,\n,,[-1]],,,[,,,,,,,,,[-1]]],BY:[,[,,\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",,,,,,,[6,7,8,9,10,11],[5]],[,,\"(?:1(?:5(?:1[1-5]|[24]\\\\d|6[2-4]|9[1-7])|6(?:[235]\\\\d|4[1-7])|7\\\\d\\\\d)|2(?:1(?:[246]\\\\d|3[0-35-9]|5[1-9])|2(?:[235]\\\\d|4[0-8])|3(?:[26]\\\\d|3[02-79]|4[024-7]|5[03-7])))\\\\d{5}\",,,,\"152450911\",,,[9],[5,6,7]],[,,\"(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\\\d)\\\\d{6}\",,,,\"294911911\",,,[9]],[,,\"800\\\\d{3,7}|8(?:0[13]|20\\\\d)\\\\d{7}\",\n,,,\"8011234567\"],[,,\"(?:810|902)\\\\d{7}\",,,,\"9021234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"249\\\\d{6}\",,,,\"249123456\",,,[9]],\"BY\",375,\"810\",\"8\",,,\"0|80?\",,\"8~10\",,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,\"800\\\\d{3,7}|(?:8(?:0[13]|10|20\\\\d)|902)\\\\d{7}\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BZ:[,[,,\"(?:0800\\\\d|[2-8])\\\\d{6}\",,,,,,,[7,11]],[,,\"(?:2(?:[02]\\\\d|36|[68]0)|[3-58](?:[02]\\\\d|[68]0)|7(?:[02]\\\\d|32|[68]0))\\\\d{4}\",,,,\"2221234\",,,[7]],[,,\"6[0-35-7]\\\\d{5}\",,,,\"6221234\",,,[7]],[,,\"0800\\\\d{7}\",,,,\"08001234123\",\n,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BZ\",501,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CA:[,[,,\"(?:[2-8]\\\\d|90)\\\\d{8}\",,,,,,,[10],[7]],[,,\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|74)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",,,,\"5062345678\",\n,,,[7]],[,,\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|74)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",,,,\"5062345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[12]|33|44|66|77|88)|622)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,\"600[2-9]\\\\d{6}\",,,,\"6002012345\"],\"CA\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CC:[,[,,\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",,,,,,,[6,7,8,9,10,12]],[,,\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",,,,\"891621234\",,,[9],[8]],[,,\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",\n,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"190[0-26]\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",,,,\"1300123456\",,,[6,8,10,12]],[,,,,,,,,,[-1]],[,,\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",,,,\"147101234\",,,[9]],\"CC\",61,\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"0\",,,\"0|([59]\\\\d{7})$\",\"8$1\",\"0011\",,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CD:[,[,,\"[189]\\\\d{8}|[1-68]\\\\d{6}\",,,,,,\n,[7,9]],[,,\"12\\\\d{7}|[1-6]\\\\d{6}\",,,,\"1234567\"],[,,\"88\\\\d{5}|(?:8[0-59]|9[017-9])\\\\d{7}\",,,,\"991234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CD\",243,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CF:[,[,,\n\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",,,,,,,[8]],[,,\"2[12]\\\\d{6}\",,,,\"21612345\"],[,,\"7[02457]\\\\d{6}\",,,,\"70012345\"],[,,,,,,,,,[-1]],[,,\"8776\\\\d{4}\",,,,\"87761234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CF\",236,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CG:[,[,,\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",,,,,,,[9]],[,,\"222[1-589]\\\\d{5}\",,,,\"222123456\"],[,,\"026(?:1[0-5]|6[6-9])\\\\d{4}|0(?:[14-6]\\\\d\\\\d|2(?:40|5[5-8]|6[07-9]))\\\\d{5}\",\n,,,\"061234567\"],[,,,,,,,,,[-1]],[,,\"80(?:0\\\\d\\\\d|120)\\\\d{4}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CG\",242,\"00\",,,,,,,,[[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CH:[,[,,\"8\\\\d{11}|[2-9]\\\\d{8}\",,,,,,,[9,12]],[,,\"(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\\\d{7}\",,,,\"212345678\",,,[9]],[,,\"7[35-9]\\\\d{7}\",,,,\"781234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",\n,,[9]],[,,\"90[016]\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"84[0248]\\\\d{6}\",,,,\"840123456\",,,[9]],[,,\"878\\\\d{6}\",,,,\"878123456\",,,[9]],[,,,,,,,,,[-1]],\"CH\",41,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],,[,,\"74[0248]\\\\d{6}\",,,,\"740123456\",,,[9]],,,[,,,,,,,,,[-1]],[,,\"5[18]\\\\d{7}\",,,,\"581234567\",,,[9]],,,[,,\"860\\\\d{9}\",,,,\"860123456789\",\n,,[12]]],CI:[,[,,\"[02]\\\\d{9}\",,,,,,,[10]],[,,\"2(?:[15]\\\\d{3}|7(?:2(?:0[23]|1[2357]|[23][45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\\\\d{5}\",,,,\"2123456789\"],[,,\"0704[0-7]\\\\d{5}|0(?:[15]\\\\d\\\\d|7(?:0[0-37-9]|[4-9][7-9]))\\\\d{6}\",,,,\"0123456789\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CI\",225,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,\n,[,,,,,,,,,[-1]]],CK:[,[,,\"[2-578]\\\\d{4}\",,,,,,,[5]],[,,\"(?:2\\\\d|3[13-7]|4[1-5])\\\\d{3}\",,,,\"21234\"],[,,\"[578]\\\\d{4}\",,,,\"71234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CK\",682,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CL:[,[,,\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",,,,,,,[9,10,11]],[,,\"2(?:1982[0-6]|3314[05-9])\\\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\\\d\\\\d|3(?:[034]\\\\d|1[0-35-9]|2[1-9]|5[0-2])|600)|6469)|80[1-9]\\\\d\\\\d|9(?:3(?:[0-57-9]\\\\d\\\\d|6(?:0[02-9]|[1-9]\\\\d))|6(?:[0-8]\\\\d\\\\d|9(?:[02-79]\\\\d|1[05-9]))|7[1-9]\\\\d\\\\d|9(?:[03-9]\\\\d\\\\d|1(?:[0235-9]\\\\d|4[0-24-9])|2(?:[0-79]\\\\d|8[0-46-9]))))\\\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\\\d{7}\",\n,,,\"221234567\",,,[9]],[,,\"2(?:1982[0-6]|3314[05-9])\\\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\\\d\\\\d|3(?:[034]\\\\d|1[0-35-9]|2[1-9]|5[0-2])|600)|6469)|80[1-9]\\\\d\\\\d|9(?:3(?:[0-57-9]\\\\d\\\\d|6(?:0[02-9]|[1-9]\\\\d))|6(?:[0-8]\\\\d\\\\d|9(?:[02-79]\\\\d|1[05-9]))|7[1-9]\\\\d\\\\d|9(?:[03-9]\\\\d\\\\d|1(?:[0235-9]\\\\d|4[0-24-9])|2(?:[0-79]\\\\d|8[0-46-9]))))\\\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\\\d{7}\",,,,\"221234567\",,,[9]],[,,\"(?:123|8)00\\\\d{6}\",,,,\"800123456\",,,[9,11]],[,,,,,,,,,[-1]],[,,\"600\\\\d{7,8}\",,\n,,\"6001234567\",,,[10,11]],[,,,,,,,,,[-1]],[,,\"44\\\\d{7}\",,,,\"441234567\",,,[9]],\"CL\",56,\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",,,,,,,1,[[,\"(\\\\d{4})\",\"$1\",[\"1(?:[03-589]|21)|[29]0|78\"]],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],\n[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]],[[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",\n[\"60|8\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]],[,,,,,,,,,[-1]],,,[,,\"600\\\\d{7,8}\",,,,,,,[10,11]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CM:[,[,,\"[26]\\\\d{8}|88\\\\d{6,7}\",,,,,,,[8,9]],[,,\"2(?:22|33)\\\\d{6}\",,,,\"222123456\",,,[9]],[,,\"(?:24[23]|6[5-9]\\\\d)\\\\d{6}\",,,,\"671234567\",,,[9]],[,,\"88\\\\d{6,7}\",,,,\"88012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CM\",237,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"88\"]],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CN:[,[,,\"1[127]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-689]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\",,,,,,,[7,8,9,10,11,12],[5,6]],[,,\"(?:10(?:[02-79]\\\\d\\\\d|[18](?:0[1-9]|[1-9]\\\\d))|21(?:[18](?:0[1-9]|[1-9]\\\\d)|[2-79]\\\\d\\\\d))\\\\d{5}|(?:43[35]|754)\\\\d{7,8}|8(?:078\\\\d{7}|51\\\\d{7,8})|(?:10|(?:2|85)1|43[35]|754)(?:100\\\\d\\\\d|95\\\\d{3,4})|(?:2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\\\\d{7}|1(?:0(?:0\\\\d\\\\d(?:\\\\d{3})?|[1-9]\\\\d{5})|[1-9]\\\\d{6})|9(?:[0-46-9]\\\\d{6}|5\\\\d{3}(?:\\\\d(?:\\\\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\\\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\\\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\\\\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:[02-8]\\\\d{6}|1(?:0(?:0\\\\d\\\\d(?:\\\\d{2})?|[1-9]\\\\d{4})|[1-9]\\\\d{5})|9(?:[0-46-9]\\\\d{5}|5\\\\d{3,5}))\",\n,,,\"1012345678\",,,[7,8,9,10,11],[5,6]],[,,\"1740[0-5]\\\\d{6}|1(?:[38]\\\\d|4[57]|5[0-35-9]|6[25-7]|7[0-35-8]|9[0135-9])\\\\d{8}\",,,,\"13123456789\",,,[11]],[,,\"(?:(?:10|21)8|8)00\\\\d{7}\",,,,\"8001234567\",,,[10,12]],[,,\"16[08]\\\\d{5}\",,,,\"16812345\",,,[8]],[,,\"400\\\\d{7}|950\\\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))96\\\\d{3,4}\",\n,,,\"4001234567\",,,[7,8,9,10,11],[5,6]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CN\",86,\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"0\",,,\"0|(1(?:[12]\\\\d|79)\\\\d\\\\d)\",,\"00\",,[[,\"(\\\\d{5,6})\",\"$1\",[\"96\"]],[,\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\",\"1[1-9]|26|[3-9]|(?:10|2[0-57-9])(?:[0-8]|9[0-47-9])\",\"1[1-9]|26|[3-9]|(?:10|2[0-57-9])(?:[02-8]|1(?:0[1-9]|[1-9])|9[0-47-9])\"]],[,\"(\\\\d{4})(\\\\d{4})\",\n\"$1 $2\",[\"16[08]\"]],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\n\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\n\"0$1\",\"$CC $1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\",\"1[1-9]|26|[3-9]|(?:10|2[0-57-9])(?:[0-8]|9[0-47-9])\",\"26|3(?:[0268]|9[079])|4(?:[049]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|90)|6(?:[0-24578]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|50|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9])|(?:34|85[23])[0-8]|(?:1|58)[1-9]|(?:63|95)[06-9]|(?:33|85[23]9)[0-46-9]|(?:10|2[0-57-9]|3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:[0-8]|9[0-47-9])\",\n\"26|3(?:[0268]|3[0-46-9]|4[0-8]|9[079])|4(?:[049]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|5(?:0|[23](?:[02-8]|1[1-9]|9[0-46-9]))|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9])|(?:1|58|85[23]10)[1-9]|(?:10|2[0-57-9])(?:[0-8]|9[0-47-9])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:[02-8]|1(?:0[1-9]|[1-9])|9[0-47-9])\"]],\n[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{7,8})\",\n\"$1 $2\",[\"9\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",,1]],[[,\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\n\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\n\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\n\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"],,\"$CC $1\"],\n[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",,1]],[,,,,,,,,,[-1]],,,[,,\"(?:(?:10|21)8|[48])00\\\\d{7}|950\\\\d{7,8}\",,,,,,,[10,11,12]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CO:[,[,,\"(?:(?:1\\\\d|[36])\\\\d{3}|9101)\\\\d{6}|[124-8]\\\\d{7}\",,,,,,,[8,10,11],[7]],[,,\"60[124-8][2-9]\\\\d{6}|[124-8][2-9]\\\\d{6}\",,,,\"12345678\",,,[8,10],[7]],[,,\"3333(?:0(?:0\\\\d|1[0-5])|[4-9]\\\\d\\\\d)\\\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\\\d{6}|3(?:0[0-5]|1\\\\d|2[0-3]|5[01]|70)\\\\d{7}\",,,,\"3211234567\",,,[10]],[,,\"1800\\\\d{7}\",\n,,,\"18001234567\",,,[11]],[,,\"19(?:0[01]|4[78])\\\\d{7}\",,,,\"19001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CO\",57,\"00(?:4(?:[14]4|56)|[579])\",\"0\",,,\"0([3579]|4(?:[14]4|56))?\",,,,[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[146][2-9]|[2578]\"],\"($1)\",\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6\"],\"($1)\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"[39]\"],,\"0$CC $1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[146][2-9]|[2578]\"],\"($1)\",\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",\n[\"6\"],\"($1)\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"[39]\"],,\"0$CC $1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1 $2 $3\",[\"1\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CR:[,[,,\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",,,,,,,[8,10]],[,,\"210[7-9]\\\\d{4}|2(?:[024-7]\\\\d|1[1-9])\\\\d{5}\",,,,\"22123456\",,,[8]],[,,\"(?:3005\\\\d|6500[01])\\\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\\\d{6}\",,,,\"83123456\",,,[8]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"90[059]\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,\"(?:210[0-6]|4\\\\d{3}|5100)\\\\d{4}\",,,,\"40001234\",,,[8]],\"CR\",506,\"00\",,,,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\",,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CU:[,[,,\"[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}\",,,,,,,[6,7,8,10],[4,5]],[,,\"(?:3[23]|48)\\\\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\\\\d)\\\\d{6}|(?:2[1-4]|4[1257]|7\\\\d)\\\\d{5,6}\",,,,\"71234567\",\n,,,[4,5]],[,,\"5\\\\d{7}\",,,,\"51234567\",,,[8]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"807\\\\d{7}\",,,,\"8071234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CU\",53,\"119\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CV:[,[,,\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",,,,,,,[7]],[,,\"2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\\\d|7[1-3]|8[1-5])\\\\d{4}\",\n,,,\"2211234\"],[,,\"(?:[34][36]|5[1-389]|9\\\\d)\\\\d{5}\",,,,\"9911234\"],[,,\"800\\\\d{4}\",,,,\"8001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CV\",238,\"0\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CW:[,[,,\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",,,,,,,[7,8]],[,,\"9(?:4(?:3[0-5]|4[14]|6\\\\d)|50\\\\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\\\\d|7[01]|8[57-9]))\\\\d{4}\",,,,\"94351234\"],[,,\"953[01]\\\\d{4}|9(?:5[12467]|6[5-9])\\\\d{5}\",\n,,,\"95181234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"60[0-2]\\\\d{4}\",,,,\"6001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CW\",599,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],,[,,\"955\\\\d{5}\",,,,\"95581234\",,,[8]],1,\"[69]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CX:[,[,,\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",,,,,,,[6,7,8,9,10,12]],[,,\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",\n,,,\"891641234\",,,[9],[8]],[,,\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"190[0-26]\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",,,,\"1300123456\",,,[6,8,10,12]],[,,,,,,,,,[-1]],[,,\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",,,,\"147101234\",,,[9]],\"CX\",61,\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"0\",,,\"0|([59]\\\\d{7})$\",\n\"8$1\",\"0011\",,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CY:[,[,,\"(?:[279]\\\\d|[58]0)\\\\d{6}\",,,,,,,[8]],[,,\"2[2-6]\\\\d{6}\",,,,\"22345678\"],[,,\"9[4-79]\\\\d{6}\",,,,\"96123456\"],[,,\"800\\\\d{5}\",,,,\"80001234\"],[,,\"90[09]\\\\d{5}\",,,,\"90012345\"],[,,\"80[1-9]\\\\d{5}\",,,,\"80112345\"],[,,\"700\\\\d{5}\",,,,\"70012345\"],[,,,,,,,,,[-1]],\"CY\",357,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:50|77)\\\\d{6}\",,,,\"77123456\"],,,[,,,,,,,,,[-1]]],CZ:[,\n[,,\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",,,,,,,[9,10,11,12]],[,,\"(?:2\\\\d|3[1257-9]|4[16-9]|5[13-9])\\\\d{7}\",,,,\"212345678\",,,[9]],[,,\"(?:60[1-8]|7(?:0[2-5]|[2379]\\\\d))\\\\d{6}\",,,,\"601123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"9(?:0[05689]|76)\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"8[134]\\\\d{7}\",,,,\"811234567\",,,[9]],[,,\"70[01]\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"9[17]0\\\\d{6}\",,,,\"910123456\",,,[9]],\"CZ\",420,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"96\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"9(?:5\\\\d|7[2-4])\\\\d{6}\",,,,\"972123456\",,,[9]],,,[,,\"9(?:3\\\\d{9}|6\\\\d{7,10})\",,,,\"93123456789\"]],DE:[,[,,\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:1\\\\d|2[02-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[05]\\\\d|[23]1|[46][1-8])\\\\d{1,9}\",,,,,,,[4,5,6,7,8,9,10,11,12,\n13,14,15],[2,3]],[,,\"32\\\\d{9,11}|49[2-6]\\\\d{10}|49[0-7]\\\\d{3,9}|(?:[34]0|[68]9)\\\\d{3,13}|(?:2(?:0[1-689]|[1-3569]\\\\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\\\\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\\\\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\\\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\\\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\\\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\\\d|[589][0-7]|6[0-8]|7[0-467]))\\\\d{3,12}\",,\n,,\"30123456\",,,[5,6,7,8,9,10,11,12,13,14,15],[2,3,4]],[,,\"15[0-25-9]\\\\d{8}|1(?:6[023]|7\\\\d)\\\\d{7,8}\",,,,\"15123456789\",,,[10,11]],[,,\"800\\\\d{7,12}\",,,,\"8001234567890\",,,[10,11,12,13,14,15]],[,,\"(?:137[7-9]|900(?:[135]|9\\\\d))\\\\d{6}\",,,,\"9001234567\",,,[10,11]],[,,\"180\\\\d{5,11}|13(?:7[1-6]\\\\d\\\\d|8)\\\\d{4}\",,,,\"18012345\",,,[7,8,9,10,11,12,13,14]],[,,\"700\\\\d{8}\",,,,\"70012345678\",,,[11]],[,,,,,,,,,[-1]],\"DE\",49,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,12})\",\n\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[0568]\"],\"0$1\"],\n[,\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],,[,,\"16(?:4\\\\d{1,10}|[89]\\\\d{1,11})\",,,,\"16412345\",,,[4,5,6,7,8,9,10,11,12,13,14]],,,[,,,,,,,,,[-1]],[,,\"18(?:1\\\\d{5,11}|[2-9]\\\\d{8})\",,,,\"18500123456\",,,[8,9,10,11,12,13,14]],,,[,,\"1(?:6(?:013|255|399)|7(?:(?:[015]1|[69]3)3|[2-4]55|[78]99))\\\\d{7,8}|15(?:(?:[03-68]00|113)\\\\d|2\\\\d55|7\\\\d99|9\\\\d33)\\\\d{7}\",\n,,,\"177991234567\",,,[12,13]]],DJ:[,[,,\"(?:2\\\\d|77)\\\\d{6}\",,,,,,,[8]],[,,\"2(?:1[2-5]|7[45])\\\\d{5}\",,,,\"21360003\"],[,,\"77\\\\d{6}\",,,,\"77831001\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"DJ\",253,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DK:[,[,,\"[2-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:[2-7]\\\\d|8[126-9]|9[1-46-9])\\\\d{6}\",,,,\"32123456\"],[,,\"(?:[2-7]\\\\d|8[126-9]|9[1-46-9])\\\\d{6}\",\n,,,\"32123456\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"90\\\\d{6}\",,,,\"90123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"DK\",45,\"00\",,,,,,,1,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DM:[,[,,\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\\\d{4}\",,,,\"7674201234\",,,,[7]],[,,\"767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\\\d{4}\",,,,\"7672251234\",,,,[7]],\n[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"DM\",1,\"011\",\"1\",,,\"1|([2-7]\\\\d{6})$\",\"767$1\",,,,,[,,,,,,,,,[-1]],,\"767\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nDO:[,[,,\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"8(?:[04]9[2-9]\\\\d\\\\d|29(?:2(?:[0-59]\\\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\\\d|4[7-9])|[45]\\\\d\\\\d|6(?:[0-27-9]\\\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\\\d{4}\",,,,\"8092345678\",,,,[7]],[,,\"8[024]9[2-9]\\\\d{6}\",,,,\"8092345678\",,,,[7]],[,,\"8(?:00(?:14|[2-9]\\\\d)|(?:33|44|55|66|77|88)[2-9]\\\\d)\\\\d{5}\",\n,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"DO\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"8001|8[024]9\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DZ:[,[,,\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",,,,,,,[8,9]],[,\n,\"9619\\\\d{5}|(?:1\\\\d|2[013-79]|3[0-8]|4[013-689])\\\\d{6}\",,,,\"12345678\"],[,,\"(?:5(?:4[0-29]|5\\\\d|6[0-2])|6(?:[569]\\\\d|7[0-6])|7[7-9]\\\\d)\\\\d{6}\",,,,\"551234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"80[3-689]1\\\\d{5}\",,,,\"808123456\",,,[9]],[,,\"80[12]1\\\\d{5}\",,,,\"801123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"98[23]\\\\d{6}\",,,,\"983123456\",,,[9]],\"DZ\",213,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],\n[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EC:[,[,,\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",,,,,,,[8,9,10,11],[7]],[,,\"[2-7][2-7]\\\\d{6}\",,,,\"22123456\",,,[8],[7]],[,,\"964[0-2]\\\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\\\d)\\\\d{6}\",,,,\"991234567\",,,[9]],[,,\"1800\\\\d{7}|1[78]00\\\\d{6}\",,,,\"18001234567\",,,[10,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"[2-7]890\\\\d{4}\",,,,\"28901234\",,,[8]],\"EC\",593,\"00\",\"0\",,,\n\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-7]\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-7]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EE:[,[,,\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",,,,,,,[7,8,10]],[,,\"(?:3[23589]|4[3-8]|6\\\\d|7[1-9]|88)\\\\d{5}\",\n,,,\"3212345\",,,[7]],[,,\"(?:5\\\\d{5}|8(?:1(?:0(?:000|[3-9]\\\\d\\\\d)|(?:1(?:0[236]|1\\\\d)|(?:23|[3-79]\\\\d)\\\\d)\\\\d)|2(?:0(?:000|(?:19|[24-7]\\\\d)\\\\d)|(?:(?:[124-6]\\\\d|3[5-9])\\\\d|7(?:[679]\\\\d|8[13-9])|8(?:[2-6]\\\\d|7[01]))\\\\d)|[349]\\\\d{4}))\\\\d\\\\d|5(?:(?:[02]\\\\d|5[0-478])\\\\d|1(?:[0-8]\\\\d|95)|6(?:4[0-4]|5[1-589]))\\\\d{3}\",,,,\"51234567\",,,[7,8]],[,,\"800(?:(?:0\\\\d\\\\d|1)\\\\d|[2-9])\\\\d{3}\",,,,\"80012345\"],[,,\"(?:40\\\\d\\\\d|900)\\\\d{4}\",,,,\"9001234\",,,[7,8]],[,,,,,,,,,[-1]],[,,\"70[0-2]\\\\d{5}\",,,,\"70012345\",,,[8]],[,,,,\n,,,,,[-1]],\"EE\",372,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[,\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,\"800[2-9]\\\\d{3}\",,,,,,,[7]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EG:[,[,,\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",\n,,,,,,[8,9,10],[6,7]],[,,\"13[23]\\\\d{6}|(?:15|57)\\\\d{6,7}|(?:2[2-4]|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\\\\d{7}\",,,,\"234567890\",,,[8,9],[6,7]],[,,\"1[0-25]\\\\d{8}\",,,,\"1001234567\",,,[10]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"EG\",20,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[189]\"],\n\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EH:[,[,,\"[5-8]\\\\d{8}\",,,,,,,[9]],[,,\"528[89]\\\\d{5}\",,,,\"528812345\"],[,,\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|6[0-367]))\\\\d{6}\",,,,\"650123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89\\\\d{7}\",,,,\"891234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"592(?:4[0-2]|93)\\\\d{4}\",,,,\"592401234\"],\"EH\",212,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,\"528[89]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ER:[,[,,\"[178]\\\\d{6}\",,,,,,,[7],\n[6]],[,,\"(?:1(?:1[12568]|[24]0|55|6[146])|8\\\\d\\\\d)\\\\d{4}\",,,,\"8370362\",,,,[6]],[,,\"(?:17[1-3]|7\\\\d\\\\d)\\\\d{4}\",,,,\"7123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ER\",291,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ES:[,[,,\"[5-9]\\\\d{8}\",,,,,,,[9]],[,,\"96906(?:0[0-8]|1[1-9]|[2-9]\\\\d)\\\\d\\\\d|9(?:69(?:0[0-57-9]|[1-9]\\\\d)|73(?:[0-8]\\\\d|9[1-9]))\\\\d{4}|(?:8(?:[1356]\\\\d|[28][0-8]|[47][1-9])|9(?:[135]\\\\d|[268][0-8]|4[1-9]|7[124-9]))\\\\d{6}\",\n,,,\"810123456\"],[,,\"(?:590[16]00\\\\d|9(?:6906(?:09|10)|7390\\\\d\\\\d))\\\\d\\\\d|(?:6\\\\d|7[1-48])\\\\d{7}\",,,,\"612345678\"],[,,\"[89]00\\\\d{6}\",,,,\"800123456\"],[,,\"80[367]\\\\d{6}\",,,,\"803123456\"],[,,\"90[12]\\\\d{6}\",,,,\"901123456\"],[,,\"70\\\\d{7}\",,,,\"701234567\"],[,,,,,,,,,[-1]],\"ES\",34,\"00\",,,,,,,,[[,\"(\\\\d{4})\",\"$1\",[\"905\"]],[,\"(\\\\d{6})\",\"$1\",[\"[79]9\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],\n[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"51\\\\d{7}\",,,,\"511234567\"],,,[,,,,,,,,,[-1]]],ET:[,[,,\"(?:11|[2-59]\\\\d)\\\\d{7}\",,,,,,,[9],[7]],[,,\"11667[01]\\\\d{3}|(?:11(?:1(?:1[124]|2[2-7]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:1[78]|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|(?:22|55)[0-6]|33[0134689]|44[04]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:119|22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:(?:11|22)[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\\\d)))\\\\d{4}\",\n,,,\"111112345\",,,,[7]],[,,\"9\\\\d{8}\",,,,\"911234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ET\",251,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-59]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FI:[,[,,\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",,,,,,,[5,6,7,8,9,10,11,12]],[,,\"(?:1[3-79][1-8]|[235689][1-8]\\\\d)\\\\d{2,6}\",,,,\"131234567\",,,[5,6,7,8,9]],[,,\"4946\\\\d{2,6}|(?:4[0-8]|50)\\\\d{4,8}\",\n,,,\"412345678\",,,[6,7,8,9,10]],[,,\"800\\\\d{4,6}\",,,,\"800123456\",,,[7,8,9]],[,,\"[67]00\\\\d{5,6}\",,,,\"600123456\",,,[8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FI\",358,\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d{5})\",\"$1\",[\"75[12]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[,\"(\\\\d{6})\",\"$1\",[\"11\"]],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[,\n\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],[,,,,,,,,,[-1]],1,\"1[03-79]|[2-9]\",[,,\"20(?:2[023]|9[89])\\\\d{1,6}|(?:60[12]\\\\d|7099)\\\\d{4,5}|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:[1-3]00|7(?:0[1-5]\\\\d\\\\d|5[03-9]))\\\\d{3,7}\"],[,,\"20\\\\d{4,8}|60[12]\\\\d{5,6}|7(?:099\\\\d{4,5}|5[03-9]\\\\d{3,7})|20[2-59]\\\\d\\\\d|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:10|29|3[09]|70[1-5]\\\\d)\\\\d{4,8}\",\n,,,\"10112345\"],,,[,,,,,,,,,[-1]]],FJ:[,[,,\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",,,,,,,[7,11]],[,,\"603\\\\d{4}|(?:3[0-5]|6[25-7]|8[58])\\\\d{5}\",,,,\"3212345\",,,[7]],[,,\"(?:[279]\\\\d|45|5[01568]|8[034679])\\\\d{5}\",,,,\"7012345\",,,[7]],[,,\"0800\\\\d{7}\",,,,\"08001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FJ\",679,\"0(?:0|52)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,\n[-1]],,,[,,,,,,,,,[-1]]],FK:[,[,,\"[2-7]\\\\d{4}\",,,,,,,[5]],[,,\"[2-47]\\\\d{4}\",,,,\"31234\"],[,,\"[56]\\\\d{4}\",,,,\"51234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FK\",500,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FM:[,[,,\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",,,,,,,[7]],[,,\"31(?:00[67]|208|309)\\\\d\\\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-6]\\\\d)\\\\d)\\\\d{3}\",,,,\"3201234\"],[,,\"31(?:00[67]|208|309)\\\\d\\\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\\\d)\\\\d)\\\\d{3}\",\n,,,\"3501234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FM\",691,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FO:[,[,,\"[2-9]\\\\d{5}\",,,,,,,[6]],[,,\"(?:20|[34]\\\\d|8[19])\\\\d{4}\",,,,\"201234\"],[,,\"(?:[27][1-9]|5\\\\d|91)\\\\d{4}\",,,,\"211234\"],[,,\"80[257-9]\\\\d{3}\",,,,\"802123\"],[,,\"90(?:[13-5][15-7]|2[125-7]|9\\\\d)\\\\d\\\\d\",,,,\"901123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:6[0-36]|88)\\\\d{4}\",,\n,,\"601234\"],\"FO\",298,\"00\",,,,\"(10(?:01|[12]0|88))\",,,,[[,\"(\\\\d{6})\",\"$1\",[\"[2-9]\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FR:[,[,,\"[1-9]\\\\d{8}\",,,,,,,[9]],[,,\"(?:[1-35]\\\\d|4[1-9])\\\\d{7}\",,,,\"123456789\"],[,,\"(?:6(?:[0-24-8]\\\\d|3[0-8]|9[589])|7(?:00|[3-9]\\\\d))\\\\d{6}\",,,,\"612345678\"],[,,\"80[0-5]\\\\d{6}\",,,,\"801234567\"],[,,\"836(?:0[0-36-9]|[1-9]\\\\d)\\\\d{4}|8(?:1[2-9]|2[2-47-9]|3[0-57-9]|[569]\\\\d|8[0-35-9])\\\\d{6}\",,,,\"891123456\"],[,,\"8(?:1[01]|2[0156]|84)\\\\d{6}\",\n,,,\"884012345\"],[,,,,,,,,,[-1]],[,,\"9\\\\d{8}\",,,,\"912345678\"],\"FR\",33,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})\",\"$1\",[\"10\"]],[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"80[6-9]\\\\d{6}\",,,,\"806123456\"],\n,,[,,,,,,,,,[-1]]],GA:[,[,,\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",,,,,,,[7,8]],[,,\"[01]1\\\\d{6}\",,,,\"01441234\",,,[8]],[,,\"(?:(?:0[2-7]|7[467])\\\\d|6(?:0[0-4]|10|[256]\\\\d))\\\\d{5}|[2-7]\\\\d{6}\",,,,\"06031234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GA\",241,\"00\",,,,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\",,,[[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GB:[,[,,\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",,,,,,,[7,9,10],[4,5,6,8]],[,,\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0235])|4(?:[0-5]\\\\d\\\\d|69[7-9]|70[0359])|(?:5[0-26-9]|[78][0-49])\\\\d\\\\d|6(?:[0-4]\\\\d\\\\d|50[0-24-69]))|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d\\\\d|1(?:[0-7]\\\\d\\\\d|8(?:[02]\\\\d|1[0-278])))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",\n,,,\"1212345678\",,,[9,10],[4,5,6,7,8]],[,,\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",,,,\"7400123456\",,,[10]],[,,\"80[08]\\\\d{7}|800\\\\d{6}|8001111\",,,,\"8001234567\"],[,,\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",,,,\"9012345678\",,,[7,10]],[,,,,,,,,,[-1]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,\"56\\\\d{8}\",,,,\"5612345678\",\n,,[10]],\"GB\",44,\"00\",\"0\",\" x\",,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\n\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],,[,,\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\",,,,\"7640123456\",,,[10]],1,,[,,,,,,,,,[-1]],[,,\"(?:3[0347]|55)\\\\d{8}\",,,,\"5512345678\",,,[10]],,,[,,,,,,,,,[-1]]],GD:[,[,,\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|73|90)|63[68]|7(?:58|84)|800|938)\\\\d{4}\",\n,,,\"4732691234\",,,,[7]],[,,\"473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\\\d{4}\",,,,\"4734031234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"GD\",\n1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"473$1\",,,,,[,,,,,,,,,[-1]],,\"473\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GE:[,[,,\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",,,,,,,[9],[6,7]],[,,\"(?:3(?:[256]\\\\d|4[124-9]|7[0-4])|4(?:1\\\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\\\d{6}\",,,,\"322123456\",,,,[6,7]],[,,\"5(?:(?:0555|1177)[5-9]|757(?:7[7-9]|8[01]))\\\\d{3}|5(?:0070|(?:11|33)33|[25]222)[0-4]\\\\d{3}|5(?:00(?:0\\\\d|50)|11(?:00|1\\\\d|2[0-4])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\\\d|2[0-4])|58[89]|8(?:55|88)))\\\\d{4}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\\\d{6}\",\n,,,\"555123456\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"70[67]\\\\d{6}\",,,,\"706123456\"],\"GE\",995,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"70[67]\\\\d{6}\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GF:[,[,,\"(?:[56]94|80\\\\d|976)\\\\d{6}\",\n,,,,,,[9]],[,,\"594(?:[023]\\\\d|1[01]|4[03-9]|5[6-9]|6[0-3]|80|9[0-6])\\\\d{4}\",,,,\"594101234\"],[,,\"694(?:[0-249]\\\\d|3[0-48])\\\\d{4}\",,,,\"694201234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976\\\\d{6}\",,,,\"976012345\"],\"GF\",594,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GG:[,[,,\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",\n,,,,,,[7,9,10],[6]],[,,\"1481[25-9]\\\\d{5}\",,,,\"1481256789\",,,[10],[6]],[,,\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",,,,\"7781123456\",,,[10]],[,,\"80[08]\\\\d{7}|800\\\\d{6}|8001111\",,,,\"8001234567\"],[,,\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",,,,\"9012345678\",,,[7,10]],[,,,,,,,,,[-1]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,\"56\\\\d{8}\",,,,\"5612345678\",,,[10]],\"GG\",44,\"00\",\"0\",,,\"0|([25-9]\\\\d{5})$\",\"1481$1\",,,,,[,,\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\",\n,,,\"7640123456\",,,[10]],,,[,,,,,,,,,[-1]],[,,\"(?:3[0347]|55)\\\\d{8}\",,,,\"5512345678\",,,[10]],,,[,,,,,,,,,[-1]]],GH:[,[,,\"(?:[235]\\\\d{3}|800)\\\\d{5}\",,,,,,,[8,9],[7]],[,,\"3082[0-5]\\\\d{4}|3(?:0(?:[237]\\\\d|8[01])|[167](?:2[0-6]|7\\\\d|80)|2(?:2[0-5]|7\\\\d|80)|3(?:2[0-3]|7\\\\d|80)|4(?:2[013-9]|3[01]|7\\\\d|80)|5(?:2[0-7]|7\\\\d|80)|8(?:2[0-2]|7\\\\d|80)|9(?:[28]0|7\\\\d))\\\\d{5}\",,,,\"302345678\",,,[9],[7]],[,,\"(?:2(?:[0346-8]\\\\d|5[67])|5(?:[0457]\\\\d|6[01]|9[1-9]))\\\\d{6}\",,,,\"231234567\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",\n,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GH\",233,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[237]|8[0-2]\"]],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,\"800\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GI:[,[,,\"(?:[25]\\\\d\\\\d|606)\\\\d{5}\",,,,,,,[8]],[,,\"21(?:6[24-7]\\\\d|90[0-2])\\\\d{3}|2(?:00|2[25])\\\\d{5}\",\n,,,\"20012345\"],[,,\"(?:5[146-8]\\\\d|606)\\\\d{5}\",,,,\"57123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GI\",350,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GL:[,[,,\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",,,,,,,[6]],[,,\"(?:19|3[1-7]|6[14689]|70|8[14-79]|9\\\\d)\\\\d{4}\",,,,\"321000\"],[,,\"[245]\\\\d{5}\",,,,\"221234\"],[,,\"80\\\\d{4}\",,,,\"801234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3[89]\\\\d{4}\",\n,,,\"381234\"],\"GL\",299,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GM:[,[,,\"[2-9]\\\\d{6}\",,,,,,,[7]],[,,\"(?:4(?:[23]\\\\d\\\\d|4(?:1[024679]|[6-9]\\\\d))|5(?:5(?:3\\\\d|4[0-7])|6[67]\\\\d|7(?:1[04]|2[035]|3[58]|48))|8\\\\d{3})\\\\d{3}\",,,,\"5661234\"],[,,\"(?:[23679]\\\\d|5[0-389])\\\\d{5}\",,,,\"3012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GM\",220,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",\n[\"[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GN:[,[,,\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",,,,,,,[8,9]],[,,\"3(?:0(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])|1\\\\d\\\\d)\\\\d{4}\",,,,\"30241234\",,,[8]],[,,\"6[0-356]\\\\d{7}\",,,,\"601123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"722\\\\d{6}\",,,,\"722123456\",,,[9]],\"GN\",224,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[67]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GP:[,[,,\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",,,,,,,[9]],[,,\"590(?:0[1-68]|1[0-24-7]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\",,,,\"590201234\"],[,,\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\",,,,\"690001234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976[01]\\\\d{5}\",,,,\"976012345\"],\"GP\",590,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[569]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GQ:[,[,,\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",,,,,,,[9]],[,,\"33[0-24-9]\\\\d[46]\\\\d{4}|3(?:33|5\\\\d)\\\\d[7-9]\\\\d{4}\",,,,\"333091234\"],[,,\"(?:222|55\\\\d)\\\\d{6}\",,,,\"222123456\"],[,,\"80\\\\d[1-9]\\\\d{5}\",,,,\"800123456\"],[,,\"90\\\\d[1-9]\\\\d{5}\",,,,\"900123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GQ\",240,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",\n[\"[235]\"]],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GR:[,[,,\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",,,,,,,[10,11,12]],[,,\"2(?:1\\\\d\\\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\\\d|2[1-5]|[34][1-4]|9[1-57]))\\\\d{6}\",\n,,,\"2123456789\",,,[10]],[,,\"68[57-9]\\\\d{7}|(?:69|94)\\\\d{8}\",,,,\"6912345678\",,,[10]],[,,\"800\\\\d{7,9}\",,,,\"8001234567\"],[,,\"90[19]\\\\d{7}\",,,,\"9091234567\",,,[10]],[,,\"8(?:0[16]|12|[27]5|50)\\\\d{7}\",,,,\"8011234567\",,,[10]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,,,,,,,,[-1]],\"GR\",30,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\n\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"5005000\\\\d{3}\",,,,\"5005000123\",,,[10]],,,[,,,,,,,,,[-1]]],GT:[,[,,\"(?:1\\\\d{3}|[2-7])\\\\d{7}\",,,,,,,[8,11]],[,,\"[267][2-9]\\\\d{6}\",,,,\"22456789\",,,[8]],[,,\"[3-5]\\\\d{7}\",,,,\"51234567\",,,[8]],[,,\"18[01]\\\\d{8}\",,,,\"18001112222\",,,[11]],[,,\"19\\\\d{9}\",,,,\"19001112222\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GT\",502,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GU:[,[,,\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\",,,,\"6713001234\",,,,[7]],[,,\"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\",\n,,,\"6713001234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"GU\",1,\"011\",\"1\",,,\"1|([3-9]\\\\d{6})$\",\"671$1\",,1,,,[,,,,,,,,,[-1]],,\"671\",[,,,,,,,,,[-1]],[,,,,,,,\n,,[-1]],,,[,,,,,,,,,[-1]]],GW:[,[,,\"[49]\\\\d{8}|4\\\\d{6}\",,,,,,,[7,9]],[,,\"443\\\\d{6}\",,,,\"443201234\",,,[9]],[,,\"9(?:5\\\\d|6[569]|77)\\\\d{6}\",,,,\"955012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"40\\\\d{5}\",,,,\"4012345\",,,[7]],\"GW\",245,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GY:[,[,,\"9008\\\\d{3}|(?:[2-467]\\\\d\\\\d|862)\\\\d{4}\",,,,,,,[7]],[,,\"(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\\\d|7[0-24-79])|3(?:2[25-9]|3\\\\d)|4(?:4[0-24]|5[56])|77[1-57])\\\\d{4}\",\n,,,\"2201234\"],[,,\"(?:6\\\\d\\\\d|70[015-7])\\\\d{4}\",,,,\"6091234\"],[,,\"(?:289|862)\\\\d{4}\",,,,\"2891234\"],[,,\"9008\\\\d{3}\",,,,\"9008123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GY\",592,\"001\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HK:[,[,,\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",,,,,,,[5,6,7,8,9,11]],[,,\"(?:2(?:[13-9]\\\\d|2[013-9])\\\\d|3(?:(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69])\\\\d|8(?:4[0-8]|5[0-5]|9\\\\d))|58(?:0[1-8]|1[2-9]))\\\\d{4}\",\n,,,\"21234567\",,,[8]],[,,\"(?:46(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8])|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|929[013-9])\\\\d{4}|(?:4(?:40|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-24679])|6(?:0[1-9]|[13-59]\\\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\\\d))\\\\d{5}\",,,,\"51234567\",,,[8]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"900(?:[0-24-9]\\\\d{7}|3\\\\d{1,4})\",,,,\"90012345678\",,,[5,6,7,8,11]],[,,,,,,,,,[-1]],[,,\"8(?:1[0-4679]\\\\d|2(?:[0-36]\\\\d|7[0-4])|3(?:[034]\\\\d|2[09]|70))\\\\d{4}\",\n,,,\"81123456\",,,[8]],[,,,,,,,,,[-1]],\"HK\",852,\"00(?:30|5[09]|[126-9]?)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],,[,,\"7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[0136])|2(?:[02389]\\\\d|1[18]|7[27-9])|3(?:[0-38]\\\\d|7[0-369]|9[2357-9])|47\\\\d|5(?:[178]\\\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\\\d)|7(?:[27]\\\\d|8[7-9])|8(?:[23689]\\\\d|7[1-9])|9(?:[025]\\\\d|6[0-246-8]|7[0-36-9]|8[238]))\\\\d{4}\",\n,,,\"71123456\",,,[8]],,,[,,,,,,,,,[-1]],[,,\"30(?:0[1-9]|[15-7]\\\\d|2[047]|89)\\\\d{4}\",,,,\"30161234\",,,[8]],,,[,,,,,,,,,[-1]]],HN:[,[,,\"8\\\\d{10}|[237-9]\\\\d{7}\",,,,,,,[8,11]],[,,\"2(?:2(?:0[0-39]|1[1-367]|[23]\\\\d|4[03-6]|5[57]|6[245]|7[0135689]|8[01346-9]|9[0-2])|4(?:0[78]|2[3-59]|3[13-9]|4[0-68]|5[1-35])|5(?:0[7-9]|16|4[03-5]|5\\\\d|6[014-6]|7[04]|80)|6(?:[056]\\\\d|17|2[067]|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034]|91)|8(?:79|8[0-357-9]|9[1-57-9]))\\\\d{4}\",,,,\"22123456\",,,[8]],[,,\"[37-9]\\\\d{7}\",\n,,,\"91234567\",,,[8]],[,,\"8002\\\\d{7}\",,,,\"80021234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"HN\",504,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]],[,,,,,,,,,[-1]],,,[,,\"8002\\\\d{7}\",,,,,,,[11]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HR:[,[,,\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",,,,,,,[6,7,8,9]],[,,\"1\\\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\\\d{6,7}\",\n,,,\"12345678\",,,[8,9],[6,7]],[,,\"9(?:751\\\\d{5}|8\\\\d{6,7})|9(?:0[1-9]|[1259]\\\\d|7[0679])\\\\d{6}\",,,,\"921234567\",,,[8,9]],[,,\"80[01]\\\\d{4,6}\",,,,\"800123456\",,,[7,8,9]],[,,\"6[01459]\\\\d{6}|6[01]\\\\d{4,5}\",,,,\"611234\",,,[6,7,8]],[,,,,,,,,,[-1]],[,,\"7[45]\\\\d{6}\",,,,\"74123456\",,,[8]],[,,,,,,,,,[-1]],\"HR\",385,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\n\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"62\\\\d{6,7}|72\\\\d{6}\",,,,\"62123456\",,,[8,9]],,,[,,,,,,,,,[-1]]],HT:[,[,,\"[2-489]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:2\\\\d|5[1-5]|81|9[149])\\\\d{5}\",,,,\"22453300\"],[,,\"[34]\\\\d{7}\",,,,\"34101234\"],[,,\"8\\\\d{7}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"9(?:[67][0-4]|8[0-3589]|9\\\\d)\\\\d{5}\",\n,,,\"98901234\"],\"HT\",509,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-489]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HU:[,[,,\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",,,,,,,[8,9],[6,7]],[,,\"(?:1\\\\d|[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|8[2-57-9]|9[2-69])\\\\d{6}\",,,,\"12345678\",,,[8],[6,7]],[,,\"(?:[257]0|3[01])\\\\d{7}\",,,,\"201234567\",,,[9]],[,,\"(?:[48]0\\\\d|680[29])\\\\d{5}\",,,,\"80123456\"],[,,\"9[01]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"21\\\\d{7}\",\n,,,\"211234567\",,,[9]],\"HU\",36,\"00\",\"06\",,,\"06\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],,[,,,,,,,,,[-1]],,,[,,\"(?:[48]0\\\\d|680[29])\\\\d{5}\"],[,,\"38\\\\d{7}\",,,,\"381234567\",,,[9]],,,[,,,,,,,,,[-1]]],ID:[,[,,\"(?:(?:00[1-9]|8\\\\d)\\\\d{4}|[1-36])\\\\d{6}|00\\\\d{10}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",,,,,,,[7,8,9,10,11,12,13],[5,6]],\n[,,\"2[124]\\\\d{7,8}|619\\\\d{8}|2(?:1(?:14|500)|2\\\\d{3})\\\\d{3}|61\\\\d{5,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:[25]\\\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\\\d{5,8}\",,,,\"218350123\",,,[7,8,9,10,11],[5,6]],[,,\"8[1-35-9]\\\\d{7,10}\",\n,,,\"812345678\",,,[9,10,11,12]],[,,\"00[17]803\\\\d{7}|(?:177\\\\d|800)\\\\d{5,7}|001803\\\\d{6}\",,,,\"8001234567\",,,[8,9,10,11,12,13]],[,,\"809\\\\d{7}\",,,,\"8091234567\",,,[10]],[,,\"804\\\\d{7}\",,,,\"8041234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ID\",62,\"00[89]\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[,\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",\n[\"8[1-35-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"001\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]],[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[,\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],\n[,\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,\"001803\\\\d{6,7}|(?:007803\\\\d|8071)\\\\d{6}\",,,,,,,[10,12,13]],[,,\"(?:1500|8071\\\\d{3})\\\\d{3}\",,,,\"8071123456\",,,[7,10]],,,[,,,,,,,,,[-1]]],IE:[,[,,\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",\n,,,,,,[7,8,9,10],[5,6]],[,,\"(?:1\\\\d|21)\\\\d{6,7}|(?:2[24-9]|4(?:0[24]|5\\\\d|7)|5(?:0[45]|1\\\\d|8)|6(?:1\\\\d|[237-9])|9(?:1\\\\d|[35-9]))\\\\d{5}|(?:23|4(?:[1-469]|8\\\\d)|5[23679]|6[4-6]|7[14]|9[04])\\\\d{7}\",,,,\"2212345\",,,,[5,6]],[,,\"8(?:22|[35-9]\\\\d)\\\\d{6}\",,,,\"850123456\",,,[9]],[,,\"1800\\\\d{6}\",,,,\"1800123456\",,,[10]],[,,\"15(?:1[2-8]|[2-8]0|9[089])\\\\d{6}\",,,,\"1520123456\",,,[10]],[,,\"18[59]0\\\\d{6}\",,,,\"1850123456\",,,[10]],[,,\"700\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"76\\\\d{7}\",,,,\"761234567\",,,[9]],\"IE\",353,\"00\",\n\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"18[59]0\\\\d{6}\",,,,,,,[10]],[,,\"818\\\\d{6}\",,,,\"818123456\",,,[9]],,,[,,\"88210[1-9]\\\\d{4}|8(?:[35-79]5\\\\d\\\\d|8(?:[013-9]\\\\d\\\\d|2(?:[01][1-9]|[2-9]\\\\d)))\\\\d{5}\",,,,\"8551234567\",,,[10]]],IL:[,[,,\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",,,,,,,[7,8,9,10,11,12]],[,,\"153\\\\d{8,9}|29[1-9]\\\\d{5}|(?:2[0-8]|[3489]\\\\d)\\\\d{6}\",,,,\"21234567\",,,[8,11,12],[7]],[,,\"5(?:(?:[02368]\\\\d|[19][2-9]|4[1-9])\\\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\\\d{5}\",\n,,,\"502345678\",,,[9]],[,,\"1(?:255|80[019]\\\\d{3})\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"1212\\\\d{4}|1(?:200|9(?:0[0-2]|19))\\\\d{6}\",,,,\"1919123456\",,,[8,10]],[,,\"1700\\\\d{6}\",,,,\"1700123456\",,,[10]],[,,,,,,,,,[-1]],[,,\"7(?:380|8(?:33|55|77|81))\\\\d{5}|7(?:18|2[23]|3[237]|47|6[58]|7\\\\d|82|9[235-9])\\\\d{6}\",,,,\"771234567\",,,[9]],\"IL\",972,\"0(?:0|1[2-9])\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],\n[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[,\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[,\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],,[,,,,,,,,,[-1]],,,[,,\"1700\\\\d{6}\",,,,,,,[10]],[,,\"1599\\\\d{6}\",,,,\"1599123456\",,,[10]],,,[,,\"151\\\\d{8,9}\",,,,\"15112340000\",,,[11,12]]],IM:[,[,,\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",,,,,,,[10],[6]],[,,\"1624(?:230|[5-8]\\\\d\\\\d)\\\\d{3}\",,,,\"1624756789\",\n,,,[6]],[,,\"76245[06]\\\\d{4}|7(?:4576|[59]24\\\\d|624[0-4689])\\\\d{5}\",,,,\"7924123456\"],[,,\"808162\\\\d{4}\",,,,\"8081624567\"],[,,\"8(?:440[49]06|72299\\\\d)\\\\d{3}|(?:8(?:45|70)|90[0167])624\\\\d{4}\",,,,\"9016247890\"],[,,,,,,,,,[-1]],[,,\"70\\\\d{8}\",,,,\"7012345678\"],[,,\"56\\\\d{8}\",,,,\"5612345678\"],\"IM\",44,\"00\",\"0\",,,\"0|([25-8]\\\\d{5})$\",\"1624$1\",,,,,[,,,,,,,,,[-1]],,\"74576|(?:16|7[56])24\",[,,,,,,,,,[-1]],[,,\"3440[49]06\\\\d{3}|(?:3(?:08162|3\\\\d{4}|45624|7(?:0624|2299))|55\\\\d{4})\\\\d{4}\",,,,\"5512345678\"],,,[,,,,,,,,,[-1]]],\nIN:[,[,,\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",,,,,,,[8,9,10,11,12,13],[6,7]],[,,\"2717(?:[2-7]\\\\d|95)\\\\d{4}|(?:271[0-689]|782[0-6])[2-7]\\\\d{5}|(?:170[24]|2(?:(?:[02][2-79]|90)\\\\d|80[13468])|(?:3(?:23|80)|683|79[1-7])\\\\d|4(?:20[24]|72[2-8])|552[1-7])\\\\d{6}|(?:11|33|4[04]|80)[2-7]\\\\d{7}|(?:342|674|788)(?:[0189][2-7]|[2-7]\\\\d)\\\\d{5}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[13]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[014-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\\\d{6}|(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[3-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1245]|4[5-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])|7(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|8[013-7]|9[089])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\\\d[2-7]\\\\d{5}\",\n,,,\"7410410123\",,,[10],[6,7,8]],[,,\"(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\\\d|7[02-8])\\\\d{5}|(?:6(?:[09]\\\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\\\d\\\\d)\\\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\\\d|7(?:[235689]\\\\d|4[0189]))|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]|881))[0189]\\\\d{5}\",\n,,,\"8123456789\",,,[10]],[,,\"000800\\\\d{7}|1(?:600\\\\d{6}|80(?:0\\\\d{4,9}|3\\\\d{9}))\",,,,\"1800123456\"],[,,\"186[12]\\\\d{9}\",,,,\"1861123456789\",,,[13]],[,,\"1860\\\\d{7}\",,,,\"18603451234\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IN\",91,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{7})\",\"$1\",[\"575\"]],[,\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],,,1],[,\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",\n[\"140\"],,,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\n\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\n\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\n\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",,1],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3 $4\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],,,1]],[[,\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],,,1],[,\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],,,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\n\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\n\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\n\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\n\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",,1],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],,,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3 $4\",[\"18\"],,,1]],[,,,,,,,,,[-1]],,,[,,\"1(?:600\\\\d{6}|800\\\\d{4,9})|(?:000800|18(?:03\\\\d\\\\d|6(?:0|[12]\\\\d\\\\d)))\\\\d{7}\"],[,,\"140\\\\d{7}\",,,,\"1409305260\",,,[10]],,,[,,,,,,,,,[-1]]],IO:[,[,,\"3\\\\d{6}\",,,,,,,[7]],[,,\"37\\\\d{5}\",,,,\"3709100\"],[,,\"38\\\\d{5}\",,,,\"3801234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IO\",246,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],IQ:[,[,,\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",\n,,,,,,[8,9,10],[6,7]],[,,\"1\\\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\\\d{6,7}\",,,,\"12345678\",,,[8,9],[6,7]],[,,\"7[3-9]\\\\d{8}\",,,,\"7912345678\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IQ\",964,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],IR:[,\n[,,\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",,,,,,,[4,5,6,7,10],[8]],[,,\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:[03-57]\\\\d{7}|[16]\\\\d{3}(?:\\\\d{4})?|[289]\\\\d{3}(?:\\\\d(?:\\\\d{3})?)?)|94(?:000[09]|2(?:121|[2689]0\\\\d)|30[0-2]\\\\d|4(?:111|40\\\\d))\\\\d{4}\",,,,\"2123456789\",,,[6,7,10],[4,5,8]],[,,\"9(?:(?:0(?:[0-35]\\\\d|4[4-6])|(?:[13]\\\\d|2[0-3])\\\\d)\\\\d|9(?:[0-46]\\\\d\\\\d|5[15]0|8(?:1\\\\d|88)|9(?:0[013]|[19]\\\\d|21|77|8[7-9])))\\\\d{5}\",,,,\"9123456789\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IR\",98,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"9(?:4440\\\\d{5}|6(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19]))\",,,,,,,[4,5,10]],[,,\"96(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])\",\n,,,\"9601\",,,[4,5]],,,[,,,,,,,,,[-1]]],IS:[,[,,\"(?:38\\\\d|[4-9])\\\\d{6}\",,,,,,,[7,9]],[,,\"(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-24589]|5[0-68]|6\\\\d|8[0-36-8])|5(?:05|[156]\\\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|872)\\\\d{4}\",,,,\"4101234\",,,[7]],[,,\"(?:38[589]\\\\d\\\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\\\d)|7(?:5[057]|[6-9]\\\\d)|8(?:2[0-59]|[3-69]\\\\d|8[28]))\\\\d{4}\",,,,\"6111234\"],[,,\"80[0-8]\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"90(?:0\\\\d|1[5-79]|2[015-79]|3[135-79]|4[125-7]|5[25-79]|7[1-37]|8[0-35-7])\\\\d{3}\",\n,,,\"9001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"49[0-24-79]\\\\d{4}\",,,,\"4921234\",,,[7]],\"IS\",354,\"00|1(?:0(?:01|[12]0)|100)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"809\\\\d{4}\",,,,\"8091234\",,,[7]],,,[,,\"(?:689|8(?:7[18]|80)|95[48])\\\\d{4}\",,,,\"6891234\",,,[7]]],IT:[,[,,\"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",,,,,,,[6,7,8,9,10,11,12]],[,,\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\",\n,,,\"0212345678\",,,[6,7,8,9,10,11]],[,,\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",,,,\"3123456789\",,,[9,10]],[,,\"80(?:0\\\\d{3}|3)\\\\d{3}\",,,,\"800123456\",,,[6,9]],[,,\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",,,,\"899123456\",,,[6,8,9,10]],[,,\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",,,,\"848123456\",,,[6,9]],[,,\"1(?:78\\\\d|99)\\\\d{6}\",,,,\"1781234567\",,,[9,10]],[,,\"55\\\\d{8}\",,,,\"5512345678\",,,[10]],\"IT\",39,\"00\",,,,,,,,[[,\"(\\\\d{4,5})\",\"$1\",[\"1(?:0|9[246])\",\"1(?:0|9(?:2[2-9]|[46]))\"]],\n[,\"(\\\\d{6})\",\"$1\",[\"1(?:1|92)\"]],[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[,\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[38]\"]],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\n\"$1 $2 $3\",[\"0[26]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],[[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[,\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[38]\"]],\n[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],[,,,,,,,,,[-1]],1,,[,,\"848\\\\d{6}\",,,,,,,[9]],[,,,,,,,,,[-1]],,,[,,\"3[2-8]\\\\d{9,10}\",,,,\"33101234501\",,,[11,12]]],JE:[,[,,\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",,,,,,,[10],[6]],[,,\"1534[0-24-8]\\\\d{5}\",,,,\"1534456789\",,,,[6]],[,,\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\",,,,\"7797712345\"],\n[,,\"80(?:07(?:35|81)|8901)\\\\d{4}\",,,,\"8007354567\"],[,,\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\",,,,\"9018105678\"],[,,,,,,,,,[-1]],[,,\"701511\\\\d{4}\",,,,\"7015115678\"],[,,\"56\\\\d{8}\",,,,\"5612345678\"],\"JE\",44,\"00\",\"0\",,,\"0|([0-24-8]\\\\d{5})$\",\"1534$1\",,,,,[,,\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\",,,,\"7640123456\"],,,[,,,,,,,,,[-1]],[,,\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\",\n,,,\"5512345678\"],,,[,,,,,,,,,[-1]]],JM:[,[,,\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"8766060\\\\d{3}|(?:658(?:2(?:[0-8]\\\\d|9[0-46-9])|[3-9]\\\\d\\\\d)|876(?:52[35]|6(?:0[1-3579]|1[0237-9]|[23]\\\\d|40|5[06]|6[2-589]|7[05]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\\\d|9[2-468])))\\\\d{4}\",,,,\"8765230123\",,,,[7]],[,,\"(?:658295|876(?:2(?:0[2-9]|[14-9]\\\\d|2[013-9]|3[3-9])|[348]\\\\d\\\\d|5(?:0[1-9]|[1-9]\\\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\\\d{4}\",\n,,,\"8762101234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"JM\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"658|876\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,\n,[-1]]],JO:[,[,,\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",,,,,,,[8,9]],[,,\"87(?:000|90[01])\\\\d{3}|(?:2(?:6(?:2[0-35-9]|3[0-578]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\\\d|4[0-3]|[5-7][023])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2(?:[05]0|22)|3(?:00|33)|4(?:0[0-25]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[178]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[0239]))|87(?:20|7[078]|99))\\\\d{4}\",\n,,,\"62001234\",,,[8]],[,,\"7(?:[78][0-25-9]|9\\\\d)\\\\d{6}\",,,,\"790123456\",,,[9]],[,,\"80\\\\d{6}\",,,,\"80012345\",,,[8]],[,,\"9\\\\d{7}\",,,,\"90012345\",,,[8]],[,,\"85\\\\d{6}\",,,,\"85012345\",,,[8]],[,,\"70\\\\d{7}\",,,,\"700123456\",,,[9]],[,,,,,,,,,[-1]],\"JO\",962,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,\"74(?:66|77)\\\\d{5}\",,,,\"746612345\",\n,,[9]],,,[,,,,,,,,,[-1]],[,,\"8(?:10|8\\\\d)\\\\d{5}\",,,,\"88101234\",,,[8]],,,[,,,,,,,,,[-1]]],JP:[,[,,\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",,,,,,,[8,9,10,11,12,13,14,15,16,17]],[,,\"(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|(?:2[2-9]|[36][1-9])\\\\d|4(?:[2-578]\\\\d|6[02-8]|9[2-59])|5(?:[2-589]\\\\d|6[1-9]|7[2-8])|7(?:[25-9]\\\\d|3[4-9]|4[02-9])|8(?:[2679]\\\\d|3[2-9]|4[5-9]|5[1-9]|8[03-9])|9(?:[2-58]\\\\d|[679][1-9]))\\\\d{6}\",,,,\"312345678\",,,[9]],[,,\"[7-9]0[1-9]\\\\d{7}\",\n,,,\"9012345678\",,,[10]],[,,\"00777(?:[01]|5\\\\d)\\\\d\\\\d|(?:00(?:7778|882[1245])|(?:120|800\\\\d)\\\\d\\\\d)\\\\d{4}|00(?:37|66|78)\\\\d{6,13}\",,,,\"120123456\"],[,,\"990\\\\d{6}\",,,,\"990123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"60\\\\d{7}\",,,,\"601234567\",,,[9]],[,,\"50[1-9]\\\\d{7}\",,,,\"5012345678\",,,[10]],\"JP\",81,\"010\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"007\",\"0077\",\"00777\",\"00777[01]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\n\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{3,4})\",\"$1-$2-$3\",[\"007\",\"0077\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"008\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2-$3\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{5})(\\\\d{5,6})\",\"$1-$2-$3\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{6})(\\\\d{6,7})\",\"$1-$2-$3\",\n[\"0\"]]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],[,,\"20\\\\d{8}\",,,,\"2012345678\",,,[10]],,,[,,\"00(?:777(?:[01]|(?:5|8\\\\d)\\\\d)|882[1245]\\\\d\\\\d)\\\\d\\\\d|00(?:37|66|78)\\\\d{6,13}\"],[,,\"570\\\\d{6}\",,,,\"570123456\",,,[9]],,,[,,,,,,,,,[-1]]],KE:[,[,,\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",,,,,,,[7,8,9,10]],[,,\"(?:4[245]|5[1-79]|6[01457-9])\\\\d{5,7}|(?:4[136]|5[08]|62)\\\\d{7}|(?:[24]0|66)\\\\d{6,7}\",\n,,,\"202012345\",,,[7,8,9]],[,,\"(?:1(?:0[0-6]|1[0-5]|2[014])|7\\\\d\\\\d)\\\\d{6}\",,,,\"712123456\",,,[9]],[,,\"800[2-8]\\\\d{5,6}\",,,,\"800223456\",,,[9,10]],[,,\"900[02-9]\\\\d{5}\",,,,\"900223456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KE\",254,\"000\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KG:[,[,,\"8\\\\d{9}|(?:[235-8]\\\\d|99)\\\\d{7}\",\n,,,,,,[9,10],[5,6]],[,,\"312(?:5[0-79]\\\\d|9(?:[0-689]\\\\d|7[0-24-9]))\\\\d{3}|(?:3(?:1(?:2[0-46-8]|3[1-9]|47|[56]\\\\d)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\\\d)|5(?:22|3[4-7]|59|6\\\\d)|6(?:22|5[35-7]|6\\\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\\\d)|9(?:22|4[1-8]|6\\\\d))|6(?:09|12|2[2-4])\\\\d)\\\\d{5}\",,,,\"312123456\",,,[9],[5,6]],[,,\"312(?:58\\\\d|973)\\\\d{3}|(?:2(?:0[0-35]|2\\\\d)|5[0-24-7]\\\\d|7(?:[07]\\\\d|55)|880|99[05-9])\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"800\\\\d{6,7}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\n,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KG\",996,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KH:[,[,,\"1\\\\d{9}|[1-9]\\\\d{7,8}\",,,,,,,[8,9,10],[6,7]],[,,\"23(?:4(?:[2-4]|[56]\\\\d)|[568]\\\\d\\\\d)\\\\d{4}|23[236-9]\\\\d{5}|(?:2[4-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:(?:[237-9]|4[56]|5\\\\d)\\\\d{5}|6\\\\d{5,6})\",\n,,,\"23756789\",,,[8,9],[6,7]],[,,\"(?:(?:1[28]|3[18]|9[67])\\\\d|6[016-9]|7(?:[07-9]|[16]\\\\d)|8(?:[013-79]|8\\\\d))\\\\d{6}|(?:1\\\\d|9[0-57-9])\\\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\\\d{5}\",,,,\"91234567\",,,[8,9]],[,,\"1800(?:1\\\\d|2[019])\\\\d{4}\",,,,\"1800123456\",,,[10]],[,,\"1900(?:1\\\\d|2[09])\\\\d{4}\",,,,\"1900123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KH\",855,\"00[14-9]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\n,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KI:[,[,,\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",,,,,,,[5,8]],[,,\"(?:[24]\\\\d|3[1-9]|50|65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\\\d\\\\d|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500))|8[0-5])\\\\d{3}\",,,,\"31234\"],[,,\"(?:63\\\\d{3}|73(?:0[0-5]\\\\d|140))\\\\d{3}|[67]200[01]\\\\d{3}\",,,,\"72001234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"30(?:0[01]\\\\d\\\\d|12(?:11|20))\\\\d\\\\d\",,,,\"30010000\",,,[8]],\n\"KI\",686,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KM:[,[,,\"[3478]\\\\d{6}\",,,,,,,[7],[4]],[,,\"7[4-7]\\\\d{5}\",,,,\"7712345\",,,,[4]],[,,\"[34]\\\\d{6}\",,,,\"3212345\"],[,,,,,,,,,[-1]],[,,\"8\\\\d{6}\",,,,\"8001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KM\",269,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KN:[,[,,\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"869(?:2(?:29|36)|302|4(?:6[015-9]|70)|56[5-7])\\\\d{4}\",\n,,,\"8692361234\",,,,[7]],[,,\"869(?:48[89]|55[6-8]|66\\\\d|76[02-7])\\\\d{4}\",,,,\"8697652917\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"KN\",1,\"011\",\"1\",,,\"1|([2-7]\\\\d{6})$\",\n\"869$1\",,,,,[,,,,,,,,,[-1]],,\"869\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KP:[,[,,\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",,,,,,,[8,10],[6,7]],[,,\"(?:(?:195|2)\\\\d|3[19]|4[159]|5[37]|6[17]|7[39]|85)\\\\d{6}\",,,,\"21234567\",,,,[6,7]],[,,\"19[1-3]\\\\d{7}\",,,,\"1921234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KP\",850,\"00|99\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"1\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"238[02-9]\\\\d{4}|2(?:[0-24-9]\\\\d|3[0-79])\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KR:[,[,,\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",,,,,,,[5,6,8,9,10,11,12,13,14],[3,4,7]],[,,\"(?:2|3[1-3]|[46][1-4]|5[1-5])[1-9]\\\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])1\\\\d{2,3}\",,,,\"22123456\",,,[5,6,8,9,10],[3,4,7]],[,,\"1(?:05(?:[0-8]\\\\d|9[0-6])|22[13]\\\\d)\\\\d{4,5}|1(?:0[1-46-9]|[16-9]\\\\d|2[013-9])\\\\d{6,7}\",\n,,,\"1020000000\",,,[9,10]],[,,\"00(?:308\\\\d{6,7}|798\\\\d{7,9})|(?:00368|80)\\\\d{7}\",,,,\"801234567\",,,[9,11,12,13,14]],[,,\"60[2-9]\\\\d{6}\",,,,\"602345678\",,,[9]],[,,,,,,,,,[-1]],[,,\"50\\\\d{8,9}\",,,,\"5012345678\",,,[10,11]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],\"KR\",82,\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"0\",,,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\",,,,[[,\"(\\\\d{5})\",\"$1\",[\"1[016-9]1\",\"1[016-9]11\",\"1[016-9]114\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\",\"0$CC-$1\"],[,\n\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{5})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"003\",\"0030\"]],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{5})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[,\"(\\\\d{5})(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3 $4\",[\"0\"]]],[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\",\"0$CC-$1\"]],[,,\"15\\\\d{7,8}\",,,,\"1523456789\",\n,,[9,10]],,,[,,\"00(?:3(?:08\\\\d{6,7}|68\\\\d{7})|798\\\\d{7,9})\",,,,,,,[11,12,13,14]],[,,\"1(?:5(?:22|33|44|66|77|88|99)|6(?:[07]0|44|6[168]|88)|8(?:00|33|55|77|99))\\\\d{4}\",,,,\"15441234\",,,[8]],,,[,,,,,,,,,[-1]]],KW:[,[,,\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",,,,,,,[7,8]],[,,\"2(?:[23]\\\\d\\\\d|4(?:[1-35-9]\\\\d|44)|5(?:0[034]|[2-46]\\\\d|5[1-3]|7[1-7]))\\\\d{4}\",,,,\"22345678\",,,[8]],[,,\"(?:41\\\\d\\\\d|5(?:(?:[05]\\\\d|1[0-7]|6[56])\\\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\\\d)\\\\d|111|222|333|444|7(?:0[013-9]|[67]\\\\d)|888|9(?:[069]\\\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\\\d|8[057-9])\\\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\\\d)))\\\\d{4}\",\n,,,\"50012345\",,,[8]],[,,\"18\\\\d{5}\",,,,\"1801234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KW\",965,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KY:[,[,,\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"345(?:2(?:22|3[23]|44|66)|333|444|6(?:23|38|40)|7(?:30|4[35-79]|6[6-9]|77)|8(?:00|1[45]|25|[48]8)|9(?:14|4[035-9]))\\\\d{4}\",,\n,,\"3452221234\",,,,[7]],[,,\"345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|9(?:1[679]|2[2-9]|3[06-9]|90))\\\\d{4}\",,,,\"3453231234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"(?:345976|900[2-9]\\\\d\\\\d)\\\\d{4}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"KY\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"345$1\",,,,,[,,\"345849\\\\d{4}\",,,,\"3458491234\"],,\"345\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KZ:[,[,,\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",,,,,,,[10,14],[5,6,7]],[,,\"(?:33622|7(?:1(?:0(?:[23]\\\\d|4[0-3]|59|63)|1(?:[23]\\\\d|4[0-79]|59)|2(?:[23]\\\\d|59)|3(?:2\\\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\\\d|3[013-9]|5[1-9])|5(?:2\\\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\\\d|5[19]|61)|72\\\\d|8(?:[27]\\\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\\\d|4[46-9]|5[3469])|2(?:2\\\\d|3[0679]|46|5[12679])|3(?:[2-4]\\\\d|5[139])|4(?:2\\\\d|3[1-35-9]|59)|5(?:[23]\\\\d|4[0-246-8]|59|61)|6(?:2\\\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\\\d|40|5[279])|8(?:[23]\\\\d|4[0-3]|59)|9(?:2\\\\d|3[124578]|59))))\\\\d{5}\",\n,,,\"7123456789\",,,[10],[5,6,7]],[,,\"7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\\\d{7}\",,,,\"7710009998\",,,[10]],[,,\"8(?:00|108\\\\d{3})\\\\d{7}\",,,,\"8001234567\"],[,,\"809\\\\d{7}\",,,,\"8091234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"808\\\\d{7}\",,,,\"8081234567\",,,[10]],[,,\"751\\\\d{7}\",,,,\"7511234567\",,,[10]],\"KZ\",7,\"810\",\"8\",,,\"8\",,\"8~10\",,,,[,,,,,,,,,[-1]],,\"33|7\",[,,\"751\\\\d{7}\",,,,,,,[10]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LA:[,[,,\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",,,,,,,[8,9,10],[6]],[,,\"(?:2[13]|[35-7][14]|41|8[1468])\\\\d{6}\",\n,,,\"21212862\",,,[8],[6]],[,,\"(?:20(?:[239]\\\\d|5[24-9]|7[6-8]|88)|302\\\\d)\\\\d{6}\",,,,\"2023123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LA\",856,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[013-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"30[013-9]\\\\d{6}\",,,,\"301234567\",,,[9]],,,\n[,,,,,,,,,[-1]]],LB:[,[,,\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",,,,,,,[7,8]],[,,\"7(?:62|8[0-7]|9[04-9])\\\\d{4}|(?:[14-69]\\\\d|2(?:[14-69]\\\\d|[78][1-9])|7[2-57]|8[02-9])\\\\d{5}\",,,,\"1123456\"],[,,\"793(?:[01]\\\\d|2[0-4])\\\\d{3}|(?:(?:3|81)\\\\d|7(?:[01]\\\\d|6[013-9]|8[89]|9[12]))\\\\d{5}\",,,,\"71123456\"],[,,,,,,,,,[-1]],[,,\"9[01]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"80\\\\d{6}\",,,,\"80123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LB\",961,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LC:[,[,,\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"758(?:234|4(?:30|5\\\\d|6[2-9]|8[0-2])|57[0-2]|(?:63|75)8)\\\\d{4}\",,,,\"7584305678\",,,,[7]],[,,\"758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\\\d|3[0-3])|812)\\\\d{4}\",,,,\"7582845678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],\n[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"LC\",1,\"011\",\"1\",,,\"1|([2-8]\\\\d{6})$\",\"758$1\",,,,,[,,,,,,,,,[-1]],,\"758\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LI:[,[,,\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",,,,,,,[7,9]],[,,\"(?:2(?:01|1[27]|2[02]|3\\\\d|6[02-578]|96)|3(?:[24]0|33|7[0135-7]|8[048]|9[0269]))\\\\d{4}\",\n,,,\"2345678\",,,[7]],[,,\"(?:6(?:(?:4[5-9]|5[0-4])\\\\d|6(?:[0245]\\\\d|[17]0|3[7-9]))\\\\d|7(?:[37-9]\\\\d|42|56))\\\\d{4}\",,,,\"660234567\"],[,,\"8002[28]\\\\d\\\\d|80(?:05\\\\d|9)\\\\d{4}\",,,,\"8002222\"],[,,\"90(?:02[258]|1(?:23|3[14])|66[136])\\\\d\\\\d\",,,,\"9002222\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LI\",423,\"00\",\"0\",,,\"0|(1001)\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"69\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"870(?:28|87)\\\\d\\\\d\",,,,\"8702812\",,,[7]],,,[,,\"697(?:42|56|[78]\\\\d)\\\\d{4}\",,,,\"697861234\",,,[9]]],LK:[,[,,\"[1-9]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:12[2-9]|602|8[12]\\\\d|9(?:1\\\\d|22|9[245]))\\\\d{6}|(?:11|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\\\d{6}\",,,,\"112345678\",,,,[7]],[,,\"7(?:[0-25-8]\\\\d|4[0-4])\\\\d{6}\",,,,\"712345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,\n,,,,,[-1]],[,,,,,,,,,[-1]],\"LK\",94,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"1973\\\\d{5}\",,,,\"197312345\"],,,[,,,,,,,,,[-1]]],LR:[,[,,\"(?:2|33|5\\\\d|77|88)\\\\d{7}|[4-6]\\\\d{6}\",,,,,,,[7,8,9]],[,,\"(?:2\\\\d{3}|33333)\\\\d{4}\",,,,\"21234567\",,,[8,9]],[,,\"(?:(?:330|555|(?:77|88)\\\\d)\\\\d|4[67])\\\\d{5}|[56]\\\\d{6}\",,,,\"770123456\",,,[7,9]],[,,,,,,,,,[-1]],[,,\"332(?:02|[34]\\\\d)\\\\d{4}\",,,,\"332021234\",\n,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LR\",231,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[4-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LS:[,[,,\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",,,,,,,[8]],[,,\"2\\\\d{7}\",,,,\"22123456\"],[,,\"[56]\\\\d{7}\",,,,\"50123456\"],[,,\"800[256]\\\\d{4}\",,,,\"80021234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,\n,[-1]],[,,,,,,,,,[-1]],\"LS\",266,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LT:[,[,,\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",,,,,,,[8]],[,,\"(?:3[1478]|4[124-6]|52)\\\\d{6}\",,,,\"31234567\"],[,,\"6\\\\d{7}\",,,,\"61234567\"],[,,\"80[02]\\\\d{5}\",,,,\"80012345\"],[,,\"9(?:0[0239]|10)\\\\d{5}\",,,,\"90012345\"],[,,\"808\\\\d{5}\",,,,\"80812345\"],[,,\"70[05]\\\\d{5}\",,,,\"70012345\"],[,,\"[89]01\\\\d{5}\",,,,\"80123456\"],\"LT\",370,\"00\",\"8\",,,\"[08]\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"52[0-7]\"],\"(8-$1)\",,1],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",,1],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(8-$1)\",,1],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(8-$1)\",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"70[67]\\\\d{5}\",,,,\"70712345\"],,,[,,,,,,,,,[-1]]],LU:[,[,,\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",,,,,,,[4,5,6,7,8,9,10,11]],[,,\"(?:35[013-9]|80[2-9]|90[89])\\\\d{1,8}|(?:2[2-9]|3[0-46-9]|[457]\\\\d|8[13-9]|9[2-579])\\\\d{2,9}\",\n,,,\"27123456\"],[,,\"6(?:[269][18]|5[1568]|7[189]|81)\\\\d{6}\",,,,\"628123456\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"90[015]\\\\d{5}\",,,,\"90012345\",,,[8]],[,,\"801\\\\d{5}\",,,,\"80112345\",,,[8]],[,,,,,,,,,[-1]],[,,\"20(?:1\\\\d{5}|[2-689]\\\\d{1,7})\",,,,\"20201234\",,,[4,5,6,7,8,9,10]],\"LU\",352,\"00\",,,,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\",,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"],\n,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",\n[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LV:[,[,,\"(?:[268]\\\\d|90)\\\\d{6}\",,,,,,,[8]],[,,\"6\\\\d{7}\",,,,\"63123456\"],[,,\"2\\\\d{7}\",,,,\"21234567\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"90\\\\d{6}\",,,,\"90123456\"],[,,\"81\\\\d{6}\",,,,\"81123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LV\",371,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nLY:[,[,,\"[2-9]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:2(?:0[56]|[1-6]\\\\d|7[124579]|8[124])|3(?:1\\\\d|2[2356])|4(?:[17]\\\\d|2[1-357]|5[2-4]|8[124])|5(?:[1347]\\\\d|2[1-469]|5[13-5]|8[1-4])|6(?:[1-479]\\\\d|5[2-57]|8[1-5])|7(?:[13]\\\\d|2[13-79])|8(?:[124]\\\\d|5[124]|84))\\\\d{6}\",,,,\"212345678\",,,,[7]],[,,\"9[1-6]\\\\d{7}\",,,,\"912345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LY\",218,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MA:[,[,,\"[5-8]\\\\d{8}\",,,,,,,[9]],[,,\"5(?:29(?:[189][05]|2[29]|3[01])|38(?:8[057]|9[05]))\\\\d{4}|5(?:2(?:[0-25-7]\\\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|80|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\",,,,\"520123456\"],[,,\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|6[0-367]))\\\\d{6}\",,,,\"650123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89\\\\d{7}\",,,,\"891234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"592(?:4[0-2]|93)\\\\d{4}\",,,,\"592401234\"],\"MA\",212,\"00\",\"0\",\n,,\"0\",,,,[[,\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29|38)[89]\",\"5(?:29|38)[89]0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|9)|892\",\"5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MC:[,[,,\"(?:[3489]|6\\\\d)\\\\d{7}\",,,,,,,[8,9]],[,,\"(?:870|9[2-47-9]\\\\d)\\\\d{5}\",\n,,,\"99123456\",,,[8]],[,,\"4(?:[46]\\\\d|5[1-9])\\\\d{5}|(?:3|6\\\\d)\\\\d{7}\",,,,\"612345678\"],[,,\"(?:800|90\\\\d)\\\\d{5}\",,,,\"90123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MC\",377,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"87\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,\"8[07]0\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MD:[,[,,\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",,,,,,,[8]],[,,\"(?:(?:2[1-9]|3[1-79])\\\\d|5(?:33|5[257]))\\\\d{5}\",,,,\"22212345\"],[,,\"562\\\\d{5}|(?:6\\\\d|7[16-9])\\\\d{6}\",,,,\"62112345\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"90[056]\\\\d{5}\",,,,\"90012345\"],[,,\"808\\\\d{5}\",,,,\"80812345\"],[,,,,,,,,,[-1]],\n[,,\"3[08]\\\\d{6}\",,,,\"30123456\"],\"MD\",373,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"803\\\\d{5}\",,,,\"80312345\"],,,[,,,,,,,,,[-1]]],ME:[,[,,\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",,,,,,,[8,9],[6]],[,,\"(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:0[2467]|1[24-7]|2[2-467]))\\\\d{5}\",,,,\"30234567\",,,[8],[6]],[,,\"6(?:[07-9]\\\\d|3[024]|6[0-25])\\\\d{5}\",\n,,,\"67622901\",,,[8]],[,,\"80(?:[0-2578]|9\\\\d)\\\\d{5}\",,,,\"80080002\"],[,,\"9(?:4[1568]|5[178])\\\\d{5}\",,,,\"94515151\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"78[1-49]\\\\d{5}\",,,,\"78108780\",,,[8]],\"ME\",382,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"77[1-9]\\\\d{5}\",,,,\"77273012\",,,[8]],,,[,,,,,,,,,[-1]]],MF:[,[,,\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",,,,,,,[9]],[,,\"590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\\\d{4}\",,,,\"590271234\"],[,,\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\",\n,,,\"690001234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976[01]\\\\d{5}\",,,,\"976012345\"],\"MF\",590,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MG:[,[,,\"[23]\\\\d{8}\",,,,,,,[9],[7]],[,,\"2072[29]\\\\d{4}|20(?:2\\\\d|4[47]|5[3467]|6[279]|7[35]|8[268]|9[245])\\\\d{5}\",,,,\"202123456\",,,,[7]],[,,\"3[2-489]\\\\d{7}\",,,,\"321234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"22\\\\d{7}\",,,,\"221234567\"],\"MG\",\n261,\"00\",\"0\",,,\"0|([24-9]\\\\d{6})$\",\"20$1\",,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MH:[,[,,\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",,,,,,,[7]],[,,\"(?:247|528|625)\\\\d{4}\",,,,\"2471234\"],[,,\"(?:(?:23|54)5|329|45[56])\\\\d{4}\",,,,\"2351234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"635\\\\d{4}\",,,,\"6351234\"],\"MH\",692,\"011\",\"1\",,,\"1\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],,[,,,,,,,,\n,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MK:[,[,,\"[2-578]\\\\d{7}\",,,,,,,[8],[6,7]],[,,\"(?:(?:2(?:62|77)0|3444)\\\\d|4[56]440)\\\\d{3}|(?:34|4[357])700\\\\d{3}|(?:2(?:[23]\\\\d|5[0-578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\\\d{5}\",,,,\"22012345\",,,,[6,7]],[,,\"7(?:3555|4(?:60\\\\d|747)|94(?:[01]\\\\d|2[0-4]))\\\\d{3}|7(?:[0-25-8]\\\\d|3[1-4]|42|9[23])\\\\d{5}\",,,,\"72345678\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"5[02-9]\\\\d{6}\",,,,\"50012345\"],\n[,,\"8(?:0[1-9]|[1-9]\\\\d)\\\\d{5}\",,,,\"80123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MK\",389,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ML:[,[,,\"[24-9]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:07[0-8]|12[67])\\\\d{4}|(?:2(?:02|1[4-689])|4(?:0[0-4]|4[1-39]))\\\\d{5}\",,,,\"20212345\"],\n[,,\"2(?:0(?:01|79)|17\\\\d)\\\\d{4}|(?:5[01]|[679]\\\\d|8[239])\\\\d{6}\",,,,\"65012345\"],[,,\"80\\\\d{6}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ML\",223,\"00\",,,,,,,,[[,\"(\\\\d{4})\",\"$1\",[\"67[057-9]|74[045]\",\"67(?:0[09]|[59]9|77|8[89])|74(?:0[02]|44|55)\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]],[,,,,,,,,,[-1]],,,[,,\"80\\\\d{6}\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MM:[,[,,\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",\n,,,,,,[6,7,8,9,10],[5]],[,,\"(?:1(?:(?:2\\\\d|3[56]|[89][0-6])\\\\d|4(?:2[2-469]|39|46|6[25]|7[0-3]|83)|6)|2(?:2(?:00|8[34])|4(?:0\\\\d|2[246]|39|46|62|7[0-3]|83)|51\\\\d\\\\d)|4(?:2(?:2\\\\d\\\\d|48[0-3])|3(?:20\\\\d|4(?:70|83)|56)|420\\\\d|5470)|6(?:0(?:[23]|88\\\\d)|(?:124|[56]2\\\\d)\\\\d|247[23]|3(?:20\\\\d|470)|4(?:2[04]\\\\d|47[23])|7(?:(?:3\\\\d|8[01459])\\\\d|4(?:39|60|7[013]))))\\\\d{4}|5(?:2(?:2\\\\d{5,6}|47[023]\\\\d{4})|(?:347[23]|4(?:2(?:1|86)|470)|522\\\\d|6(?:20\\\\d|483)|7(?:20\\\\d|48[0-2])|8(?:20\\\\d|47[02])|9(?:20\\\\d|47[01]))\\\\d{4})|7(?:(?:0470|4(?:25\\\\d|470)|5(?:202|470|96\\\\d))\\\\d{4}|1(?:20\\\\d{4,5}|4(?:70|83)\\\\d{4}))|8(?:1(?:2\\\\d{5,6}|4(?:10|7[01]\\\\d)\\\\d{3})|2(?:2\\\\d{5,6}|(?:320|490\\\\d)\\\\d{3})|(?:3(?:2\\\\d\\\\d|470)|4[24-7]|5(?:2\\\\d|4[1-9]|51)\\\\d|6[23])\\\\d{4})|(?:1[2-6]\\\\d|4(?:2[24-8]|3[2-7]|[46][2-6]|5[3-5])|5(?:[27][2-8]|3[2-68]|4[24-8]|5[23]|6[2-4]|8[24-7]|9[2-7])|6(?:[19]20|42[03-6]|(?:52|7[45])\\\\d)|7(?:[04][24-8]|[15][2-7]|22|3[2-4])|8(?:1[2-689]|2[2-8]|[35]2\\\\d))\\\\d{4}|25\\\\d{5,6}|(?:2[2-9]|6(?:1[2356]|[24][2-6]|3[24-6]|5[2-4]|6[2-8]|7[235-7]|8[245]|9[24])|8(?:3[24]|5[245]))\\\\d{4}\",\n,,,\"1234567\",,,[6,7,8,9],[5]],[,,\"(?:17[01]|9(?:2(?:[0-4]|[56]\\\\d\\\\d)|(?:3(?:[0-36]|4\\\\d)|(?:6\\\\d|8[89]|9[4-8])\\\\d|7(?:3|40|[5-9]\\\\d))\\\\d|4(?:(?:[0245]\\\\d|[1379])\\\\d|88)|5[0-6])\\\\d)\\\\d{4}|9[69]1\\\\d{6}|9(?:[68]\\\\d|9[089])\\\\d{5}\",,,,\"92123456\",,,[7,8,9,10]],[,,\"80080(?:[01][1-9]|2\\\\d)\\\\d{3}\",,,,\"8008001234\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"1333\\\\d{4}|[12]468\\\\d{4}\",,,,\"13331234\",,,[8]],\"MM\",95,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\n\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[,\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],,[,,,\n,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MN:[,[,,\"[12]\\\\d{7,9}|[57-9]\\\\d{7}\",,,,,,,[8,9,10],[4,5,6]],[,,\"[12]2[1-3]\\\\d{5,6}|7(?:0[0-5]\\\\d|128)\\\\d{4}|(?:[12](?:1|27)|5[368])\\\\d{6}|[12](?:3[2-8]|4[2-68]|5[1-4689])\\\\d{6,7}\",,,,\"53123456\",,,,[4,5,6]],[,,\"(?:83[01]|920)\\\\d{5}|(?:5[05]|8[05689]|9[013-9])\\\\d{6}\",,,,\"88123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"712[0-79]\\\\d{4}|7(?:1[013-9]|[5-8]\\\\d)\\\\d{5}\",,,,\"75123456\",,,[8]],\"MN\",976,\"001\",\n\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MO:[,[,,\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",,,,,,,[7,8]],[,,\"(?:28[2-9]|8(?:11|[2-57-9]\\\\d))\\\\d{5}\",\n,,,\"28212345\",,,[8]],[,,\"6800[0-79]\\\\d{3}|6(?:[235]\\\\d\\\\d|6(?:0[0-5]|[1-9]\\\\d)|8(?:0[1-9]|[14-8]\\\\d|2[5-9]|[39][0-4]))\\\\d{4}\",,,,\"66123456\",,,[8]],[,,\"0800\\\\d{3}\",,,,\"0800501\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MO\",853,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MP:[,[,,\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",,,,,,,[10],[7]],[,,\"670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\",\n,,,\"6702345678\",,,,[7]],[,,\"670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\",,,,\"6702345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"MP\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"670$1\",,1,,,[,,,,,,,,,[-1]],,\"670\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MQ:[,[,,\"(?:69|80)\\\\d{7}|(?:59|97)6\\\\d{6}\",,,,,,,[9]],[,,\"596(?:[04-7]\\\\d|10|2[7-9]|3[014-9]|8[09]|9[4-9])\\\\d{4}\",,,,\"596301234\"],[,,\"69(?:6(?:[0-46-9]\\\\d|5[0-6])|727)\\\\d{4}\",,,,\"696201234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976(?:6\\\\d|7[0-367])\\\\d{4}\",,,,\"976612345\"],\"MQ\",596,\"00\",\"0\",,,\"0\",\n,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MR:[,[,,\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",,,,,,,[8]],[,,\"(?:25[08]|35\\\\d|45[1-7])\\\\d{5}\",,,,\"35123456\"],[,,\"[2-4][0-46-9]\\\\d{6}\",,,,\"22123456\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MR\",222,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[2-48]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MS:[,[,,\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"6644(?:1[0-3]|91)\\\\d{4}\",,,,\"6644912345\",,,,[7]],[,,\"664(?:3(?:49|9[1-6])|49[2-6])\\\\d{4}\",,,,\"6644923456\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"MS\",1,\"011\",\"1\",,,\"1|([34]\\\\d{6})$\",\"664$1\",,,,,[,,,,,,,,,[-1]],,\"664\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MT:[,[,,\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",,,,,,,[8]],[,,\"20(?:3[1-4]|6[059])\\\\d{4}|2(?:0[19]|[1-357]\\\\d|60)\\\\d{5}\",,,,\"21001234\"],[,,\"(?:7(?:210|[79]\\\\d\\\\d)|9(?:[29]\\\\d\\\\d|69[67]|8(?:1[1-3]|89|97)))\\\\d{4}\",,,,\"96961234\"],[,,\"800[3467]\\\\d{4}\",,,,\"80071234\"],[,,\"5(?:0(?:0(?:37|43)|(?:6\\\\d|70|9[0168])\\\\d)|[12]\\\\d0[1-5])\\\\d{3}\",,,,\"50037123\"],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3550\\\\d{4}\",,,,\"35501234\"],\"MT\",356,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]],,[,,\"7117\\\\d{4}\",,,,\"71171234\"],,,[,,,,,,,,,[-1]],[,,\"501\\\\d{5}\",,,,\"50112345\"],,,[,,,,,,,,,[-1]]],MU:[,[,,\"(?:5|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",,,,,,,[7,8,10]],[,,\"(?:2(?:[0346-8]\\\\d|1[0-7])|4(?:[013568]\\\\d|2[4-7])|54(?:[3-5]\\\\d|71)|6\\\\d\\\\d|8(?:14|3[129]))\\\\d{4}\",,,,\"54480123\",,,[7,8]],[,,\"5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\\\d|8[0-689]|9[0-8])\\\\d{5}\",\n,,,\"52512345\",,,[8]],[,,\"802\\\\d{7}|80[0-2]\\\\d{4}\",,,,\"8001234\",,,[7,10]],[,,\"30\\\\d{5}\",,,,\"3012345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3(?:20|9\\\\d)\\\\d{4}\",,,,\"3201234\",,,[7]],\"MU\",230,\"0(?:0|[24-7]0|3[03])\",,,,,,\"020\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"5\"]],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MV:[,[,,\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",,,,,,,[7,10]],[,,\"(?:3(?:0[0-3]|3[0-59])|6(?:[57][02468]|6[024-68]|8[024689]))\\\\d{4}\",\n,,,\"6701234\",,,[7]],[,,\"46[46]\\\\d{4}|(?:7\\\\d|9[13-9])\\\\d{5}\",,,,\"7712345\",,,[7]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MV\",960,\"0(?:0|19)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9[13-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"4[05]0\\\\d{4}\",,,,\"4001234\",,,[7]],,,[,,,,,,,,,[-1]]],MW:[,[,,\"(?:[129]\\\\d|31|77|88)\\\\d{7}|1\\\\d{6}\",,,,,,,[7,9]],[,,\"(?:1[2-9]|2[12]\\\\d\\\\d)\\\\d{5}\",\n,,,\"1234567\"],[,,\"111\\\\d{6}|(?:31|77|88|9[89])\\\\d{7}\",,,,\"991234567\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MW\",265,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MX:[,[,,\"1(?:(?:44|99)[1-9]|65[0-689])\\\\d{7}|(?:1(?:[017]\\\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\\\d)\\\\d{8}\",\n,,,,,,[10,11],[7,8]],[,,\"6571\\\\d{6}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\\\d|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\\\d))\\\\d{7}\",,,,\"2001234567\",,,[10],[7,8]],[,,\"6571\\\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\\\d|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\\\d))\\\\d{7}\",\n,,,\"12221234567\",,,,[7,8]],[,,\"8(?:00|88)\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,\"300\\\\d{7}\",,,,\"3001234567\",,,[10]],[,,\"500\\\\d{7}\",,,,\"5001234567\",,,[10]],[,,,,,,,,,[-1]],\"MX\",52,\"0[09]\",\"01\",,,\"0(?:[12]|4[45])|1\",,\"00\",,[[,\"(\\\\d{5})\",\"$1\",[\"53\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],,,1],[,\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],,,1],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$2 $3 $4\",[\"1\"],,,1]],[[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],,,1],[,\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],,,1],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 $3 $4\",[\"1\"],,,1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MY:[,[,,\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",,,,,,,[8,9,10],[6,7]],[,,\"(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\\\d|9[0-57])\\\\d|4(?:2[0-689]|[3-79]\\\\d|8[1-35689])|5(?:2[0-589]|[3468]\\\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\\\d|[3489][0-8]))\\\\d{5}\",\n,,,\"323856789\",,,[8,9],[6,7]],[,,\"1(?:1888[69]|4400|8(?:47|8[27])[0-4])\\\\d{4}|1(?:0(?:[23568]\\\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\\\d\\\\d|6(?:0[5-9]|[1-9]\\\\d)|7(?:[0134]\\\\d|2[1-9]|5[0-6]))|(?:(?:[269]|59)\\\\d|[37][1-9]|4[235-9])\\\\d|8(?:1[23]|[236]\\\\d|4[06]|5[7-9]|7[016-9]|8[01]|9[0-8]))\\\\d{5}\",,,,\"123456789\",,,[9,10]],[,,\"1[378]00\\\\d{6}\",,,,\"1300123456\",,,[10]],[,,\"1600\\\\d{6}\",,,,\"1600123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"15(?:4(?:6[0-4]\\\\d|8(?:0[125]|[17]\\\\d|21|3[01]|4[01589]|5[014]|6[02]))|6(?:32[0-6]|78\\\\d))\\\\d{4}\",\n,,,\"1546012345\",,,[10]],\"MY\",60,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9])|8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1[36-8]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MZ:[,[,,\"(?:2|8\\\\d)\\\\d{7}\",\n,,,,,,[8,9]],[,,\"2(?:[1346]\\\\d|5[0-2]|[78][12]|93)\\\\d{5}\",,,,\"21123456\",,,[8]],[,,\"8[2-79]\\\\d{7}\",,,,\"821234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MZ\",258,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NA:[,[,,\"[68]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"64426\\\\d{3}|6(?:1(?:2[2-7]|3[01378]|4[0-4])|254|32[0237]|4(?:27|41|5[25])|52[236-8]|626|7(?:2[2-4]|30))\\\\d{4,5}|6(?:1(?:(?:0\\\\d|2[0189]|3[24-69]|4[5-9])\\\\d|17|69|7[014])|2(?:17|5[0-36-8]|69|70)|3(?:17|2[14-689]|34|6[289]|7[01]|81)|4(?:17|2[0-2]|4[06]|5[0137]|69|7[01])|5(?:17|2[0459]|69|7[01])|6(?:17|25|38|42|69|7[01])|7(?:17|2[569]|3[13]|6[89]|7[01]))\\\\d{4}\",\n,,,\"61221234\"],[,,\"(?:60|8[1245])\\\\d{7}\",,,,\"811234567\",,,[9]],[,,\"80\\\\d{7}\",,,,\"800123456\",,,[9]],[,,\"8701\\\\d{5}\",,,,\"870123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"8(?:3\\\\d\\\\d|86)\\\\d{5}\",,,,\"88612345\"],\"NA\",264,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,\n[-1]],,,[,,,,,,,,,[-1]]],NC:[,[,,\"[2-57-9]\\\\d{5}\",,,,,,,[6]],[,,\"(?:2[03-9]|3[0-5]|4[1-7]|88)\\\\d{4}\",,,,\"201234\"],[,,\"(?:5[0-4]|[79]\\\\d|8[0-79])\\\\d{4}\",,,,\"751234\"],[,,,,,,,,,[-1]],[,,\"36\\\\d{4}\",,,,\"366711\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NC\",687,\"00\",,,,,,,,[[,\"(\\\\d{3})\",\"$1\",[\"5[6-8]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[2-57-9]\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[2-57-9]\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NE:[,[,,\"[027-9]\\\\d{7}\",\n,,,,,,[8]],[,,\"2(?:0(?:20|3[1-8]|4[13-5]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\\\d{4}\",,,,\"20201234\"],[,,\"(?:23|7[04]|[89]\\\\d)\\\\d{6}\",,,,\"93123456\"],[,,\"08\\\\d{6}\",,,,\"08123456\"],[,,\"09\\\\d{6}\",,,,\"09123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NE\",227,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[04]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NF:[,[,\n,\"[13]\\\\d{5}\",,,,,,,[6],[5]],[,,\"(?:1(?:06|17|28|39)|3[0-2]\\\\d)\\\\d{3}\",,,,\"106609\",,,,[5]],[,,\"(?:14|3[58])\\\\d{4}\",,,,\"381234\",,,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NF\",672,\"00\",,,,\"([0-258]\\\\d{4})$\",\"3$1\",,,[[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[,\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NG:[,[,,\"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\",,,,,,,[7,8,10,11,12,13,14],[5,6]],\n[,,\"(?:(?:[1-356]\\\\d|4[02-8]|8[2-9])\\\\d|9(?:0[3-9]|[1-9]\\\\d))\\\\d{5}|7(?:0(?:[013-689]\\\\d|2[0-24-9])\\\\d{3,4}|[1-79]\\\\d{6})|(?:[12]\\\\d|4[147]|5[14579]|6[1578]|7[1-3578])\\\\d{5}\",,,,\"18040123\",,,[7,8],[5,6]],[,,\"(?:702[0-24-9]|8(?:01|19)[01])\\\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\\\d{7}\",,,,\"8021234567\",,,[10]],[,,\"800\\\\d{7,11}\",,,,\"80017591759\",,,[10,11,12,13,14]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NG\",234,\"009\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\n\"$1 $2 $3\",[\"78\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-7]|8[2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"700\\\\d{7,11}\",,,,\"7001234567\",,,[10,11,12,13,14]],,,[,,,,,,,,,[-1]]],NI:[,[,,\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",,,,,,,[8]],[,,\"2\\\\d{7}\",\n,,,\"21234567\"],[,,\"(?:5(?:5[0-7]|[78]\\\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\\\d)\\\\d)\\\\d{5}\",,,,\"81234567\"],[,,\"1800\\\\d{4}\",,,,\"18001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NI\",505,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NL:[,[,,\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|[89]\\\\d{6,9}|1\\\\d{4,5}\",,,,,,,[5,6,7,8,9,10]],[,,\"(?:1(?:[035]\\\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\\\d\\\\d)\\\\d{6}\",\n,,,\"101234567\",,,[9]],[,,\"6[1-58]\\\\d{7}\",,,,\"612345678\",,,[9]],[,,\"800\\\\d{4,7}\",,,,\"8001234\",,,[7,8,9,10]],[,,\"90[069]\\\\d{4,7}\",,,,\"9061234\",,,[7,8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:85|91)\\\\d{7}\",,,,\"851234567\",,,[9]],\"NL\",31,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})\",\"$1\",[\"1[238]|[34]\"]],[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"14\"]],[,\"(\\\\d{6})\",\"$1\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[,\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-57-9]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[,\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-57-9]\"],\"0$1\"]],[,,\"66\\\\d{7}\",,,,\"662345678\",,,[9]],,,[,,\"140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)\\\\d\",\n,,,,,,[5,6]],[,,\"140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|(?:140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)|8[478]\\\\d{6})\\\\d\",,,,\"14020\",,,[5,6,9]],,,[,,,,,,,,,[-1]]],NO:[,[,,\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",,,,,,,[5,8]],[,,\"(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\\\d{6}\",,,,\"21234567\",,,[8]],[,,\"(?:4[015-8]|59|9\\\\d)\\\\d{6}\",,,,\"40612345\",,,[8]],[,,\"80[01]\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"82[09]\\\\d{5}\",,,,\"82012345\",,,[8]],[,,\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",,,,\"81021234\",,,[8]],[,,\"880\\\\d{5}\",\n,,,\"88012345\",,,[8]],[,,\"85[0-5]\\\\d{5}\",,,,\"85012345\",,,[8]],\"NO\",47,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]|59\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],,[,,,,,,,,,[-1]],1,\"[02-689]|7[0-8]\",[,,,,,,,,,[-1]],[,,\"(?:0[2-9]|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d\\\\d))\\\\d{3}\",,,,\"02000\"],,,[,,\"81[23]\\\\d{5}\",,,,\"81212345\",,,[8]]],NP:[,[,,\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",,,,,,,[8,10,11],[6,7]],[,,\"(?:1[0-6]\\\\d|99[02-6])\\\\d{5}|(?:2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-7])[2-6]\\\\d{5}\",\n,,,\"14567890\",,,[8],[6,7]],[,,\"9(?:6[0-3]|7[245]|8[0-24-68])\\\\d{7}\",,,,\"9841234567\",,,[10]],[,,\"1(?:66001|800\\\\d\\\\d)\\\\d{5}\",,,,\"16600101234\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NP\",977,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-579]|6[2-6])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{5})\",\"$1-$2-$3\",[\"1\"]]],[[,\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6})\",\n\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-579]|6[2-6])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NR:[,[,,\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",,,,,,,[7]],[,,\"444\\\\d{4}\",,,,\"4441234\"],[,,\"(?:55[3-9]|666|8\\\\d\\\\d)\\\\d{4}\",,,,\"5551234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NR\",674,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nNU:[,[,,\"(?:[47]|888\\\\d)\\\\d{3}\",,,,,,,[4,7]],[,,\"[47]\\\\d{3}\",,,,\"7012\",,,[4]],[,,\"888[4-9]\\\\d{3}\",,,,\"8884012\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NU\",683,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NZ:[,[,,\"[29]\\\\d{7,9}|50\\\\d{5}(?:\\\\d{2,3})?|6[0-35-9]\\\\d{6}|7\\\\d{7,8}|8\\\\d{4,9}|(?:11\\\\d|[34])\\\\d{7}\",,,,,,,[5,6,7,8,9,10]],[,,\"24099\\\\d{3}|(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\\\d{6}\",\n,,,\"32345678\",,,[8],[7]],[,,\"2[0-27-9]\\\\d{7,8}|21\\\\d{6}\",,,,\"211234567\",,,[8,9,10]],[,,\"508\\\\d{6,7}|80\\\\d{6,8}\",,,,\"800123456\",,,[8,9,10]],[,,\"(?:11\\\\d{5}|50(?:0[08]|30|66|77|88))\\\\d{3}|90\\\\d{6,8}\",,,,\"900123456\",,,[7,8,9,10]],[,,,,,,,,,[-1]],[,,\"70\\\\d{7}\",,,,\"701234567\",,,[9]],[,,,,,,,,,[-1]],\"NZ\",64,\"0(?:0|161)\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-579]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|[89]0\",\"50(?:[0367]|88)|[89]0\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\n\"$1-$2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[59]|80\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7|86\"],\"0$1\"]],,[,,\"[28]6\\\\d{6,7}\",,,,\"26123456\",,,[8,9]],,,[,,,,,,,,,[-1]],[,,\"8(?:1[6-9]|22|3\\\\d|4[045]|5[459]|7[0-3579]|90)\\\\d{2,7}\",,,,\"83012378\"],,,[,,,,,,,,,[-1]]],OM:[,[,,\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",,,,,,,[7,8,9]],[,,\"2[2-6]\\\\d{6}\",\n,,,\"23123456\",,,[8]],[,,\"1505\\\\d{4}|(?:7(?:[1289]\\\\d|7[0-4])|9(?:0[1-9]|[1-9]\\\\d))\\\\d{5}\",,,,\"92123456\",,,[8]],[,,\"8007\\\\d{4,5}|(?:500|800[05])\\\\d{4}\",,,,\"80071234\"],[,,\"900\\\\d{5}\",,,,\"90012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"OM\",968,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PA:[,[,,\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",\n,,,,,,[7,8,10,11]],[,,\"(?:1(?:0\\\\d|1[479]|2[37]|3[0137]|4[17]|5[05]|6[58]|7[0167]|8[258]|9[1389])|2(?:[0235-79]\\\\d|1[0-7]|4[013-9]|8[02-9])|3(?:[089]\\\\d|1[0-7]|2[0-5]|33|4[0-79]|5[05]|6[068]|7[0-8])|4(?:00|3[0-579]|4\\\\d|7[0-57-9])|5(?:[01]\\\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[056]|7[0-24-9]|8[6-9]|90)|8(?:09|2[89]|3\\\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\\\d))\\\\d{4}\",,,,\"2001234\",,,[7]],[,,\"(?:1[16]1|21[89]|6\\\\d{3}|8(?:1[01]|7[23]))\\\\d{4}\",\n,,,\"61234567\",,,[7,8]],[,,\"800\\\\d{4,5}|(?:00800|800\\\\d)\\\\d{6}\",,,,\"8001234\"],[,,\"(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\\\d{4}\",,,,\"8601234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PA\",507,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PE:[,[,,\"(?:[14-8]|9\\\\d)\\\\d{7}\",,,,,,,[8,9],[6,7]],[,,\"(?:(?:4[34]|5[14])[0-8]\\\\d|7(?:173|3[0-8]\\\\d)|8(?:10[05689]|6(?:0[06-9]|1[6-9]|29)|7(?:0[569]|[56]0)))\\\\d{4}|(?:1[0-8]|4[12]|5[236]|6[1-7]|7[246]|8[2-4])\\\\d{6}\",\n,,,\"11234567\",,,[8],[6,7]],[,,\"9\\\\d{8}\",,,,\"912345678\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"805\\\\d{5}\",,,,\"80512345\",,,[8]],[,,\"801\\\\d{5}\",,,,\"80112345\",,,[8]],[,,\"80[24]\\\\d{5}\",,,,\"80212345\",,,[8]],[,,,,,,,,,[-1]],\"PE\",51,\"19(?:1[124]|77|90)00\",\"0\",\" Anexo \",,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,\n,,,,,[-1]],,,[,,,,,,,,,[-1]]],PF:[,[,,\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",,,,,,,[6,8,9]],[,,\"4(?:0[4-689]|9[4-68])\\\\d{5}\",,,,\"40412345\",,,[8]],[,,\"8[7-9]\\\\d{6}\",,,,\"87123456\",,,[8]],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"499\\\\d{5}\",,,,\"49901234\",,,[8]],\"PF\",689,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],,[,,,\n,,,,,,[-1]],,,[,,\"44\\\\d{4}\",,,,,,,[6]],[,,\"44\\\\d{4}\",,,,\"440123\",,,[6]],,,[,,,,,,,,,[-1]]],PG:[,[,,\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",,,,,,,[7,8]],[,,\"(?:(?:3[0-2]|4[257]|5[34]|9[78])\\\\d|64[1-9]|85[02-46-9])\\\\d{4}\",,,,\"3123456\",,,[7]],[,,\"(?:7\\\\d|8[18])\\\\d{6}\",,,,\"70123456\",,,[8]],[,,\"180\\\\d{4}\",,,,\"1801234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"2(?:0[0-47]|7[568])\\\\d{4}\",,,,\"2751234\",,,[7]],\"PG\",675,\"00|140[1-3]\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],\n[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],,[,,\"27[01]\\\\d{4}\",,,,\"2700123\",,,[7]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PH:[,[,,\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",,,,,,,[6,8,9,10,11,12,13],[4,5,7]],[,,\"(?:(?:2[3-8]|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578])\\\\d{3}|88(?:22\\\\d\\\\d|42))\\\\d{4}|(?:2|8[2-8]\\\\d\\\\d)\\\\d{5}\",,,,\"232345678\",,,[6,8,9,10],[4,5,7]],[,,\"(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\\\d|4[2-9]|8[135-9]|9[1-9]))\\\\d{7}\",,,,\"9051234567\",,,[10]],[,,\"1800\\\\d{7,9}\",\n,,,\"180012345678\",,,[11,12,13]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PH\",63,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[,\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PK:[,[,,\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",,,,,,\n,[8,9,10,11,12],[5,6,7]],[,,\"(?:(?:21|42)[2-9]|58[126])\\\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\\\d{6,7}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\\\d{5,6}\",,,,\"2123456789\",,,[9,10],[5,6,7,8]],[,,\"3(?:[0-24]\\\\d|3[0-7]|55|64)\\\\d{7}\",,,,\"3012345678\",,,[10]],[,,\"800\\\\d{5}(?:\\\\d{3})?\",,,,\"80012345\",,,[8,11]],[,,\"900\\\\d{5}\",,,,\"90012345\",,,[8]],[,,,,,,,,,[-1]],[,,\"122\\\\d{6}\",\n,,,\"122044444\",,,[9]],[,,,,,,,,,[-1]],\"PK\",92,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\n\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:0[468]|[1-8])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\\\d{6}\",\n,,,\"21111825888\",,,[11,12]],,,[,,,,,,,,,[-1]]],PL:[,[,,\"6\\\\d{5}(?:\\\\d{2})?|8\\\\d{9}|[1-9]\\\\d{6}(?:\\\\d{2})?\",,,,,,,[6,7,8,9,10]],[,,\"47\\\\d{7}|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])(?:[02-9]\\\\d{6}|1(?:[0-8]\\\\d{5}|9\\\\d{3}(?:\\\\d{2})?))\",,,,\"123456789\",,,[7,9]],[,,\"21(?:1(?:[145]\\\\d|3[1-5])|2[0-4]\\\\d)\\\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\\\d{7}\",,,,\"512345678\",,,[9]],[,,\"800\\\\d{6,7}\",,,,\"800123456\",,,[9,10]],[,,\"70[01346-8]\\\\d{6}\",,,,\"701234567\",,,[9]],[,,\"801\\\\d{6}\",\n,,,\"801234567\",,,[9]],[,,,,,,,,,[-1]],[,,\"39\\\\d{7}\",,,,\"391234567\",,,[9]],\"PL\",48,\"00\",,,,,,,,[[,\"(\\\\d{5})\",\"$1\",[\"19\"]],[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|64\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],\n[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]],,[,,\"64\\\\d{4,7}\",,,,\"641234567\",,,[6,7,8,9]],,,[,,,,,,,,,[-1]],[,,\"804\\\\d{6}\",,,,\"804123456\",,,[9]],,,[,,,,,,,,,[-1]]],PM:[,[,,\"(?:[45]|80\\\\d\\\\d)\\\\d{5}\",,,,,,,[6,9]],[,,\"(?:4[1-3]|50)\\\\d{4}\",,,,\"430123\",,,[6]],[,,\"(?:4[02-4]|5[056])\\\\d{4}\",,,,\"551234\",,,[6]],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PM\",\n508,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PR:[,[,,\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",,,,,,,[10],[7]],[,,\"(?:787|939)[2-9]\\\\d{6}\",,,,\"7872345678\",,,,[7]],[,,\"(?:787|939)[2-9]\\\\d{6}\",,,,\"7872345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"PR\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,\"787|939\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PS:[,[,,\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",,,,,,,[8,9,10],[7]],[,,\"(?:22[2-47-9]|42[45]|82[014-68]|92[3569])\\\\d{5}\",,,,\"22234567\",,,[8],[7]],[,,\"5[69]\\\\d{7}\",,,,\"599123456\",,,[9]],[,,\"1800\\\\d{6}\",,,,\"1800123456\",,,[10]],[,,,,,,,,,[-1]],[,,\"1700\\\\d{6}\",,,,\"1700123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PS\",970,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",\n[\"[2489]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PT:[,[,,\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",,,,,,,[9]],[,,\"2(?:[12]\\\\d|[35][1-689]|4[1-59]|6[1-35689]|7[1-9]|8[1-69]|9[1256])\\\\d{6}\",,,,\"212345678\"],[,,\"6[0356]92(?:30|9\\\\d)\\\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\\\d\\\\d|480))\\\\d{5}\",,,,\"912345678\"],[,,\"80[02]\\\\d{6}\",,,,\"800123456\"],[,,\"(?:6(?:0[178]|4[68])\\\\d|76(?:0[1-57]|1[2-47]|2[237]))\\\\d{5}\",\n,,,\"760123456\"],[,,\"80(?:8\\\\d|9[1579])\\\\d{5}\",,,,\"808123456\"],[,,\"884[0-4689]\\\\d{5}\",,,,\"884123456\"],[,,\"30\\\\d{7}\",,,,\"301234567\"],\"PT\",351,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"70(?:7\\\\d|8[17])\\\\d{5}\",,,,\"707123456\"],,,[,,\"600\\\\d{6}\",,,,\"600110000\"]],PW:[,[,,\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",,,,,,,[7]],[,,\"(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\\\d{4}\",\n,,,\"2771234\"],[,,\"(?:46[0-5]|6[2-4689]0)\\\\d{4}|(?:45|77|88)\\\\d{5}\",,,,\"6201234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PW\",680,\"01[12]\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PY:[,[,,\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",,,,,,,[6,7,8,9,10,11],[5]],[,,\"(?:[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36])\\\\d{5,7}|(?:2(?:2[4-68]|[4-68]\\\\d|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51|[67]\\\\d)|4(?:3[12]|5[13]|9[1-47])|5(?:[1-4]\\\\d|5[02-4])|6(?:3[1-3]|44|7[1-8])|7(?:4[0-4]|5\\\\d|6[1-578]|75|8[0-8])|858)\\\\d{5,6}\",\n,,,\"212345678\",,,[7,8,9],[5,6]],[,,\"9(?:51|6[129]|[78][1-6]|9[1-5])\\\\d{6}\",,,,\"961456789\",,,[9]],[,,\"9800\\\\d{5,7}\",,,,\"98000123456\",,,[9,10,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"8700[0-4]\\\\d{4}\",,,,\"870012345\",,,[9]],\"PY\",595,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\n\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-6])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"[2-9]0\\\\d{4,7}\",,,,\"201234567\",,,[6,7,8,9]],,,[,,,,,,,,,[-1]]],QA:[,[,,\"[2-7]\\\\d{7}|800\\\\d{4}(?:\\\\d{2})?|2\\\\d{6}\",,,,,,,[7,8,9]],[,,\"4141\\\\d{4}|(?:23|4[04])\\\\d{6}\",,,,\"44123456\",\n,,[8]],[,,\"(?:2[89]|[35-7]\\\\d)\\\\d{6}\",,,,\"33123456\",,,[8]],[,,\"800\\\\d{4}(?:\\\\d{2})?\",,,,\"8001234\",,,[7,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"QA\",974,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[126]|8\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]]],,[,,\"2(?:[12]\\\\d|61)\\\\d{4}\",,,,\"2123456\",,,[7]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RE:[,[,,\"9769\\\\d{5}|(?:26|[68]\\\\d)\\\\d{7}\",,,,,,,[9]],[,,\"26(?:2\\\\d\\\\d|30[0-5])\\\\d{4}\",,,,\"262161234\"],[,,\"(?:69(?:2\\\\d\\\\d|3(?:[06][0-46]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|7[0-27]|8[0-8]|9[0-479]))|9769\\\\d)\\\\d{4}\",\n,,,\"692123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89[1-37-9]\\\\d{6}\",,,,\"891123456\"],[,,\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\",,,,\"810123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RE\",262,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,\"26[23]|69|[89]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RO:[,[,,\"(?:[2378]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",,,,,,,[6,9]],[,,\"[23][13-6]\\\\d{7}|(?:2(?:19\\\\d|[3-6]\\\\d9)|31\\\\d\\\\d)\\\\d\\\\d\",,,,\"211234567\"],[,,\"7020\\\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\\\d|8[03-8]|9[019])\\\\d{6}\",\n,,,\"712034567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"90[0136]\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"801\\\\d{6}\",,,,\"801123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RO\",40,\"00\",\"0\",\" int \",,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[237-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:37\\\\d|80[578])\\\\d{6}\",,,,\"372123456\",\n,,[9]],,,[,,,,,,,,,[-1]]],RS:[,[,,\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",,,,,,,[6,7,8,9,10,11,12],[4,5]],[,,\"(?:11[1-9]\\\\d|(?:2[389]|39)(?:0[2-9]|[2-9]\\\\d))\\\\d{3,8}|(?:1[02-9]|2[0-24-7]|3[0-8])[2-9]\\\\d{4,9}\",,,,\"10234567\",,,[7,8,9,10,11,12],[4,5,6]],[,,\"6(?:[0-689]|7\\\\d)\\\\d{6,7}\",,,,\"601234567\",,,[8,9,10]],[,,\"800\\\\d{3,9}\",,,,\"80012345\"],[,,\"(?:78\\\\d|90[0169])\\\\d{3,7}\",,,,\"90012345\",,,[6,7,8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,\n,,,,,,,,[-1]],\"RS\",381,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"7[06]\\\\d{4,10}\",,,,\"700123456\"],,,[,,,,,,,,,[-1]]],RU:[,[,,\"8\\\\d{13}|[347-9]\\\\d{9}\",,,,,,,[10,14],[7]],[,,\"(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\\\d{7}\",,,,\"3011234567\",,,[10],[7]],[,,\"9\\\\d{9}\",\n,,,\"9123456789\",,,[10]],[,,\"8(?:0[04]|108\\\\d{3})\\\\d{7}\",,,,\"8001234567\"],[,,\"80[39]\\\\d{7}\",,,,\"8091234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"808\\\\d{7}\",,,,\"8081234567\",,,[10]],[,,,,,,,,,[-1]],\"RU\",7,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"[0-79]\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",,1],[,\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",,1],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],[[,\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",,1],[,\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\n\"8 ($1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",,1],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],[,,,,,,,,,[-1]],1,\"3[04-689]|[489]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RW:[,[,,\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",,,,,,,[8,9]],[,,\"(?:06|2[23568]\\\\d)\\\\d{6}\",,,,\"250123456\"],[,,\"7[2389]\\\\d{7}\",,,,\"720123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\n\"900\\\\d{6}\",,,,\"900123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RW\",250,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SA:[,[,,\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",,,,,,,[9,10],[7]],[,,\"1(?:1\\\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\\\d{6}\",,,,\"112345678\",,,[9],[7]],[,,\"579[01]\\\\d{5}|5(?:[013-689]\\\\d|7[0-36-8])\\\\d{6}\",\n,,,\"512345678\",,,[9]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"925\\\\d{6}\",,,,\"925012345\",,,[9]],[,,\"920\\\\d{6}\",,,,\"920012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SA\",966,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"811\\\\d{7}\",,,,\"8110123456\",\n,,[10]],,,[,,,,,,,,,[-1]]],SB:[,[,,\"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\",,,,,,,[5,7]],[,,\"(?:1[4-79]|[23]\\\\d|4[0-2]|5[03]|6[0-37])\\\\d{3}\",,,,\"40123\",,,[5]],[,,\"48\\\\d{3}|(?:(?:7[1-9]|8[4-9])\\\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\\\d{4}\",,,,\"7421234\"],[,,\"1[38]\\\\d{3}\",,,,\"18123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[12]\\\\d{3}\",,,,\"51123\",,,[5]],\"SB\",677,\"0[01]\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]],,[,,,,,,,,,[-1]],,,\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SC:[,[,,\"8000\\\\d{3}|(?:[249]\\\\d|64)\\\\d{5}\",,,,,,,[7]],[,,\"4[2-46]\\\\d{5}\",,,,\"4217123\"],[,,\"2[5-8]\\\\d{5}\",,,,\"2510123\"],[,,\"8000\\\\d{3}\",,,,\"8000000\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"971\\\\d{4}|(?:64|95)\\\\d{5}\",,,,\"6412345\"],\"SC\",248,\"010|0[0-2]\",,,,,,\"00\",,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SD:[,[,,\"[19]\\\\d{8}\",,,,,,,[9]],[,,\"1(?:5\\\\d|8[35-7])\\\\d{6}\",\n,,,\"153123456\"],[,,\"(?:1[0-2]|9[0-3569])\\\\d{7}\",,,,\"911231234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SD\",249,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SE:[,[,,\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",,,,,,,[6,7,8,9,10,12]],[,,\"(?:(?:[12][136]|3[356]|4[0246]|6[03]|8\\\\d)\\\\d|90[1-9])\\\\d{4,6}|(?:1(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\\\d)|2(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])|3(?:0[0-4]|1\\\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])|4(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\\\d|6[03-5]|7[013]|8[0-79]|9[01])|6(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])|9(?:1[0-68]|2\\\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8]))\\\\d{5,6}\",\n,,,\"8123456\",,,[7,8,9]],[,,\"7[02369]\\\\d{7}\",,,,\"701234567\",,,[9]],[,,\"20\\\\d{4,7}\",,,,\"20123456\",,,[6,7,8,9]],[,,\"649\\\\d{6}|9(?:00|39|44)[1-8]\\\\d{3,6}\",,,,\"9001234567\",,,[7,8,9,10]],[,,\"77[0-7]\\\\d{6}\",,,,\"771234567\",,,[9]],[,,\"75[1-8]\\\\d{6}\",,,,\"751234567\",,,[9]],[,,,,,,,,,[-1]],\"SE\",46,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44)\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\"],\n[,\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\n\"$1-$2 $3 $4\",[\"8\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\"]],[[,\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1 $2 $3\",[\"20\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"9(?:00|39|44)\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"]],[,\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"8\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1 $2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1 $2 $3\",[\"9(?:00|39|44)\"]],[,\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"10|7\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]\"]]],[,,\"74[02-9]\\\\d{6}\",,,,\"740123456\",,,[9]],,,[,,,,,,,,,[-1]],[,,\"10[1-8]\\\\d{6}\",,,,\"102345678\",,,[9]],,,[,,\"(?:25[245]|67[3-68])\\\\d{9}\",,,,\"254123456789\",,,[12]]],SG:[,[,,\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",,,,,,,[8,10,11]],[,,\"662[0-24-9]\\\\d{4}|6(?:[0-578]\\\\d|6[013-57-9]|9[0-35-9])\\\\d{5}\",\n,,,\"61234567\",,,[8]],[,,\"8(?:051|95[0-2])\\\\d{4}|(?:8(?:0[1-4]|[1-8]\\\\d|9[0-4])|9[0-8]\\\\d)\\\\d{5}\",,,,\"81234567\",,,[8]],[,,\"(?:18|8)00\\\\d{7}\",,,,\"18001234567\",,,[10,11]],[,,\"1900\\\\d{7}\",,,,\"19001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:3[12]\\\\d|666)\\\\d{5}\",,,,\"31234567\",,,[8]],\"SG\",65,\"0[0-3]\\\\d\",,,,,,,,[[,\"(\\\\d{4,5})\",\"$1\",[\"1[013-9]|77\",\"1(?:[013-8]|9(?:0[1-9]|[1-9]))|77\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-5]|[1-9])\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\n\"$1 $2 $3\",[\"7\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-5]|[1-9])\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"7000\\\\d{7}\",,,,\"70001234567\",,,[11]],,,[,,,,,,,,,[-1]]],SH:[,[,,\"(?:[256]\\\\d|8)\\\\d{3}\",,,,,,,[4,5]],[,,\"2(?:[0-57-9]\\\\d|6[4-9])\\\\d\\\\d\",,,,\"22158\"],[,,\"[56]\\\\d{4}\",,,,\"51234\",,,[5]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"262\\\\d\\\\d\",,,,\"26212\",,,[5]],\"SH\",290,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],1,\"[256]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SI:[,[,,\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",,,,,,,[5,6,7,8]],[,,\"(?:[1-357][2-8]|4[24-8])\\\\d{6}\",,,,\"12345678\",,,[8],[7]],[,,\"65(?:1\\\\d|55|[67]0)\\\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\\\d{6}\",,,,\"31234567\",,,[8]],[,,\"80\\\\d{4,6}\",,,,\"80123456\",,,[6,7,8]],[,,\"89[1-3]\\\\d{2,5}|90\\\\d{4,6}\",,,,\"90123456\"],[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],[,,\"(?:59\\\\d\\\\d|8(?:1(?:[67]\\\\d|8[0-489])|2(?:0\\\\d|2[0-37-9]|8[0-2489])|3[389]\\\\d))\\\\d{4}\",,,,\"59012345\",,,[8]],\"SI\",386,\"00|10(?:22|66|88|99)\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SJ:[,[,,\"0\\\\d{4}|(?:[489]\\\\d|[57]9)\\\\d{6}\",\n,,,,,,[5,8]],[,,\"79\\\\d{6}\",,,,\"79123456\",,,[8]],[,,\"(?:4[015-8]|59|9\\\\d)\\\\d{6}\",,,,\"41234567\",,,[8]],[,,\"80[01]\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"82[09]\\\\d{5}\",,,,\"82012345\",,,[8]],[,,\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",,,,\"81021234\",,,[8]],[,,\"880\\\\d{5}\",,,,\"88012345\",,,[8]],[,,\"85[0-5]\\\\d{5}\",,,,\"85012345\",,,[8]],\"SJ\",47,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,\"79\",[,,,,,,,,,[-1]],[,,\"(?:0[2-9]|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d\\\\d))\\\\d{3}\",,,,\"02000\"],,,[,,\"81[23]\\\\d{5}\",,,,\"81212345\",,,[8]]],SK:[,[,,\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",\n,,,,,,[6,7,9]],[,,\"(?:2(?:16|[2-9]\\\\d{3})|(?:(?:[3-5][1-8]\\\\d|819)\\\\d|601[1-5])\\\\d)\\\\d{4}|(?:2|[3-5][1-8])1[67]\\\\d{3}|[3-5][1-8]16\\\\d\\\\d\",,,,\"221234567\"],[,,\"909[1-9]\\\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\\\d)\\\\d{6}\",,,,\"912123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"9(?:00|[78]\\\\d)\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"8[5-9]\\\\d{7}\",,,,\"850123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"6(?:02|5[0-4]|9[0-6])\\\\d{6}\",,,,\"690123456\",,,[9]],\"SK\",421,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",\n[\"21\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"909\",\"9090\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\n\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],[,,\"9090\\\\d{3}\",,,,\"9090123\",,,[7]],,,[,,\"9090\\\\d{3}|(?:602|8(?:00|[5-9]\\\\d)|9(?:00|[78]\\\\d))\\\\d{6}\",,,,,,,[7,9]],[,,\"96\\\\d{7}\",,,,\"961234567\",,,[9]],,,[,,,,,,,,,[-1]]],SL:[,[,,\"(?:[237-9]\\\\d|66)\\\\d{6}\",,,,,,,[8],[6]],[,,\"22[2-4][2-9]\\\\d{4}\",,,,\"22221234\",,,,[6]],[,,\"(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\\\d{6}\",,,,\"25123456\"],[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SL\",232,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SM:[,[,,\"(?:0549|[5-7]\\\\d)\\\\d{6}\",,,,,,,[8,10],[6]],[,,\"0549(?:8[0157-9]|9\\\\d)\\\\d{4}\",,,,\"0549886377\",,,[10],[6]],[,,\"6[16]\\\\d{6}\",,,,\"66661212\",,,[8]],[,,,,,,,,,[-1]],[,,\"7[178]\\\\d{6}\",,,,\"71123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[158]\\\\d{6}\",,,,\"58001110\",,,[8]],\"SM\",378,\"00\",,,\n,\"([89]\\\\d{5})$\",\"0549$1\",,,[[,\"(\\\\d{6})\",\"$1\",[\"[89]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SN:[,[,,\"(?:[378]\\\\d|93)\\\\d{7}\",,,,,,,[9]],[,,\"3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\\\d{5}\",,,,\"301012345\"],[,,\"75(?:01|[38]3)\\\\d{5}|7(?:[06-8]\\\\d|21|5[4-7]|90)\\\\d{6}\",\n,,,\"701234567\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,\"88[4689]\\\\d{6}\",,,,\"884123456\"],[,,\"81[02468]\\\\d{6}\",,,,\"810123456\"],[,,,,,,,,,[-1]],[,,\"(?:3(?:392|9[01]\\\\d)\\\\d|93(?:3[13]0|929))\\\\d{4}\",,,,\"933301234\"],\"SN\",221,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SO:[,[,,\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",,,,,,,[6,7,8,9]],[,,\n\"(?:1\\\\d|2[0-79]|3[0-46-8]|4[0-7]|5[57-9])\\\\d{5}|(?:[134]\\\\d|8[125])\\\\d{4}\",,,,\"4012345\",,,[6,7]],[,,\"(?:(?:15|(?:3[59]|4[89]|79|8[08])\\\\d|6(?:0[5-7]|[1-9]\\\\d)|9(?:0\\\\d|[2-9]))\\\\d|2(?:4\\\\d|8))\\\\d{5}|(?:6\\\\d|7[1-9])\\\\d{6}\",,,,\"71123456\",,,[7,8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SO\",252,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[,\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[,\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[,\"(\\\\d)(\\\\d{7})\",\n\"$1 $2\",[\"24|[67]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3478]|64|90\"]],[,\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6(?:0[5-7]|[1-35-9])|9[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SR:[,[,,\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",,,,,,,[6,7]],[,,\"(?:2[1-3]|3[0-7]|(?:4|68)\\\\d|5[2-58])\\\\d{4}\",,,,\"211234\"],[,,\"(?:7[124-7]|8[124-9])\\\\d{5}\",,,,\"7412345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"56\\\\d{4}\",,,,\"561234\",,,[6]],\"SR\",597,\"00\",,,,,,,\n,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[,\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SS:[,[,,\"[19]\\\\d{8}\",,,,,,,[9]],[,,\"1[89]\\\\d{7}\",,,,\"181234567\"],[,,\"(?:12|9[1257-9])\\\\d{7}\",,,,\"977123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SS\",211,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,\n,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ST:[,[,,\"(?:22|9\\\\d)\\\\d{5}\",,,,,,,[7]],[,,\"22\\\\d{5}\",,,,\"2221234\"],[,,\"900[5-9]\\\\d{3}|9(?:0[1-9]|[89]\\\\d)\\\\d{4}\",,,,\"9812345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ST\",239,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SV:[,[,,\"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\",,,,,,,[7,8,11]],[,,\"2(?:[1-6]\\\\d{3}|[79]90[034]|890[0245])\\\\d{3}\",,,,\"21234567\",\n,,[8]],[,,\"66(?:[02-9]\\\\d\\\\d|1(?:[02-9]\\\\d|16))\\\\d{3}|(?:6[0-57-9]|7\\\\d)\\\\d{6}\",,,,\"70123456\",,,[8]],[,,\"800\\\\d{4}(?:\\\\d{4})?\",,,,\"8001234\",,,[7,11]],[,,\"900\\\\d{4}(?:\\\\d{4})?\",,,,\"9001234\",,,[7,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SV\",503,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SX:[,[,,\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",\n,,,,,,[10],[7]],[,,\"7215(?:4[2-8]|8[239]|9[056])\\\\d{4}\",,,,\"7215425678\",,,,[7]],[,,\"7215(?:1[02]|2\\\\d|5[034679]|8[014-8])\\\\d{4}\",,,,\"7215205678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,\n,\"5002345678\"],[,,,,,,,,,[-1]],\"SX\",1,\"011\",\"1\",,,\"1|(5\\\\d{6})$\",\"721$1\",,,,,[,,,,,,,,,[-1]],,\"721\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SY:[,[,,\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",,,,,,,[8,9],[6,7]],[,,\"21\\\\d{6,7}|(?:1(?:[14]\\\\d|[2356])|2[235]|3(?:[13]\\\\d|4)|4[134]|5[1-3])\\\\d{6}\",,,,\"112345678\",,,,[6,7]],[,,\"9(?:22|[3-689]\\\\d)\\\\d{6}\",,,,\"944567890\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SY\",963,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\n\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SZ:[,[,,\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",,,,,,,[8,9]],[,,\"[23][2-5]\\\\d{6}\",,,,\"22171234\",,,[8]],[,,\"7[6-9]\\\\d{6}\",,,,\"76123456\",,,[8]],[,,\"0800\\\\d{4}\",,,,\"08001234\",,,[8]],[,,\"900\\\\d{6}\",,,,\"900012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"70\\\\d{6}\",,,,\"70012345\",,,[8]],\"SZ\",268,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[,\n\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]],,[,,,,,,,,,[-1]],,,[,,\"0800\\\\d{4}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TA:[,[,,\"8\\\\d{3}\",,,,,,,[4]],[,,\"8\\\\d{3}\",,,,\"8999\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TA\",290,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,\"8\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TC:[,[,,\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"649(?:266|712|9(?:4\\\\d|50))\\\\d{4}\",,,,\"6497121234\",,,,[7]],[,,\"649(?:2(?:3[129]|4[1-79])|3\\\\d\\\\d|4[34][1-3])\\\\d{4}\",\n,,,\"6492311234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,\"649(?:71[01]|966)\\\\d{4}\",,,,\"6497101234\",,,,[7]],\"TC\",1,\"011\",\"1\",,,\"1|([2-479]\\\\d{6})$\",\"649$1\",,,,,[,,,,,,,,\n,[-1]],,\"649\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TD:[,[,,\"(?:22|[69]\\\\d|77)\\\\d{6}\",,,,,,,[8]],[,,\"22(?:[37-9]0|5[0-5]|6[89])\\\\d{4}\",,,,\"22501234\"],[,,\"(?:6[023568]|77|9\\\\d)\\\\d{6}\",,,,\"63012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TD\",235,\"00|16\",,,,,,\"00\",,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2679]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TG:[,[,,\"[279]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\\\d{5}\",\n,,,\"22212345\"],[,,\"(?:7[09]|9[0-36-9])\\\\d{6}\",,,,\"90112345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TG\",228,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TH:[,[,,\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",,,,,,,[8,9,10,13]],[,,\"(?:1[0689]|2\\\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\\\d{6}\",,,,\"21234567\",,,[8]],[,,\"671[0-8]\\\\d{5}|(?:14|6[1-6]|[89]\\\\d)\\\\d{7}\",,,,\"812345678\",\n,,[9]],[,,\"(?:001800\\\\d|1800)\\\\d{6}\",,,,\"1800123456\",,,[10,13]],[,,\"1900\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"6[08]\\\\d{7}\",,,,\"601234567\",,,[9]],\"TH\",66,\"00[1-9]\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TJ:[,[,,\"(?:00|[1-57-9]\\\\d)\\\\d{7}\",,,,,,,[9],[3,5,6,7]],[,,\"(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\\\d{6}\",\n,,,\"372123456\",,,,[3,5,6,7]],[,,\"41[18]\\\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\\\d)\\\\d{7}\",,,,\"917123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TJ\",992,\"810\",,,,,,\"8~10\",,[[,\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"]],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3[1-5]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0-57-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nTK:[,[,,\"[2-47]\\\\d{3,6}\",,,,,,,[4,5,6,7]],[,,\"(?:2[2-4]|[34]\\\\d)\\\\d{2,5}\",,,,\"3101\"],[,,\"7[2-4]\\\\d{2,5}\",,,,\"7290\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TK\",690,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TL:[,[,,\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",,,,,,,[7,8]],[,,\"(?:2[1-5]|3[1-9]|4[1-4])\\\\d{5}\",,,,\"2112345\",,,[7]],[,,\"7[2-8]\\\\d{6}\",,,,\"77212345\",,,[8]],[,,\"80\\\\d{5}\",,,,\"8012345\",,,[7]],[,,\"90\\\\d{5}\",,,,\"9012345\",\n,,[7]],[,,,,,,,,,[-1]],[,,\"70\\\\d{5}\",,,,\"7012345\",,,[7]],[,,,,,,,,,[-1]],\"TL\",670,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TM:[,[,,\"[1-6]\\\\d{7}\",,,,,,,[8]],[,,\"(?:1(?:2\\\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\\\d{5}\",,,,\"12345678\"],[,,\"6\\\\d{7}\",,,,\"66123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],\"TM\",993,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TN:[,[,,\"[2-57-9]\\\\d{7}\",,,,,,,[8]],[,,\"81200\\\\d{3}|(?:3[0-2]|7\\\\d)\\\\d{6}\",,,,\"30010123\"],[,,\"3(?:001|[12]40)\\\\d{4}|(?:(?:[259]\\\\d|4[0-7])\\\\d|3(?:1[1-35]|6[0-4]|91))\\\\d{5}\",,,,\"20123456\"],[,,\"8010\\\\d{4}\",\n,,,\"80101234\"],[,,\"88\\\\d{6}\",,,,\"88123456\"],[,,\"8[12]10\\\\d{4}\",,,,\"81101234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TN\",216,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TO:[,[,,\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",,,,,,,[5,7]],[,,\"(?:2\\\\d|3[0-8]|4[0-4]|50|6[09]|7[0-24-69]|8[05])\\\\d{3}\",,,,\"20123\",,,[5]],[,,\"(?:55[4-6]|6(?:[09]\\\\d|3[02]|8[15-9])|(?:7\\\\d|8[46-9])\\\\d|999)\\\\d{4}\",,,,\"7715123\",,,[7]],\n[,,\"0800\\\\d{3}\",,,,\"0800222\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"55[0-37-9]\\\\d{4}\",,,,\"5510123\",,,[7]],\"TO\",676,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[,\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TR:[,[,,\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[7,10,12,13]],[,,\"(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\\\d{7}\",\n,,,\"2123456789\",,,[10]],[,,\"56161\\\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\\\d|5[1-59]|9[46])\\\\d{7}\",,,,\"5012345678\",,,[10]],[,,\"8(?:00\\\\d{7}(?:\\\\d{2,3})?|11\\\\d{7})\",,,,\"8001234567\",,,[10,12,13]],[,,\"(?:8[89]8|900)\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"592(?:21[12]|461)\\\\d{4}\",,,,\"5922121234\",,,[10]],[,,\"850\\\\d{7}\",,,,\"8500123456\",,,[10]],\"TR\",90,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d)(\\\\d{3})\",\"$1 $2 $3\",[\"444\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",,1]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\n\"$1 $2 $3\",[\"80\"],\"0$1\",,1]],[,,\"512\\\\d{7}\",,,,\"5123456789\",,,[10]],,,[,,\"(?:444|811\\\\d{3})\\\\d{4}\",,,,,,,[7,10]],[,,\"444\\\\d{4}\",,,,\"4441444\",,,[7]],,,[,,,,,,,,,[-1]]],TT:[,[,,\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"868(?:2(?:0[13]|1[89]|[23]\\\\d|4[0-2])|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\\\d|7[0-79])|82[124])\\\\d{4}\",,,,\"8682211234\",,,,[7]],[,,\"868(?:(?:2[5-9]|3\\\\d)\\\\d|4(?:3[0-6]|[6-9]\\\\d)|6(?:20|78|8\\\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\\\d))\\\\d{4}\",,,,\"8682911234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",\n,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"TT\",1,\"011\",\"1\",,,\"1|([2-46-8]\\\\d{6})$\",\"868$1\",,,,,[,,,,,,,,,[-1]],,\"868\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"868619\\\\d{4}\",,,,\"8686191234\",,,,[7]]],TV:[,[,,\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",\n,,,,,,[5,6,7]],[,,\"2[02-9]\\\\d{3}\",,,,\"20123\",,,[5]],[,,\"(?:7[01]\\\\d|90)\\\\d{4}\",,,,\"901234\",,,[6,7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TV\",688,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TW:[,[,,\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",,,,,,,[7,8,9,10,11]],[,,\"(?:2[2-8]\\\\d|370|55[01]|7[1-9])\\\\d{6}|4(?:(?:0(?:0[1-9]|[2-48]\\\\d)|1[023]\\\\d)\\\\d{4,5}|(?:[239]\\\\d\\\\d|4(?:0[56]|12|49))\\\\d{5})|6(?:[01]\\\\d{7}|4(?:0[56]|12|24|4[09])\\\\d{4,5})|8(?:(?:2(?:3\\\\d|4[0-269]|[578]0|66)|36[24-9]|90\\\\d\\\\d)\\\\d{4}|4(?:0[56]|12|24|4[09])\\\\d{4,5})|(?:2(?:2(?:0\\\\d\\\\d|4(?:0[68]|[249]0|3[0-467]|5[0-25-9]|6[0235689]))|(?:3(?:[09]\\\\d|1[0-4])|(?:4\\\\d|5[0-49]|6[0-29]|7[0-5])\\\\d)\\\\d)|(?:(?:3[2-9]|5[2-8]|6[0-35-79]|8[7-9])\\\\d\\\\d|4(?:2(?:[089]\\\\d|7[1-9])|(?:3[0-4]|[78]\\\\d|9[01])\\\\d))\\\\d)\\\\d{3}\",\n,,,\"221234567\",,,[8,9]],[,,\"(?:40001[0-2]|9[0-8]\\\\d{4})\\\\d{3}\",,,,\"912345678\",,,[9]],[,,\"80[0-79]\\\\d{6}|800\\\\d{5}\",,,,\"800123456\",,,[8,9]],[,,\"20(?:[013-9]\\\\d\\\\d|2)\\\\d{4}\",,,,\"203123456\",,,[7,9]],[,,,,,,,,,[-1]],[,,\"99\\\\d{7}\",,,,\"990123456\",,,[9]],[,,\"7010(?:[0-2679]\\\\d|3[0-7]|8[0-5])\\\\d{5}|70\\\\d{8}\",,,,\"7012345678\",,,[10,11]],\"TW\",886,\"0(?:0[25-79]|19)\",\"0\",\"#\",,\"0\",,,,[[,\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"50[0-46-9]\\\\d{6}\",,,,\"500123456\",,,[9]],,,[,,,,,,,,,[-1]]],TZ:[,[,,\"(?:[26-8]\\\\d|41|90)\\\\d{7}\",,,,,,,[9]],[,,\"2[2-8]\\\\d{7}\",,,,\"222345678\"],[,,\"77[2-9]\\\\d{6}|(?:6[1-9]|7[1-689])\\\\d{7}\",,,,\"621234567\"],[,,\"80[08]\\\\d{6}\",,,,\"800123456\"],[,,\"90\\\\d{7}\",\n,,,\"900123456\"],[,,\"8(?:40|6[01])\\\\d{6}\",,,,\"840123456\"],[,,,,,,,,,[-1]],[,,\"41\\\\d{7}\",,,,\"412345678\"],\"TZ\",255,\"00[056]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"(?:8(?:[04]0|6[01])|90\\\\d)\\\\d{6}\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UA:[,[,,\"[89]\\\\d{9}|[3-9]\\\\d{8}\",,,,,,,[9,10],[5,6,7]],[,,\"(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\\\d{7}\",,,\n,\"311234567\",,,[9],[5,6,7]],[,,\"(?:50|6[36-8]|7[1-3]|9[1-9])\\\\d{7}\",,,,\"501234567\",,,[9]],[,,\"800[1-8]\\\\d{5,6}\",,,,\"800123456\"],[,,\"900[239]\\\\d{5,6}\",,,,\"900212345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"89[1-579]\\\\d{6}\",,,,\"891234567\",,,[9]],\"UA\",380,\"00\",\"0\",,,\"0\",,\"0~0\",,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",\n[\"4[45][0-5]|5(?:0|6[37])|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\",\"4[45][0-5]|5(?:0|6(?:3[14-7]|7))|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UG:[,[,,\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",,,,,,,[9],[5,6,7]],[,,\"20(?:(?:(?:24|81)0|30[67])\\\\d|6(?:00[0-2]|30[0-4]))\\\\d{3}|(?:20(?:[0147]\\\\d|2[5-9]|32|5[0-4]|6[15-9])|[34]\\\\d{3})\\\\d{5}\",\n,,,\"312345678\",,,,[5,6,7]],[,,\"726[01]\\\\d{5}|7(?:[0157-9]\\\\d|20|36|[46][0-4])\\\\d{6}\",,,,\"712345678\"],[,,\"800[1-3]\\\\d{5}\",,,,\"800123456\"],[,,\"90[1-3]\\\\d{6}\",,,,\"901123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UG\",256,\"00[057]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],US:[,[,,\"[2-9]\\\\d{9}\",\n,,,,,,[10],[7]],[,,\"5(?:05(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))|82(?:2(?:0[0-3]|[268]2)|3(?:0[02]|33)|4(?:00|4[24]|65|82)|5(?:00|29|83)|6(?:00|66|82)|777|8(?:00|88)|9(?:00|9[89])))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[39]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[0179]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01579]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\",\n,,,\"2015550123\",,,,[7]],[,,\"5(?:05(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))|82(?:2(?:0[0-3]|[268]2)|3(?:0[02]|33)|4(?:00|4[24]|65|82)|5(?:00|29|83)|6(?:00|66|82)|777|8(?:00|88)|9(?:00|9[89])))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[39]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[0179]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01579]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\",\n,,,\"2015550123\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"US\",1,\"011\",\"1\",,,\"1\",,,1,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",\n[\"[2-9]\"],,,1]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-9]\"]]],[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UY:[,[,,\"4\\\\d{9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",,,,,,,[7,8,10]],[,,\"(?:1(?:770|987)|(?:2\\\\d|4[2-7])\\\\d\\\\d)\\\\d{4}\",,,,\"21231234\",,,[8],[7]],[,,\"9[1-9]\\\\d{6}\",,,,\"94231234\",,,[8]],[,,\"(?:4\\\\d{5}|80[05])\\\\d{4}|405\\\\d{4}\",,,,\"8001234\",,,[7,10]],[,,\"90[0-8]\\\\d{4}\",,,,\"9001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UY\",598,\"0(?:0|1[3-9]\\\\d)\",\"0\",\n\" int. \",,\"0\",,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"405|8|90\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UZ:[,[,,\"(?:33|55|[679]\\\\d|88)\\\\d{7}\",,,,,,,[9]],[,,\"(?:6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\\\d\\\\d|7(?:[23]\\\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[124-6]|9[135-8])|(?:1[12]|8\\\\d)\\\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\\\d{5}\",\n,,,\"669050123\"],[,,\"(?:(?:33|88|9[0-57-9])\\\\d{3}|55(?:50[013]|90\\\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\\\d|61[23]|7(?:[01][017]|4\\\\d|55|9[5-9]))|2(?:(?:11|7\\\\d)\\\\d|2(?:[12]1|9[01379])|5(?:[126]\\\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\\\d)\\\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\\\d|4(?:56|83)|7(?:[07]\\\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\\\d|[39][07])|9(?:0\\\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\\\d|7[0-4])|(?:5[67]|7\\\\d)\\\\d|6(?:2[0-26]|8\\\\d)))|7(?:[07]\\\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\\\d|7(?:0\\\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\\\d|5(?:0[0-4]|5[579]|9\\\\d)|7(?:[0-3579]\\\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\\\d|9[5-9])|7(?:0\\\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\\\d))|5(?:112|2(?:0\\\\d|2[29]|[49]4)|3[1568]\\\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\\\d|41[179]|5(?:[349]\\\\d|5[0-2])|7(?:0[017]|[13]\\\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\\\d|60|7[2579]|87|9[07]))))\\\\d{4}\",\n,,,\"912345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UZ\",998,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[35-9]\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VA:[,[,,\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",,,,,,,[6,7,8,9,10,11,12]],[,,\"06698\\\\d{1,6}\",,,,\"0669812345\",,,[6,7,8,9,10,11]],[,,\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",,,,\"3123456789\",,,[9,10]],[,,\"80(?:0\\\\d{3}|3)\\\\d{3}\",\n,,,\"800123456\",,,[6,9]],[,,\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",,,,\"899123456\",,,[6,8,9,10]],[,,\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",,,,\"848123456\",,,[6,9]],[,,\"1(?:78\\\\d|99)\\\\d{6}\",,,,\"1781234567\",,,[9,10]],[,,\"55\\\\d{8}\",,,,\"5512345678\",,,[10]],\"VA\",39,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,\"06698\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"3[2-8]\\\\d{9,10}\",,,,\"33101234501\",,,[11,12]]],VC:[,[,,\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",,,,,,,[10],[7]],\n[,,\"784(?:266|3(?:6[6-9]|7\\\\d|8[0-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\\\d{4}\",,,,\"7842661234\",,,,[7]],[,,\"784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\\\d{4}\",,,,\"7844301234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VC\",1,\"011\",\"1\",,,\"1|([2-7]\\\\d{6})$\",\"784$1\",,,,,[,,,,,,,,,[-1]],,\"784\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VE:[,[,,\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",,,,,,,[10],[7]],[,,\"(?:2(?:12|3[457-9]|[467]\\\\d|[58][1-9]|9[1-6])|[4-6]00)\\\\d{7}\",,,,\"2121234567\",,,,[7]],[,,\"4(?:1[24-8]|2[46])\\\\d{7}\",,,,\"4121234567\"],[,,\"800\\\\d{7}\",,,,\"8001234567\"],[,,\"90[01]\\\\d{7}\",,,,\"9001234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"VE\",58,\"00\",\"0\",,,\"0\",,,,[[,\n\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\",\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"501\\\\d{7}\",,,,\"5010123456\",,,,[7]],,,[,,,,,,,,,[-1]]],VG:[,[,,\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"284496[0-5]\\\\d{3}|284(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\\\d{4}\",,,,\"2842291234\",,,,[7]],[,,\"284496[6-9]\\\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\\\d{4}\",,,,\"2843001234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",\n,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VG\",1,\"011\",\"1\",,,\"1|([2-578]\\\\d{6})$\",\"284$1\",,,,,[,,,,,,,,,[-1]],,\"284\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VI:[,[,,\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",,,,,,,[10],[7]],[,,\"340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\\\d)|884|998)\\\\d{4}\",\n,,,\"3406421234\",,,,[7]],[,,\"340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\\\d)|884|998)\\\\d{4}\",,,,\"3406421234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VI\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"340$1\",,1,,,[,,,,,,,,,[-1]],,\"340\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VN:[,[,,\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",,,,,,,[7,8,9,10]],[,,\"2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|8[2-79]|9[0-4679])\\\\d{7}\",,,,\"2101234567\",,,[10]],[,,\"(?:5(?:2[238]|59)|89[689]|99[013-9])\\\\d{6}|(?:3\\\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\\\d{7}\",,,,\"912345678\",,,[9]],[,,\"1800\\\\d{4,6}|12(?:0[13]|28)\\\\d{4}\",\n,,,\"1800123456\",,,[8,9,10]],[,,\"1900\\\\d{4,6}\",,,,\"1900123456\",,,[8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"672\\\\d{6}\",,,,\"672012345\",,,[9]],\"VN\",84,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[17]99\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"69\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],,,1],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"2[48]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",,1]],[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],,,1],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",,1]],[,,,,,,,,,[-1]],,,[,,\"[17]99\\\\d{4}|69\\\\d{5,6}\",,,,,,,[7,8]],[,,\"(?:[17]99|80\\\\d)\\\\d{4}|69\\\\d{5,6}\",\n,,,\"1992000\",,,[7,8]],,,[,,,,,,,,,[-1]]],VU:[,[,,\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",,,,,,,[5,7]],[,,\"(?:38[0-8]|48[4-9])\\\\d\\\\d|(?:2[02-9]|3[4-7]|88)\\\\d{3}\",,,,\"22123\",,,[5]],[,,\"(?:[58]\\\\d|7[013-7])\\\\d{5}\",,,,\"5912345\",,,[7]],[,,\"81[18]\\\\d\\\\d\",,,,\"81123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"9(?:0[1-9]|1[01])\\\\d{4}\",,,,\"9010123\",,,[7]],\"VU\",678,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:3[03]|900\\\\d)\\\\d{3}\",,,,\"30123\"],,\n,[,,,,,,,,,[-1]]],WF:[,[,,\"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\",,,,,,,[6,9]],[,,\"72\\\\d{4}\",,,,\"721234\",,,[6]],[,,\"(?:72|8[23])\\\\d{4}\",,,,\"821234\",,,[6]],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"WF\",681,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[478]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"[48]0\\\\d{4}\",,,,\"401234\",,,[6]]],WS:[,[,,\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",\n,,,,,,[5,6,7,10]],[,,\"6[1-9]\\\\d{3}|(?:[2-5]|60)\\\\d{4}\",,,,\"22123\",,,[5,6]],[,,\"(?:7[1-35-7]|8(?:[3-7]|9\\\\d{3}))\\\\d{5}\",,,,\"7212345\",,,[7,10]],[,,\"800\\\\d{3}\",,,,\"800123\",,,[6]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"WS\",685,\"0\",,,,,,,,[[,\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],XK:[,[,,\"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",,,,,,,[8,\n9]],[,,\"(?:2[89]|39)0\\\\d{6}|[23][89]\\\\d{6}\",,,,\"28012345\"],[,,\"4[3-9]\\\\d{6}\",,,,\"43201234\",,,[8]],[,,\"800\\\\d{5}\",,,,\"80001234\",,,[8]],[,,\"900\\\\d{5}\",,,,\"90001234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"XK\",383,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],YE:[,[,,\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",\n,,,,,,[7,8,9],[6]],[,,\"78[0-7]\\\\d{4}|17\\\\d{6}|(?:[12][2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-6])\\\\d{5}\",,,,\"1234567\",,,[7,8],[6]],[,,\"7[0137]\\\\d{7}\",,,,\"712345678\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"YE\",967,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],YT:[,[,,\"80\\\\d{7}|(?:26|63)9\\\\d{6}\",\n,,,,,,[9]],[,,\"269(?:0[67]|5[0-3]|6\\\\d|[78]0)\\\\d{4}\",,,,\"269601234\"],[,,\"639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])\\\\d{4}\",,,,\"639012345\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"YT\",262,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,\"269|63\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ZA:[,[,,\"[1-79]\\\\d{8}|8\\\\d{4,9}\",,,,,,,[5,6,7,8,9,10]],[,,\"(?:2(?:0330|4302)|52087)0\\\\d{3}|(?:1[0-8]|2[1-378]|3[1-69]|4\\\\d|5[1346-8])\\\\d{7}\",,,,\"101234567\",\n,,[9]],[,,\"(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\\\d{3}|8[1-4]\\\\d{3,7}|(?:2[27]|47|54)4950\\\\d{3}|(?:1(?:049[2-4]|9[12]\\\\d\\\\d)|(?:6\\\\d|7[0-46-9])\\\\d{3}|8(?:5\\\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\\\d{3}|(?:12|[2-5]1)492\\\\d{4}\",,,,\"711234567\",,,[5,6,7,8,9]],[,,\"80\\\\d{7}\",,,,\"801234567\",,,[9]],[,,\"(?:86[2-9]|9[0-2]\\\\d)\\\\d{6}\",,,,\"862345678\",,,[9]],[,,\"860\\\\d{6}\",,,,\"860123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"87(?:08[0-589]|15[0-79]|28[0-4]|31[1-9])\\\\d{4}|87(?:[02][0-79]|1[0-46-9]|3[02-9]|[4-9]\\\\d)\\\\d{5}\",\n,,,\"871234567\",,,[9]],\"ZA\",27,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"861\\\\d{6,7}\",,,,\"861123456\",,,[9,10]],,,[,,,,,,,,,[-1]]],ZM:[,[,,\"800\\\\d{6}|(?:21|63|[79]\\\\d)\\\\d{7}\",,,,,,,[9],[6]],[,,\"21[1-8]\\\\d{6}\",,,,\n\"211234567\",,,,[6]],[,,\"(?:7[679]|9[5-8])\\\\d{7}\",,,,\"955123456\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"63\\\\d{7}\",,,,\"630123456\"],\"ZM\",260,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[1-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,\n,,,,,,,,[-1]]],ZW:[,[,,\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",,,,,,,[5,6,7,8,9,10],[3,4]],[,,\"(?:1(?:(?:3\\\\d|9)\\\\d|[4-8])|2(?:(?:(?:0(?:2[014]|5)|(?:2[0157]|31|84|9)\\\\d\\\\d|[56](?:[14]\\\\d\\\\d|20)|7(?:[089]|2[03]|[35]\\\\d\\\\d))\\\\d|4(?:2\\\\d\\\\d|8))\\\\d|1(?:2|[39]\\\\d{4}))|3(?:(?:123|(?:29\\\\d|92)\\\\d)\\\\d\\\\d|7(?:[19]|[56]\\\\d))|5(?:0|1[2-478]|26|[37]2|4(?:2\\\\d{3}|83)|5(?:25\\\\d\\\\d|[78])|[689]\\\\d)|6(?:(?:[16-8]21|28|52[013])\\\\d\\\\d|[39])|8(?:[1349]28|523)\\\\d\\\\d)\\\\d{3}|(?:4\\\\d\\\\d|9[2-9])\\\\d{4,5}|(?:(?:2(?:(?:(?:0|8[146])\\\\d|7[1-7])\\\\d|2(?:[278]\\\\d|92)|58(?:2\\\\d|3))|3(?:[26]|9\\\\d{3})|5(?:4\\\\d|5)\\\\d\\\\d)\\\\d|6(?:(?:(?:[0-246]|[78]\\\\d)\\\\d|37)\\\\d|5[2-8]))\\\\d\\\\d|(?:2(?:[569]\\\\d|8[2-57-9])|3(?:[013-59]\\\\d|8[37])|6[89]8)\\\\d{3}\",\n,,,\"1312345\",,,,[3,4]],[,,\"7(?:[178]\\\\d|3[1-9])\\\\d{6}\",,,,\"712345678\",,,[9]],[,,\"80(?:[01]\\\\d|20|8[0-8])\\\\d{3}\",,,,\"8001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"86(?:1[12]|22|30|44|55|77|8[368])\\\\d{6}\",,,,\"8686123456\",,,[10]],\"ZW\",263,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],\n[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],800:[,[,,\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\",,,,\"12345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",800,,,,,,,,1,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],,,[,,,,,,,,,[-1]]],808:[,[,,\"[1-9]\\\\d{7}\",,,,,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"[1-9]\\\\d{7}\",,,,\"12345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",808,,,,,,,,1,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],870:[,[,,\"7\\\\d{11}|[35-7]\\\\d{8}\",,,,,,,[9,12]],[,,,,,,,,,[-1]],[,,\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\",,,,\"301234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,\n[-1]],[,,,,,,,,,[-1]],\"001\",870,,,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],878:[,[,,\"10\\\\d{10}\",,,,,,,[12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"10\\\\d{10}\",,,,\"101234567890\"],\"001\",878,,,,,,,,1,[[,\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],881:[,[,,\"[0-36-9]\\\\d{8}\",,,,,,,[9]],\n[,,,,,,,,,[-1]],[,,\"[0-36-9]\\\\d{8}\",,,,\"612345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",881,,,,,,,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-36-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],882:[,[,,\"[13]\\\\d{6}(?:\\\\d{2,5})?|285\\\\d{9}|(?:[19]\\\\d|49)\\\\d{6}\",,,,,,,[7,8,9,10,11,12]],[,,,,,,,,,[-1]],[,,\"342\\\\d{4}|(?:337|49)\\\\d{6}|3(?:2|47|7\\\\d{3})\\\\d{7}\",,,,\"3421234\",,,[7,8,9,10,12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,\n,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:(?:285\\\\d\\\\d|3(?:45|[69]\\\\d{3}))\\\\d|9[89])\\\\d{6}\",,,,\"390123456789\"],\"001\",882,,,,,,,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"4\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34[57]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"34\"]],[,\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-3]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"348[57]\\\\d{7}\",,,,\"34851234567\",,,[11]]],883:[,[,,\"(?:210|370\\\\d\\\\d)\\\\d{7}|51\\\\d{7}(?:\\\\d{3})?\",,,,,,,[9,10,12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:210|(?:370[1-9]|51[013]0)\\\\d)\\\\d{7}|5100\\\\d{5}\",,,,\"510012345\"],\"001\",883,,,,,,,,1,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"2\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[35]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],888:[,[,,\"\\\\d{11}\",,,,,,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",888,,,,,,,,1,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"\\\\d{11}\",,,,\"12345678901\"],,,[,,,,,,,,,[-1]]],979:[,[,,\n\"[1359]\\\\d{8}\",,,,,,,[9],[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"[1359]\\\\d{8}\",,,,\"123456789\",,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",979,,,,,,,,1,[[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]]};/*\n\n Copyright (C) 2010 The Libphonenumber Authors.\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*/\nfunction K(){this.g={}}K.i=void 0;K.g=function(){return K.i?K.i:K.i=new K};\nvar wa={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",\"\\uff10\":\"0\",\"\\uff11\":\"1\",\"\\uff12\":\"2\",\"\\uff13\":\"3\",\"\\uff14\":\"4\",\"\\uff15\":\"5\",\"\\uff16\":\"6\",\"\\uff17\":\"7\",\"\\uff18\":\"8\",\"\\uff19\":\"9\",\"\\u0660\":\"0\",\"\\u0661\":\"1\",\"\\u0662\":\"2\",\"\\u0663\":\"3\",\"\\u0664\":\"4\",\"\\u0665\":\"5\",\"\\u0666\":\"6\",\"\\u0667\":\"7\",\"\\u0668\":\"8\",\"\\u0669\":\"9\",\"\\u06f0\":\"0\",\"\\u06f1\":\"1\",\"\\u06f2\":\"2\",\"\\u06f3\":\"3\",\"\\u06f4\":\"4\",\"\\u06f5\":\"5\",\"\\u06f6\":\"6\",\"\\u06f7\":\"7\",\"\\u06f8\":\"8\",\"\\u06f9\":\"9\"},xa={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",\n7:\"7\",8:\"8\",9:\"9\",\"\\uff10\":\"0\",\"\\uff11\":\"1\",\"\\uff12\":\"2\",\"\\uff13\":\"3\",\"\\uff14\":\"4\",\"\\uff15\":\"5\",\"\\uff16\":\"6\",\"\\uff17\":\"7\",\"\\uff18\":\"8\",\"\\uff19\":\"9\",\"\\u0660\":\"0\",\"\\u0661\":\"1\",\"\\u0662\":\"2\",\"\\u0663\":\"3\",\"\\u0664\":\"4\",\"\\u0665\":\"5\",\"\\u0666\":\"6\",\"\\u0667\":\"7\",\"\\u0668\":\"8\",\"\\u0669\":\"9\",\"\\u06f0\":\"0\",\"\\u06f1\":\"1\",\"\\u06f2\":\"2\",\"\\u06f3\":\"3\",\"\\u06f4\":\"4\",\"\\u06f5\":\"5\",\"\\u06f6\":\"6\",\"\\u06f7\":\"7\",\"\\u06f8\":\"8\",\"\\u06f9\":\"9\",A:\"2\",B:\"2\",C:\"2\",D:\"3\",E:\"3\",F:\"3\",G:\"4\",H:\"4\",I:\"4\",J:\"5\",K:\"5\",L:\"5\",M:\"6\",N:\"6\",O:\"6\",P:\"7\",\nQ:\"7\",R:\"7\",S:\"7\",T:\"8\",U:\"8\",V:\"8\",W:\"9\",X:\"9\",Y:\"9\",Z:\"9\"},L=/^[+\\uff0b]+/,ya=/([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9])/,za=/[+\\uff0b0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]/,Aa=/[\\\\\\/] *x/,Ba=/[^0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9A-Za-z#]+$/,Ca=/(?:.*?[A-Za-z]){3}.*/;function N(a){return\"([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,\"+a+\"})\"}\nfunction Da(){return\";ext=\"+N(\"20\")+\"|[ \\u00a0\\\\t,]*(?:e?xt(?:ensi(?:o\\u0301?|\\u00f3))?n?|\\uff45?\\uff58\\uff54\\uff4e?|\\u0434\\u043e\\u0431|anexo)[:\\\\.\\uff0e]?[ \\u00a0\\\\t,-]*\"+(N(\"20\")+\"#?|[ \\u00a0\\\\t,]*(?:[x\\uff58#\\uff03~\\uff5e]|int|\\uff49\\uff4e\\uff54)[:\\\\.\\uff0e]?[ \\u00a0\\\\t,-]*\")+(N(\"9\")+\"#?|[- ]+\")+(N(\"6\")+\"#|[ \\u00a0\\\\t]*(?:,{2}|;)[:\\\\.\\uff0e]?[ \\u00a0\\\\t,-]*\")+(N(\"15\")+\"#?|[ \\u00a0\\\\t]*(?:,)+[:\\\\.\\uff0e]?[ \\u00a0\\\\t,-]*\")+(N(\"9\")+\"#?\")}\nvar Ea=new RegExp(\"(?:\"+Da()+\")$\",\"i\"),Fa=new RegExp(\"^[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{2}$|^[+\\uff0b]*(?:[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\\\[\\\\]/~\\u2053\\u223c\\uff5e*]*[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]){3,}[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\\\[\\\\]/~\\u2053\\u223c\\uff5e*A-Za-z0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]*(?:\"+Da()+\")?$\",\"i\"),Ga=/(\\$\\d)/;\nfunction Ha(a){return 2>a.length?!1:O(Fa,a)}function Ia(a){return O(Ca,a)?P(a,xa):P(a,wa)}function Ja(a){var b=Ia(a.toString());a.i=\"\";a.g(b)}function Ka(a){return null!=a&&(1!=x(a,9)||-1!=u(a,9)[0])}function P(a,b){for(var c=new E,d,e=a.length,g=0;g<e;++g)d=a.charAt(g),d=b[d.toUpperCase()],null!=d&&c.g(d);return c.toString()}function Q(a){return null!=a&&isNaN(a)&&a.toUpperCase()in va}\nfunction La(a,b,c){if(0==p(b,2)&&null!=b.g[5]){var d=w(b,5);if(0<d.length)return d}d=w(b,1);var e=R(b);if(0==c)return Ma(d,0,e,\"\");if(!(d in J))return e;a=S(a,d,T(d));b=null!=b.g[3]&&0!=p(b,3).length?3==c?\";ext=\"+p(b,3):null!=a.g[13]?p(a,13)+w(b,3):\" ext. \"+w(b,3):\"\";a:{a=0==u(a,20).length||2==c?u(a,19):u(a,20);for(var g,f=a.length,h=0;h<f;++h){g=a[h];var l=x(g,3);if(0==l||0==e.search(p(g,3,l-1)))if(l=new RegExp(p(g,1)),O(l,e)){a=g;break a}}a=null}null!=a&&(f=a,a=w(f,2),g=new RegExp(p(f,1)),w(f,5),\nf=w(f,4),e=2==c&&null!=f&&0<f.length?e.replace(g,a.replace(Ga,f)):e.replace(g,a),3==c&&(e=e.replace(/^[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\[\\]/~\\u2053\\u223c\\uff5e]+/,\"\"),e=e.replace(/[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\[\\]/~\\u2053\\u223c\\uff5e]+/g,\"-\")));return Ma(d,c,e,b)}function S(a,b,c){return\"001\"==c?U(a,\"\"+b):U(a,c)}\nfunction R(a){if(null==a.g[2])return\"\";var b=\"\"+p(a,2);return null!=a.g[4]&&p(a,4)&&0<w(a,8)?Array(w(a,8)+1).join(\"0\")+b:b}function Ma(a,b,c,d){switch(b){case 0:return\"+\"+a+c+d;case 1:return\"+\"+a+\" \"+c+d;case 3:return\"tel:+\"+a+\"-\"+c+d;default:return c+d}}\nfunction V(a,b){switch(b){case 4:return p(a,5);case 3:return p(a,4);case 1:return p(a,3);case 0:case 2:return p(a,2);case 5:return p(a,6);case 6:return p(a,8);case 7:return p(a,7);case 8:return p(a,21);case 9:return p(a,25);case 10:return p(a,28);default:return p(a,1)}}function W(a,b){return X(a,p(b,1))?X(a,p(b,5))?4:X(a,p(b,4))?3:X(a,p(b,6))?5:X(a,p(b,8))?6:X(a,p(b,7))?7:X(a,p(b,21))?8:X(a,p(b,25))?9:X(a,p(b,28))?10:X(a,p(b,2))?p(b,18)||X(a,p(b,3))?2:0:!p(b,18)&&X(a,p(b,3))?1:-1:-1}\nfunction U(a,b){if(null==b)return null;b=b.toUpperCase();var c=a.g[b];if(null==c){c=va[b];if(null==c)return null;c=(new D).g(H.j(),c);a.g[b]=c}return c}function X(a,b){var c=a.length;return 0<x(b,9)&&-1==u(b,9).indexOf(c)?!1:O(w(b,2),a)}\nfunction Na(a,b){if(null==b)return null;var c=w(b,1);c=J[c];if(null==c)a=null;else if(1==c.length)a=c[0];else a:{b=R(b);for(var d,e=c.length,g=0;g<e;g++){d=c[g];var f=U(a,d);if(null!=f.g[23]){if(0==b.search(p(f,23))){a=d;break a}}else if(-1!=W(b,f)){a=d;break a}}a=null}return a}function T(a){a=J[a];return null==a?\"ZZ\":a[0]}\nfunction Y(a,b,c,d){var e=V(c,d),g=0==x(e,9)?u(p(c,1),9):u(e,9);e=u(e,10);if(2==d)if(Ka(V(c,0)))a=V(c,1),Ka(a)&&(g=g.concat(0==x(a,9)?u(p(c,1),9):u(a,9)),g.sort(),0==e.length?e=u(a,10):(e=e.concat(u(a,10)),e.sort()));else return Y(a,b,c,1);if(-1==g[0])return 5;b=b.length;if(-1<e.indexOf(b))return 4;c=g[0];return c==b?0:c>b?2:g[g.length-1]<b?3:-1<g.indexOf(b,1)?0:5}function Oa(a,b){var c=R(b);b=w(b,1);if(!(b in J))return 1;b=S(a,b,T(b));return Y(a,c,b,-1)}\nfunction Pa(a,b,c,d,e,g){if(0==b.length)return 0;b=new E(b);var f;null!=c&&(f=p(c,11));null==f&&(f=\"NonMatch\");var h=b.toString();if(0==h.length)f=20;else if(L.test(h))h=h.replace(L,\"\"),b.i=\"\",b.g(Ia(h)),f=1;else{h=new RegExp(f);Ja(b);f=b.toString();if(0==f.search(h)){h=f.match(h)[0].length;var l=f.substring(h).match(ya);l&&null!=l[1]&&0<l[1].length&&\"0\"==P(l[1],wa)?f=!1:(b.i=\"\",b.g(f.substring(h)),f=!0)}else f=!1;f=f?5:20}e&&q(g,6,f);if(20!=f){if(2>=b.i.length)throw Error(\"Phone number too short after IDD\");\na:{a=b.toString();if(0!=a.length&&\"0\"!=a.charAt(0))for(e=a.length,b=1;3>=b&&b<=e;++b)if(c=parseInt(a.substring(0,b),10),c in J){d.g(a.substring(b));d=c;break a}d=0}if(0!=d)return q(g,1,d),d;throw Error(\"Invalid country calling code\");}if(null!=c&&(f=w(c,10),h=\"\"+f,l=b.toString(),0==l.lastIndexOf(h,0)&&(h=new E(l.substring(h.length)),l=p(c,1),l=new RegExp(w(l,2)),Qa(h,c,null),h=h.toString(),!O(l,b.toString())&&O(l,h)||3==Y(a,b.toString(),c,-1))))return d.g(h),e&&q(g,6,10),q(g,1,f),f;q(g,1,0);return 0}\nfunction Qa(a,b,c){var d=a.toString(),e=d.length,g=p(b,15);if(0!=e&&null!=g&&0!=g.length){var f=new RegExp(\"^(?:\"+g+\")\");if(e=f.exec(d)){g=new RegExp(w(p(b,1),2));var h=O(g,d),l=e.length-1;b=p(b,16);if(null==b||0==b.length||null==e[l]||0==e[l].length){if(!h||O(g,d.substring(e[0].length)))null!=c&&0<l&&null!=e[l]&&c.g(e[1]),a.set(d.substring(e[0].length))}else if(d=d.replace(f,b),!h||O(g,d))null!=c&&0<l&&c.g(e[1]),a.set(d)}}}\nfunction Z(a,b,c){if(!Q(c)&&0<b.length&&\"+\"!=b.charAt(0))throw Error(\"Invalid country calling code\");return Ra(a,b,c,!0)}\nfunction Ra(a,b,c,d){if(null==b)throw Error(\"The string supplied did not seem to be a phone number\");if(250<b.length)throw Error(\"The string supplied is too long to be a phone number\");var e=new E,g=b.indexOf(\";phone-context=\");if(0<=g){var f=g+15;if(\"+\"==b.charAt(f)){var h=b.indexOf(\";\",f);0<h?e.g(b.substring(f,h)):e.g(b.substring(f))}f=b.indexOf(\"tel:\");e.g(b.substring(0<=f?f+4:0,g))}else g=e.g,f=b.search(za),0<=f?(f=b.substring(f),f=f.replace(Ba,\"\"),h=f.search(Aa),0<=h&&(f=f.substring(0,h))):f=\n\"\",g.call(e,f);g=e.toString();f=g.indexOf(\";isub=\");0<f&&(e.i=\"\",e.g(g.substring(0,f)));if(!Ha(e.toString()))throw Error(\"The string supplied did not seem to be a phone number\");g=e.toString();if(!(Q(c)||null!=g&&0<g.length&&L.test(g)))throw Error(\"Invalid country calling code\");g=new I;d&&q(g,5,b);a:{b=e.toString();f=b.search(Ea);if(0<=f&&Ha(b.substring(0,f))){h=b.match(Ea);for(var l=h.length,z=1;z<l;++z)if(null!=h[z]&&0<h[z].length){e.i=\"\";e.g(b.substring(0,f));b=h[z];break a}}b=\"\"}0<b.length&&\nq(g,3,b);f=U(a,c);b=new E;h=0;l=e.toString();try{h=Pa(a,l,f,b,d,g)}catch(M){if(\"Invalid country calling code\"==M.message&&L.test(l)){if(l=l.replace(L,\"\"),h=Pa(a,l,f,b,d,g),0==h)throw M;}else throw M;}0!=h?(e=T(h),e!=c&&(f=S(a,h,e))):(Ja(e),b.g(e.toString()),null!=c?(h=w(f,10),q(g,1,h)):d&&(delete g.g[6],g.i&&delete g.i[6]));if(2>b.i.length)throw Error(\"The string supplied is too short to be a phone number\");null!=f&&(c=new E,e=new E(b.toString()),Qa(e,f,c),a=Y(a,e.toString(),f,-1),2!=a&&4!=a&&5!=\na&&(b=e,d&&0<c.toString().length&&q(g,7,c.toString())));d=b.toString();a=d.length;if(2>a)throw Error(\"The string supplied is too short to be a phone number\");if(17<a)throw Error(\"The string supplied is too long to be a phone number\");if(1<d.length&&\"0\"==d.charAt(0)){q(g,4,!0);for(a=1;a<d.length-1&&\"0\"==d.charAt(a);)a++;1!=a&&q(g,8,a)}q(g,2,parseInt(d,10));return g}function O(a,b){return(a=\"string\"==typeof a?b.match(\"^(?:\"+a+\")$\"):b.match(a))&&a[0].length==b.length?!0:!1};k(\"intlTelInputUtils\",{});k(\"intlTelInputUtils.formatNumber\",function(a,b,c){try{var d=K.g(),e=Z(d,a,b),g=Oa(d,e);return 0==g||4==g?La(d,e,\"undefined\"==typeof c?0:c):a}catch(f){return a}});k(\"intlTelInputUtils.getExampleNumber\",function(a,b,c){try{var d=K.g();a:{if(Q(a)){var e=V(U(d,a),c);try{if(null!=e.g[6]){var g=p(e,6);var f=Ra(d,g,a,!1);break a}}catch(h){}}f=null}return La(d,f,b?2:1)}catch(h){return\"\"}});k(\"intlTelInputUtils.getExtension\",function(a,b){try{return p(Z(K.g(),a,b),3)}catch(c){return\"\"}});\nk(\"intlTelInputUtils.getNumberType\",function(a,b){try{var c=K.g();var d=Z(c,a,b),e=Na(c,d),g=S(c,w(d,1),e);if(null==g)var f=-1;else{var h=R(d);f=W(h,g)}return f}catch(l){return-99}});\nk(\"intlTelInputUtils.getValidationError\",function(a,b){try{var c=K.g(),d=Z(c,a,b);return Oa(c,d)}catch(e){return\"Invalid country calling code\"==e.message?1:\"Phone number too short after IDD\"==e.message||\"The string supplied is too short to be a phone number\"==e.message?2:\"The string supplied is too long to be a phone number\"==e.message?3:-99}});\nk(\"intlTelInputUtils.isValidNumber\",function(a,b){try{var c=K.g(),d=Z(c,a,b);var e=Na(c,d),g=w(d,1),f=S(c,g,e),h;if(!(h=null==f)){var l;if(l=\"001\"!=e){var z=U(c,e);if(null==z)throw Error(\"Invalid region code: \"+e);var M=w(z,10);l=g!=M}h=l}if(h)var ua=!1;else{var Sa=R(d);ua=-1!=W(Sa,f)}return ua}catch(Ta){return!1}});k(\"intlTelInputUtils.numberFormat\",{E164:0,INTERNATIONAL:1,NATIONAL:2,RFC3966:3});\nk(\"intlTelInputUtils.numberType\",{FIXED_LINE:0,MOBILE:1,FIXED_LINE_OR_MOBILE:2,TOLL_FREE:3,PREMIUM_RATE:4,SHARED_COST:5,VOIP:6,PERSONAL_NUMBER:7,PAGER:8,UAN:9,VOICEMAIL:10,UNKNOWN:-1});k(\"intlTelInputUtils.validationError\",{IS_POSSIBLE:0,INVALID_COUNTRY_CODE:1,TOO_SHORT:2,TOO_LONG:3,IS_POSSIBLE_LOCAL_ONLY:4,INVALID_LENGTH:5});})();\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2022 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[1];\n let keyFilter = matches[2];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[3]),\n eventName,\n eventOptions: matches[6] ? parseEventOptions(matches[6]) : {},\n identifier: matches[4],\n methodName: matches[5],\n keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n isFilterTarget(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filteres = this.keyFilter.split(\"+\");\n const modifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n const [meta, ctrl, alt, shift] = modifiers.map((modifier) => filteres.includes(modifier));\n if (event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift) {\n return true;\n }\n const standardFilter = filteres.filter((key) => !modifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(event)) {\n this.invokeWithEvent(event);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n const { params } = this.action;\n const actionEvent = Object.assign(event, { params });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.isFilterTarget(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(node, attributeName) {\n const element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details = {}) {\n this.selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const matches = element.matches(this.selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n elementMatched(element) {\n this.selectorMatched(element);\n }\n elementUnmatched(element) {\n this.selectorUnmatched(element);\n }\n elementAttributeChanged(element, _attributeName) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(this.selector, element);\n if (!matches && matchedBefore) {\n this.selectorUnmatched(element);\n }\n }\n selectorMatched(element) {\n if (this.delegate.selectorMatched) {\n this.delegate.selectorMatched(element, this.selector, this.details);\n this.matchesByElement.add(this.selector, element);\n }\n }\n selectorUnmatched(element) {\n this.delegate.selectorUnmatched(element, this.selector, this.details);\n this.matchesByElement.delete(this.selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n }\n start() {\n if (this.selectorObserverMap.size === 0) {\n this.outletDefinitions.forEach((outletName) => {\n const selector = this.selector(outletName);\n const details = { outletName };\n if (selector) {\n this.selectorObserverMap.set(outletName, new SelectorObserver(document.body, selector, this, details));\n }\n });\n this.selectorObserverMap.forEach((observer) => observer.start());\n }\n this.dependentContexts.forEach((context) => context.refresh());\n }\n stop() {\n if (this.selectorObserverMap.size > 0) {\n this.disconnectAllOutlets();\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n return (this.hasOutlet(element, outletName) &&\n element.matches(`[${this.context.application.schema.controllerAttribute}~=${outletName}]`));\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad(definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n const outletController = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (outletController) {\n return outletController;\n }\n else {\n throw new Error(`Missing \"data-controller=${name}\" attribute on outlet element for \"${this.identifier}\" controller`);\n }\n }\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outlet) => {\n const controller = this.application.getControllerForElementAndIdentifier(outlet, name);\n if (controller) {\n return controller;\n }\n else {\n console.warn(`The provided outlet element is missing the outlet controller \"${name}\" for \"${this.identifier}\"`, outlet);\n }\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outlet = this.outlets.find(name);\n if (outlet) {\n return outlet;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const typeFromObject = parseValueTypeConstant(payload.typeObject.type);\n if (!typeFromObject)\n return;\n const defaultValueType = parseValueTypeDefault(payload.typeObject.default);\n if (typeFromObject !== defaultValueType) {\n const propertyPath = payload.controller ? `${payload.controller}.${payload.token}` : payload.token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${payload.typeObject.default}\" is of type \"${defaultValueType}\".`);\n }\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const typeFromObject = parseValueTypeObject({\n controller: payload.controller,\n token: payload.token,\n typeObject: payload.typeDefinition,\n });\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeDefinition);\n const typeFromConstant = parseValueTypeConstant(payload.typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = payload.controller ? `${payload.controller}.${payload.typeDefinition}` : payload.token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${payload.token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const defaultValue = typeDefinition.default;\n if (defaultValue !== undefined)\n return defaultValue;\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const key = `${dasherize(payload.token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(payload.typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(payload.typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value);\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Application } from '@hotwired/stimulus'\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = window.location.protocol === 'http:'\nwindow.Stimulus = application\n\nexport { application }\n", "/* global Turbo */\n/**\n * Does a get request using the fetch api\n *\n * @param {string} path - the path to the resource\n * @return {Promise} - a promise that resolves to the response\n * @example\n * get('/api/v1/users').then(response => response.json())\n */\nexport function get(path) {\n return fetch(path, {\n method: 'GET',\n headers: {\n 'X-CSRF-Token': getCsrfToken(),\n 'Content-Type': 'application/json',\n },\n })\n}\n\nexport function getStream(path) {\n return fetch(path, {\n method: 'GET',\n headers: {\n 'X-CSRF-Token': getCsrfToken(),\n 'Content-Type': 'application/json',\n Accept: 'text/vnd.turbo-stream.html',\n },\n })\n .then((r) => r.text())\n .then((html) => Turbo.renderStreamMessage(html))\n}\n\n/**\n * Does a a put request using the fetch api\n *\n * @param {string} path - the path to the resource\n * @param {Object} body - the body of the request\n * @returns {Promise} - a promise that resolves to the response\n * @example\n * put('/api/v1/users', { name: 'John' })\n */\nexport function put(path, body) {\n return fetch(path, {\n method: 'PUT',\n body: JSON.stringify(body),\n headers: {\n 'X-CSRF-Token': getCsrfToken(),\n 'Content-Type': 'application/json',\n },\n })\n}\n\n/**\n * Does a post request using the fetch api\n *\n * @param {string} path\n * @param {Object} body\n * @returns\n * @example\n * post('/api/v1/users', { name: 'John' })\n */\nexport function post(path, body) {\n return fetch(path, {\n method: 'POST',\n body: JSON.stringify(body),\n headers: {\n 'X-CSRF-Token': getCsrfToken(),\n 'Content-Type': 'application/json',\n },\n })\n}\n\nexport function postStream(path, body) {\n return fetch(path, {\n method: 'POST',\n body: JSON.stringify(body),\n headers: {\n 'X-CSRF-Token': getCsrfToken(),\n 'Content-Type': 'application/json',\n Accept: 'text/vnd.turbo-stream.html',\n },\n })\n}\n\n/**\n * Does a delete request using the fetch api\n *\n * @param {string} path - the path to the resource\n * @returns\n * @example\n * destroy('/api/v1/users/1')\n */\nexport function destroy(path) {\n return fetch(path, {\n method: 'DELETE',\n headers: {\n 'X-CSRF-Token': getCsrfToken(),\n },\n })\n}\n\n/**\n * A utility function to get the csrf token from the meta tag\n *\n * @returns {string} - the csrf token\n * @example\n * getCsrfToken()\n */\nexport function getCsrfToken() {\n return document.querySelector('meta[name=\"csrf-token\"]')?.content\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { getStream } from '../helpers/fetch_helper'\n\nexport default class ApplicationController extends Controller {\n clickOn({ params: { selector } }) {\n this.element.querySelector(selector)?.click()\n }\n\n setFrame({ params: { frame, src } }) {\n const frameElement = document.querySelector(`#${frame}`)\n if (!frameElement) return\n\n frameElement.src = src\n }\n\n refreshClosestFrame({ target }) {\n target.closest('turbo-frame')?.reload()\n }\n\n refreshFormFrame({ target, params: { url } }) {\n const params = new URLSearchParams(new FormData(target.form))\n params.delete('utf8')\n params.delete('_method')\n params.delete('authenticity_token')\n\n const src = `${url}?${params.toString()}`\n\n window.Turbo.visit(src, { frame: target.closest('turbo-frame').id })\n }\n\n flushAlerts() {\n getStream('/flush_notifications')\n }\n\n resetAlerts() {\n this.alertsFrame.innerHTML = ''\n }\n\n preventDefault(event) {\n event.preventDefault()\n }\n\n submitClosestForm({ currentTarget }) {\n currentTarget.closest('form')?.requestSubmit()\n }\n\n resetClosestForm({ currentTarget }) {\n const form = currentTarget.closest('form')\n\n if (!form) return\n\n form.reset()\n form.querySelectorAll('input[type=\"hidden\"]').forEach((input) => (input.value = null))\n form.requestSubmit()\n }\n\n get alertsFrame() {\n return document.querySelector('#global-alerts')\n }\n\n get currentURL() {\n return new URL(window.location.href)\n }\n\n ///\n /// private\n ///\n\n modifyQueryStringInline(key, value) {\n const url = new URL(window.location.href)\n const params = new URLSearchParams(url.search)\n\n if (value) {\n params.set(key, value)\n } else {\n params.delete(key)\n }\n\n url.search = params.toString()\n\n window.history.replaceState({}, '', url.toString())\n }\n\n clearDataAttributes(element) {\n for (const attribute of element.getAttributeNames()) {\n if (attribute.startsWith('data-')) {\n element.removeAttribute(attribute)\n }\n }\n }\n\n waitForAnimations(element, callback) {\n return Promise.all(element.getAnimations().map((animation) => animation.finished)).then(callback)\n }\n\n vibrate(duration) {\n if (navigator.vibrate) {\n navigator.vibrate(duration)\n }\n }\n\n focus(element) {\n if (!element) return\n\n document.activeElement.blur()\n element.focus()\n }\n}\n", "/*!\n * hotkeys-js v3.8.7\n * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies.\n * \n * Copyright (c) 2021 kenny wong <wowohoo@qq.com>\n * http://jaywcjlove.github.io/hotkeys\n * \n * Licensed under the MIT license.\n */\n\nvar isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false; // \u7ED1\u5B9A\u4E8B\u4EF6\n\nfunction addEvent(object, event, method) {\n if (object.addEventListener) {\n object.addEventListener(event, method, false);\n } else if (object.attachEvent) {\n object.attachEvent(\"on\".concat(event), function () {\n method(window.event);\n });\n }\n} // \u4FEE\u9970\u952E\u8F6C\u6362\u6210\u5BF9\u5E94\u7684\u952E\u7801\n\n\nfunction getMods(modifier, key) {\n var mods = key.slice(0, key.length - 1);\n\n for (var i = 0; i < mods.length; i++) {\n mods[i] = modifier[mods[i].toLowerCase()];\n }\n\n return mods;\n} // \u5904\u7406\u4F20\u7684key\u5B57\u7B26\u4E32\u8F6C\u6362\u6210\u6570\u7EC4\n\n\nfunction getKeys(key) {\n if (typeof key !== 'string') key = '';\n key = key.replace(/\\s/g, ''); // \u5339\u914D\u4EFB\u4F55\u7A7A\u767D\u5B57\u7B26,\u5305\u62EC\u7A7A\u683C\u3001\u5236\u8868\u7B26\u3001\u6362\u9875\u7B26\u7B49\u7B49\n\n var keys = key.split(','); // \u540C\u65F6\u8BBE\u7F6E\u591A\u4E2A\u5FEB\u6377\u952E\uFF0C\u4EE5','\u5206\u5272\n\n var index = keys.lastIndexOf(''); // \u5FEB\u6377\u952E\u53EF\u80FD\u5305\u542B','\uFF0C\u9700\u7279\u6B8A\u5904\u7406\n\n for (; index >= 0;) {\n keys[index - 1] += ',';\n keys.splice(index, 1);\n index = keys.lastIndexOf('');\n }\n\n return keys;\n} // \u6BD4\u8F83\u4FEE\u9970\u952E\u7684\u6570\u7EC4\n\n\nfunction compareArray(a1, a2) {\n var arr1 = a1.length >= a2.length ? a1 : a2;\n var arr2 = a1.length >= a2.length ? a2 : a1;\n var isIndex = true;\n\n for (var i = 0; i < arr1.length; i++) {\n if (arr2.indexOf(arr1[i]) === -1) isIndex = false;\n }\n\n return isIndex;\n}\n\nvar _keyMap = {\n backspace: 8,\n tab: 9,\n clear: 12,\n enter: 13,\n return: 13,\n esc: 27,\n escape: 27,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n del: 46,\n delete: 46,\n ins: 45,\n insert: 45,\n home: 36,\n end: 35,\n pageup: 33,\n pagedown: 34,\n capslock: 20,\n num_0: 96,\n num_1: 97,\n num_2: 98,\n num_3: 99,\n num_4: 100,\n num_5: 101,\n num_6: 102,\n num_7: 103,\n num_8: 104,\n num_9: 105,\n num_multiply: 106,\n num_add: 107,\n num_enter: 108,\n num_subtract: 109,\n num_decimal: 110,\n num_divide: 111,\n '\u21EA': 20,\n ',': 188,\n '.': 190,\n '/': 191,\n '`': 192,\n '-': isff ? 173 : 189,\n '=': isff ? 61 : 187,\n ';': isff ? 59 : 186,\n '\\'': 222,\n '[': 219,\n ']': 221,\n '\\\\': 220\n}; // Modifier Keys\n\nvar _modifier = {\n // shiftKey\n '\u21E7': 16,\n shift: 16,\n // altKey\n '\u2325': 18,\n alt: 18,\n option: 18,\n // ctrlKey\n '\u2303': 17,\n ctrl: 17,\n control: 17,\n // metaKey\n '\u2318': 91,\n cmd: 91,\n command: 91\n};\nvar modifierMap = {\n 16: 'shiftKey',\n 18: 'altKey',\n 17: 'ctrlKey',\n 91: 'metaKey',\n shiftKey: 16,\n ctrlKey: 17,\n altKey: 18,\n metaKey: 91\n};\nvar _mods = {\n 16: false,\n 18: false,\n 17: false,\n 91: false\n};\nvar _handlers = {}; // F1~F12 special key\n\nfor (var k = 1; k < 20; k++) {\n _keyMap[\"f\".concat(k)] = 111 + k;\n}\n\nvar _downKeys = []; // \u8BB0\u5F55\u6441\u4E0B\u7684\u7ED1\u5B9A\u952E\n\nvar _scope = 'all'; // \u9ED8\u8BA4\u70ED\u952E\u8303\u56F4\n\nvar elementHasBindEvent = []; // \u5DF2\u7ED1\u5B9A\u4E8B\u4EF6\u7684\u8282\u70B9\u8BB0\u5F55\n// \u8FD4\u56DE\u952E\u7801\n\nvar code = function code(x) {\n return _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\n}; // \u8BBE\u7F6E\u83B7\u53D6\u5F53\u524D\u8303\u56F4\uFF08\u9ED8\u8BA4\u4E3A'\u6240\u6709'\uFF09\n\n\nfunction setScope(scope) {\n _scope = scope || 'all';\n} // \u83B7\u53D6\u5F53\u524D\u8303\u56F4\n\n\nfunction getScope() {\n return _scope || 'all';\n} // \u83B7\u53D6\u6441\u4E0B\u7ED1\u5B9A\u952E\u7684\u952E\u503C\n\n\nfunction getPressedKeyCodes() {\n return _downKeys.slice(0);\n} // \u8868\u5355\u63A7\u4EF6\u63A7\u4EF6\u5224\u65AD \u8FD4\u56DE Boolean\n// hotkey is effective only when filter return true\n\n\nfunction filter(event) {\n var target = event.target || event.srcElement;\n var tagName = target.tagName;\n var flag = true; // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n\n if (target.isContentEditable || (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {\n flag = false;\n }\n\n return flag;\n} // \u5224\u65AD\u6441\u4E0B\u7684\u952E\u662F\u5426\u4E3A\u67D0\u4E2A\u952E\uFF0C\u8FD4\u56DEtrue\u6216\u8005false\n\n\nfunction isPressed(keyCode) {\n if (typeof keyCode === 'string') {\n keyCode = code(keyCode); // \u8F6C\u6362\u6210\u952E\u7801\n }\n\n return _downKeys.indexOf(keyCode) !== -1;\n} // \u5FAA\u73AF\u5220\u9664handlers\u4E2D\u7684\u6240\u6709 scope(\u8303\u56F4)\n\n\nfunction deleteScope(scope, newScope) {\n var handlers;\n var i; // \u6CA1\u6709\u6307\u5B9Ascope\uFF0C\u83B7\u53D6scope\n\n if (!scope) scope = getScope();\n\n for (var key in _handlers) {\n if (Object.prototype.hasOwnProperty.call(_handlers, key)) {\n handlers = _handlers[key];\n\n for (i = 0; i < handlers.length;) {\n if (handlers[i].scope === scope) handlers.splice(i, 1);else i++;\n }\n }\n } // \u5982\u679Cscope\u88AB\u5220\u9664\uFF0C\u5C06scope\u91CD\u7F6E\u4E3Aall\n\n\n if (getScope() === scope) setScope(newScope || 'all');\n} // \u6E05\u9664\u4FEE\u9970\u952E\n\n\nfunction clearModifier(event) {\n var key = event.keyCode || event.which || event.charCode;\n\n var i = _downKeys.indexOf(key); // \u4ECE\u5217\u8868\u4E2D\u6E05\u9664\u6309\u538B\u8FC7\u7684\u952E\n\n\n if (i >= 0) {\n _downKeys.splice(i, 1);\n } // \u7279\u6B8A\u5904\u7406 cmmand \u952E\uFF0C\u5728 cmmand \u7EC4\u5408\u5FEB\u6377\u952E keyup \u53EA\u6267\u884C\u4E00\u6B21\u7684\u95EE\u9898\n\n\n if (event.key && event.key.toLowerCase() === 'meta') {\n _downKeys.splice(0, _downKeys.length);\n } // \u4FEE\u9970\u952E shiftKey altKey ctrlKey (command||metaKey) \u6E05\u9664\n\n\n if (key === 93 || key === 224) key = 91;\n\n if (key in _mods) {\n _mods[key] = false; // \u5C06\u4FEE\u9970\u952E\u91CD\u7F6E\u4E3Afalse\n\n for (var k in _modifier) {\n if (_modifier[k] === key) hotkeys[k] = false;\n }\n }\n}\n\nfunction unbind(keysInfo) {\n // unbind(), unbind all keys\n if (!keysInfo) {\n Object.keys(_handlers).forEach(function (key) {\n return delete _handlers[key];\n });\n } else if (Array.isArray(keysInfo)) {\n // support like : unbind([{key: 'ctrl+a', scope: 's1'}, {key: 'ctrl-a', scope: 's2', splitKey: '-'}])\n keysInfo.forEach(function (info) {\n if (info.key) eachUnbind(info);\n });\n } else if (typeof keysInfo === 'object') {\n // support like unbind({key: 'ctrl+a, ctrl+b', scope:'abc'})\n if (keysInfo.key) eachUnbind(keysInfo);\n } else if (typeof keysInfo === 'string') {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // support old method\n // eslint-disable-line\n var scope = args[0],\n method = args[1];\n\n if (typeof scope === 'function') {\n method = scope;\n scope = '';\n }\n\n eachUnbind({\n key: keysInfo,\n scope: scope,\n method: method,\n splitKey: '+'\n });\n }\n} // \u89E3\u9664\u7ED1\u5B9A\u67D0\u4E2A\u8303\u56F4\u7684\u5FEB\u6377\u952E\n\n\nvar eachUnbind = function eachUnbind(_ref) {\n var key = _ref.key,\n scope = _ref.scope,\n method = _ref.method,\n _ref$splitKey = _ref.splitKey,\n splitKey = _ref$splitKey === void 0 ? '+' : _ref$splitKey;\n var multipleKeys = getKeys(key);\n multipleKeys.forEach(function (originKey) {\n var unbindKeys = originKey.split(splitKey);\n var len = unbindKeys.length;\n var lastKey = unbindKeys[len - 1];\n var keyCode = lastKey === '*' ? '*' : code(lastKey);\n if (!_handlers[keyCode]) return; // \u5224\u65AD\u662F\u5426\u4F20\u5165\u8303\u56F4\uFF0C\u6CA1\u6709\u5C31\u83B7\u53D6\u8303\u56F4\n\n if (!scope) scope = getScope();\n var mods = len > 1 ? getMods(_modifier, unbindKeys) : [];\n _handlers[keyCode] = _handlers[keyCode].map(function (record) {\n // \u901A\u8FC7\u51FD\u6570\u5224\u65AD\uFF0C\u662F\u5426\u89E3\u9664\u7ED1\u5B9A\uFF0C\u51FD\u6570\u76F8\u7B49\u76F4\u63A5\u8FD4\u56DE\n var isMatchingMethod = method ? record.method === method : true;\n\n if (isMatchingMethod && record.scope === scope && compareArray(record.mods, mods)) {\n return {};\n }\n\n return record;\n });\n });\n}; // \u5BF9\u76D1\u542C\u5BF9\u5E94\u5FEB\u6377\u952E\u7684\u56DE\u8C03\u51FD\u6570\u8FDB\u884C\u5904\u7406\n\n\nfunction eventHandler(event, handler, scope) {\n var modifiersMatch; // \u770B\u5B83\u662F\u5426\u5728\u5F53\u524D\u8303\u56F4\n\n if (handler.scope === scope || handler.scope === 'all') {\n // \u68C0\u67E5\u662F\u5426\u5339\u914D\u4FEE\u9970\u7B26\uFF08\u5982\u679C\u6709\u8FD4\u56DEtrue\uFF09\n modifiersMatch = handler.mods.length > 0;\n\n for (var y in _mods) {\n if (Object.prototype.hasOwnProperty.call(_mods, y)) {\n if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) {\n modifiersMatch = false;\n }\n }\n } // \u8C03\u7528\u5904\u7406\u7A0B\u5E8F\uFF0C\u5982\u679C\u662F\u4FEE\u9970\u952E\u4E0D\u505A\u5904\u7406\n\n\n if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') {\n if (handler.method(event, handler) === false) {\n if (event.preventDefault) event.preventDefault();else event.returnValue = false;\n if (event.stopPropagation) event.stopPropagation();\n if (event.cancelBubble) event.cancelBubble = true;\n }\n }\n }\n} // \u5904\u7406keydown\u4E8B\u4EF6\n\n\nfunction dispatch(event) {\n var asterisk = _handlers['*'];\n var key = event.keyCode || event.which || event.charCode; // \u8868\u5355\u63A7\u4EF6\u8FC7\u6EE4 \u9ED8\u8BA4\u8868\u5355\u63A7\u4EF6\u4E0D\u89E6\u53D1\u5FEB\u6377\u952E\n\n if (!hotkeys.filter.call(this, event)) return; // Gecko(Firefox)\u7684command\u952E\u503C224\uFF0C\u5728Webkit(Chrome)\u4E2D\u4FDD\u6301\u4E00\u81F4\n // Webkit\u5DE6\u53F3 command \u952E\u503C\u4E0D\u4E00\u6837\n\n if (key === 93 || key === 224) key = 91;\n /**\n * Collect bound keys\n * If an Input Method Editor is processing key input and the event is keydown, return 229.\n * https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229\n * http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n */\n\n if (_downKeys.indexOf(key) === -1 && key !== 229) _downKeys.push(key);\n /**\n * Jest test cases are required.\n * ===============================\n */\n\n ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(function (keyName) {\n var keyNum = modifierMap[keyName];\n\n if (event[keyName] && _downKeys.indexOf(keyNum) === -1) {\n _downKeys.push(keyNum);\n } else if (!event[keyName] && _downKeys.indexOf(keyNum) > -1) {\n _downKeys.splice(_downKeys.indexOf(keyNum), 1);\n } else if (keyName === 'metaKey' && event[keyName] && _downKeys.length === 3) {\n /**\n * Fix if Command is pressed:\n * ===============================\n */\n if (!(event.ctrlKey || event.shiftKey || event.altKey)) {\n _downKeys = _downKeys.slice(_downKeys.indexOf(keyNum));\n }\n }\n });\n /**\n * -------------------------------\n */\n\n if (key in _mods) {\n _mods[key] = true; // \u5C06\u7279\u6B8A\u5B57\u7B26\u7684key\u6CE8\u518C\u5230 hotkeys \u4E0A\n\n for (var k in _modifier) {\n if (_modifier[k] === key) hotkeys[k] = true;\n }\n\n if (!asterisk) return;\n } // \u5C06 modifierMap \u91CC\u9762\u7684\u4FEE\u9970\u952E\u7ED1\u5B9A\u5230 event \u4E2D\n\n\n for (var e in _mods) {\n if (Object.prototype.hasOwnProperty.call(_mods, e)) {\n _mods[e] = event[modifierMap[e]];\n }\n }\n /**\n * https://github.com/jaywcjlove/hotkeys/pull/129\n * This solves the issue in Firefox on Windows where hotkeys corresponding to special characters would not trigger.\n * An example of this is ctrl+alt+m on a Swedish keyboard which is used to type \u03BC.\n * Browser support: https://caniuse.com/#feat=keyboardevent-getmodifierstate\n */\n\n\n if (event.getModifierState && !(event.altKey && !event.ctrlKey) && event.getModifierState('AltGraph')) {\n if (_downKeys.indexOf(17) === -1) {\n _downKeys.push(17);\n }\n\n if (_downKeys.indexOf(18) === -1) {\n _downKeys.push(18);\n }\n\n _mods[17] = true;\n _mods[18] = true;\n } // \u83B7\u53D6\u8303\u56F4 \u9ED8\u8BA4\u4E3A `all`\n\n\n var scope = getScope(); // \u5BF9\u4EFB\u4F55\u5FEB\u6377\u952E\u90FD\u9700\u8981\u505A\u7684\u5904\u7406\n\n if (asterisk) {\n for (var i = 0; i < asterisk.length; i++) {\n if (asterisk[i].scope === scope && (event.type === 'keydown' && asterisk[i].keydown || event.type === 'keyup' && asterisk[i].keyup)) {\n eventHandler(event, asterisk[i], scope);\n }\n }\n } // key \u4E0D\u5728 _handlers \u4E2D\u8FD4\u56DE\n\n\n if (!(key in _handlers)) return;\n\n for (var _i = 0; _i < _handlers[key].length; _i++) {\n if (event.type === 'keydown' && _handlers[key][_i].keydown || event.type === 'keyup' && _handlers[key][_i].keyup) {\n if (_handlers[key][_i].key) {\n var record = _handlers[key][_i];\n var splitKey = record.splitKey;\n var keyShortcut = record.key.split(splitKey);\n var _downKeysCurrent = []; // \u8BB0\u5F55\u5F53\u524D\u6309\u952E\u952E\u503C\n\n for (var a = 0; a < keyShortcut.length; a++) {\n _downKeysCurrent.push(code(keyShortcut[a]));\n }\n\n if (_downKeysCurrent.sort().join('') === _downKeys.sort().join('')) {\n // \u627E\u5230\u5904\u7406\u5185\u5BB9\n eventHandler(event, record, scope);\n }\n }\n }\n }\n} // \u5224\u65AD element \u662F\u5426\u5DF2\u7ECF\u7ED1\u5B9A\u4E8B\u4EF6\n\n\nfunction isElementBind(element) {\n return elementHasBindEvent.indexOf(element) > -1;\n}\n\nfunction hotkeys(key, option, method) {\n _downKeys = [];\n var keys = getKeys(key); // \u9700\u8981\u5904\u7406\u7684\u5FEB\u6377\u952E\u5217\u8868\n\n var mods = [];\n var scope = 'all'; // scope\u9ED8\u8BA4\u4E3Aall\uFF0C\u6240\u6709\u8303\u56F4\u90FD\u6709\u6548\n\n var element = document; // \u5FEB\u6377\u952E\u4E8B\u4EF6\u7ED1\u5B9A\u8282\u70B9\n\n var i = 0;\n var keyup = false;\n var keydown = true;\n var splitKey = '+'; // \u5BF9\u4E3A\u8BBE\u5B9A\u8303\u56F4\u7684\u5224\u65AD\n\n if (method === undefined && typeof option === 'function') {\n method = option;\n }\n\n if (Object.prototype.toString.call(option) === '[object Object]') {\n if (option.scope) scope = option.scope; // eslint-disable-line\n\n if (option.element) element = option.element; // eslint-disable-line\n\n if (option.keyup) keyup = option.keyup; // eslint-disable-line\n\n if (option.keydown !== undefined) keydown = option.keydown; // eslint-disable-line\n\n if (typeof option.splitKey === 'string') splitKey = option.splitKey; // eslint-disable-line\n }\n\n if (typeof option === 'string') scope = option; // \u5BF9\u4E8E\u6BCF\u4E2A\u5FEB\u6377\u952E\u8FDB\u884C\u5904\u7406\n\n for (; i < keys.length; i++) {\n key = keys[i].split(splitKey); // \u6309\u952E\u5217\u8868\n\n mods = []; // \u5982\u679C\u662F\u7EC4\u5408\u5FEB\u6377\u952E\u53D6\u5F97\u7EC4\u5408\u5FEB\u6377\u952E\n\n if (key.length > 1) mods = getMods(_modifier, key); // \u5C06\u975E\u4FEE\u9970\u952E\u8F6C\u5316\u4E3A\u952E\u7801\n\n key = key[key.length - 1];\n key = key === '*' ? '*' : code(key); // *\u8868\u793A\u5339\u914D\u6240\u6709\u5FEB\u6377\u952E\n // \u5224\u65ADkey\u662F\u5426\u5728_handlers\u4E2D\uFF0C\u4E0D\u5728\u5C31\u8D4B\u4E00\u4E2A\u7A7A\u6570\u7EC4\n\n if (!(key in _handlers)) _handlers[key] = [];\n\n _handlers[key].push({\n keyup: keyup,\n keydown: keydown,\n scope: scope,\n mods: mods,\n shortcut: keys[i],\n method: method,\n key: keys[i],\n splitKey: splitKey\n });\n } // \u5728\u5168\u5C40document\u4E0A\u8BBE\u7F6E\u5FEB\u6377\u952E\n\n\n if (typeof element !== 'undefined' && !isElementBind(element) && window) {\n elementHasBindEvent.push(element);\n addEvent(element, 'keydown', function (e) {\n dispatch(e);\n });\n addEvent(window, 'focus', function () {\n _downKeys = [];\n });\n addEvent(element, 'keyup', function (e) {\n dispatch(e);\n clearModifier(e);\n });\n }\n}\n\nvar _api = {\n setScope: setScope,\n getScope: getScope,\n deleteScope: deleteScope,\n getPressedKeyCodes: getPressedKeyCodes,\n isPressed: isPressed,\n filter: filter,\n unbind: unbind\n};\n\nfor (var a in _api) {\n if (Object.prototype.hasOwnProperty.call(_api, a)) {\n hotkeys[a] = _api[a];\n }\n}\n\nif (typeof window !== 'undefined') {\n var _hotkeys = window.hotkeys;\n\n hotkeys.noConflict = function (deep) {\n if (deep && window.hotkeys === hotkeys) {\n window.hotkeys = _hotkeys;\n }\n\n return hotkeys;\n };\n\n window.hotkeys = hotkeys;\n}\n\nexport default hotkeys;\n", "/*\nStimulus-Use 0.50.0-1\n*/\nimport { Controller } from '@hotwired/stimulus';\nimport hotkeys from 'hotkeys-js';\n\nconst method = (controller, methodName) => {\n const method = controller[methodName];\n if (typeof method == 'function') {\n return method;\n }\n else {\n return (...args) => { };\n }\n};\nconst composeEventName = (name, controller, eventPrefix) => {\n let composedName = name;\n if (eventPrefix === true) {\n composedName = `${controller.identifier}:${name}`;\n }\n else if (typeof eventPrefix === 'string') {\n composedName = `${eventPrefix}:${name}`;\n }\n return composedName;\n};\nconst extendedEvent = (type, event, detail) => {\n const { bubbles, cancelable, composed } = event || { bubbles: true, cancelable: true, composed: true };\n if (event) {\n Object.assign(detail, { originalEvent: event });\n }\n const customEvent = new CustomEvent(type, {\n bubbles,\n cancelable,\n composed,\n detail\n });\n return customEvent;\n};\nfunction isElementInViewport(el) {\n const rect = el.getBoundingClientRect();\n const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n const vertInView = rect.top <= windowHeight && rect.top + rect.height >= 0;\n const horInView = rect.left <= windowWidth && rect.left + rect.width >= 0;\n return vertInView && horInView;\n}\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\n\nconst defaultOptions$7 = {\n dispatchEvent: true,\n eventPrefix: true\n};\nconst useIntersection = (controller, options = {}) => {\n const { dispatchEvent, eventPrefix } = Object.assign({}, defaultOptions$7, options);\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n const callback = (entries) => {\n const [entry] = entries;\n if (entry.isIntersecting) {\n dispatchAppear(entry);\n }\n else if (controller.isVisible) {\n dispatchDisappear(entry);\n }\n };\n const dispatchAppear = (entry) => {\n controller.isVisible = true;\n method(controller, 'appear').call(controller, entry);\n if (dispatchEvent) {\n const eventName = composeEventName('appear', controller, eventPrefix);\n const appearEvent = extendedEvent(eventName, null, { controller, entry });\n targetElement.dispatchEvent(appearEvent);\n }\n };\n const dispatchDisappear = (entry) => {\n controller.isVisible = false;\n method(controller, 'disappear').call(controller, entry);\n if (dispatchEvent) {\n const eventName = composeEventName('disappear', controller, eventPrefix);\n const disappearEvent = extendedEvent(eventName, null, { controller, entry });\n targetElement.dispatchEvent(disappearEvent);\n }\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observer = new IntersectionObserver(callback, options);\n const observe = () => {\n observer.observe(targetElement);\n };\n const unobserve = () => {\n observer.unobserve(targetElement);\n };\n Object.assign(controller, {\n isVisible: false,\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [observe, unobserve];\n};\n\nclass IntersectionComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.isVisible = false;\n }\n}\nclass IntersectionController extends IntersectionComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame(() => {\n const [observe, unobserve] = useIntersection(this, this.options);\n Object.assign(this, { observe, unobserve });\n });\n }\n}\n\nconst useLazyLoad = (controller, options) => {\n const callback = (entries) => {\n const [entry] = entries;\n if (entry.isIntersecting && !controller.isLoaded) {\n handleAppear();\n }\n };\n const handleAppear = (entry) => {\n const src = controller.data.get('src');\n if (!src)\n return;\n const imageElement = controller.element;\n controller.isLoading = true;\n method(controller, 'loading').call(controller, src);\n imageElement.onload = () => {\n handleLoaded(src);\n };\n imageElement.src = src;\n };\n const handleLoaded = (src) => {\n controller.isLoading = false;\n controller.isLoaded = true;\n method(controller, 'loaded').call(controller, src);\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observer = new IntersectionObserver(callback, options);\n const observe = () => {\n observer.observe(controller.element);\n };\n const unobserve = () => {\n observer.unobserve(controller.element);\n };\n Object.assign(controller, {\n isVisible: false,\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [observe, unobserve];\n};\n\nclass LazyLoadComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.isLoading = false;\n this.isLoaded = false;\n }\n}\nclass LazyLoadController extends LazyLoadComposableController {\n constructor(context) {\n super(context);\n this.options = { rootMargin: '10%' };\n requestAnimationFrame(() => {\n const [observe, unobserve] = useLazyLoad(this, this.options);\n Object.assign(this, { observe, unobserve });\n });\n }\n}\n\nconst defaultOptions$6 = {\n dispatchEvent: true,\n eventPrefix: true\n};\nconst useResize = (controller, options = {}) => {\n const { dispatchEvent, eventPrefix } = Object.assign({}, defaultOptions$6, options);\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n const callback = (entries) => {\n const [entry] = entries;\n method(controller, 'resize').call(controller, entry.contentRect);\n if (dispatchEvent) {\n const eventName = composeEventName('resize', controller, eventPrefix);\n const appearEvent = extendedEvent(eventName, null, {\n controller,\n entry\n });\n targetElement.dispatchEvent(appearEvent);\n }\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observer = new ResizeObserver(callback);\n const observe = () => {\n observer.observe(targetElement);\n };\n const unobserve = () => {\n observer.unobserve(targetElement);\n };\n Object.assign(controller, {\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [observe, unobserve];\n};\n\nclass ResizeComposableController extends Controller {\n}\nclass ResizeController extends ResizeComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame(() => {\n const [observe, unobserve] = useResize(this, this.options);\n Object.assign(this, { observe, unobserve });\n });\n }\n}\n\nconst defaultOptions$5 = {\n events: ['click', 'touchend'],\n onlyVisible: true,\n dispatchEvent: true,\n eventPrefix: true\n};\nconst useClickOutside = (controller, options = {}) => {\n const { onlyVisible, dispatchEvent, events, eventPrefix } = Object.assign({}, defaultOptions$5, options);\n const onEvent = (event) => {\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n if (targetElement.contains(event.target) || (!isElementInViewport(targetElement) && onlyVisible)) {\n return;\n }\n if (controller.clickOutside) {\n controller.clickOutside(event);\n }\n if (dispatchEvent) {\n const eventName = composeEventName('click:outside', controller, eventPrefix);\n const clickOutsideEvent = extendedEvent(eventName, event, { controller });\n targetElement.dispatchEvent(clickOutsideEvent);\n }\n };\n const observe = () => {\n events === null || events === void 0 ? void 0 : events.forEach(event => {\n window.addEventListener(event, onEvent, false);\n });\n };\n const unobserve = () => {\n events === null || events === void 0 ? void 0 : events.forEach(event => {\n window.removeEventListener(event, onEvent, false);\n });\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n Object.assign(controller, {\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [observe, unobserve];\n};\n\nclass ClickOutsideComposableController extends Controller {\n}\nclass ClickOutsideController extends ClickOutsideComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame(() => {\n const [observe, unobserve] = useClickOutside(this, this.options);\n Object.assign(this, { observe, unobserve });\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\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nconst defaultOptions$4 = {\n debug: false,\n logger: console,\n dispatchEvent: true,\n eventPrefix: true\n};\nclass StimulusUse {\n constructor(controller, options = {}) {\n var _a, _b, _c;\n this.log = (functionName, args) => {\n if (!this.debug)\n return;\n this.logger.groupCollapsed(`%c${this.controller.identifier} %c#${functionName}`, 'color: #3B82F6', 'color: unset');\n this.logger.log(Object.assign({ controllerId: this.controllerId }, args));\n this.logger.groupEnd();\n };\n this.dispatch = (eventName, details = {}) => {\n if (this.dispatchEvent) {\n const { event } = details, eventDetails = __rest(details, [\"event\"]);\n const customEvent = this.extendedEvent(eventName, event || null, eventDetails);\n this.targetElement.dispatchEvent(customEvent);\n this.log('dispatchEvent', Object.assign({ eventName: customEvent.type }, eventDetails));\n }\n };\n this.call = (methodName, args = {}) => {\n const method = this.controller[methodName];\n if (typeof method == 'function') {\n return method.call(this.controller, args);\n }\n };\n this.extendedEvent = (name, event, detail) => {\n const { bubbles, cancelable, composed } = event || { bubbles: true, cancelable: true, composed: true };\n if (event) {\n Object.assign(detail, { originalEvent: event });\n }\n const customEvent = new CustomEvent(this.composeEventName(name), {\n bubbles,\n cancelable,\n composed,\n detail\n });\n return customEvent;\n };\n this.composeEventName = (name) => {\n let composedName = name;\n if (this.eventPrefix === true) {\n composedName = `${this.controller.identifier}:${name}`;\n }\n else if (typeof this.eventPrefix === 'string') {\n composedName = `${this.eventPrefix}:${name}`;\n }\n return composedName;\n };\n this.debug = (_b = (_a = options === null || options === void 0 ? void 0 : options.debug) !== null && _a !== void 0 ? _a : controller.application.stimulusUseDebug) !== null && _b !== void 0 ? _b : defaultOptions$4.debug;\n this.logger = (_c = options === null || options === void 0 ? void 0 : options.logger) !== null && _c !== void 0 ? _c : defaultOptions$4.logger;\n this.controller = controller;\n this.controllerId = controller.element.id || controller.element.dataset.id;\n this.targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n const { dispatchEvent, eventPrefix } = Object.assign({}, defaultOptions$4, options);\n Object.assign(this, { dispatchEvent, eventPrefix });\n this.controllerInitialize = controller.initialize.bind(controller);\n this.controllerConnect = controller.connect.bind(controller);\n this.controllerDisconnect = controller.disconnect.bind(controller);\n }\n}\n\nconst defaultOptions$3 = {\n eventPrefix: true,\n bubbles: true,\n cancelable: true\n};\nclass UseDispatch extends StimulusUse {\n constructor(controller, options = {}) {\n var _a, _b, _c, _d;\n super(controller, options);\n this.dispatch = (eventName, detail = {}) => {\n const { controller, targetElement, eventPrefix, bubbles, cancelable, log } = this;\n Object.assign(detail, { controller });\n const eventNameWithPrefix = composeEventName(eventName, this.controller, eventPrefix);\n const event = new CustomEvent(eventNameWithPrefix, {\n detail,\n bubbles,\n cancelable\n });\n targetElement.dispatchEvent(event);\n log('dispatch', { eventName: eventNameWithPrefix, detail, bubbles, cancelable });\n return event;\n };\n this.targetElement = (_a = options.element) !== null && _a !== void 0 ? _a : controller.element;\n this.eventPrefix = (_b = options.eventPrefix) !== null && _b !== void 0 ? _b : defaultOptions$3.eventPrefix;\n this.bubbles = (_c = options.bubbles) !== null && _c !== void 0 ? _c : defaultOptions$3.bubbles;\n this.cancelable = (_d = options.cancelable) !== null && _d !== void 0 ? _d : defaultOptions$3.cancelable;\n this.enhanceController();\n }\n enhanceController() {\n Object.assign(this.controller, { dispatch: this.dispatch });\n }\n}\nconst useDispatch = (controller, options = {}) => {\n return new UseDispatch(controller, options);\n};\n\nconst useApplication = (controller, options = {}) => {\n Object.defineProperty(controller, 'isPreview', {\n get() {\n return (document.documentElement.hasAttribute('data-turbolinks-preview') ||\n document.documentElement.hasAttribute('data-turbo-preview'));\n }\n });\n Object.defineProperty(controller, 'isConnected', {\n get() {\n return !!Array.from(this.context.module.connectedContexts).find(c => c === this.context);\n }\n });\n Object.defineProperty(controller, 'csrfToken', {\n get() {\n return this.metaValue('csrf-token');\n }\n });\n useDispatch(controller, options);\n Object.assign(controller, {\n metaValue(name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n return element && element.getAttribute('content');\n }\n });\n};\n\nclass ApplicationController extends Controller {\n constructor(context) {\n super(context);\n this.isPreview = false;\n this.isConnected = false;\n this.csrfToken = '';\n useApplication(this, this.options);\n }\n}\n\nconst defaultEvents = ['mousemove', 'mousedown', 'resize', 'keydown', 'touchstart', 'wheel'];\nconst oneMinute = 60e3;\nconst defaultOptions$2 = {\n ms: oneMinute,\n initialState: false,\n events: defaultEvents,\n dispatchEvent: true,\n eventPrefix: true\n};\nconst useIdle = (controller, options = {}) => {\n const { ms, initialState, events, dispatchEvent, eventPrefix } = Object.assign({}, defaultOptions$2, options);\n let isIdle = initialState;\n let timeout = setTimeout(() => {\n isIdle = true;\n dispatchAway();\n }, ms);\n const dispatchAway = (event) => {\n const eventName = composeEventName('away', controller, eventPrefix);\n controller.isIdle = true;\n method(controller, 'away').call(controller, event);\n if (dispatchEvent) {\n const clickOutsideEvent = extendedEvent(eventName, event || null, { controller });\n controller.element.dispatchEvent(clickOutsideEvent);\n }\n };\n const dispatchBack = (event) => {\n const eventName = composeEventName('back', controller, eventPrefix);\n controller.isIdle = false;\n method(controller, 'back').call(controller, event);\n if (dispatchEvent) {\n const clickOutsideEvent = extendedEvent(eventName, event || null, { controller });\n controller.element.dispatchEvent(clickOutsideEvent);\n }\n };\n const onEvent = (event) => {\n if (isIdle)\n dispatchBack(event);\n isIdle = false;\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n isIdle = true;\n dispatchAway(event);\n }, ms);\n };\n const onVisibility = (event) => {\n if (!document.hidden)\n onEvent(event);\n };\n if (isIdle) {\n dispatchAway();\n }\n else {\n dispatchBack();\n }\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observe = () => {\n events.forEach(event => {\n window.addEventListener(event, onEvent);\n });\n document.addEventListener('visibilitychange', onVisibility);\n };\n const unobserve = () => {\n events.forEach(event => {\n window.removeEventListener(event, onEvent);\n });\n document.removeEventListener('visibilitychange', onVisibility);\n };\n Object.assign(controller, {\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [observe, unobserve];\n};\n\nclass IdleComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.isIdle = false;\n }\n}\nclass IdleController extends IdleComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame(() => {\n const [observe, unobserve] = useIdle(this, this.options);\n Object.assign(this, { observe, unobserve });\n });\n }\n}\n\nclass UseVisibility extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n this.controller.isVisible = !document.hidden;\n document.addEventListener('visibilitychange', this.handleVisibilityChange);\n this.handleVisibilityChange();\n };\n this.unobserve = () => {\n document.removeEventListener('visibilitychange', this.handleVisibilityChange);\n };\n this.becomesInvisible = (event) => {\n this.controller.isVisible = false;\n this.call('invisible', event);\n this.log('invisible', { isVisible: false });\n this.dispatch('invisible', { event, isVisible: false });\n };\n this.becomesVisible = (event) => {\n this.controller.isVisible = true;\n this.call('visible', event);\n this.log('visible', { isVisible: true });\n this.dispatch('visible', { event, isVisible: true });\n };\n this.handleVisibilityChange = (event) => {\n if (document.hidden) {\n this.becomesInvisible(event);\n }\n else {\n this.becomesVisible(event);\n }\n };\n this.controller = controller;\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controllerDisconnect;\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, { disconnect });\n }\n}\nconst useVisibility = (controller, options = {}) => {\n const observer = new UseVisibility(controller, options);\n return [observer.observe, observer.unobserve];\n};\n\nclass VisibilityComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.isVisible = false;\n }\n}\nclass VisibilityController extends VisibilityComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame(() => {\n const [observe, unobserve] = useVisibility(this, this.options);\n Object.assign(this, { observe, unobserve });\n });\n }\n}\n\nclass UseHover extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n this.targetElement.addEventListener('mouseenter', this.onEnter);\n this.targetElement.addEventListener('mouseleave', this.onLeave);\n };\n this.unobserve = () => {\n this.targetElement.removeEventListener('mouseenter', this.onEnter);\n this.targetElement.removeEventListener('mouseleave', this.onLeave);\n };\n this.onEnter = (event) => {\n this.call('mouseEnter', event);\n this.log('mouseEnter', { hover: true });\n this.dispatch('mouseEnter', { hover: false });\n };\n this.onLeave = (event) => {\n this.call('mouseLeave', event);\n this.log('mouseLeave', { hover: false });\n this.dispatch('mouseLeave', { hover: false });\n };\n this.controller = controller;\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, { disconnect });\n }\n}\nconst useHover = (controller, options = {}) => {\n const observer = new UseHover(controller, options);\n return [observer.observe, observer.unobserve];\n};\n\nclass HoverComposableController extends Controller {\n}\nclass HoverController extends HoverComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame(() => {\n const [observe, unobserve] = useHover(this, this.options);\n Object.assign(this, { observe, unobserve });\n });\n }\n}\n\nclass UseMutation extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n try {\n this.observer.observe(this.targetElement, this.options);\n }\n catch (error) {\n this.controller.application.handleError(error, 'At a minimum, one of childList, attributes, and/or characterData must be true', {});\n }\n };\n this.unobserve = () => {\n this.observer.disconnect();\n };\n this.mutation = (entries) => {\n this.call('mutate', entries);\n this.log('mutate', { entries });\n this.dispatch('mutate', { entries });\n };\n this.targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n this.controller = controller;\n this.options = options;\n this.observer = new MutationObserver(this.mutation);\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, { disconnect });\n }\n}\nconst useMutation = (controller, options = {}) => {\n const observer = new UseMutation(controller, options);\n return [observer.observe, observer.unobserve];\n};\n\nclass MutationComposableController extends Controller {\n}\nclass MutationController extends MutationComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame(() => {\n const [observe, unobserve] = useMutation(this, this.options);\n Object.assign(this, { observe, unobserve });\n });\n }\n}\n\nclass UseTargetMutation extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n this.observer.observe(this.targetElement, {\n subtree: true,\n characterData: true,\n childList: true,\n attributes: true,\n attributeOldValue: true,\n attributeFilter: [this.targetSelector, this.scopedTargetSelector]\n });\n };\n this.unobserve = () => {\n this.observer.disconnect();\n };\n this.mutation = (entries) => {\n for (const mutation of entries) {\n switch (mutation.type) {\n case 'attributes':\n let newValue = mutation.target.getAttribute(mutation.attributeName);\n let oldValue = mutation.oldValue;\n if (mutation.attributeName === this.targetSelector || mutation.attributeName === this.scopedTargetSelector) {\n let oldTargets = this.targetsUsedByThisController(oldValue);\n let newTargets = this.targetsUsedByThisController(newValue);\n let removedTargets = oldTargets.filter(target => !newTargets.includes(target));\n let addedTargets = newTargets.filter(target => !oldTargets.includes(target));\n removedTargets.forEach(target => this.targetRemoved(this.stripIdentifierPrefix(target), mutation.target, 'attributeChange'));\n addedTargets.forEach(target => this.targetAdded(this.stripIdentifierPrefix(target), mutation.target, 'attributeChange'));\n }\n break;\n case 'characterData':\n let nodule = this.findTargetInAncestry(mutation.target);\n if (nodule == null) {\n return;\n }\n else {\n let supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n supportedTargets.forEach((target) => {\n this.targetChanged(this.stripIdentifierPrefix(target), nodule, 'domMutation');\n });\n }\n break;\n case 'childList':\n let { addedNodes, removedNodes } = mutation;\n addedNodes.forEach((node) => this.processNodeDOMMutation(node, this.targetAdded));\n removedNodes.forEach((node) => this.processNodeDOMMutation(node, this.targetRemoved));\n break;\n }\n }\n };\n this.controller = controller;\n this.options = options;\n this.targetElement = controller.element;\n this.identifier = controller.scope.identifier;\n this.identifierPrefix = `${this.identifier}.`;\n this.targetSelector = controller.scope.schema.targetAttribute;\n this.scopedTargetSelector = `data-${this.identifier}-target`;\n this.targets = options.targets || controller.constructor.targets;\n this.prefixedTargets = this.targets.map(target => `${this.identifierPrefix}${target}`);\n this.observer = new MutationObserver(this.mutation);\n this.enhanceController();\n this.observe();\n }\n processNodeDOMMutation(node, initialChangeModeAssumption) {\n let nodule = node;\n let change = initialChangeModeAssumption;\n let supportedTargets = [];\n if (nodule.nodeName == '#text' || this.targetsUsedByThisControllerFromNode(nodule).length == 0) {\n change = this.targetChanged;\n nodule = this.findTargetInAncestry(node);\n }\n else {\n supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n }\n if (nodule == null) {\n return;\n }\n else if (supportedTargets.length == 0) {\n supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n }\n supportedTargets.forEach((target) => {\n change.call(this, this.stripIdentifierPrefix(target), nodule, 'domMutation');\n });\n }\n findTargetInAncestry(node) {\n let nodule = node;\n let supportedTargets = [];\n if (nodule.nodeName != '#text') {\n supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n }\n while (nodule.parentNode !== null && nodule.parentNode != this.targetElement && supportedTargets.length == 0) {\n nodule = nodule.parentNode;\n if (nodule.nodeName !== '#text') {\n let supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n if (supportedTargets.length > 0) {\n return nodule;\n }\n }\n }\n if (nodule.nodeName == '#text') {\n return null;\n }\n if (nodule.parentNode == null) {\n return null;\n }\n if (nodule.parentNode == this.targetElement) {\n if (this.targetsUsedByThisControllerFromNode(nodule).length > 0) {\n return nodule;\n }\n return null;\n }\n return null;\n }\n targetAdded(name, node, trigger) {\n let targetCallback = `${name}TargetAdded`;\n this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n this.log('targetAdded', { target: name, node, trigger });\n }\n targetRemoved(name, node, trigger) {\n let targetCallback = `${name}TargetRemoved`;\n this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n this.log('targetRemoved', { target: name, node, trigger });\n }\n targetChanged(name, node, trigger) {\n let targetCallback = `${name}TargetChanged`;\n this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n this.log('targetChanged', { target: name, node, trigger });\n }\n targetsUsedByThisControllerFromNode(node) {\n if (node.nodeName == '#text' || node.nodeName == '#comment') {\n return [];\n }\n let nodeElement = node;\n return this.targetsUsedByThisController(nodeElement.getAttribute(this.scopedTargetSelector) || nodeElement.getAttribute(this.targetSelector));\n }\n targetsUsedByThisController(targetStr) {\n targetStr = targetStr || '';\n let targetsToCheck = this.stripIdentifierPrefix(targetStr).split(' ');\n return this.targets.filter(n => targetsToCheck.indexOf(n) !== -1);\n }\n stripIdentifierPrefix(target) {\n return target.replace(new RegExp(this.identifierPrefix, 'g'), '');\n }\n enhanceController() {\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, { disconnect });\n }\n}\nconst useTargetMutation = (controller, options = {}) => {\n const observer = new UseTargetMutation(controller, options);\n return [observer.observe, observer.unobserve];\n};\n\nclass TargetMutationComposableController extends Controller {\n}\nclass TargetMutationController extends TargetMutationComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame(() => {\n const [observe, unobserve] = useTargetMutation(this, this.options);\n Object.assign(this, { observe, unobserve });\n });\n }\n}\n\nconst useWindowResize = (controller) => {\n const callback = (event) => {\n const { innerWidth, innerHeight } = window;\n const payload = {\n height: innerHeight || Infinity,\n width: innerWidth || Infinity,\n event\n };\n method(controller, 'windowResize').call(controller, payload);\n };\n const controllerDisconnect = controller.disconnect.bind(controller);\n const observe = () => {\n window.addEventListener('resize', callback);\n callback();\n };\n const unobserve = () => {\n window.removeEventListener('resize', callback);\n };\n Object.assign(controller, {\n disconnect() {\n unobserve();\n controllerDisconnect();\n }\n });\n observe();\n return [observe, unobserve];\n};\n\nclass WindowResizeComposableController extends Controller {\n}\nclass WindowResizeController extends WindowResizeComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame(() => {\n const [observe, unobserve] = useWindowResize(this);\n Object.assign(this, { observe, unobserve });\n });\n }\n}\n\nconst memoize = (controller, name, value) => {\n Object.defineProperty(controller, name, { value });\n return value;\n};\nconst useMemo = (controller) => {\n var _a;\n (_a = controller.constructor.memos) === null || _a === void 0 ? void 0 : _a.forEach((getter) => {\n memoize(controller, getter, controller[getter]);\n });\n};\n\nclass DebounceController extends Controller {\n}\nDebounceController.debounces = [];\nconst defaultWait$1 = 200;\nconst debounce = (fn, wait = defaultWait$1) => {\n let timeoutId = null;\n return function () {\n const args = arguments;\n const context = this;\n const callback = () => fn.apply(context, args);\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(callback, wait);\n };\n};\nconst useDebounce = (controller, options) => {\n var _a;\n const constructor = controller.constructor;\n (_a = constructor.debounces) === null || _a === void 0 ? void 0 : _a.forEach((func) => {\n if (typeof func === 'string') {\n controller[func] = debounce(controller[func], options === null || options === void 0 ? void 0 : options.wait);\n }\n if (typeof func === 'object') {\n const { name, wait } = func;\n if (!name)\n return;\n controller[name] = debounce(controller[name], wait || (options === null || options === void 0 ? void 0 : options.wait));\n }\n });\n};\n\nclass ThrottleController extends Controller {\n}\nThrottleController.throttles = [];\nconst defaultWait = 200;\nfunction throttle(func, wait = defaultWait) {\n let inThrottle;\n return function () {\n const args = arguments;\n const context = this;\n if (!inThrottle) {\n inThrottle = true;\n func.apply(context, args);\n setTimeout(() => (inThrottle = false), wait);\n }\n };\n}\nconst useThrottle = (controller, options = {}) => {\n var _a;\n const constructor = controller.constructor;\n (_a = constructor.throttles) === null || _a === void 0 ? void 0 : _a.forEach((func) => {\n if (typeof func === 'string') {\n controller[func] = throttle(controller[func], options === null || options === void 0 ? void 0 : options.wait);\n }\n if (typeof func === 'object') {\n const { name, wait } = func;\n if (!name)\n return;\n controller[name] = throttle(controller[name], wait || (options === null || options === void 0 ? void 0 : options.wait));\n }\n });\n};\n\nconst defineMetaGetter = (controller, metaName, suffix) => {\n const getterName = suffix ? `${camelize(metaName)}Meta` : camelize(metaName);\n Object.defineProperty(controller, getterName, {\n get() {\n return typeCast(metaValue(metaName));\n }\n });\n};\nfunction metaValue(name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n return element && element.getAttribute('content');\n}\nfunction typeCast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\nconst useMeta = (controller, options = { suffix: true }) => {\n const metaNames = controller.constructor.metaNames;\n const suffix = options.suffix;\n metaNames === null || metaNames === void 0 ? void 0 : metaNames.forEach((metaName) => {\n defineMetaGetter(controller, metaName, suffix);\n });\n Object.defineProperty(controller, 'metas', {\n get() {\n const result = {};\n metaNames === null || metaNames === void 0 ? void 0 : metaNames.forEach((metaName) => {\n const value = typeCast(metaValue(metaName));\n if (value !== undefined && value !== null) {\n result[camelize(metaName)] = value;\n }\n });\n return result;\n }\n });\n};\n\nconst alpineNames = {\n enterFromClass: 'enter',\n enterActiveClass: 'enterStart',\n enterToClass: 'enterEnd',\n leaveFromClass: 'leave',\n leaveActiveClass: 'leaveStart',\n leaveToClass: 'leaveEnd'\n};\nconst defaultOptions$1 = {\n transitioned: false,\n hiddenClass: 'hidden',\n preserveOriginalClass: true,\n removeToClasses: true\n};\nconst useTransition = (controller, options = {}) => {\n var _a, _b, _c;\n const targetName = controller.element.dataset.transitionTarget;\n let targetFromAttribute;\n if (targetName) {\n targetFromAttribute = controller[`${targetName}Target`];\n }\n const targetElement = (options === null || options === void 0 ? void 0 : options.element) || targetFromAttribute || controller.element;\n if (!(targetElement instanceof HTMLElement || targetElement instanceof SVGElement))\n return;\n const dataset = targetElement.dataset;\n const leaveAfter = parseInt(dataset.leaveAfter || '') || options.leaveAfter || 0;\n const { transitioned, hiddenClass, preserveOriginalClass, removeToClasses } = Object.assign(defaultOptions$1, options);\n const controllerEnter = (_a = controller.enter) === null || _a === void 0 ? void 0 : _a.bind(controller);\n const controllerLeave = (_b = controller.leave) === null || _b === void 0 ? void 0 : _b.bind(controller);\n const controllerToggleTransition = (_c = controller.toggleTransition) === null || _c === void 0 ? void 0 : _c.bind(controller);\n async function enter(event) {\n if (controller.transitioned)\n return;\n controller.transitioned = true;\n controllerEnter && controllerEnter(event);\n const enterFromClasses = getAttribute('enterFrom', options, dataset);\n const enterActiveClasses = getAttribute('enterActive', options, dataset);\n const enterToClasses = getAttribute('enterTo', options, dataset);\n const leaveToClasses = getAttribute('leaveTo', options, dataset);\n if (!!hiddenClass) {\n targetElement.classList.remove(hiddenClass);\n }\n if (!removeToClasses) {\n removeClasses(targetElement, leaveToClasses);\n }\n await transition(targetElement, enterFromClasses, enterActiveClasses, enterToClasses, hiddenClass, preserveOriginalClass, removeToClasses);\n if (leaveAfter > 0) {\n setTimeout(() => {\n leave(event);\n }, leaveAfter);\n }\n }\n async function leave(event) {\n if (!controller.transitioned)\n return;\n controller.transitioned = false;\n controllerLeave && controllerLeave(event);\n const leaveFromClasses = getAttribute('leaveFrom', options, dataset);\n const leaveActiveClasses = getAttribute('leaveActive', options, dataset);\n const leaveToClasses = getAttribute('leaveTo', options, dataset);\n const enterToClasses = getAttribute('enterTo', options, dataset);\n if (!removeToClasses) {\n removeClasses(targetElement, enterToClasses);\n }\n await transition(targetElement, leaveFromClasses, leaveActiveClasses, leaveToClasses, hiddenClass, preserveOriginalClass, removeToClasses);\n if (!!hiddenClass) {\n targetElement.classList.add(hiddenClass);\n }\n }\n function toggleTransition(event) {\n controllerToggleTransition && controllerToggleTransition(event);\n if (controller.transitioned) {\n leave();\n }\n else {\n enter();\n }\n }\n async function transition(element, initialClasses, activeClasses, endClasses, hiddenClass, preserveOriginalClass, removeEndClasses) {\n const stashedClasses = [];\n if (preserveOriginalClass) {\n initialClasses.forEach(cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls));\n activeClasses.forEach(cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls));\n endClasses.forEach(cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls));\n }\n addClasses(element, initialClasses);\n removeClasses(element, stashedClasses);\n addClasses(element, activeClasses);\n await nextAnimationFrame();\n removeClasses(element, initialClasses);\n addClasses(element, endClasses);\n await afterTransition(element);\n removeClasses(element, activeClasses);\n if (removeEndClasses) {\n removeClasses(element, endClasses);\n }\n addClasses(element, stashedClasses);\n }\n function initialState() {\n controller.transitioned = transitioned;\n if (transitioned) {\n if (!!hiddenClass) {\n targetElement.classList.remove(hiddenClass);\n }\n enter();\n }\n else {\n if (!!hiddenClass) {\n targetElement.classList.add(hiddenClass);\n }\n leave();\n }\n }\n function addClasses(element, classes) {\n if (classes.length > 0) {\n element.classList.add(...classes);\n }\n }\n function removeClasses(element, classes) {\n if (classes.length > 0) {\n element.classList.remove(...classes);\n }\n }\n initialState();\n Object.assign(controller, { enter, leave, toggleTransition });\n return [enter, leave, toggleTransition];\n};\nfunction getAttribute(name, options, dataset) {\n const datasetName = `transition${name[0].toUpperCase()}${name.substr(1)}`;\n const datasetAlpineName = alpineNames[name];\n const classes = options[name] || dataset[datasetName] || dataset[datasetAlpineName] || ' ';\n return isEmpty(classes) ? [] : classes.split(' ');\n}\nasync function afterTransition(element) {\n return new Promise(resolve => {\n const duration = Number(getComputedStyle(element).transitionDuration.split(',')[0].replace('s', '')) * 1000;\n setTimeout(() => {\n resolve(duration);\n }, duration);\n });\n}\nasync function nextAnimationFrame() {\n return new Promise(resolve => {\n requestAnimationFrame(() => {\n requestAnimationFrame(resolve);\n });\n });\n}\nfunction isEmpty(str) {\n return str.length === 0 || !str.trim();\n}\n\nclass TransitionComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.transitioned = false;\n }\n}\nclass TransitionController extends TransitionComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame(() => {\n useTransition(this, this.options);\n });\n }\n}\n\nclass UseHotkeys extends StimulusUse {\n constructor(controller, hotkeysOptions) {\n super(controller, hotkeysOptions);\n this.bind = () => {\n for (const [hotkey, definition] of Object.entries(this.hotkeysOptions.hotkeys)) {\n const handler = definition.handler.bind(this.controller);\n hotkeys(hotkey, definition.options, (e) => handler(e, e));\n }\n };\n this.unbind = () => {\n for (const hotkey in this.hotkeysOptions.hotkeys) {\n hotkeys.unbind(hotkey);\n }\n };\n this.controller = controller;\n this.hotkeysOptions = hotkeysOptions;\n this.enhanceController();\n this.bind();\n }\n enhanceController() {\n if (this.hotkeysOptions.filter) {\n hotkeys.filter = this.hotkeysOptions.filter;\n }\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unbind();\n controllerDisconnect();\n };\n Object.assign(this.controller, { disconnect });\n }\n}\nconst convertSimpleHotkeyDefinition = (definition) => {\n return {\n handler: definition[0],\n options: {\n element: definition[1]\n }\n };\n};\nconst coerceOptions = (options) => {\n if (!options.hotkeys) {\n const hotkeys = {};\n Object.entries(options).forEach(([hotkey, definition]) => {\n Object.defineProperty(hotkeys, hotkey, {\n value: convertSimpleHotkeyDefinition(definition),\n writable: false,\n enumerable: true\n });\n });\n options = {\n hotkeys\n };\n }\n return options;\n};\nconst useHotkeys = (controller, options) => {\n return new UseHotkeys(controller, coerceOptions(options));\n};\n\nconst defaultOptions = {\n mediaQueries: {},\n dispatchEvent: true,\n eventPrefix: true,\n debug: false\n};\nclass UseMatchMedia extends StimulusUse {\n constructor(controller, options = {}) {\n var _a, _b, _c, _d;\n super(controller, options);\n this.matches = [];\n this.callback = (event) => {\n const name = Object.keys(this.mediaQueries).find(name => this.mediaQueries[name] === event.media);\n if (!name)\n return;\n const { media, matches } = event;\n this.changed({ name, media, matches, event });\n };\n this.changed = (payload) => {\n const { name } = payload;\n if (payload.event) {\n this.call(camelize(`${name}_changed`), payload);\n this.dispatch(`${name}:changed`, payload);\n this.log(`media query \"${name}\" changed`, payload);\n }\n if (payload.matches) {\n this.call(camelize(`is_${name}`), payload);\n this.dispatch(`is:${name}`, payload);\n }\n else {\n this.call(camelize(`not_${name}`), payload);\n this.dispatch(`not:${name}`, payload);\n }\n };\n this.observe = () => {\n Object.keys(this.mediaQueries).forEach(name => {\n const media = this.mediaQueries[name];\n const match = window.matchMedia(media);\n match.addListener(this.callback);\n this.matches.push(match);\n this.changed({ name, media, matches: match.matches });\n });\n };\n this.unobserve = () => {\n this.matches.forEach(match => match.removeListener(this.callback));\n };\n this.controller = controller;\n this.mediaQueries = (_a = options.mediaQueries) !== null && _a !== void 0 ? _a : defaultOptions.mediaQueries;\n this.dispatchEvent = (_b = options.dispatchEvent) !== null && _b !== void 0 ? _b : defaultOptions.dispatchEvent;\n this.eventPrefix = (_c = options.eventPrefix) !== null && _c !== void 0 ? _c : defaultOptions.eventPrefix;\n this.debug = (_d = options.debug) !== null && _d !== void 0 ? _d : defaultOptions.debug;\n if (!window.matchMedia) {\n console.error('window.matchMedia() is not available');\n return;\n }\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, { disconnect });\n }\n}\nconst useMatchMedia = (controller, options = {}) => {\n const observer = new UseMatchMedia(controller, options);\n return [observer.observe, observer.unobserve];\n};\n\nclass UseWindowFocus extends StimulusUse {\n constructor(controller, options = {}) {\n super(controller, options);\n this.observe = () => {\n if (document.hasFocus()) {\n this.becomesFocused();\n }\n else {\n console.log('i should be there');\n this.becomesUnfocused();\n }\n this.interval = setInterval(() => {\n this.handleWindowFocusChange();\n }, this.intervalDuration);\n };\n this.unobserve = () => {\n clearInterval(this.interval);\n };\n this.becomesUnfocused = (event) => {\n this.controller.hasFocus = false;\n this.call('unfocus', event);\n this.log('unfocus', { hasFocus: false });\n this.dispatch('unfocus', { event, hasFocus: false });\n };\n this.becomesFocused = (event) => {\n this.controller.hasFocus = true;\n this.call('focus', event);\n this.log('focus', { hasFocus: true });\n this.dispatch('focus', { event, hasFocus: true });\n };\n this.handleWindowFocusChange = (event) => {\n if (document.hasFocus() && !this.controller.hasFocus) {\n this.becomesFocused(event);\n }\n else if (!document.hasFocus() && this.controller.hasFocus) {\n this.becomesUnfocused(event);\n }\n };\n this.controller = controller;\n this.intervalDuration = options.interval || 200;\n this.enhanceController();\n this.observe();\n }\n enhanceController() {\n const controllerDisconnect = this.controllerDisconnect;\n const disconnect = () => {\n this.unobserve();\n controllerDisconnect();\n };\n Object.assign(this.controller, { disconnect });\n }\n}\nconst useWindowFocus = (controller, options = {}) => {\n const observer = new UseWindowFocus(controller, options);\n return [observer.observe, observer.unobserve];\n};\n\nclass WindowFocusComposableController extends Controller {\n constructor() {\n super(...arguments);\n this.hasFocus = false;\n }\n}\nclass WindowFocusController extends WindowFocusComposableController {\n constructor(context) {\n super(context);\n requestAnimationFrame(() => {\n const [observe, unobserve] = useWindowFocus(this, this.options);\n Object.assign(this, { observe, unobserve });\n });\n }\n}\n\nexport { ApplicationController, ClickOutsideController, HoverController, IdleController, IntersectionController, LazyLoadController, MutationController, ResizeController, TargetMutationController, TransitionController, UseHover, UseMutation, UseTargetMutation, UseVisibility, VisibilityController, WindowFocusController, WindowResizeController, useApplication, useClickOutside, useDebounce, useDispatch, useHotkeys, useHover, useIdle, useIntersection, useLazyLoad, useMatchMedia, useMemo, useMeta, useMutation, useResize, useTargetMutation, useThrottle, useTransition, useVisibility, useWindowFocus, useWindowResize };\n", "import { Controller } from '@hotwired/stimulus'\nimport { useClickOutside } from 'stimulus-use'\n\nexport default class ClickOutsideController extends Controller {\n static values = { ignore: String }\n\n connect() {\n useClickOutside(this, {\n dispatchEvent: false,\n })\n }\n\n clickOutside(event) {\n if (this.hasIgnoreValue) {\n const ignoreElement = document.querySelector(this.ignoreValue)\n if (event.target === ignoreElement || ignoreElement.contains(event.target)) {\n return\n }\n }\n\n this.element.dispatchEvent(new Event('click:outside'))\n }\n}\n", "/***\n * Removes extra backdrops and other modals\n */\nfunction removeModals() {\n for (const _modal of [...document.querySelectorAll('.modal')]) {\n $(_modal).on('hidden.bs.modal', function () {\n $(this).remove()\n })\n\n $(_modal).modal('hide')\n }\n // These are technically vestigial now we should rewrite the modal js\n for (const _backdrop of [...document.querySelectorAll('.modal-backdrop')]) {\n _backdrop.remove()\n }\n}\n\nfunction removeModalOpen() {\n document.body.classList.remove('modal-open')\n}\n\nexport function manageClassEventDragAndDrop(modal, calendar) {\n $(modal).modal('show')\n\n const closeBtn = modal.querySelector('.fa-xmark')\n const cancelBtn = modal.querySelector('.btn.btn-default')\n const saveBtn = modal.querySelector('.btn.btn-primary')\n\n closeBtn.addEventListener(\n 'click',\n () => {\n calendar.refetchEvents()\n removeModalOpen()\n },\n {\n once: true,\n },\n ),\n cancelBtn.addEventListener(\n 'click',\n () => {\n calendar.refetchEvents()\n removeModalOpen()\n },\n {\n once: true,\n },\n ),\n saveBtn.addEventListener(\n 'click',\n () => {\n modal.remove()\n removeModalOpen()\n },\n {\n once: true,\n },\n )\n}\n\nfunction modal(showBackdrop) {\n const _modal = document.createElement('div')\n _modal.classList.add('modal')\n _modal.classList.add('modal-form')\n _modal.classList.add('success-modal')\n _modal.classList.add('fade')\n _modal.setAttribute('role', 'dialog')\n _modal.setAttribute('tabindex', '-1')\n _modal.setAttribute('data-backdrop', showBackdrop ? 'true' : 'false')\n\n return _modal\n}\n\nfunction modalDialog() {\n const _modalDialog = document.createElement('div')\n _modalDialog.classList.add('modal-dialog')\n return _modalDialog\n}\n\nfunction modalContent() {\n const _modalContent = document.createElement('div')\n _modalContent.classList.add('modal-content')\n return _modalContent\n}\n\nfunction modalHeader() {\n const _modalHeader = document.createElement('div')\n _modalHeader.classList.add('modal-header')\n return _modalHeader\n}\n\nfunction modalTitle(title, options) {\n const _modalTitle = document.createElement('div')\n _modalTitle.classList.add('modal-title')\n if (options.classes) {\n _modalTitle.classList.add(options.classes)\n }\n _modalTitle.innerHTML = title\n return _modalTitle\n}\n\nfunction modalBody() {\n const _modalBody = document.createElement('div')\n _modalBody.classList.add('modal-body')\n return _modalBody\n}\nfunction modalBodyMessage(message) {\n const _modalBodyMessage = document.createElement('div')\n _modalBodyMessage.classList.add('text-center')\n _modalBodyMessage.innerHTML = message\n return _modalBodyMessage\n}\n\nfunction modalFooter() {\n const _modalFooter = document.createElement('div')\n _modalFooter.classList.add('modal-footer')\n return _modalFooter\n}\n\nfunction closeButton() {\n const _closeButton = document.createElement('button')\n _closeButton.classList.add('close')\n _closeButton.setAttribute('type', 'button')\n _closeButton.setAttribute('aria-label', 'Close')\n _closeButton.addEventListener('click', removeModals)\n return _closeButton\n}\n\nfunction icon() {\n const _icon = document.createElement('i')\n _icon.classList.add('fa')\n _icon.classList.add('fa-times')\n return _icon\n}\n\nfunction cancelButton(denyText) {\n const _cancelButton = document.createElement('button')\n _cancelButton.classList.add('btn')\n _cancelButton.classList.add('btn-default')\n _cancelButton.setAttribute('type', 'button')\n _cancelButton.addEventListener('click', removeModals)\n _cancelButton.innerHTML = denyText\n return _cancelButton\n}\n\nfunction submitButton(confirmText, form_id) {\n const _submitButton = document.createElement('button')\n _submitButton.classList.add('btn')\n _submitButton.classList.add('btn-primary')\n _submitButton.setAttribute('type', 'submit')\n _submitButton.setAttribute('form', form_id)\n _submitButton.setAttribute('name', 'commit')\n _submitButton.innerHTML = confirmText\n return _submitButton\n}\n\nfunction submitAnchor(confirmText, path, method) {\n const _submitAnchor = document.createElement('a')\n _submitAnchor.classList.add('btn')\n _submitAnchor.classList.add('btn-primary')\n _submitAnchor.setAttribute('href', path)\n _submitAnchor.setAttribute('data-method', method)\n _submitAnchor.addEventListener('click', removeModals)\n _submitAnchor.innerHTML = confirmText\n return _submitAnchor\n}\n\n/***\n * Creates a modal with the given title, message, button text and options\n *\n * @param {String} title - The title of the modal\n * @param {String} confirmText - The text of the confirm button\n * @param {String} denyText - The text of the deny button\n * @param {String} message - The message to display in the modal\n * @param {Object} options - The form id or path to submit to as an object\n *\n * @return {HTMLElement} The completely constructed modal\n * @example\n * const modal = createModal('Confirm!', 'OK', 'Cancel', 'Your changes have been saved!', { form_id: '#form' })\n */\nexport function createModal(\n title,\n confirmText,\n denyText,\n message,\n options = {\n form_id: '',\n path: '',\n method: '',\n payload: '',\n showBackdrop: false,\n classes: '',\n },\n) {\n const _modal = modal(options.showBackdrop)\n const _modalDialog = modalDialog()\n const _modalContent = modalContent()\n const _modalHeader = modalHeader()\n const _modalTitle = modalTitle(title, options)\n const _modalBody = modalBody()\n const _modalBodyMessage = modalBodyMessage(message)\n const _modalFooter = modalFooter()\n const _closeButton = closeButton()\n const _icon = icon()\n const _cancelButton = cancelButton(denyText)\n const _submitButton = options.form_id\n ? submitButton(confirmText, options.form_id)\n : submitAnchor(confirmText, options.path, options.method)\n\n // Construct the header\n _closeButton.appendChild(_icon)\n _modalHeader.appendChild(_modalTitle)\n _modalHeader.appendChild(_closeButton)\n\n // Construct the body\n _modalBody.appendChild(_modalBodyMessage)\n\n // Construct the footer\n _modalFooter.appendChild(_cancelButton)\n _modalFooter.appendChild(_submitButton)\n\n // Slap all of those into the modal-content div\n _modalContent.appendChild(_modalHeader)\n _modalContent.appendChild(_modalBody)\n _modalContent.appendChild(_modalFooter)\n\n // Construct the final modal\n _modalDialog.appendChild(_modalContent)\n _modal.appendChild(_modalDialog)\n\n return _modal\n}\n", "/***\n * Removes all extra modal backdrops so there is only one\n */\nexport function removeExtraBackdrops() {\n if (document.querySelectorAll('.modal-backdrop').length > 1) {\n document.querySelector('.modal-backdrop').remove()\n }\n}\n\nexport function removeModalOpen() {\n document.body.classList.remove('modal-open')\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { createModal, manageClassEventDragAndDrop } from '../helpers/confirmation_submit_helper'\nimport { removeExtraBackdrops } from '../helpers/modal_helper'\nimport { flatten } from 'q-flat'\n\n// TODO: This sucks, in reality any modals with confirmations should just send along\n// the actual confirmation modal and the confirmation should just be a part of\n// modal_controller.js\nexport default class extends Controller {\n static targets = ['form']\n static values = {\n editMessage: String,\n deleteMessage: String,\n editTitle: String,\n editSubmitText: String,\n deleteTitle: String,\n deleteSubmitText: String,\n deletePath: String,\n denyText: String,\n showBackdrop: Boolean,\n }\n\n connect() {\n document.addEventListener('confirmation-modal:open', this.showConfirmationModal, { once: true })\n }\n\n showConfirmationModal(event) {\n event.preventDefault()\n const payload = event.detail.data\n const queryString = new URLSearchParams(flatten(payload))\n const calendar = event.detail.calendar\n\n this.modal = createModal(\n event.detail.info.dataset.title,\n event.detail.info.dataset.confirmText,\n event.detail.info.dataset.denyText,\n event.detail.info.dataset.message,\n {\n path: `${event.detail.path}${queryString}`,\n method: 'post',\n payload: `${queryString}`,\n showBackdrop: true,\n },\n )\n\n manageClassEventDragAndDrop(this.modal, calendar)\n }\n\n showEditConfirmation(event) {\n event.preventDefault()\n this.element.classList.add('hidden')\n\n removeExtraBackdrops()\n\n this.modal = createModal(\n this.editTitleValue,\n this.editSubmitTextValue,\n this.denyTextValue,\n this.editMessageValue,\n {\n form_id: this.formTarget.id,\n },\n )\n\n $(this.modal).modal('show')\n }\n\n showDeleteConfirmation(event) {\n event.preventDefault()\n\n if (!document.querySelector('#classes-wrapper')) {\n this.element.classList.add('hidden')\n }\n\n removeExtraBackdrops()\n\n this.modal = createModal(\n this.deleteTitleValue,\n this.deleteSubmitTextValue,\n this.denyTextValue,\n this.deleteMessageValue,\n {\n path: this.deletePathValue,\n method: 'delete',\n showBackdrop: this.showBackdropValue || false,\n classes: 'title-center',\n },\n )\n\n $(this.modal).modal('show')\n }\n\n hide() {\n this.modal.classList.add('hidden')\n document.querySelector('.modal-backdrop').classList.add('hidden')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { initializeDropdownTabs, initializeTooltips } from '../../../vendor/assets/javascripts/voltage'\nimport { put } from '../helpers/fetch_helper'\n\n// TODO: Most of the stuff here isn't great and should be refactored\nexport default class extends Controller {\n connect() {\n initializeDropdownTabs($(this.element))\n initializeTooltips($(this.element))\n\n // This should just be links with turbo tbh\n this.initializeSortingColumns()\n\n this.element.addEventListener('collapse--component:complete', this.setCollapseExpandPreference.bind(this))\n }\n\n disconnect() {\n this.element.removeEventListener('collapse--component:complete', this.setCollapseExpandPreference)\n }\n\n ///\n /// private\n ///\n initializeSortingColumns() {\n for (const header of [...this.element.querySelectorAll('th.sortable-column')]) {\n header.addEventListener(\n 'click',\n () => {\n const sortColumn = header.classList[1]\n const sortAscending = !header.classList.contains('selected-up')\n const url = new URL(this.frame.src)\n\n url.searchParams.set('sort_by', sortColumn)\n url.searchParams.set('sort_asc', sortAscending)\n\n this.frame.src = url\n },\n { once: true },\n )\n }\n }\n\n setCollapseExpandPreference(event) {\n const collapsed = event.detail.collapsed\n const sectionName = this.frame.id.replaceAll(/-/g, '_')\n\n put('/preferences', {\n key: 'dashboard_collapse',\n preferences: {\n [sectionName]: collapsed ? 'collapsed' : 'expanded',\n },\n })\n }\n\n get frame() {\n return this.element.closest('turbo-frame')\n }\n}\n", "/**!\n * Sortable 1.14.0\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.14.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar OnSpill = [Remove, Revert];\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\n * Selects the provided multi-drag item\n * @param {HTMLElement} el The element to be selected\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\n * Deselects the provided multi-drag item\n * @param {HTMLElement} el The element to be deselected\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\n * Insert multi-drag clones\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\n * @param {HTMLElement} rootEl\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nexport default Sortable;\nexport { AutoScrollPlugin as AutoScroll, MultiDragPlugin as MultiDrag, OnSpill, Sortable, SwapPlugin as Swap };\n", "import { Sortable, OnSpill, AutoScroll } from 'sortablejs/modular/sortable.core.esm'\nSortable.mount(OnSpill)\nSortable.mount(AutoScroll) // This only applies to old browsers, no clue if it works.\n\n/**\n * Creates an instance of a Sortable with the options\n *\n * @param {HTMLElement} element - The element to make sortable\n * @param {Object} options - sortablejs options to merge with the defaults\n * @return {Sortable} The sortable instance on the element.\n * @example\n * const sortable = createSortable(document.querySelector('.sortable'), { animation: 200 })\n */\nexport function createSortable(element, options = {}) {\n options = {\n ghostClass: 'sortable-placeholder',\n easing: 'cubic-bezier(0.83, 0, 0.17, 1)',\n filter: '.sortable-ignore',\n dragoverBubble: false,\n scroll: true,\n revertOnSpill: true,\n animation: 125,\n ...options,\n }\n\n return Sortable.create(element, options)\n}\n", "/* global isMobile */\n\nimport { Controller } from '@hotwired/stimulus'\nimport { createSortable } from '../helpers/sortable_helper'\nimport { put } from '../helpers/fetch_helper'\n\n/**\n * Class representing the submit on drop version of the sortable controller\n * @extends Controller\n */\nexport default class DropSortableController extends Controller {\n static values = { options: Object, path: String }\n static targets = ['item']\n\n /**\n * Initialize the Events and Sortable when the Stimulus controller is 'connected'\n */\n connect() {\n const options = {\n onEnd: (event) => {\n this.submit(event)\n },\n draggable: `[data-drop-sortable-target='item']`,\n ...this.optionsValue,\n }\n\n if (isMobile()) {\n options.handle = '.fa-grip-dots-vertical'\n }\n\n this.itemTargets.map((item) => item.classList.add('draggable-item'))\n createSortable(this.element, options)\n }\n\n submit() {\n // When the dragged element is dropped, then update the order of all the elements in db\n const ids = this.itemTargets.map((item) => item.dataset.id)\n put(this.pathValue, { ids })\n }\n}\n", "var objectExtend = extend;\n\n/*\n var obj = {a: 3, b: 5};\n extend(obj, {a: 4, c: 8}); // {a: 4, b: 5, c: 8}\n obj; // {a: 4, b: 5, c: 8}\n\n var obj = {a: 3, b: 5};\n extend({}, obj, {a: 4, c: 8}); // {a: 4, b: 5, c: 8}\n obj; // {a: 3, b: 5}\n\n var arr = [1, 2, 3];\n var obj = {a: 3, b: 5};\n extend(obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]}\n arr.push(4);\n obj; // {a: 3, b: 5, c: [1, 2, 3, 4]}\n\n var arr = [1, 2, 3];\n var obj = {a: 3, b: 5};\n extend(true, obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]}\n arr.push(4);\n obj; // {a: 3, b: 5, c: [1, 2, 3]}\n\n extend({a: 4, b: 5}); // {a: 4, b: 5}\n extend({a: 4, b: 5}, 3); {a: 4, b: 5}\n extend({a: 4, b: 5}, true); {a: 4, b: 5}\n extend('hello', {a: 4, b: 5}); // throws\n extend(3, {a: 4, b: 5}); // throws\n*/\n\nfunction extend(/* [deep], obj1, obj2, [objn] */) {\n var args = [].slice.call(arguments);\n var deep = false;\n if (typeof args[0] == 'boolean') {\n deep = args.shift();\n }\n var result = args[0];\n if (isUnextendable(result)) {\n throw new Error('extendee must be an object');\n }\n var extenders = args.slice(1);\n var len = extenders.length;\n for (var i = 0; i < len; i++) {\n var extender = extenders[i];\n for (var key in extender) {\n if (Object.prototype.hasOwnProperty.call(extender, key)) {\n var value = extender[key];\n if (deep && isCloneable(value)) {\n var base = Array.isArray(value) ? [] : {};\n result[key] = extend(\n true,\n Object.prototype.hasOwnProperty.call(result, key) && !isUnextendable(result[key])\n ? result[key]\n : base,\n value\n );\n } else {\n result[key] = value;\n }\n }\n }\n }\n return result;\n}\n\nfunction isCloneable(obj) {\n return Array.isArray(obj) || {}.toString.call(obj) == '[object Object]';\n}\n\nfunction isUnextendable(val) {\n return !val || (typeof val != 'object' && typeof val != 'function');\n}\n\nexport {objectExtend as default};\n", "import extend from \"just-extend\";\nimport Emitter from \"./emitter\";\nimport defaultOptions from \"./options\";\n\nexport default class Dropzone extends Emitter {\n static initClass() {\n // Exposing the emitter class, mainly for tests\n this.prototype.Emitter = Emitter;\n\n /*\n This is a list of all available events you can register on a dropzone object.\n\n You can register an event handler like this:\n\n dropzone.on(\"dragEnter\", function() { });\n\n */\n this.prototype.events = [\n \"drop\",\n \"dragstart\",\n \"dragend\",\n \"dragenter\",\n \"dragover\",\n \"dragleave\",\n \"addedfile\",\n \"addedfiles\",\n \"removedfile\",\n \"thumbnail\",\n \"error\",\n \"errormultiple\",\n \"processing\",\n \"processingmultiple\",\n \"uploadprogress\",\n \"totaluploadprogress\",\n \"sending\",\n \"sendingmultiple\",\n \"success\",\n \"successmultiple\",\n \"canceled\",\n \"canceledmultiple\",\n \"complete\",\n \"completemultiple\",\n \"reset\",\n \"maxfilesexceeded\",\n \"maxfilesreached\",\n \"queuecomplete\",\n ];\n\n this.prototype._thumbnailQueue = [];\n this.prototype._processingThumbnail = false;\n }\n\n constructor(el, options) {\n super();\n let fallback, left;\n this.element = el;\n\n this.clickableElements = [];\n this.listeners = [];\n this.files = []; // All files\n\n if (typeof this.element === \"string\") {\n this.element = document.querySelector(this.element);\n }\n\n // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n if (!this.element || this.element.nodeType == null) {\n throw new Error(\"Invalid dropzone element.\");\n }\n\n if (this.element.dropzone) {\n throw new Error(\"Dropzone already attached.\");\n }\n\n // Now add this dropzone to the instances.\n Dropzone.instances.push(this);\n\n // Put the dropzone inside the element itself.\n this.element.dropzone = this;\n\n let elementOptions =\n (left = Dropzone.optionsForElement(this.element)) != null ? left : {};\n\n this.options = extend(\n true,\n {},\n defaultOptions,\n elementOptions,\n options != null ? options : {}\n );\n\n this.options.previewTemplate = this.options.previewTemplate.replace(\n /\\n*/g,\n \"\"\n );\n\n // If the browser failed, just call the fallback and leave\n if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n return this.options.fallback.call(this);\n }\n\n // @options.url = @element.getAttribute \"action\" unless @options.url?\n if (this.options.url == null) {\n this.options.url = this.element.getAttribute(\"action\");\n }\n\n if (!this.options.url) {\n throw new Error(\"No URL provided.\");\n }\n\n if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\n throw new Error(\n \"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\"\n );\n }\n\n if (this.options.uploadMultiple && this.options.chunking) {\n throw new Error(\"You cannot set both: uploadMultiple and chunking.\");\n }\n\n if (this.options.binaryBody && this.options.uploadMultiple) {\n throw new Error(\"You cannot set both: binaryBody and uploadMultiple.\");\n }\n\n // Backwards compatibility\n if (this.options.acceptedMimeTypes) {\n this.options.acceptedFiles = this.options.acceptedMimeTypes;\n delete this.options.acceptedMimeTypes;\n }\n\n // Backwards compatibility\n if (this.options.renameFilename != null) {\n this.options.renameFile = (file) =>\n this.options.renameFilename.call(this, file.name, file);\n }\n\n if (typeof this.options.method === \"string\") {\n this.options.method = this.options.method.toUpperCase();\n }\n\n if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n // Remove the fallback\n fallback.parentNode.removeChild(fallback);\n }\n\n // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n if (this.options.previewsContainer !== false) {\n if (this.options.previewsContainer) {\n this.previewsContainer = Dropzone.getElement(\n this.options.previewsContainer,\n \"previewsContainer\"\n );\n } else {\n this.previewsContainer = this.element;\n }\n }\n\n if (this.options.clickable) {\n if (this.options.clickable === true) {\n this.clickableElements = [this.element];\n } else {\n this.clickableElements = Dropzone.getElements(\n this.options.clickable,\n \"clickable\"\n );\n }\n }\n\n this.init();\n }\n\n // Returns all files that have been accepted\n getAcceptedFiles() {\n return this.files.filter((file) => file.accepted).map((file) => file);\n }\n\n // Returns all files that have been rejected\n // Not sure when that's going to be useful, but added for completeness.\n getRejectedFiles() {\n return this.files.filter((file) => !file.accepted).map((file) => file);\n }\n\n getFilesWithStatus(status) {\n return this.files\n .filter((file) => file.status === status)\n .map((file) => file);\n }\n\n // Returns all files that are in the queue\n getQueuedFiles() {\n return this.getFilesWithStatus(Dropzone.QUEUED);\n }\n\n getUploadingFiles() {\n return this.getFilesWithStatus(Dropzone.UPLOADING);\n }\n\n getAddedFiles() {\n return this.getFilesWithStatus(Dropzone.ADDED);\n }\n\n // Files that are either queued or uploading\n getActiveFiles() {\n return this.files\n .filter(\n (file) =>\n file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED\n )\n .map((file) => file);\n }\n\n // The function that gets called when Dropzone is initialized. You\n // can (and should) setup event listeners inside this function.\n init() {\n // In case it isn't set already\n if (this.element.tagName === \"form\") {\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n }\n\n if (\n this.element.classList.contains(\"dropzone\") &&\n !this.element.querySelector(\".dz-message\")\n ) {\n this.element.appendChild(\n Dropzone.createElement(\n `<div class=\"dz-default dz-message\"><button class=\"dz-button\" type=\"button\">${this.options.dictDefaultMessage}</button></div>`\n )\n );\n }\n\n if (this.clickableElements.length) {\n let setupHiddenFileInput = () => {\n if (this.hiddenFileInput) {\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n }\n this.hiddenFileInput = document.createElement(\"input\");\n this.hiddenFileInput.setAttribute(\"type\", \"file\");\n if (this.options.maxFiles === null || this.options.maxFiles > 1) {\n this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n }\n this.hiddenFileInput.className = \"dz-hidden-input\";\n\n if (this.options.acceptedFiles !== null) {\n this.hiddenFileInput.setAttribute(\n \"accept\",\n this.options.acceptedFiles\n );\n }\n if (this.options.capture !== null) {\n this.hiddenFileInput.setAttribute(\"capture\", this.options.capture);\n }\n\n // Making sure that no one can \"tab\" into this field.\n this.hiddenFileInput.setAttribute(\"tabindex\", \"-1\");\n\n // Not setting `display=\"none\"` because some browsers don't accept clicks\n // on elements that aren't displayed.\n this.hiddenFileInput.style.visibility = \"hidden\";\n this.hiddenFileInput.style.position = \"absolute\";\n this.hiddenFileInput.style.top = \"0\";\n this.hiddenFileInput.style.left = \"0\";\n this.hiddenFileInput.style.height = \"0\";\n this.hiddenFileInput.style.width = \"0\";\n Dropzone.getElement(\n this.options.hiddenInputContainer,\n \"hiddenInputContainer\"\n ).appendChild(this.hiddenFileInput);\n this.hiddenFileInput.addEventListener(\"change\", () => {\n let { files } = this.hiddenFileInput;\n if (files.length) {\n for (let file of files) {\n this.addFile(file);\n }\n }\n this.emit(\"addedfiles\", files);\n setupHiddenFileInput();\n });\n };\n setupHiddenFileInput();\n }\n\n this.URL = window.URL !== null ? window.URL : window.webkitURL;\n\n // Setup all event listeners on the Dropzone object itself.\n // They're not in @setupEventListeners() because they shouldn't be removed\n // again when the dropzone gets disabled.\n for (let eventName of this.events) {\n this.on(eventName, this.options[eventName]);\n }\n\n this.on(\"uploadprogress\", () => this.updateTotalUploadProgress());\n\n this.on(\"removedfile\", () => this.updateTotalUploadProgress());\n\n this.on(\"canceled\", (file) => this.emit(\"complete\", file));\n\n // Emit a `queuecomplete` event if all files finished uploading.\n this.on(\"complete\", (file) => {\n if (\n this.getAddedFiles().length === 0 &&\n this.getUploadingFiles().length === 0 &&\n this.getQueuedFiles().length === 0\n ) {\n // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n return setTimeout(() => this.emit(\"queuecomplete\"), 0);\n }\n });\n\n const containsFiles = function (e) {\n if (e.dataTransfer.types) {\n // Because e.dataTransfer.types is an Object in\n // IE, we need to iterate like this instead of\n // using e.dataTransfer.types.some()\n for (var i = 0; i < e.dataTransfer.types.length; i++) {\n if (e.dataTransfer.types[i] === \"Files\") return true;\n }\n }\n return false;\n };\n\n let noPropagation = function (e) {\n // If there are no files, we don't want to stop\n // propagation so we don't interfere with other\n // drag and drop behaviour.\n if (!containsFiles(e)) return;\n e.stopPropagation();\n if (e.preventDefault) {\n return e.preventDefault();\n } else {\n return (e.returnValue = false);\n }\n };\n\n // Create the listeners\n this.listeners = [\n {\n element: this.element,\n events: {\n dragstart: (e) => {\n return this.emit(\"dragstart\", e);\n },\n dragenter: (e) => {\n noPropagation(e);\n return this.emit(\"dragenter\", e);\n },\n dragover: (e) => {\n // Makes it possible to drag files from chrome's download bar\n // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n let efct;\n try {\n efct = e.dataTransfer.effectAllowed;\n } catch (error) {}\n e.dataTransfer.dropEffect =\n \"move\" === efct || \"linkMove\" === efct ? \"move\" : \"copy\";\n\n noPropagation(e);\n return this.emit(\"dragover\", e);\n },\n dragleave: (e) => {\n return this.emit(\"dragleave\", e);\n },\n drop: (e) => {\n noPropagation(e);\n return this.drop(e);\n },\n dragend: (e) => {\n return this.emit(\"dragend\", e);\n },\n },\n\n // This is disabled right now, because the browsers don't implement it properly.\n // \"paste\": (e) =>\n // noPropagation e\n // @paste e\n },\n ];\n\n this.clickableElements.forEach((clickableElement) => {\n return this.listeners.push({\n element: clickableElement,\n events: {\n click: (evt) => {\n // Only the actual dropzone or the message element should trigger file selection\n if (\n clickableElement !== this.element ||\n evt.target === this.element ||\n Dropzone.elementInside(\n evt.target,\n this.element.querySelector(\".dz-message\")\n )\n ) {\n this.hiddenFileInput.click(); // Forward the click\n }\n return true;\n },\n },\n });\n });\n\n this.enable();\n\n return this.options.init.call(this);\n }\n\n // Not fully tested yet\n destroy() {\n this.disable();\n this.removeAllFiles(true);\n if (\n this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined\n ) {\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n this.hiddenFileInput = null;\n }\n delete this.element.dropzone;\n return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n }\n\n updateTotalUploadProgress() {\n let totalUploadProgress;\n let totalBytesSent = 0;\n let totalBytes = 0;\n\n let activeFiles = this.getActiveFiles();\n\n if (activeFiles.length) {\n for (let file of this.getActiveFiles()) {\n totalBytesSent += file.upload.bytesSent;\n totalBytes += file.upload.total;\n }\n totalUploadProgress = (100 * totalBytesSent) / totalBytes;\n } else {\n totalUploadProgress = 100;\n }\n\n return this.emit(\n \"totaluploadprogress\",\n totalUploadProgress,\n totalBytes,\n totalBytesSent\n );\n }\n\n // @options.paramName can be a function taking one parameter rather than a string.\n // A parameter name for a file is obtained simply by calling this with an index number.\n _getParamName(n) {\n if (typeof this.options.paramName === \"function\") {\n return this.options.paramName(n);\n } else {\n return `${this.options.paramName}${\n this.options.uploadMultiple ? `[${n}]` : \"\"\n }`;\n }\n }\n\n // If @options.renameFile is a function,\n // the function will be used to rename the file.name before appending it to the formData\n _renameFile(file) {\n if (typeof this.options.renameFile !== \"function\") {\n return file.name;\n }\n return this.options.renameFile(file);\n }\n\n // Returns a form that can be used as fallback if the browser does not support DragnDrop\n //\n // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n // This code has to pass in IE7 :(\n getFallbackForm() {\n let existingFallback, form;\n if ((existingFallback = this.getExistingFallback())) {\n return existingFallback;\n }\n\n let fieldsString = '<div class=\"dz-fallback\">';\n if (this.options.dictFallbackText) {\n fieldsString += `<p>${this.options.dictFallbackText}</p>`;\n }\n fieldsString += `<input type=\"file\" name=\"${this._getParamName(0)}\" ${\n this.options.uploadMultiple ? 'multiple=\"multiple\"' : undefined\n } /><input type=\"submit\" value=\"Upload!\"></div>`;\n\n let fields = Dropzone.createElement(fieldsString);\n if (this.element.tagName !== \"FORM\") {\n form = Dropzone.createElement(\n `<form action=\"${this.options.url}\" enctype=\"multipart/form-data\" method=\"${this.options.method}\"></form>`\n );\n form.appendChild(fields);\n } else {\n // Make sure that the enctype and method attributes are set properly\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n this.element.setAttribute(\"method\", this.options.method);\n }\n return form != null ? form : fields;\n }\n\n // Returns the fallback elements if they exist already\n //\n // This code has to pass in IE7 :(\n getExistingFallback() {\n let getFallback = function (elements) {\n for (let el of elements) {\n if (/(^| )fallback($| )/.test(el.className)) {\n return el;\n }\n }\n };\n\n for (let tagName of [\"div\", \"form\"]) {\n var fallback;\n if (\n (fallback = getFallback(this.element.getElementsByTagName(tagName)))\n ) {\n return fallback;\n }\n }\n }\n\n // Activates all listeners stored in @listeners\n setupEventListeners() {\n return this.listeners.map((elementListeners) =>\n (() => {\n let result = [];\n for (let event in elementListeners.events) {\n let listener = elementListeners.events[event];\n result.push(\n elementListeners.element.addEventListener(event, listener, false)\n );\n }\n return result;\n })()\n );\n }\n\n // Deactivates all listeners stored in @listeners\n removeEventListeners() {\n return this.listeners.map((elementListeners) =>\n (() => {\n let result = [];\n for (let event in elementListeners.events) {\n let listener = elementListeners.events[event];\n result.push(\n elementListeners.element.removeEventListener(event, listener, false)\n );\n }\n return result;\n })()\n );\n }\n\n // Removes all event listeners and cancels all files in the queue or being processed.\n disable() {\n this.clickableElements.forEach((element) =>\n element.classList.remove(\"dz-clickable\")\n );\n this.removeEventListeners();\n this.disabled = true;\n\n return this.files.map((file) => this.cancelUpload(file));\n }\n\n enable() {\n delete this.disabled;\n this.clickableElements.forEach((element) =>\n element.classList.add(\"dz-clickable\")\n );\n return this.setupEventListeners();\n }\n\n // Returns a nicely formatted filesize\n filesize(size) {\n let selectedSize = 0;\n let selectedUnit = \"b\";\n\n if (size > 0) {\n let units = [\"tb\", \"gb\", \"mb\", \"kb\", \"b\"];\n\n for (let i = 0; i < units.length; i++) {\n let unit = units[i];\n let cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n if (size >= cutoff) {\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n selectedUnit = unit;\n break;\n }\n }\n\n selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n }\n\n return `<strong>${selectedSize}</strong> ${this.options.dictFileSizeUnits[selectedUnit]}`;\n }\n\n // Adds or removes the `dz-max-files-reached` class from the form.\n _updateMaxFilesReachedClass() {\n if (\n this.options.maxFiles != null &&\n this.getAcceptedFiles().length >= this.options.maxFiles\n ) {\n if (this.getAcceptedFiles().length === this.options.maxFiles) {\n this.emit(\"maxfilesreached\", this.files);\n }\n return this.element.classList.add(\"dz-max-files-reached\");\n } else {\n return this.element.classList.remove(\"dz-max-files-reached\");\n }\n }\n\n drop(e) {\n if (!e.dataTransfer) {\n return;\n }\n this.emit(\"drop\", e);\n\n // Convert the FileList to an Array\n // This is necessary for IE11\n let files = [];\n for (let i = 0; i < e.dataTransfer.files.length; i++) {\n files[i] = e.dataTransfer.files[i];\n }\n\n // Even if it's a folder, files.length will contain the folders.\n if (files.length) {\n let { items } = e.dataTransfer;\n if (items && items.length && items[0].webkitGetAsEntry != null) {\n // The browser supports dropping of folders, so handle items instead of files\n this._addFilesFromItems(items);\n } else {\n this.handleFiles(files);\n }\n }\n\n this.emit(\"addedfiles\", files);\n }\n\n paste(e) {\n if (\n __guard__(e != null ? e.clipboardData : undefined, (x) => x.items) == null\n ) {\n return;\n }\n\n this.emit(\"paste\", e);\n let { items } = e.clipboardData;\n\n if (items.length) {\n return this._addFilesFromItems(items);\n }\n }\n\n handleFiles(files) {\n for (let file of files) {\n this.addFile(file);\n }\n }\n\n // When a folder is dropped (or files are pasted), items must be handled\n // instead of files.\n _addFilesFromItems(items) {\n return (() => {\n let result = [];\n for (let item of items) {\n var entry;\n if (\n item.webkitGetAsEntry != null &&\n (entry = item.webkitGetAsEntry())\n ) {\n if (entry.isFile) {\n result.push(this.addFile(item.getAsFile()));\n } else if (entry.isDirectory) {\n // Append all files from that directory to files\n result.push(this._addFilesFromDirectory(entry, entry.name));\n } else {\n result.push(undefined);\n }\n } else if (item.getAsFile != null) {\n if (item.kind == null || item.kind === \"file\") {\n result.push(this.addFile(item.getAsFile()));\n } else {\n result.push(undefined);\n }\n } else {\n result.push(undefined);\n }\n }\n return result;\n })();\n }\n\n // Goes through the directory, and adds each file it finds recursively\n _addFilesFromDirectory(directory, path) {\n let dirReader = directory.createReader();\n\n let errorHandler = (error) =>\n __guardMethod__(console, \"log\", (o) => o.log(error));\n\n var readEntries = () => {\n return dirReader.readEntries((entries) => {\n if (entries.length > 0) {\n for (let entry of entries) {\n if (entry.isFile) {\n entry.file((file) => {\n if (\n this.options.ignoreHiddenFiles &&\n file.name.substring(0, 1) === \".\"\n ) {\n return;\n }\n file.fullPath = `${path}/${file.name}`;\n return this.addFile(file);\n });\n } else if (entry.isDirectory) {\n this._addFilesFromDirectory(entry, `${path}/${entry.name}`);\n }\n }\n\n // Recursively call readEntries() again, since browser only handle\n // the first 100 entries.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n readEntries();\n }\n return null;\n }, errorHandler);\n };\n\n return readEntries();\n }\n\n // If `done()` is called without argument the file is accepted\n // If you call it with an error message, the file is rejected\n // (This allows for asynchronous validation)\n //\n // This function checks the filesize, and if the file.type passes the\n // `acceptedFiles` check.\n accept(file, done) {\n if (\n this.options.maxFilesize &&\n file.size > this.options.maxFilesize * 1024 * 1024\n ) {\n done(\n this.options.dictFileTooBig\n .replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100)\n .replace(\"{{maxFilesize}}\", this.options.maxFilesize)\n );\n } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n done(this.options.dictInvalidFileType);\n } else if (\n this.options.maxFiles != null &&\n this.getAcceptedFiles().length >= this.options.maxFiles\n ) {\n done(\n this.options.dictMaxFilesExceeded.replace(\n \"{{maxFiles}}\",\n this.options.maxFiles\n )\n );\n this.emit(\"maxfilesexceeded\", file);\n } else {\n this.options.accept.call(this, file, done);\n }\n }\n\n addFile(file) {\n file.upload = {\n uuid: Dropzone.uuidv4(),\n progress: 0,\n // Setting the total upload size to file.size for the beginning\n // It's actual different than the size to be transmitted.\n total: file.size,\n bytesSent: 0,\n filename: this._renameFile(file),\n // Not setting chunking information here, because the acutal data \u2014 and\n // thus the chunks \u2014 might change if `options.transformFile` is set\n // and does something to the data.\n };\n this.files.push(file);\n\n file.status = Dropzone.ADDED;\n\n this.emit(\"addedfile\", file);\n\n this._enqueueThumbnail(file);\n\n this.accept(file, (error) => {\n if (error) {\n file.accepted = false;\n this._errorProcessing([file], error); // Will set the file.status\n } else {\n file.accepted = true;\n if (this.options.autoQueue) {\n this.enqueueFile(file);\n } // Will set .accepted = true\n }\n this._updateMaxFilesReachedClass();\n });\n }\n\n // Wrapper for enqueueFile\n enqueueFiles(files) {\n for (let file of files) {\n this.enqueueFile(file);\n }\n return null;\n }\n\n enqueueFile(file) {\n if (file.status === Dropzone.ADDED && file.accepted === true) {\n file.status = Dropzone.QUEUED;\n if (this.options.autoProcessQueue) {\n return setTimeout(() => this.processQueue(), 0); // Deferring the call\n }\n } else {\n throw new Error(\n \"This file can't be queued because it has already been processed or was rejected.\"\n );\n }\n }\n\n _enqueueThumbnail(file) {\n if (\n this.options.createImageThumbnails &&\n file.type.match(/image.*/) &&\n file.size <= this.options.maxThumbnailFilesize * 1024 * 1024\n ) {\n this._thumbnailQueue.push(file);\n return setTimeout(() => this._processThumbnailQueue(), 0); // Deferring the call\n }\n }\n\n _processThumbnailQueue() {\n if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n return;\n }\n\n this._processingThumbnail = true;\n let file = this._thumbnailQueue.shift();\n return this.createThumbnail(\n file,\n this.options.thumbnailWidth,\n this.options.thumbnailHeight,\n this.options.thumbnailMethod,\n true,\n (dataUrl) => {\n this.emit(\"thumbnail\", file, dataUrl);\n this._processingThumbnail = false;\n return this._processThumbnailQueue();\n }\n );\n }\n\n // Can be called by the user to remove a file\n removeFile(file) {\n if (file.status === Dropzone.UPLOADING) {\n this.cancelUpload(file);\n }\n this.files = without(this.files, file);\n\n this.emit(\"removedfile\", file);\n if (this.files.length === 0) {\n return this.emit(\"reset\");\n }\n }\n\n // Removes all files that aren't currently processed from the list\n removeAllFiles(cancelIfNecessary) {\n // Create a copy of files since removeFile() changes the @files array.\n if (cancelIfNecessary == null) {\n cancelIfNecessary = false;\n }\n for (let file of this.files.slice()) {\n if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n this.removeFile(file);\n }\n }\n return null;\n }\n\n // Resizes an image before it gets sent to the server. This function is the default behavior of\n // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n // the resized blob.\n resizeImage(file, width, height, resizeMethod, callback) {\n return this.createThumbnail(\n file,\n width,\n height,\n resizeMethod,\n true,\n (dataUrl, canvas) => {\n if (canvas == null) {\n // The image has not been resized\n return callback(file);\n } else {\n let { resizeMimeType } = this.options;\n if (resizeMimeType == null) {\n resizeMimeType = file.type;\n }\n let resizedDataURL = canvas.toDataURL(\n resizeMimeType,\n this.options.resizeQuality\n );\n if (\n resizeMimeType === \"image/jpeg\" ||\n resizeMimeType === \"image/jpg\"\n ) {\n // Now add the original EXIF information\n resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n }\n return callback(Dropzone.dataURItoBlob(resizedDataURL));\n }\n }\n );\n }\n\n createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n let fileReader = new FileReader();\n\n fileReader.onload = () => {\n file.dataURL = fileReader.result;\n\n // Don't bother creating a thumbnail for SVG images since they're vector\n if (file.type === \"image/svg+xml\") {\n if (callback != null) {\n callback(fileReader.result);\n }\n return;\n }\n\n this.createThumbnailFromUrl(\n file,\n width,\n height,\n resizeMethod,\n fixOrientation,\n callback\n );\n };\n\n fileReader.readAsDataURL(file);\n }\n\n // `mockFile` needs to have these attributes:\n //\n // { name: 'name', size: 12345, imageUrl: '' }\n //\n // `callback` will be invoked when the image has been downloaded and displayed.\n // `crossOrigin` will be added to the `img` tag when accessing the file.\n displayExistingFile(\n mockFile,\n imageUrl,\n callback,\n crossOrigin,\n resizeThumbnail = true\n ) {\n this.emit(\"addedfile\", mockFile);\n this.emit(\"complete\", mockFile);\n\n if (!resizeThumbnail) {\n this.emit(\"thumbnail\", mockFile, imageUrl);\n if (callback) callback();\n } else {\n let onDone = (thumbnail) => {\n this.emit(\"thumbnail\", mockFile, thumbnail);\n if (callback) callback();\n };\n mockFile.dataURL = imageUrl;\n\n this.createThumbnailFromUrl(\n mockFile,\n this.options.thumbnailWidth,\n this.options.thumbnailHeight,\n this.options.thumbnailMethod,\n this.options.fixOrientation,\n onDone,\n crossOrigin\n );\n }\n }\n\n createThumbnailFromUrl(\n file,\n width,\n height,\n resizeMethod,\n fixOrientation,\n callback,\n crossOrigin\n ) {\n // Not using `new Image` here because of a bug in latest Chrome versions.\n // See https://github.com/enyo/dropzone/pull/226\n let img = document.createElement(\"img\");\n\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n\n // fixOrientation is not needed anymore with browsers handling imageOrientation\n fixOrientation =\n getComputedStyle(document.body)[\"imageOrientation\"] == \"from-image\"\n ? false\n : fixOrientation;\n\n img.onload = () => {\n let loadExif = (callback) => callback(1);\n if (typeof EXIF !== \"undefined\" && EXIF !== null && fixOrientation) {\n loadExif = (callback) =>\n EXIF.getData(img, function () {\n return callback(EXIF.getTag(this, \"Orientation\"));\n });\n }\n\n return loadExif((orientation) => {\n file.width = img.width;\n file.height = img.height;\n\n let resizeInfo = this.options.resize.call(\n this,\n file,\n width,\n height,\n resizeMethod\n );\n\n let canvas = document.createElement(\"canvas\");\n let ctx = canvas.getContext(\"2d\");\n\n canvas.width = resizeInfo.trgWidth;\n canvas.height = resizeInfo.trgHeight;\n\n if (orientation > 4) {\n canvas.width = resizeInfo.trgHeight;\n canvas.height = resizeInfo.trgWidth;\n }\n\n switch (orientation) {\n case 2:\n // horizontal flip\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n break;\n case 3:\n // 180\u00B0 rotate left\n ctx.translate(canvas.width, canvas.height);\n ctx.rotate(Math.PI);\n break;\n case 4:\n // vertical flip\n ctx.translate(0, canvas.height);\n ctx.scale(1, -1);\n break;\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.scale(1, -1);\n break;\n case 6:\n // 90\u00B0 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(0, -canvas.width);\n break;\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(canvas.height, -canvas.width);\n ctx.scale(-1, 1);\n break;\n case 8:\n // 90\u00B0 rotate left\n ctx.rotate(-0.5 * Math.PI);\n ctx.translate(-canvas.height, 0);\n break;\n }\n\n // This is a bugfix for iOS' scaling bug.\n drawImageIOSFix(\n ctx,\n img,\n resizeInfo.srcX != null ? resizeInfo.srcX : 0,\n resizeInfo.srcY != null ? resizeInfo.srcY : 0,\n resizeInfo.srcWidth,\n resizeInfo.srcHeight,\n resizeInfo.trgX != null ? resizeInfo.trgX : 0,\n resizeInfo.trgY != null ? resizeInfo.trgY : 0,\n resizeInfo.trgWidth,\n resizeInfo.trgHeight\n );\n\n let thumbnail = canvas.toDataURL(\"image/png\");\n\n if (callback != null) {\n return callback(thumbnail, canvas);\n }\n });\n };\n\n if (callback != null) {\n img.onerror = callback;\n }\n\n return (img.src = file.dataURL);\n }\n\n // Goes through the queue and processes files if there aren't too many already.\n processQueue() {\n let { parallelUploads } = this.options;\n let processingLength = this.getUploadingFiles().length;\n let i = processingLength;\n\n // There are already at least as many files uploading than should be\n if (processingLength >= parallelUploads) {\n return;\n }\n\n let queuedFiles = this.getQueuedFiles();\n\n if (!(queuedFiles.length > 0)) {\n return;\n }\n\n if (this.options.uploadMultiple) {\n // The files should be uploaded in one request\n return this.processFiles(\n queuedFiles.slice(0, parallelUploads - processingLength)\n );\n } else {\n while (i < parallelUploads) {\n if (!queuedFiles.length) {\n return;\n } // Nothing left to process\n this.processFile(queuedFiles.shift());\n i++;\n }\n }\n }\n\n // Wrapper for `processFiles`\n processFile(file) {\n return this.processFiles([file]);\n }\n\n // Loads the file, then calls finishedLoading()\n processFiles(files) {\n for (let file of files) {\n file.processing = true; // Backwards compatibility\n file.status = Dropzone.UPLOADING;\n\n this.emit(\"processing\", file);\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"processingmultiple\", files);\n }\n\n return this.uploadFiles(files);\n }\n\n _getFilesWithXhr(xhr) {\n let files;\n return (files = this.files\n .filter((file) => file.xhr === xhr)\n .map((file) => file));\n }\n\n // Cancels the file upload and sets the status to CANCELED\n // **if** the file is actually being uploaded.\n // If it's still in the queue, the file is being removed from it and the status\n // set to CANCELED.\n cancelUpload(file) {\n if (file.status === Dropzone.UPLOADING) {\n let groupedFiles = this._getFilesWithXhr(file.xhr);\n for (let groupedFile of groupedFiles) {\n groupedFile.status = Dropzone.CANCELED;\n }\n if (typeof file.xhr !== \"undefined\") {\n file.xhr.abort();\n }\n for (let groupedFile of groupedFiles) {\n this.emit(\"canceled\", groupedFile);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", groupedFiles);\n }\n } else if (\n file.status === Dropzone.ADDED ||\n file.status === Dropzone.QUEUED\n ) {\n file.status = Dropzone.CANCELED;\n this.emit(\"canceled\", file);\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", [file]);\n }\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n\n resolveOption(option, ...args) {\n if (typeof option === \"function\") {\n return option.apply(this, args);\n }\n return option;\n }\n\n uploadFile(file) {\n return this.uploadFiles([file]);\n }\n\n uploadFiles(files) {\n this._transformFiles(files, (transformedFiles) => {\n if (this.options.chunking) {\n // Chunking is not allowed to be used with `uploadMultiple` so we know\n // that there is only __one__file.\n let transformedFile = transformedFiles[0];\n files[0].upload.chunked =\n this.options.chunking &&\n (this.options.forceChunking ||\n transformedFile.size > this.options.chunkSize);\n files[0].upload.totalChunkCount = Math.ceil(\n transformedFile.size / this.options.chunkSize\n );\n }\n\n if (files[0].upload.chunked) {\n // This file should be sent in chunks!\n\n // If the chunking option is set, we **know** that there can only be **one** file, since\n // uploadMultiple is not allowed with this option.\n let file = files[0];\n let transformedFile = transformedFiles[0];\n let startedChunkCount = 0;\n\n file.upload.chunks = [];\n\n let handleNextChunk = () => {\n let chunkIndex = 0;\n\n // Find the next item in file.upload.chunks that is not defined yet.\n while (file.upload.chunks[chunkIndex] !== undefined) {\n chunkIndex++;\n }\n\n // This means, that all chunks have already been started.\n if (chunkIndex >= file.upload.totalChunkCount) return;\n\n startedChunkCount++;\n\n let start = chunkIndex * this.options.chunkSize;\n let end = Math.min(\n start + this.options.chunkSize,\n transformedFile.size\n );\n\n let dataBlock = {\n name: this._getParamName(0),\n data: transformedFile.webkitSlice\n ? transformedFile.webkitSlice(start, end)\n : transformedFile.slice(start, end),\n filename: file.upload.filename,\n chunkIndex: chunkIndex,\n };\n\n file.upload.chunks[chunkIndex] = {\n file: file,\n index: chunkIndex,\n dataBlock: dataBlock, // In case we want to retry.\n status: Dropzone.UPLOADING,\n progress: 0,\n retries: 0, // The number of times this block has been retried.\n };\n\n this._uploadData(files, [dataBlock]);\n };\n\n file.upload.finishedChunkUpload = (chunk, response) => {\n let allFinished = true;\n chunk.status = Dropzone.SUCCESS;\n\n // Clear the data from the chunk\n chunk.dataBlock = null;\n chunk.response = chunk.xhr.responseText;\n chunk.responseHeaders = chunk.xhr.getAllResponseHeaders();\n // Leaving this reference to xhr will cause memory leaks.\n chunk.xhr = null;\n\n for (let i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] === undefined) {\n return handleNextChunk();\n }\n if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n allFinished = false;\n }\n }\n\n if (allFinished) {\n this.options.chunksUploaded(file, () => {\n this._finished(files, response, null);\n });\n }\n };\n\n if (this.options.parallelChunkUploads) {\n for (let i = 0; i < file.upload.totalChunkCount; i++) {\n handleNextChunk();\n }\n } else {\n handleNextChunk();\n }\n } else {\n let dataBlocks = [];\n for (let i = 0; i < files.length; i++) {\n dataBlocks[i] = {\n name: this._getParamName(i),\n data: transformedFiles[i],\n filename: files[i].upload.filename,\n };\n }\n this._uploadData(files, dataBlocks);\n }\n });\n }\n\n /// Returns the right chunk for given file and xhr\n _getChunk(file, xhr) {\n for (let i = 0; i < file.upload.totalChunkCount; i++) {\n if (\n file.upload.chunks[i] !== undefined &&\n file.upload.chunks[i].xhr === xhr\n ) {\n return file.upload.chunks[i];\n }\n }\n }\n\n // This function actually uploads the file(s) to the server.\n //\n // If dataBlocks contains the actual data to upload (meaning, that this could\n // either be transformed files, or individual chunks for chunked upload) then\n // they will be used for the actual data to upload.\n _uploadData(files, dataBlocks) {\n let xhr = new XMLHttpRequest();\n\n // Put the xhr object in the file objects to be able to reference it later.\n for (let file of files) {\n file.xhr = xhr;\n }\n if (files[0].upload.chunked) {\n // Put the xhr object in the right chunk object, so it can be associated\n // later, and found with _getChunk.\n files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n }\n\n let method = this.resolveOption(this.options.method, files, dataBlocks);\n let url = this.resolveOption(this.options.url, files, dataBlocks);\n xhr.open(method, url, true);\n\n // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n let timeout = this.resolveOption(this.options.timeout, files);\n if (timeout) xhr.timeout = this.resolveOption(this.options.timeout, files);\n\n // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n xhr.withCredentials = !!this.options.withCredentials;\n\n xhr.onload = (e) => {\n this._finishedUploading(files, xhr, e);\n };\n\n xhr.ontimeout = () => {\n this._handleUploadError(\n files,\n xhr,\n `Request timedout after ${this.options.timeout / 1000} seconds`\n );\n };\n\n xhr.onerror = () => {\n this._handleUploadError(files, xhr);\n };\n\n // Some browsers do not have the .upload property\n let progressObj = xhr.upload != null ? xhr.upload : xhr;\n progressObj.onprogress = (e) =>\n this._updateFilesUploadProgress(files, xhr, e);\n\n let headers = this.options.defaultHeaders\n ? {\n Accept: \"application/json\",\n \"Cache-Control\": \"no-cache\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n }\n : {};\n\n if (this.options.binaryBody) {\n headers[\"Content-Type\"] = files[0].type;\n }\n\n if (this.options.headers) {\n extend(headers, this.options.headers);\n }\n\n for (let headerName in headers) {\n let headerValue = headers[headerName];\n if (headerValue) {\n xhr.setRequestHeader(headerName, headerValue);\n }\n }\n\n if (this.options.binaryBody) {\n // Since the file is going to be sent as binary body, it doesn't make\n // any sense to generate `FormData` for it.\n for (let file of files) {\n this.emit(\"sending\", file, xhr);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"sendingmultiple\", files, xhr);\n }\n this.submitRequest(xhr, null, files);\n } else {\n let formData = new FormData();\n\n // Adding all @options parameters\n if (this.options.params) {\n let additionalParams = this.options.params;\n if (typeof additionalParams === \"function\") {\n additionalParams = additionalParams.call(\n this,\n files,\n xhr,\n files[0].upload.chunked ? this._getChunk(files[0], xhr) : null\n );\n }\n\n for (let key in additionalParams) {\n let value = additionalParams[key];\n if (Array.isArray(value)) {\n // The additional parameter contains an array,\n // so lets iterate over it to attach each value\n // individually.\n for (let i = 0; i < value.length; i++) {\n formData.append(key, value[i]);\n }\n } else {\n formData.append(key, value);\n }\n }\n }\n\n // Let the user add additional data if necessary\n for (let file of files) {\n this.emit(\"sending\", file, xhr, formData);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"sendingmultiple\", files, xhr, formData);\n }\n\n this._addFormElementData(formData);\n\n // Finally add the files\n // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n for (let i = 0; i < dataBlocks.length; i++) {\n let dataBlock = dataBlocks[i];\n formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n }\n\n this.submitRequest(xhr, formData, files);\n }\n }\n\n // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n _transformFiles(files, done) {\n let transformedFiles = [];\n // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n let doneCounter = 0;\n for (let i = 0; i < files.length; i++) {\n this.options.transformFile.call(this, files[i], (transformedFile) => {\n transformedFiles[i] = transformedFile;\n if (++doneCounter === files.length) {\n done(transformedFiles);\n }\n });\n }\n }\n\n // Takes care of adding other input elements of the form to the AJAX request\n _addFormElementData(formData) {\n // Take care of other input elements\n if (this.element.tagName === \"FORM\") {\n for (let input of this.element.querySelectorAll(\n \"input, textarea, select, button\"\n )) {\n let inputName = input.getAttribute(\"name\");\n let inputType = input.getAttribute(\"type\");\n if (inputType) inputType = inputType.toLowerCase();\n\n // If the input doesn't have a name, we can't use it.\n if (typeof inputName === \"undefined\" || inputName === null) continue;\n\n if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n // Possibly multiple values\n for (let option of input.options) {\n if (option.selected) {\n formData.append(inputName, option.value);\n }\n }\n } else if (\n !inputType ||\n (inputType !== \"checkbox\" && inputType !== \"radio\") ||\n input.checked\n ) {\n formData.append(inputName, input.value);\n }\n }\n }\n }\n\n // Invoked when there is new progress information about given files.\n // If e is not provided, it is assumed that the upload is finished.\n _updateFilesUploadProgress(files, xhr, e) {\n if (!files[0].upload.chunked) {\n // Handle file uploads without chunking\n for (let file of files) {\n if (\n file.upload.total &&\n file.upload.bytesSent &&\n file.upload.bytesSent == file.upload.total\n ) {\n // If both, the `total` and `bytesSent` have already been set, and\n // they are equal (meaning progress is at 100%), we can skip this\n // file, since an upload progress shouldn't go down.\n continue;\n }\n\n if (e) {\n file.upload.progress = (100 * e.loaded) / e.total;\n file.upload.total = e.total;\n file.upload.bytesSent = e.loaded;\n } else {\n // No event, so we're at 100%\n file.upload.progress = 100;\n file.upload.bytesSent = file.upload.total;\n }\n\n this.emit(\n \"uploadprogress\",\n file,\n file.upload.progress,\n file.upload.bytesSent\n );\n }\n } else {\n // Handle chunked file uploads\n\n // Chunked upload is not compatible with uploading multiple files in one\n // request, so we know there's only one file.\n let file = files[0];\n\n // Since this is a chunked upload, we need to update the appropriate chunk\n // progress.\n let chunk = this._getChunk(file, xhr);\n\n if (e) {\n chunk.progress = (100 * e.loaded) / e.total;\n chunk.total = e.total;\n chunk.bytesSent = e.loaded;\n } else {\n // No event, so we're at 100%\n chunk.progress = 100;\n chunk.bytesSent = chunk.total;\n }\n\n // Now tally the *file* upload progress from its individual chunks\n file.upload.progress = 0;\n file.upload.total = 0;\n file.upload.bytesSent = 0;\n for (let i = 0; i < file.upload.totalChunkCount; i++) {\n if (\n file.upload.chunks[i] &&\n typeof file.upload.chunks[i].progress !== \"undefined\"\n ) {\n file.upload.progress += file.upload.chunks[i].progress;\n file.upload.total += file.upload.chunks[i].total;\n file.upload.bytesSent += file.upload.chunks[i].bytesSent;\n }\n }\n // Since the process is a percentage, we need to divide by the amount of\n // chunks we've used.\n file.upload.progress = file.upload.progress / file.upload.totalChunkCount;\n\n this.emit(\n \"uploadprogress\",\n file,\n file.upload.progress,\n file.upload.bytesSent\n );\n }\n }\n\n _finishedUploading(files, xhr, e) {\n let response;\n\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (xhr.responseType !== \"arraybuffer\" && xhr.responseType !== \"blob\") {\n response = xhr.responseText;\n\n if (\n xhr.getResponseHeader(\"content-type\") &&\n ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")\n ) {\n try {\n response = JSON.parse(response);\n } catch (error) {\n e = error;\n response = \"Invalid JSON response from server.\";\n }\n }\n }\n\n this._updateFilesUploadProgress(files, xhr);\n\n if (!(200 <= xhr.status && xhr.status < 300)) {\n this._handleUploadError(files, xhr, response);\n } else {\n if (files[0].upload.chunked) {\n files[0].upload.finishedChunkUpload(\n this._getChunk(files[0], xhr),\n response\n );\n } else {\n this._finished(files, response, e);\n }\n }\n }\n\n _handleUploadError(files, xhr, response) {\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (files[0].upload.chunked && this.options.retryChunks) {\n let chunk = this._getChunk(files[0], xhr);\n if (chunk.retries++ < this.options.retryChunksLimit) {\n this._uploadData(files, [chunk.dataBlock]);\n return;\n } else {\n console.warn(\"Retried this chunk too often. Giving up.\");\n }\n }\n\n this._errorProcessing(\n files,\n response ||\n this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status),\n xhr\n );\n }\n\n submitRequest(xhr, formData, files) {\n if (xhr.readyState != 1) {\n console.warn(\n \"Cannot send this request because the XMLHttpRequest.readyState is not OPENED.\"\n );\n return;\n }\n if (this.options.binaryBody) {\n if (files[0].upload.chunked) {\n const chunk = this._getChunk(files[0], xhr);\n xhr.send(chunk.dataBlock.data);\n } else {\n xhr.send(files[0]);\n }\n } else {\n xhr.send(formData);\n }\n }\n\n // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n _finished(files, responseText, e) {\n for (let file of files) {\n file.status = Dropzone.SUCCESS;\n this.emit(\"success\", file, responseText, e);\n this.emit(\"complete\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"successmultiple\", files, responseText, e);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n\n // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n _errorProcessing(files, message, xhr) {\n for (let file of files) {\n file.status = Dropzone.ERROR;\n this.emit(\"error\", file, message, xhr);\n this.emit(\"complete\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"errormultiple\", files, message, xhr);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n\n static uuidv4() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(\n /[xy]/g,\n function (c) {\n let r = (Math.random() * 16) | 0,\n v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n }\n );\n }\n}\nDropzone.initClass();\n\n// This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n// Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// And in html:\n//\n// <form action=\"/upload\" id=\"my-dropzone-element-id\" class=\"dropzone\"></form>\nDropzone.options = {};\n\n// Returns the options for an element or undefined if none available.\nDropzone.optionsForElement = function (element) {\n // Get the `Dropzone.options.elementId` for this element if it exists\n if (element.getAttribute(\"id\")) {\n return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n } else {\n return undefined;\n }\n};\n\n// Holds a list of all dropzone instances\nDropzone.instances = [];\n\n// Returns the dropzone for given element if any\nDropzone.forElement = function (element) {\n if (typeof element === \"string\") {\n element = document.querySelector(element);\n }\n if ((element != null ? element.dropzone : undefined) == null) {\n throw new Error(\n \"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\"\n );\n }\n return element.dropzone;\n};\n\n// Looks for all .dropzone elements and creates a dropzone for them\nDropzone.discover = function () {\n let dropzones;\n if (document.querySelectorAll) {\n dropzones = document.querySelectorAll(\".dropzone\");\n } else {\n dropzones = [];\n // IE :(\n let checkElements = (elements) =>\n (() => {\n let result = [];\n for (let el of elements) {\n if (/(^| )dropzone($| )/.test(el.className)) {\n result.push(dropzones.push(el));\n } else {\n result.push(undefined);\n }\n }\n return result;\n })();\n checkElements(document.getElementsByTagName(\"div\"));\n checkElements(document.getElementsByTagName(\"form\"));\n }\n\n return (() => {\n let result = [];\n for (let dropzone of dropzones) {\n // Create a dropzone unless auto discover has been disabled for specific element\n if (Dropzone.optionsForElement(dropzone) !== false) {\n result.push(new Dropzone(dropzone));\n } else {\n result.push(undefined);\n }\n }\n return result;\n })();\n};\n\n// Some browsers support drag and drog functionality, but not correctly.\n//\n// So I created a blocklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\nDropzone.blockedBrowsers = [\n // The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n /opera.*(Macintosh|Windows Phone).*version\\/12/i,\n];\n\n// Checks if the browser is supported\nDropzone.isBrowserSupported = function () {\n let capableBrowser = true;\n\n if (\n window.File &&\n window.FileReader &&\n window.FileList &&\n window.Blob &&\n window.FormData &&\n document.querySelector\n ) {\n if (!(\"classList\" in document.createElement(\"a\"))) {\n capableBrowser = false;\n } else {\n if (Dropzone.blacklistedBrowsers !== undefined) {\n // Since this has been renamed, this makes sure we don't break older\n // configuration.\n Dropzone.blockedBrowsers = Dropzone.blacklistedBrowsers;\n }\n // The browser supports the API, but may be blocked.\n for (let regex of Dropzone.blockedBrowsers) {\n if (regex.test(navigator.userAgent)) {\n capableBrowser = false;\n continue;\n }\n }\n }\n } else {\n capableBrowser = false;\n }\n\n return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n let byteString = atob(dataURI.split(\",\")[1]);\n\n // separate out the mime component\n let mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0];\n\n // write the bytes of the string to an ArrayBuffer\n let ab = new ArrayBuffer(byteString.length);\n let ia = new Uint8Array(ab);\n for (\n let i = 0, end = byteString.length, asc = 0 <= end;\n asc ? i <= end : i >= end;\n asc ? i++ : i--\n ) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n // write the ArrayBuffer to a blob\n return new Blob([ab], { type: mimeString });\n};\n\n// Returns an array without the rejected item\nconst without = (list, rejectedItem) =>\n list.filter((item) => item !== rejectedItem).map((item) => item);\n\n// abc-def_ghi -> abcDefGhi\nconst camelize = (str) =>\n str.replace(/[\\-_](\\w)/g, (match) => match.charAt(1).toUpperCase());\n\n// Creates an element from string\nDropzone.createElement = function (string) {\n let div = document.createElement(\"div\");\n div.innerHTML = string;\n return div.childNodes[0];\n};\n\n// Tests if given element is inside (or simply is) the container\nDropzone.elementInside = function (element, container) {\n if (element === container) {\n return true;\n } // Coffeescript doesn't support do/while loops\n while ((element = element.parentNode)) {\n if (element === container) {\n return true;\n }\n }\n return false;\n};\n\nDropzone.getElement = function (el, name) {\n let element;\n if (typeof el === \"string\") {\n element = document.querySelector(el);\n } else if (el.nodeType != null) {\n element = el;\n }\n if (element == null) {\n throw new Error(\n `Invalid \\`${name}\\` option provided. Please provide a CSS selector or a plain HTML element.`\n );\n }\n return element;\n};\n\nDropzone.getElements = function (els, name) {\n let el, elements;\n if (els instanceof Array) {\n elements = [];\n try {\n for (el of els) {\n elements.push(this.getElement(el, name));\n }\n } catch (e) {\n elements = null;\n }\n } else if (typeof els === \"string\") {\n elements = [];\n for (el of document.querySelectorAll(els)) {\n elements.push(el);\n }\n } else if (els.nodeType != null) {\n elements = [els];\n }\n\n if (elements == null || !elements.length) {\n throw new Error(\n `Invalid \\`${name}\\` option provided. Please provide a CSS selector, a plain HTML element or a list of those.`\n );\n }\n\n return elements;\n};\n\n// Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\nDropzone.confirm = function (question, accepted, rejected) {\n if (window.confirm(question)) {\n return accepted();\n } else if (rejected != null) {\n return rejected();\n }\n};\n\n// Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\nDropzone.isValidFile = function (file, acceptedFiles) {\n if (!acceptedFiles) {\n return true;\n } // If there are no accepted mime types, it's OK\n acceptedFiles = acceptedFiles.split(\",\");\n\n let mimeType = file.type;\n let baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n for (let validType of acceptedFiles) {\n validType = validType.trim();\n if (validType.charAt(0) === \".\") {\n if (\n file.name\n .toLowerCase()\n .indexOf(\n validType.toLowerCase(),\n file.name.length - validType.length\n ) !== -1\n ) {\n return true;\n }\n } else if (/\\/\\*$/.test(validType)) {\n // This is something like a image/* mime type\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n return true;\n }\n } else {\n if (mimeType === validType) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n// Augment jQuery\nif (typeof jQuery !== \"undefined\" && jQuery !== null) {\n jQuery.fn.dropzone = function (options) {\n return this.each(function () {\n return new Dropzone(this, options);\n });\n };\n}\n\n// Dropzone file status codes\nDropzone.ADDED = \"added\";\n\nDropzone.QUEUED = \"queued\";\n// For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\nDropzone.ACCEPTED = Dropzone.QUEUED;\n\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\nlet detectVerticalSquash = function (img) {\n let iw = img.naturalWidth;\n let ih = img.naturalHeight;\n let canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = ih;\n let ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n let { data } = ctx.getImageData(1, 0, 1, ih);\n\n // search image edge pixel position in case it is squashed vertically.\n let sy = 0;\n let ey = ih;\n let py = ih;\n while (py > sy) {\n let alpha = data[(py - 1) * 4 + 3];\n\n if (alpha === 0) {\n ey = py;\n } else {\n sy = py;\n }\n\n py = (ey + sy) >> 1;\n }\n let ratio = py / ih;\n\n if (ratio === 0) {\n return 1;\n } else {\n return ratio;\n }\n};\n\n// A replacement for context.drawImage\n// (args are for source and destination).\nvar drawImageIOSFix = function (ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n let vertSquashRatio = detectVerticalSquash(img);\n return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n};\n\n// Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\nclass ExifRestore {\n static initClass() {\n this.KEY_STR =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n }\n\n static encode64(input) {\n let output = \"\";\n let chr1 = undefined;\n let chr2 = undefined;\n let chr3 = \"\";\n let enc1 = undefined;\n let enc2 = undefined;\n let enc3 = undefined;\n let enc4 = \"\";\n let i = 0;\n while (true) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output =\n output +\n this.KEY_STR.charAt(enc1) +\n this.KEY_STR.charAt(enc2) +\n this.KEY_STR.charAt(enc3) +\n this.KEY_STR.charAt(enc4);\n chr1 = chr2 = chr3 = \"\";\n enc1 = enc2 = enc3 = enc4 = \"\";\n if (!(i < input.length)) {\n break;\n }\n }\n return output;\n }\n\n static restore(origFileBase64, resizedFileBase64) {\n if (!origFileBase64.match(\"data:image/jpeg;base64,\")) {\n return resizedFileBase64;\n }\n let rawImage = this.decode64(\n origFileBase64.replace(\"data:image/jpeg;base64,\", \"\")\n );\n let segments = this.slice2Segments(rawImage);\n let image = this.exifManipulation(resizedFileBase64, segments);\n return `data:image/jpeg;base64,${this.encode64(image)}`;\n }\n\n static exifManipulation(resizedFileBase64, segments) {\n let exifArray = this.getExifArray(segments);\n let newImageArray = this.insertExif(resizedFileBase64, exifArray);\n let aBuffer = new Uint8Array(newImageArray);\n return aBuffer;\n }\n\n static getExifArray(segments) {\n let seg = undefined;\n let x = 0;\n while (x < segments.length) {\n seg = segments[x];\n if ((seg[0] === 255) & (seg[1] === 225)) {\n return seg;\n }\n x++;\n }\n return [];\n }\n\n static insertExif(resizedFileBase64, exifArray) {\n let imageData = resizedFileBase64.replace(\"data:image/jpeg;base64,\", \"\");\n let buf = this.decode64(imageData);\n let separatePoint = buf.indexOf(255, 3);\n let mae = buf.slice(0, separatePoint);\n let ato = buf.slice(separatePoint);\n let array = mae;\n array = array.concat(exifArray);\n array = array.concat(ato);\n return array;\n }\n\n static slice2Segments(rawImageArray) {\n let head = 0;\n let segments = [];\n while (true) {\n var length;\n if ((rawImageArray[head] === 255) & (rawImageArray[head + 1] === 218)) {\n break;\n }\n if ((rawImageArray[head] === 255) & (rawImageArray[head + 1] === 216)) {\n head += 2;\n } else {\n length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n let endPoint = head + length + 2;\n let seg = rawImageArray.slice(head, endPoint);\n segments.push(seg);\n head = endPoint;\n }\n if (head > rawImageArray.length) {\n break;\n }\n }\n return segments;\n }\n\n static decode64(input) {\n let output = \"\";\n let chr1 = undefined;\n let chr2 = undefined;\n let chr3 = \"\";\n let enc1 = undefined;\n let enc2 = undefined;\n let enc3 = undefined;\n let enc4 = \"\";\n let i = 0;\n let buf = [];\n // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n let base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n if (base64test.exec(input)) {\n console.warn(\n \"There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\\nExpect errors in decoding.\"\n );\n }\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n while (true) {\n enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n buf.push(chr1);\n if (enc3 !== 64) {\n buf.push(chr2);\n }\n if (enc4 !== 64) {\n buf.push(chr3);\n }\n chr1 = chr2 = chr3 = \"\";\n enc1 = enc2 = enc3 = enc4 = \"\";\n if (!(i < input.length)) {\n break;\n }\n }\n return buf;\n }\n}\nExifRestore.initClass();\n\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n\n// @win window reference\n// @fn function reference\nlet contentLoaded = function (win, fn) {\n let done = false;\n let top = true;\n let doc = win.document;\n let root = doc.documentElement;\n let add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n let rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n let pre = doc.addEventListener ? \"\" : \"on\";\n var init = function (e) {\n if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n return;\n }\n (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n if (!done && (done = true)) {\n return fn.call(win, e.type || e);\n }\n };\n\n var poll = function () {\n try {\n root.doScroll(\"left\");\n } catch (e) {\n setTimeout(poll, 50);\n return;\n }\n return init(\"poll\");\n };\n\n if (doc.readyState !== \"complete\") {\n if (doc.createEventObject && root.doScroll) {\n try {\n top = !win.frameElement;\n } catch (error) {}\n if (top) {\n poll();\n }\n }\n doc[add](pre + \"DOMContentLoaded\", init, false);\n doc[add](pre + \"readystatechange\", init, false);\n return win[add](pre + \"load\", init, false);\n }\n};\n\nfunction __guard__(value, transform) {\n return typeof value !== \"undefined\" && value !== null\n ? transform(value)\n : undefined;\n}\nfunction __guardMethod__(obj, methodName, transform) {\n if (\n typeof obj !== \"undefined\" &&\n obj !== null &&\n typeof obj[methodName] === \"function\"\n ) {\n return transform(obj, methodName);\n } else {\n return undefined;\n }\n}\n\nexport { Dropzone };\n", "// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nexport default class Emitter {\n // Add an event listener for given event\n on(event, fn) {\n this._callbacks = this._callbacks || {};\n // Create namespace for this event\n if (!this._callbacks[event]) {\n this._callbacks[event] = [];\n }\n this._callbacks[event].push(fn);\n return this;\n }\n\n emit(event, ...args) {\n this._callbacks = this._callbacks || {};\n let callbacks = this._callbacks[event];\n\n if (callbacks) {\n for (let callback of callbacks) {\n callback.apply(this, args);\n }\n }\n // trigger a corresponding DOM event\n if (this.element) {\n this.element.dispatchEvent(\n this.makeEvent(\"dropzone:\" + event, { args: args })\n );\n }\n return this;\n }\n\n makeEvent(eventName, detail) {\n let params = { bubbles: true, cancelable: true, detail: detail };\n\n if (typeof window.CustomEvent === \"function\") {\n return new CustomEvent(eventName, params);\n } else {\n // IE 11 support\n // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n var evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(\n eventName,\n params.bubbles,\n params.cancelable,\n params.detail\n );\n return evt;\n }\n }\n\n // Remove event listener for given event. If fn is not provided, all event\n // listeners for that event will be removed. If neither is provided, all\n // event listeners will be removed.\n off(event, fn) {\n if (!this._callbacks || arguments.length === 0) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n let callbacks = this._callbacks[event];\n if (!callbacks) {\n return this;\n }\n\n // remove all handlers\n if (arguments.length === 1) {\n delete this._callbacks[event];\n return this;\n }\n\n // remove specific handler\n for (let i = 0; i < callbacks.length; i++) {\n let callback = callbacks[i];\n if (callback === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n return this;\n }\n}\n", "import Dropzone from \"./dropzone\";\nimport defaultPreviewTemplate from \"bundle-text:./preview-template.html\";\n\nlet defaultOptions = {\n /**\n * Has to be specified on elements other than form (or when the form doesn't\n * have an `action` attribute).\n *\n * You can also provide a function that will be called with `files` and\n * `dataBlocks` and must return the url as string.\n */\n url: null,\n\n /**\n * Can be changed to `\"put\"` if necessary. You can also provide a function\n * that will be called with `files` and must return the method (since `v3.12.0`).\n */\n method: \"post\",\n\n /**\n * Will be set on the XHRequest.\n */\n withCredentials: false,\n\n /**\n * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n * If set to null or 0, no timeout is going to be set.\n */\n timeout: null,\n\n /**\n * How many file uploads to process in parallel (See the\n * Enqueuing file uploads documentation section for more info)\n */\n parallelUploads: 2,\n\n /**\n * Whether to send multiple files in one request. If\n * this it set to true, then the fallback file input element will\n * have the `multiple` attribute as well. This option will\n * also trigger additional events (like `processingmultiple`). See the events\n * documentation section for more information.\n */\n uploadMultiple: false,\n\n /**\n * Whether you want files to be uploaded in chunks to your server. This can't be\n * used in combination with `uploadMultiple`.\n *\n * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n */\n chunking: false,\n\n /**\n * If `chunking` is enabled, this defines whether **every** file should be chunked,\n * even if the file size is below chunkSize. This means, that the additional chunk\n * form data will be submitted and the `chunksUploaded` callback will be invoked.\n */\n forceChunking: false,\n\n /**\n * If `chunking` is `true`, then this defines the chunk size in bytes.\n */\n chunkSize: 2 * 1024 * 1024,\n\n /**\n * If `true`, the individual chunks of a file are being uploaded simultaneously.\n */\n parallelChunkUploads: false,\n\n /**\n * Whether a chunk should be retried if it fails.\n */\n retryChunks: false,\n\n /**\n * If `retryChunks` is true, how many times should it be retried.\n */\n retryChunksLimit: 3,\n\n /**\n * The maximum filesize (in MiB) that is allowed to be uploaded.\n */\n maxFilesize: 256,\n\n /**\n * The name of the file param that gets transferred.\n * **NOTE**: If you have the option `uploadMultiple` set to `true`, then\n * Dropzone will append `[]` to the name.\n */\n paramName: \"file\",\n\n /**\n * Whether thumbnails for images should be generated\n */\n createImageThumbnails: true,\n\n /**\n * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n */\n maxThumbnailFilesize: 10,\n\n /**\n * If `null`, the ratio of the image will be used to calculate it.\n */\n thumbnailWidth: 120,\n\n /**\n * The same as `thumbnailWidth`. If both are null, images will not be resized.\n */\n thumbnailHeight: 120,\n\n /**\n * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n thumbnailMethod: \"crop\",\n\n /**\n * If set, images will be resized to these dimensions before being **uploaded**.\n * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n * ratio of the file will be preserved.\n *\n * The `options.transformFile` function uses these options, so if the `transformFile` function\n * is overridden, these options don't do anything.\n */\n resizeWidth: null,\n\n /**\n * See `resizeWidth`.\n */\n resizeHeight: null,\n\n /**\n * The mime type of the resized image (before it gets uploaded to the server).\n * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n * See `resizeWidth` for more information.\n */\n resizeMimeType: null,\n\n /**\n * The quality of the resized images. See `resizeWidth`.\n */\n resizeQuality: 0.8,\n\n /**\n * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n resizeMethod: \"contain\",\n\n /**\n * The base that is used to calculate the **displayed** filesize. You can\n * change this to 1024 if you would rather display kibibytes, mebibytes,\n * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n * not `1 kilobyte`. You can change this to `1024` if you don't care about\n * validity.\n */\n filesizeBase: 1000,\n\n /**\n * If not `null` defines how many files this Dropzone handles. If it exceeds,\n * the event `maxfilesexceeded` will be called. The dropzone element gets the\n * class `dz-max-files-reached` accordingly so you can provide visual\n * feedback.\n */\n maxFiles: null,\n\n /**\n * An optional object to send additional headers to the server. Eg:\n * `{ \"My-Awesome-Header\": \"header value\" }`\n */\n headers: null,\n\n /**\n * Should the default headers be set or not?\n * Accept: application/json <- for requesting json response\n * Cache-Control: no-cache <- Request shouldnt be cached\n * X-Requested-With: XMLHttpRequest <- We sent the request via XMLHttpRequest\n */\n defaultHeaders: true,\n\n /**\n * If `true`, the dropzone element itself will be clickable, if `false`\n * nothing will be clickable.\n *\n * You can also pass an HTML element, a CSS selector (for multiple elements)\n * or an array of those. In that case, all of those elements will trigger an\n * upload when clicked.\n */\n clickable: true,\n\n /**\n * Whether hidden files in directories should be ignored.\n */\n ignoreHiddenFiles: true,\n\n /**\n * The default implementation of `accept` checks the file's mime type or\n * extension against this list. This is a comma separated list of mime\n * types or file extensions.\n *\n * Eg.: `image/*,application/pdf,.psd`\n *\n * If the Dropzone is `clickable` this option will also be used as\n * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n * parameter on the hidden file input as well.\n */\n acceptedFiles: null,\n\n /**\n * **Deprecated!**\n * Use acceptedFiles instead.\n */\n acceptedMimeTypes: null,\n\n /**\n * If false, files will be added to the queue but the queue will not be\n * processed automatically.\n * This can be useful if you need some additional user input before sending\n * files (or if you want want all files sent at once).\n * If you're ready to send the file simply call `myDropzone.processQueue()`.\n *\n * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n * section for more information.\n */\n autoProcessQueue: true,\n\n /**\n * If false, files added to the dropzone will not be queued by default.\n * You'll have to call `enqueueFile(file)` manually.\n */\n autoQueue: true,\n\n /**\n * If `true`, this will add a link to every file preview to remove or cancel (if\n * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n * and `dictRemoveFile` options are used for the wording.\n */\n addRemoveLinks: false,\n\n /**\n * Defines where to display the file previews \u2013 if `null` the\n * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n * selector. The element should have the `dropzone-previews` class so\n * the previews are displayed properly.\n */\n previewsContainer: null,\n\n /**\n * Set this to `true` if you don't want previews to be shown.\n */\n disablePreviews: false,\n\n /**\n * This is the element the hidden input field (which is used when clicking on the\n * dropzone to trigger file selection) will be appended to. This might\n * be important in case you use frameworks to switch the content of your page.\n *\n * Can be a selector string, or an element directly.\n */\n hiddenInputContainer: \"body\",\n\n /**\n * If null, no capture type will be specified\n * If camera, mobile devices will skip the file selection and choose camera\n * If microphone, mobile devices will skip the file selection and choose the microphone\n * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n * On apple devices multiple must be set to false. AcceptedFiles may need to\n * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n */\n capture: null,\n\n /**\n * **Deprecated**. Use `renameFile` instead.\n */\n renameFilename: null,\n\n /**\n * A function that is invoked before the file is uploaded to the server and renames the file.\n * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n * file that gets used during the upload can be accessed through `file.upload.filename`.\n */\n renameFile: null,\n\n /**\n * If `true` the fallback will be forced. This is very useful to test your server\n * implementations first and make sure that everything works as\n * expected without dropzone if you experience problems, and to test\n * how your fallbacks will look.\n */\n forceFallback: false,\n\n /**\n * The text used before any files are dropped.\n */\n dictDefaultMessage: \"Drop files here to upload\",\n\n /**\n * The text that replaces the default message text it the browser is not supported.\n */\n dictFallbackMessage:\n \"Your browser does not support drag'n'drop file uploads.\",\n\n /**\n * The text that will be added before the fallback form.\n * If you provide a fallback element yourself, or if this option is `null` this will\n * be ignored.\n */\n dictFallbackText:\n \"Please use the fallback form below to upload your files like in the olden days.\",\n\n /**\n * If the filesize is too big.\n * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n */\n dictFileTooBig:\n \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n /**\n * If the file doesn't match the file type.\n */\n dictInvalidFileType: \"You can't upload files of this type.\",\n\n /**\n * If the server response was invalid.\n * `{{statusCode}}` will be replaced with the servers status code.\n */\n dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n */\n dictCancelUpload: \"Cancel upload\",\n\n /**\n * The text that is displayed if an upload was manually canceled\n */\n dictUploadCanceled: \"Upload canceled.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n */\n dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used to remove a file.\n */\n dictRemoveFile: \"Remove file\",\n\n /**\n * If this is not null, then the user will be prompted before removing a file.\n */\n dictRemoveFileConfirmation: null,\n\n /**\n * Displayed if `maxFiles` is st and exceeded.\n * The string `{{maxFiles}}` will be replaced by the configuration value.\n */\n dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n /**\n * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n * `b` for bytes.\n */\n dictFileSizeUnits: { tb: \"TB\", gb: \"GB\", mb: \"MB\", kb: \"KB\", b: \"b\" },\n /**\n * Called when dropzone initialized\n * You can add event listeners here\n */\n init() {},\n\n /**\n * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n * of a function, this needs to return a map.\n *\n * The default implementation does nothing for normal uploads, but adds relevant information for\n * chunked uploads.\n *\n * This is the same as adding hidden input fields in the form element.\n */\n params(files, xhr, chunk) {\n if (chunk) {\n return {\n dzuuid: chunk.file.upload.uuid,\n dzchunkindex: chunk.index,\n dztotalfilesize: chunk.file.size,\n dzchunksize: this.options.chunkSize,\n dztotalchunkcount: chunk.file.upload.totalChunkCount,\n dzchunkbyteoffset: chunk.index * this.options.chunkSize,\n };\n }\n },\n\n /**\n * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n * and a `done` function as parameters.\n *\n * If the done function is invoked without arguments, the file is \"accepted\" and will\n * be processed. If you pass an error message, the file is rejected, and the error\n * message will be displayed.\n * This function will not be called if the file is too big or doesn't match the mime types.\n */\n accept(file, done) {\n return done();\n },\n\n /**\n * The callback that will be invoked when all chunks have been uploaded for a file.\n * It gets the file for which the chunks have been uploaded as the first parameter,\n * and the `done` function as second. `done()` needs to be invoked when everything\n * needed to finish the upload process is done.\n */\n chunksUploaded: function (file, done) {\n done();\n },\n\n /**\n * Sends the file as binary blob in body instead of form data.\n * If this is set, the `params` option will be ignored.\n * It's an error to set this to `true` along with `uploadMultiple` since\n * multiple files cannot be in a single binary body.\n */\n binaryBody: false,\n\n /**\n * Gets called when the browser is not supported.\n * The default implementation shows the fallback input field and adds\n * a text.\n */\n fallback() {\n // This code should pass in IE7... :(\n let messageElement;\n this.element.className = `${this.element.className} dz-browser-not-supported`;\n\n for (let child of this.element.getElementsByTagName(\"div\")) {\n if (/(^| )dz-message($| )/.test(child.className)) {\n messageElement = child;\n child.className = \"dz-message\"; // Removes the 'dz-default' class\n break;\n }\n }\n if (!messageElement) {\n messageElement = Dropzone.createElement(\n '<div class=\"dz-message\"><span></span></div>'\n );\n this.element.appendChild(messageElement);\n }\n\n let span = messageElement.getElementsByTagName(\"span\")[0];\n if (span) {\n if (span.textContent != null) {\n span.textContent = this.options.dictFallbackMessage;\n } else if (span.innerText != null) {\n span.innerText = this.options.dictFallbackMessage;\n }\n }\n\n return this.element.appendChild(this.getFallbackForm());\n },\n\n /**\n * Gets called to calculate the thumbnail dimensions.\n *\n * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n *\n * - `srcWidth` & `srcHeight` (required)\n * - `trgWidth` & `trgHeight` (required)\n * - `srcX` & `srcY` (optional, default `0`)\n * - `trgX` & `trgY` (optional, default `0`)\n *\n * Those values are going to be used by `ctx.drawImage()`.\n */\n resize(file, width, height, resizeMethod) {\n let info = {\n srcX: 0,\n srcY: 0,\n srcWidth: file.width,\n srcHeight: file.height,\n };\n\n let srcRatio = file.width / file.height;\n\n // Automatically calculate dimensions if not specified\n if (width == null && height == null) {\n width = info.srcWidth;\n height = info.srcHeight;\n } else if (width == null) {\n width = height * srcRatio;\n } else if (height == null) {\n height = width / srcRatio;\n }\n\n // Make sure images aren't upscaled\n width = Math.min(width, info.srcWidth);\n height = Math.min(height, info.srcHeight);\n\n let trgRatio = width / height;\n\n if (info.srcWidth > width || info.srcHeight > height) {\n // Image is bigger and needs rescaling\n if (resizeMethod === \"crop\") {\n if (srcRatio > trgRatio) {\n info.srcHeight = file.height;\n info.srcWidth = info.srcHeight * trgRatio;\n } else {\n info.srcWidth = file.width;\n info.srcHeight = info.srcWidth / trgRatio;\n }\n } else if (resizeMethod === \"contain\") {\n // Method 'contain'\n if (srcRatio > trgRatio) {\n height = width / srcRatio;\n } else {\n width = height * srcRatio;\n }\n } else {\n throw new Error(`Unknown resizeMethod '${resizeMethod}'`);\n }\n }\n\n info.srcX = (file.width - info.srcWidth) / 2;\n info.srcY = (file.height - info.srcHeight) / 2;\n\n info.trgWidth = width;\n info.trgHeight = height;\n\n return info;\n },\n\n /**\n * Can be used to transform the file (for example, resize an image if necessary).\n *\n * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n * images according to those dimensions.\n *\n * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n * to be invoked with the file when the transformation is done.\n */\n transformFile(file, done) {\n if (\n (this.options.resizeWidth || this.options.resizeHeight) &&\n file.type.match(/image.*/)\n ) {\n return this.resizeImage(\n file,\n this.options.resizeWidth,\n this.options.resizeHeight,\n this.options.resizeMethod,\n done\n );\n } else {\n return done(file);\n }\n },\n\n /**\n * A string that contains the template used for each dropped\n * file. Change it to fulfill your needs but make sure to properly\n * provide all elements.\n *\n * If you want to use an actual HTML element instead of providing a String\n * as a config option, you could create a div with the id `tpl`,\n * put the template inside it and provide the element like this:\n *\n * document\n * .querySelector('#tpl')\n * .innerHTML\n *\n */\n previewTemplate: defaultPreviewTemplate,\n\n /*\n Those functions register themselves to the events on init and handle all\n the user interface specific stuff. Overwriting them won't break the upload\n but can break the way it's displayed.\n You can overwrite them if you don't like the default behavior. If you just\n want to add an additional event handler, register it on the dropzone object\n and don't overwrite those options.\n */\n\n // Those are self explanatory and simply concern the DragnDrop.\n drop(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragstart(e) {},\n dragend(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragenter(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragover(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragleave(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n\n paste(e) {},\n\n // Called whenever there are no files left in the dropzone anymore, and the\n // dropzone should be displayed as if in the initial state.\n reset() {\n return this.element.classList.remove(\"dz-started\");\n },\n\n // Called when a file is added to the queue\n // Receives `file`\n addedfile(file) {\n if (this.element === this.previewsContainer) {\n this.element.classList.add(\"dz-started\");\n }\n\n if (this.previewsContainer && !this.options.disablePreviews) {\n file.previewElement = Dropzone.createElement(\n this.options.previewTemplate.trim()\n );\n file.previewTemplate = file.previewElement; // Backwards compatibility\n\n this.previewsContainer.appendChild(file.previewElement);\n for (var node of file.previewElement.querySelectorAll(\"[data-dz-name]\")) {\n node.textContent = file.name;\n }\n for (node of file.previewElement.querySelectorAll(\"[data-dz-size]\")) {\n node.innerHTML = this.filesize(file.size);\n }\n\n if (this.options.addRemoveLinks) {\n file._removeLink = Dropzone.createElement(\n `<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>${this.options.dictRemoveFile}</a>`\n );\n file.previewElement.appendChild(file._removeLink);\n }\n\n let removeFileEvent = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (file.status === Dropzone.UPLOADING) {\n return Dropzone.confirm(\n this.options.dictCancelUploadConfirmation,\n () => this.removeFile(file)\n );\n } else {\n if (this.options.dictRemoveFileConfirmation) {\n return Dropzone.confirm(\n this.options.dictRemoveFileConfirmation,\n () => this.removeFile(file)\n );\n } else {\n return this.removeFile(file);\n }\n }\n };\n\n for (let removeLink of file.previewElement.querySelectorAll(\n \"[data-dz-remove]\"\n )) {\n removeLink.addEventListener(\"click\", removeFileEvent);\n }\n }\n },\n\n // Called whenever a file is removed.\n removedfile(file) {\n if (file.previewElement != null && file.previewElement.parentNode != null) {\n file.previewElement.parentNode.removeChild(file.previewElement);\n }\n return this._updateMaxFilesReachedClass();\n },\n\n // Called when a thumbnail has been generated\n // Receives `file` and `dataUrl`\n thumbnail(file, dataUrl) {\n if (file.previewElement) {\n file.previewElement.classList.remove(\"dz-file-preview\");\n for (let thumbnailElement of file.previewElement.querySelectorAll(\n \"[data-dz-thumbnail]\"\n )) {\n thumbnailElement.alt = file.name;\n thumbnailElement.src = dataUrl;\n }\n\n return setTimeout(\n () => file.previewElement.classList.add(\"dz-image-preview\"),\n 1\n );\n }\n },\n\n // Called whenever an error occurs\n // Receives `file` and `message`\n error(file, message) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-error\");\n if (typeof message !== \"string\" && message.error) {\n message = message.error;\n }\n for (let node of file.previewElement.querySelectorAll(\n \"[data-dz-errormessage]\"\n )) {\n node.textContent = message;\n }\n }\n },\n\n errormultiple() {},\n\n // Called when a file gets processed. Since there is a cue, not all added\n // files are processed immediately.\n // Receives `file`\n processing(file) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-processing\");\n if (file._removeLink) {\n return (file._removeLink.innerHTML = this.options.dictCancelUpload);\n }\n }\n },\n\n processingmultiple() {},\n\n // Called whenever the upload progress gets updated.\n // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n // To get the total number of bytes of the file, use `file.size`\n uploadprogress(file, progress, bytesSent) {\n if (file.previewElement) {\n for (let node of file.previewElement.querySelectorAll(\n \"[data-dz-uploadprogress]\"\n )) {\n node.nodeName === \"PROGRESS\"\n ? (node.value = progress)\n : (node.style.width = `${progress}%`);\n }\n }\n },\n\n // Called whenever the total upload progress gets updated.\n // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n totaluploadprogress() {},\n\n // Called just before the file is sent. Gets the `xhr` object as second\n // parameter, so you can modify it (for example to add a CSRF token) and a\n // `formData` object to add additional information.\n sending() {},\n\n sendingmultiple() {},\n\n // When the complete upload is finished and successful\n // Receives `file`\n success(file) {\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-success\");\n }\n },\n\n successmultiple() {},\n\n // When the upload is canceled.\n canceled(file) {\n return this.emit(\"error\", file, this.options.dictUploadCanceled);\n },\n\n canceledmultiple() {},\n\n // When the upload is finished, either with success or an error.\n // Receives `file`\n complete(file) {\n if (file._removeLink) {\n file._removeLink.innerHTML = this.options.dictRemoveFile;\n }\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-complete\");\n }\n },\n\n completemultiple() {},\n\n maxfilesexceeded() {},\n\n maxfilesreached() {},\n\n queuecomplete() {},\n\n addedfiles() {},\n};\n\nexport default defaultOptions;\n", "module.exports = \"a1acf319c471fa03\";", "/* global loadLazyPartial */\n\nimport Dropzone from 'dropzone'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['fileInput', 'dropZoneContainer']\n\n connect() {\n this.dropZone = this.createDropZone()\n Dropzone.autoDiscover = false\n this.hideFileInput()\n\n this.dropZone.on('addedfile', () => {\n if (this.dropZone.files.length === 1) {\n document.querySelector('.file-details').style.display = 'none'\n document.querySelector('.new-agreement-editor').classList.add('hidden')\n document.querySelector('.override-token-container').classList.add('hidden')\n document.querySelector('.btn-primary.preview-agreement').innerText = this.submitText\n } else if (this.dropZone.files.length > 1) {\n this.dropZone.removeFile(this.dropZone.files[0])\n }\n })\n\n this.dropZone.on('removedfile', (file) => {\n const agreementModal = document.querySelector('#add-new-agreement')\n if (agreementModal && file.previewElement && this.dropZone.files.length === 0) {\n file.previewElement.classList.remove('dz-file-preview')\n document.querySelector('.file-details').style.display = 'initial'\n document.querySelector('.new-agreement-editor').classList.remove('hidden')\n document.querySelector('.override-token-container').classList.remove('hidden')\n document.querySelector('.btn-primary.preview-agreement').innerText = this.previewText\n }\n })\n\n this.dropZone.on('success', (file, responseData) => {\n $('#add-new-agreement').modal('hide')\n this.dropZone.removeFile(file)\n let agreementsComp = document.querySelector('#agreements')\n document.querySelector('#global-alerts').innerHTML = responseData.content\n if (agreementsComp) {\n loadLazyPartial(agreementsComp.dataset.path, $(agreementsComp), true, true)\n }\n })\n\n this.dropZone.on('error', (file, responseData) => {\n this.dropZone.removeFile(file)\n if (responseData.partial) {\n $('#add-new-agreement').modal('hide')\n if (responseData.partial) {\n document.querySelector('#global-alerts').innerHTML = responseData.partial\n }\n return false\n }\n })\n }\n\n hideFileInput() {\n this.fileInputTarget.disabled = true\n this.fileInputTarget.style.display = 'none'\n }\n\n processFiles(event) {\n if (this.dropZone.files.length > 0) {\n event.preventDefault()\n event.stopPropagation()\n this.dropZone.processQueue()\n }\n }\n\n get headers() {\n return { 'X-CSRF-Token': this.getMetaValue('csrf-token') }\n }\n\n get url() {\n return this.fileInputTarget.getAttribute('data-direct-upload-url')\n }\n\n get maxFiles() {\n return this.fileInputTarget.getAttribute('data-max-files') || 1\n }\n\n get maxFileSize() {\n return this.fileInputTarget.getAttribute('data-max-file-size') || 30\n }\n\n get acceptedFiles() {\n return this.fileInputTarget.getAttribute('data-accepted-files')\n }\n\n get addRemoveLinks() {\n return this.fileInputTarget.getAttribute('data-add-remove-links') || true\n }\n\n get submitText() {\n return this.fileInputTarget.getAttribute('data-submit-text')\n }\n\n get previewText() {\n return this.fileInputTarget.getAttribute('data-preview-text')\n }\n\n get previewContainer() {\n return this.fileInputTarget.getAttribute('data-preview-container')\n }\n\n get previewTemplate() {\n return this.fileInputTarget.getAttribute('data-preview-template')\n }\n\n //\n // private\n //\n createDropZone() {\n return new Dropzone(this.dropZoneContainerTarget, {\n url: this.url,\n headers: this.headers,\n maxFiles: this.maxFiles,\n maxFilesize: this.maxFileSize,\n acceptedFiles: this.acceptedFiles,\n addRemoveLinks: this.addRemoveLinks,\n autoProcessQueue: false,\n previewsContainer: this.previewContainer,\n previewTemplate: document.querySelector(this.previewTemplate).innerHTML,\n })\n }\n\n getMetaValue(name) {\n const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n if (element) {\n return element.getAttribute('content')\n }\n }\n}\n", "/**\n * Function to determine if a given element is visible without observers\n *\n * @param {HTMLElement} element - The element to check the visibility of\n * @returns {boolean} true if element is visible, false otherwise\n *\n * @example\n * const visible = elementIsVisible(myElement)\n */\nexport function elementIsVisible(element) {\n return element.offsetWidth > 0 && element.offsetHeight > 0\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { elementIsVisible } from '../../helpers/visibility_helper'\n\nexport default class extends Controller {\n static targets = ['navButton', 'module', 'selectedClassDetails', 'customFormFields', 'header']\n\n connect() {\n if (this.navButtonTargets.length !== this.moduleTargets.length) {\n throw new Error('Mismatched number of step buttons and modules.')\n }\n\n this.steps = this.navButtonTargets.map((button, index) => index + 1)\n this.currentStep = 1\n }\n\n nextStep(event) {\n event.preventDefault()\n if (!this.visibleFieldsAreValid()) return\n this.currentStep += 1\n this.setStep(this.currentStep)\n }\n\n previousStep(event) {\n event.preventDefault()\n this.currentStep -= 1\n this.setStep(this.currentStep)\n }\n\n jumpToStep(event) {\n event.preventDefault()\n if (event.currentTarget.classList.contains('disabled')) return\n\n const step = parseInt(event.currentTarget.dataset.step)\n this.currentStep = step\n this.setStep(step)\n }\n\n ///\n /// private\n ///\n setStep(step) {\n this.shiftNavigation(step)\n\n window.scrollTo(0, this.headerTarget.offsetTop - 10)\n\n if (step === 1) this.resetState()\n\n this.shiftCarousels(step)\n }\n\n shiftNavigation(step) {\n const otherSteps = this.steps.filter((_step) => _step !== step)\n const index = step - 1\n\n this.navButtonTargets[index].classList.add('active')\n this.moduleTargets[index].classList.remove('hidden')\n this.navButtonTargets[index].classList.remove('disabled')\n this.navButtonTargets[index].classList.remove('reached')\n\n for (const _step of otherSteps) {\n const _index = _step - 1\n if (_step < step) {\n this.navButtonTargets[_index].classList.add('reached')\n this.navButtonTargets[_index].classList.remove('active')\n this.navButtonTargets[_index].classList.remove('disabled')\n } else {\n this.navButtonTargets[_index].classList.remove('reached')\n this.navButtonTargets[_index].classList.remove('active')\n this.navButtonTargets[_index].classList.add('disabled')\n }\n }\n }\n\n shiftCarousels(step) {\n const index = step - 1\n this.cleanCarouselItems(this.navButtonTargets)\n this.cleanCarouselItems(this.moduleTargets)\n\n this.setCarouselPosition(index, this.navButtonTargets)\n this.setCarouselPosition(index, this.moduleTargets)\n\n this.hideCarouselItems(this.navButtonTargets, true, false)\n this.hideCarouselItems(this.moduleTargets, false, true)\n }\n\n setCarouselPosition(index, items) {\n const currentItem = items[index]\n const prevItem = items[index - 1]\n const futureItem = items[index + 1]\n\n if (currentItem) {\n currentItem.classList.add('active')\n }\n\n if (prevItem) {\n prevItem.classList.add('prev')\n }\n\n if (futureItem) {\n futureItem.classList.add('next')\n }\n }\n\n cleanCarouselItems(items) {\n for (const item of items) {\n item.classList.remove('active', 'next', 'prev', 'hidden', 'hidden-xs')\n }\n }\n\n hideCarouselItems(items, small, hideInactive) {\n for (const item of items) {\n // Hide items that are not currently on screen\n const shouldHide = !(\n item.classList.contains('active') ||\n item.classList.contains('next') ||\n item.classList.contains('prev')\n )\n\n if (shouldHide) {\n item.classList.add(small ? 'hidden-xs' : 'hidden')\n }\n\n // Hide items on screen that are not active\n if (hideInactive && !item.classList.contains('active')) {\n item.classList.add('hidden')\n }\n }\n }\n\n resetState() {\n if (!this.hasSelectedClassDetailsTarget) return\n\n const fields = this.selectedClassDetailsTarget.querySelectorAll('input')\n const items = this.selectedClassDetailsTarget.querySelectorAll('.item')\n\n for (const field of fields) {\n if (field.id === 'class_required') return\n\n field.value = ''\n }\n\n for (const item of items) {\n item.querySelector('div').textContent = ''\n }\n }\n\n visibleFieldsAreValid() {\n if (!this.hasCustomFormFieldsTarget) return true\n\n const fields = [...this.customFormFields, ...this.publicController.agreementTokenFields].filter((field) =>\n elementIsVisible(field),\n )\n if (!fields.length) return true\n\n const signed = this.publicController.signatures.every((signature) => signature.completed)\n\n if (!signed) {\n this.publicController.reportSignatureValidity()\n }\n\n return fields.reduce((acc, field) => acc && field.reportValidity(), true) && signed\n }\n\n get customFormFields() {\n return [...this.customFormFieldsTarget.querySelectorAll('input')]\n }\n\n get publicController() {\n return this.application.getControllerForElementAndIdentifier(this.element, 'public')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { post } from '../../helpers/fetch_helper'\n\nexport default class extends Controller {\n static values = { serviceFee: String }\n static targets = [\n 'checkout',\n 'hiddenTotalField',\n 'creditCardContainer',\n 'submissionIsInvoiced',\n 'noPaymentRequired',\n 'additionalCharges',\n 'taxTotal',\n 'taxLineItem',\n 'subtotal',\n 'total',\n 'serviceFee',\n 'serviceFeeLineItem',\n 'inventoryItem',\n ]\n\n connect() {\n this.rawCart = new Set()\n\n // Since these aren't exclusively used by LPs its weird to have them\n // as targets, but it's nice to have reference to them.\n this.stripeCardElement = document.querySelector('#stripe-card-element')\n this.usaEpayCardElement = document.querySelector('#usa-epay-card-element')\n this.alertsElement = document.querySelector('#global-alerts')\n }\n\n addToCart(event) {\n const cartDataArr = JSON.parse(event.currentTarget.getAttribute('cartData'))\n\n // Kinda stupid but I didnt know about stimulus values when I wrote this controller ig\n // so it does some dumbassery\n for (const cartData of cartDataArr) {\n this.rawCart.add(JSON.stringify(cartData))\n }\n\n this.setCheckoutContent()\n }\n\n toggleFromCart(event) {\n const cartData = event.currentTarget.getAttribute('cartData')\n if (event.currentTarget.checked) {\n this.rawCart.add(cartData)\n } else {\n this.rawCart.delete(cartData)\n }\n\n this.setCheckoutContent()\n }\n\n toggleOneFromCart(event) {\n const cartDataArr = JSON.parse(event.currentTarget.getAttribute('cartData'))\n if (this.previousSingleCartData) {\n for (const cartData of this.previousSingleCartData) {\n this.rawCart.delete(JSON.stringify(cartData))\n }\n }\n\n // Kinda stupid but I didnt know about stimulus values when I wrote this controller ig\n // so it does some dumbassery\n for (const cartData of cartDataArr) {\n this.rawCart.add(JSON.stringify(cartData))\n }\n this.previousSingleCartData = cartDataArr\n\n this.setCheckoutContent()\n }\n\n clearCart() {\n this.rawCart.clear()\n this.setCheckoutContent()\n this.clearInventoryItems()\n }\n\n setOrderTotal() {\n const subtotal = [...this.cart].reduce((acc, item) => acc + item.price, 0)\n\n this.hiddenTotalFieldTarget.value = subtotal\n\n if (subtotal > 0) {\n if (this.hasCreditCardContainerTarget) {\n this.creditCardContainerTarget.classList.remove('hidden')\n this.hasNoPaymentRequiredTarget && this.noPaymentRequiredTarget.classList.add('hidden')\n } else {\n this.submissionIsInvoicedTarget.classList.remove('hidden')\n }\n } else if (this.hasCreditCardContainerTarget) {\n this.hideCreditCardInput()\n } else {\n this.submissionIsInvoicedTarget.classList.add('hidden')\n }\n\n const items = [...this.cart].map((item) => ({ type: item.type, id: item.id }))\n const itemQueryString = new URLSearchParams({ items: JSON.stringify(items) })\n post(`${this.hiddenTotalFieldTarget.getAttribute('data-calculation-path')}?${itemQueryString}`)\n .then(async (response) => ({\n status: response.status,\n json: await response.json(),\n }))\n .then((data) => {\n if (data.status === 200) {\n if (this.hasSubtotalTarget) this.subtotalTarget.textContent = data.json.subtotal\n\n for (const target of this.totalTargets) {\n target.textContent = data.json.total\n }\n this.hiddenTotalFieldTarget.value = data.json.totalCents\n\n this.toggleAdditionalChargesVisibility(data.json)\n\n this.handleTaxResponse(data.json)\n this.handleServiceFeeResponse(data.json)\n } else {\n this.alertsElement.textContent = data.text\n }\n })\n }\n\n ///\n /// private\n ///\n setCheckoutContent() {\n for (const target of this.checkoutTargets) {\n target.textContent = ''\n\n for (const item of this.cart) {\n this.appendCartItem(target, item)\n }\n }\n }\n\n hideCreditCardInput() {\n this.creditCardContainerTarget.classList.add('hidden')\n this.hasNoPaymentRequiredTarget && this.noPaymentRequiredTarget.classList.remove('hidden')\n\n this.creditCardContainerTarget.querySelector('iframe').src =\n this.creditCardContainerTarget.querySelector('iframe').src\n\n if (this.stripeCardElement) {\n this.stripeCardElement.dispatchEvent(new Event('clear:stripe'))\n }\n\n if (this.usaEpayCardElement) {\n this.usaEpayCardElement.dispatchEvent(new Event('clear:usaepay'))\n }\n }\n\n appendCartItem(element, item) {\n const cartItem = document.createElement('div')\n const itemDesc = document.createElement('div')\n const itemPrice = document.createElement('div')\n cartItem.classList.add('item')\n itemDesc.classList.add('item-description')\n itemPrice.classList.add('item-price')\n\n itemDesc.textContent = item.name\n itemPrice.textContent = item.formatted_price\n\n cartItem.appendChild(itemDesc)\n cartItem.appendChild(itemPrice)\n element.appendChild(cartItem)\n }\n\n clearInventoryItems() {\n for (const item of this.inventoryItemTargets) {\n item.checked = false\n }\n }\n\n toggleAdditionalChargesVisibility(payload) {\n if (!this.hasAdditionalChargesTarget) return\n\n if (\n payload.taxTotal.match(/\\d/g).join('') === '000' &&\n (!this.hasServiceFeeTarget || payload.serviceFeeTotal.match(/\\d/g).join('') === '000')\n ) {\n this.additionalChargesTarget.classList.add('hidden')\n } else {\n this.additionalChargesTarget.classList.remove('hidden')\n }\n }\n\n handleTaxResponse(payload) {\n if (this.hasTaxLineItemTarget && payload.taxTotal.match(/\\d/g).join('') === '000') {\n this.taxLineItemTarget.classList.add('hidden')\n } else if (this.hasTaxLineItemTarget) {\n this.taxLineItemTarget.classList.remove('hidden')\n }\n this.taxTotalTarget.textContent = payload.taxTotal\n }\n\n handleServiceFeeResponse(payload) {\n if (!this.hasServiceFeeTarget) return\n\n if (this.hasServiceFeeLineItemTarget && payload.serviceFeeTotal.match(/\\d/g).join('') === '000') {\n this.serviceFeeLineItemTarget.classList.add('hidden')\n } else if (this.hasServiceFeeLineItemTarget) {\n this.serviceFeeLineItemTarget.classList.remove('hidden')\n }\n this.serviceFeeTarget.textContent = payload.serviceFeeTotal\n }\n\n get cart() {\n return [...this.rawCart].map((item) => JSON.parse(item))\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n this.setNextDisabledState()\n }\n\n selectClassFromDropdown(event) {\n event.preventDefault()\n }\n\n selectClassEvent(event) {\n let calendarEvent = this.findCalEventFromTarget(event.target)\n this.setSelectedClassAttributes(calendarEvent.dataset)\n\n document.querySelector('#scheduler-next').disabled = false\n\n for (const item of document.querySelectorAll('.calendar-event')) {\n item.classList.remove('selected')\n }\n calendarEvent.classList.add('selected')\n }\n\n setNextDisabledState() {\n let required = document.querySelector('#class_required').value\n let items = document.querySelectorAll('.class-selection-menu .menu-item')\n\n if (items.length === 0 && required === 'true') {\n document.querySelector('#scheduler-next').disabled = false\n } else {\n document.querySelector('#scheduler-next').disabled = required === 'true'\n }\n }\n\n //\n // private\n //\n findCalEventFromTarget(target) {\n // depending on if the user clicks the time or the space around it\n if (target.hasAttribute('data-name')) {\n return target\n }\n\n return target.closest('.calendar-event')\n }\n\n setSelectedClassAttributes(dataset) {\n let className = document.querySelector('#selected-class-name')\n className.textContent = dataset.name\n let classDate = document.querySelector('#selected-class-date')\n classDate.textContent = dataset.date\n let classTime = document.querySelector('#selected-class-time')\n classTime.textContent = dataset.time\n\n let desc = document.querySelector('#selected-class-desc')\n if (dataset.description) {\n desc.textContent = dataset.description\n desc.parentElement.classList.remove('hidden')\n } else {\n desc.parentElement.classList.add('hidden')\n }\n\n let instructor = document.querySelector('#selected-class-instructor')\n if (dataset.instructor) {\n instructor.textContent = dataset.instructor\n instructor.classList.remove('hidden')\n } else {\n instructor.textContent = ''\n instructor.classList.add('hidden')\n }\n\n document.querySelector('#scheduler_selected_class_object_type').value = dataset.type\n document.querySelector('#scheduler_selected_class_object_id').value = dataset.id\n document.querySelector('#scheduler_selected_class_date').value = dataset.date\n document.querySelector('#scheduler_selected_class_time').value = dataset.time\n document.querySelector('#scheduler_selected_class_name').value = dataset.name\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [\n 'programIdField',\n 'membershipTemplateIdField',\n 'membershipTemplatePriceField',\n 'programName',\n 'membershipName',\n 'hiddenVault',\n 'saveVaultOption',\n 'saveVaultNoOption',\n ]\n\n revealPrograms(event) {\n event.preventDefault()\n\n const id = event.currentTarget.id.replace(/[^0-9]/g, '')\n this.dontSignUpButton(id).classList.toggle('hidden')\n\n this.toggleMembershipTemplates(event.currentTarget, id)\n }\n\n hidePrograms(event) {\n event.preventDefault()\n\n const id = event.currentTarget.id.replace(/[^0-9]/g, '')\n this.signUpButton(id).classList.toggle('hidden')\n\n this.toggleMembershipTemplates(event.currentTarget, id)\n }\n\n selectMembership(event) {\n event.preventDefault()\n const element = event.currentTarget\n const id = element.id.replace(/[^0-9]/g, '')\n this.membershipTemplateIdFieldTarget.value = id\n this.membershipTemplatePriceFieldTarget.value = element.dataset.price\n\n this.programIdFieldTarget.value = event.params.id\n\n if (this.hasProgramNameTarget) {\n this.programNameTarget.textContent = element.dataset.name\n this.membershipNameTarget.textContent = element.dataset.membership\n }\n\n if (this.hasHiddenVaultTarget) {\n if (element.dataset.recurringBilling === 'true') {\n this.hiddenVaultTarget.value = true\n this.saveVaultOptionTarget.classList.add('hidden')\n this.saveVaultNoOptionTarget.classList.remove('hidden')\n } else {\n this.hiddenVaultTarget.value = false\n this.saveVaultOptionTarget.classList.remove('hidden')\n this.saveVaultNoOptionTarget.classList.add('hidden')\n }\n }\n\n this.element.dispatchEvent(new Event('landing-page:update-order-total'))\n }\n\n ///\n /// private\n ///\n toggleMembershipTemplates(button, id) {\n document.querySelector(`#membership-options-for-${id}`).classList.toggle('hidden')\n\n button.classList.toggle('hidden')\n }\n\n signUpButton(id) {\n return document.querySelector(`#sign-up-${id}`)\n }\n\n dontSignUpButton(id) {\n return document.querySelector(`#dont-sign-up-${id}`)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport intlTelInput from 'intl-tel-input'\n\nexport default class extends Controller {\n static targets = ['requiredItem']\n static outlets = ['signature', 'checkbox-signature', 'agreement-signatures']\n\n _signatures = []\n\n connect() {\n // Fade out any success flashes\n setTimeout(() => {\n $('.alert-success').fadeOut('slow')\n }, 2000)\n\n const customPhoneField = document.querySelector('.custom-form-field input[type=tel].fancy')\n if (customPhoneField) {\n intlTelInput(customPhoneField, {\n utilsScript: '/assets/intl-tel-input/utils.js',\n formatOnDisplay: true,\n hiddenInput: 'full_phone',\n separateDialCode: true,\n initialCountry: document.body.dataset.countryCode || 'us',\n })\n }\n }\n\n submit(event) {\n const signed = this.signatures.every((signature) => signature.completed)\n\n if (signed) {\n const rawAgreement = document.querySelector('input#agreement')\n const tokenFields = document.querySelectorAll('#agreement-content input.token-field')\n for (const tokenField of tokenFields) {\n const token = tokenField.dataset.token\n rawAgreement.value = rawAgreement.value.replace(`((${token}))`, `${tokenField.value}`)\n }\n\n document.querySelector('#lp-submit').disabled = true\n\n return true\n }\n\n this.reportSignatureValidity()\n\n event.preventDefault()\n event.stopPropagation()\n return false\n }\n\n toggleRequired() {\n const shouldBeRequired = !this.requiredItemTargets.some((i) => i.checked)\n\n for (const input of this.requiredItemTargets) {\n input.required = shouldBeRequired\n }\n }\n\n reportSignatureValidity() {\n this.agreementSignaturesOutlet.scrollToCurrent()\n setTimeout(() => {\n this.agreementSignaturesOutlet.flashValidity()\n }, 250)\n }\n\n get agreementTokenFields() {\n if (!this.hasAgreementSignaturesOutlet) return []\n\n return [...this.agreementSignaturesOutlet.element.querySelectorAll('input[required]')]\n }\n\n get signatures() {\n if (this._signatures.length) return this._signatures\n\n const outlets = this.signatureOutlets.concat(this.checkboxSignatureOutlets)\n\n outlets.sort((a, b) => {\n if (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1\n }\n\n return 1\n })\n\n this._signatures = outlets\n\n return this._signatures\n }\n}\n", "import { Turbo } from '@hotwired/turbo-rails'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['filterCheckbox', 'multiFilterCheckbox', 'expandButton', 'expandArea']\n\n connect() {\n const scrollableArea = this.expandAreaTarget.querySelector('.label-group')\n\n if (scrollableArea.scrollHeight > scrollableArea.clientHeight) {\n this.expandButtonTarget.classList.remove('hidden')\n }\n }\n\n filter() {\n const url = new URL(window.location)\n const filters = this.selectedFilters\n\n if (filters.length) {\n url.searchParams.set('filters', filters)\n } else {\n url.searchParams.delete('filters')\n }\n\n Turbo.cache.clear()\n Turbo.visit(url)\n }\n\n clear() {\n const url = `${window.location.pathname}`\n\n Turbo.cache.clear()\n Turbo.visit(url)\n }\n\n expandCollapseFilters(event) {\n const target = event.target.closest('.filters-area')\n\n if (target.classList.contains('expanded')) {\n target.classList.remove('expanded')\n } else {\n target.classList.add('expanded')\n }\n }\n\n selectOneCheckbox(event) {\n event.stopPropagation()\n }\n\n selectMultipleCheckboxes(event) {\n event.stopPropagation()\n const target = event.target.closest('.type-group')\n const newState = !target.querySelector('input').checked\n const subItems = target.querySelectorAll('.menu-sub-item')\n\n for (const subItem of subItems) {\n let checkbox = subItem.querySelector('input')\n let icon = subItem.querySelector('svg')\n\n checkbox.checked = newState\n if (newState) {\n icon.classList.remove('checkbox-disabled')\n } else {\n icon.classList.add('checkbox-disabled')\n }\n }\n }\n\n get selectedFilters() {\n const filters = this.filterCheckboxTargets.filter((t) => t.checked).map((t) => t.value)\n\n return filters\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n focus(event) {\n event.preventDefault()\n\n this.element.focus()\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { createSortable } from '../helpers/sortable_helper'\n\n// This controller gets a little creative with the Stimulus API to\n// let us use Stimulus patterns with SortableJS.\n\n// TOOD: Do that same stuff to the DropSortableController at some point\nexport default class FormSortableController extends Controller {\n static targets = ['item', 'hiddenInput', 'handle']\n static values = {\n options: Object,\n write: Boolean,\n }\n\n connect() {\n if (this.hasWriteValue) {\n this.shouldWrite = this.writeValue\n } else {\n this.shouldWrite = true\n }\n\n const onEnd =\n typeof this.optionsValue.onEndMethod === 'string'\n ? this[this.optionsValue.onEndMethod]\n : this.write.bind(this)\n\n const options = {\n onEnd,\n draggable: '[data-form-sortable-target=\"item\"]',\n ...this.optionsValue,\n }\n\n if (this.hasHandleTarget) {\n options.handle = '[data-form-sortable-target=\"handle\"]'\n }\n\n createSortable(this.element, options)\n }\n\n itemTargetConnected() {\n this.write()\n }\n\n ///\n /// private\n ///\n write() {\n if (!this.shouldWrite) return\n\n for (const [index, input] of this.hiddenInputTargets.entries()) {\n input.value = index\n }\n\n this.hiddenInputTargets[0].dispatchEvent(new Event('change'))\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['spinner']\n\n connect() {\n if (this.shouldImmediatelyRemove) {\n this.element.remove()\n return\n }\n\n document.body.classList.add('overflow-hidden')\n\n this.observer = new MutationObserver(this.mutate.bind(this))\n this.observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n attributeOldValue: true,\n })\n }\n\n mutate() {\n if (document.documentElement.classList.contains('fontawesome-i2svg-active')) {\n this.spinnerTarget.addEventListener(\n 'animationiteration',\n () => {\n this.spinnerTarget.classList.add('!animate-none')\n this.element.classList.add('loading-fade')\n this.element.addEventListener('animationend', () => {\n document.body.classList.remove('overflow-hidden')\n this.element.classList.add('opacity-0')\n this.element.remove()\n })\n },\n { once: true },\n )\n\n this.observer.disconnect()\n }\n }\n\n ///\n /// private\n ///\n\n get shouldImmediatelyRemove() {\n return (\n !document.body.hasAttribute('data-allow-loader') ||\n document.body.classList.contains('classic-wrapper') ||\n document.body.classList.contains('classic-wrapper-beta') ||\n document.documentElement.classList.contains('fontawesome-i2svg-active') ||\n window.matchMedia('(max-width: 767px)').matches ||\n window.matchMedia('(display-mode: standalone)').matches\n )\n }\n}\n", "function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nfunction set(target, property, value, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n\n var desc;\n\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n\n return true;\n };\n }\n\n return set(target, property, value, receiver);\n}\n\nfunction _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n\n return value;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nexport { _createClass as _, _classCallCheck as a, _objectWithoutProperties as b, _typeof as c, _inherits as d, _createSuper as e, _slicedToArray as f, _get as g, _getPrototypeOf as h, _set as i };\n", "import { c as _typeof } from '../_rollupPluginBabelHelpers-a0b34764.js';\n\n/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n/**\n Direction\n @prop {string} NONE\n @prop {string} LEFT\n @prop {string} FORCE_LEFT\n @prop {string} RIGHT\n @prop {string} FORCE_RIGHT\n*/\n\nvar DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n/**\n Direction\n @enum {string}\n*/\n\n/** Returns next char index in direction */\nfunction indexInDirection(pos, direction) {\n if (direction === DIRECTION.LEFT) --pos;\n return pos;\n}\n/** Returns next char position in direction */\n\nfunction posInDirection(pos, direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return --pos;\n\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return ++pos;\n\n default:\n return pos;\n }\n}\n/** */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n\n default:\n return direction;\n }\n}\n/** Escapes regular expression control chars */\n\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n} // cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\n\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n var arrA = Array.isArray(a),\n arrB = Array.isArray(b),\n i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n\n for (i = 0; i < a.length; i++) {\n if (!objectIncludes(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n var keys = Object.keys(a); // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n }\n\n for (i = 0; i < keys.length; i++) {\n if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n }\n\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n\n return false;\n}\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, indexInDirection, isString, objectIncludes, posInDirection };\n", "import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\n\nvar ActionDetails = /*#__PURE__*/function () {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n function ActionDetails(value, cursorPos, oldValue, oldSelection) {\n _classCallCheck(this, ActionDetails);\n\n this.value = value;\n this.cursorPos = cursorPos;\n this.oldValue = oldValue;\n this.oldSelection = oldSelection; // double check if left part was changed (autofilling, other non-standard input triggers)\n\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n /**\n Start changing position\n @readonly\n */\n\n\n _createClass(ActionDetails, [{\n key: \"startChangePos\",\n get: function get() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n /**\n Inserted symbols count\n @readonly\n */\n\n }, {\n key: \"insertedCount\",\n get: function get() {\n return this.cursorPos - this.startChangePos;\n }\n /**\n Inserted symbols\n @readonly\n */\n\n }, {\n key: \"inserted\",\n get: function get() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n /**\n Removed symbols count\n @readonly\n */\n\n }, {\n key: \"removedCount\",\n get: function get() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos || // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n /**\n Removed symbols\n @readonly\n */\n\n }, {\n key: \"removed\",\n get: function get() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n /**\n Unchanged head symbols\n @readonly\n */\n\n }, {\n key: \"head\",\n get: function get() {\n return this.value.substring(0, this.startChangePos);\n }\n /**\n Unchanged tail symbols\n @readonly\n */\n\n }, {\n key: \"tail\",\n get: function get() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n /**\n Remove direction\n @readonly\n */\n\n }, {\n key: \"removeDirection\",\n get: function get() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE; // align right if delete at right or if range removed (event with backspace)\n\n return this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n }]);\n\n return ActionDetails;\n}();\n\nexport { ActionDetails as default };\n", "import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-a0b34764.js';\n\n/**\n Provides details of changing model value\n @param {Object} [details]\n @param {string} [details.inserted] - Inserted symbols\n @param {boolean} [details.skip] - Can skip chars\n @param {number} [details.removeCount] - Removed symbols count\n @param {number} [details.tailShift] - Additional offset if any changes occurred before tail\n*/\nvar ChangeDetails = /*#__PURE__*/function () {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n function ChangeDetails(details) {\n _classCallCheck(this, ChangeDetails);\n\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n /**\n Aggregate changes\n @returns {ChangeDetails} `this`\n */\n\n\n _createClass(ChangeDetails, [{\n key: \"aggregate\",\n value: function aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n /** Total offset considering all changes */\n\n }, {\n key: \"offset\",\n get: function get() {\n return this.tailShift + this.inserted.length;\n }\n }]);\n\n return ChangeDetails;\n}();\n\nexport { ChangeDetails as default };\n", "import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-a0b34764.js';\n\n/** Provides details of continuous extracted tail */\nvar ContinuousTailDetails = /*#__PURE__*/function () {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n function ContinuousTailDetails() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var stop = arguments.length > 2 ? arguments[2] : undefined;\n\n _classCallCheck(this, ContinuousTailDetails);\n\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n\n _createClass(ContinuousTailDetails, [{\n key: \"toString\",\n value: function toString() {\n return this.value;\n }\n }, {\n key: \"extend\",\n value: function extend(tail) {\n this.value += String(tail);\n }\n }, {\n key: \"appendTo\",\n value: function appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n },\n set: function set(state) {\n Object.assign(this, state);\n }\n }, {\n key: \"shiftBefore\",\n value: function shiftBefore(pos) {\n if (this.from >= pos || !this.value.length) return '';\n var shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n }]);\n\n return ContinuousTailDetails;\n}();\n\nexport { ContinuousTailDetails as default };\n", "/**\n * Applies mask on element.\n * @constructor\n * @param {HTMLInputElement|HTMLTextAreaElement|MaskElement} el - Element to apply mask\n * @param {Object} opts - Custom mask options\n * @return {InputMask}\n */\nfunction IMask(el) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n", "import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Supported mask type */\n\n/** Provides common masking stuff */\nvar Masked = /*#__PURE__*/function () {\n // $Shape<MaskedOptions>; TODO after fix https://github.com/facebook/flow/issues/4773\n\n /** @type {Mask} */\n\n /** */\n // $FlowFixMe no ideas\n\n /** Transforms value before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing in the end of editing */\n\n /** Format typed value to string */\n\n /** Parse strgin to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n function Masked(opts) {\n _classCallCheck(this, Masked);\n\n this._value = '';\n\n this._update(Object.assign({}, Masked.DEFAULTS, opts));\n\n this.isInitialized = true;\n }\n /** Sets and applies new options */\n\n\n _createClass(Masked, [{\n key: \"updateOptions\",\n value: function updateOptions(opts) {\n if (!Object.keys(opts).length) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n /**\n Sets new options\n @protected\n */\n\n }, {\n key: \"_update\",\n value: function _update(opts) {\n Object.assign(this, opts);\n }\n /** Mask state */\n\n }, {\n key: \"state\",\n get: function get() {\n return {\n _value: this.value\n };\n },\n set: function set(state) {\n this._value = state._value;\n }\n /** Resets value */\n\n }, {\n key: \"reset\",\n value: function reset() {\n this._value = '';\n }\n /** */\n\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(value) {\n this.resolve(value);\n }\n /** Resolve new value */\n\n }, {\n key: \"resolve\",\n value: function resolve(value) {\n this.reset();\n this.append(value, {\n input: true\n }, '');\n this.doCommit();\n return this.value;\n }\n /** */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.value;\n },\n set: function set(value) {\n this.reset();\n this.append(value, {}, '');\n this.doCommit();\n }\n /** */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.doParse(this.value);\n },\n set: function set(value) {\n this.value = this.doFormat(value);\n }\n /** Value that includes raw user input */\n\n }, {\n key: \"rawInputValue\",\n get: function get() {\n return this.extractInput(0, this.value.length, {\n raw: true\n });\n },\n set: function set(value) {\n this.reset();\n this.append(value, {\n raw: true\n }, '');\n this.doCommit();\n }\n /** */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return true;\n }\n /** Finds nearest input position in direction */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n /** Extracts value in range considering flags */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return this.value.slice(fromPos, toPos);\n }\n /** Extracts tail in range */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n /** Appends tail */\n // $FlowFixMe no ideas\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n /** Appends char */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n /** Appends char */\n\n }, {\n key: \"_appendChar\",\n value: function _appendChar(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var checkTail = arguments.length > 2 ? arguments[2] : undefined;\n var consistentState = this.state;\n\n var details = this._appendCharRaw(this.doPrepare(ch, flags), flags);\n\n if (details.inserted) {\n var consistentTail;\n var appended = this.doValidate(flags) !== false;\n\n if (appended && checkTail != null) {\n // validation ok, check tail\n var beforeTailState = this.state;\n\n if (this.overwrite) {\n consistentTail = checkTail.state;\n checkTail.shiftBefore(this.value.length);\n }\n\n var tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString(); // if ok, rollback state after tail\n\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n } // revert all if something went wrong\n\n\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n\n return details;\n }\n /** Appends optional placeholder at end */\n\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n return new ChangeDetails();\n }\n /** Appends symbols considering flags */\n // $FlowFixMe no ideas\n\n }, {\n key: \"append\",\n value: function append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n var details = new ChangeDetails();\n var checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags && flags.tail) flags._beforeTailState = this.state;\n\n for (var ci = 0; ci < str.length; ++ci) {\n details.aggregate(this._appendChar(str[ci], flags, checkTail));\n } // append tail but aggregate only tailShift\n\n\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift; // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n /** */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n this._value = this.value.slice(0, fromPos) + this.value.slice(toPos);\n return new ChangeDetails();\n }\n /** Calls function and reapplies current value */\n\n }, {\n key: \"withValueRefresh\",\n value: function withValueRefresh(fn) {\n if (this._refreshing || !this.isInitialized) return fn();\n this._refreshing = true;\n var rawInput = this.rawInputValue;\n var value = this.value;\n var ret = fn();\n this.rawInputValue = rawInput; // append lost trailing chars at end\n\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.value.length), {}, '');\n }\n\n delete this._refreshing;\n return ret;\n }\n /** */\n\n }, {\n key: \"runIsolated\",\n value: function runIsolated(fn) {\n if (this._isolated || !this.isInitialized) return fn(this);\n this._isolated = true;\n var state = this.state;\n var ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n /**\n Prepares string before mask processing\n @protected\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.prepare ? this.prepare(str, this, flags) : str;\n }\n /**\n Validates if value is acceptable\n @protected\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n /**\n Does additional processing in the end of editing\n @protected\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n /** */\n\n }, {\n key: \"doFormat\",\n value: function doFormat(value) {\n return this.format ? this.format(value, this) : value;\n }\n /** */\n\n }, {\n key: \"doParse\",\n value: function doParse(str) {\n return this.parse ? this.parse(str, this) : str;\n }\n /** */\n\n }, {\n key: \"splice\",\n value: function splice(start, deleteCount, inserted, removeDirection) {\n var tailPos = start + deleteCount;\n var tail = this.extractTail(tailPos);\n var startChangePos = this.nearestInputPos(start, removeDirection);\n var changeDetails = new ChangeDetails({\n tailShift: startChangePos - start // adjust tailShift if start was aligned\n\n }).aggregate(this.remove(startChangePos)).aggregate(this.append(inserted, {\n input: true\n }, tail));\n return changeDetails;\n }\n }]);\n\n return Masked;\n}();\nMasked.DEFAULTS = {\n format: function format(v) {\n return v;\n },\n parse: function parse(v) {\n return v;\n }\n};\nIMask.Masked = Masked;\n\nexport { Masked as default };\n", "import { isString } from '../core/utils.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-a0b34764.js';\n\n/** Get Masked class by mask type */\n\nfunction maskedClass(mask) {\n if (mask == null) {\n throw new Error('mask property should be defined');\n } // $FlowFixMe\n\n\n if (mask instanceof RegExp) return IMask.MaskedRegExp; // $FlowFixMe\n\n if (isString(mask)) return IMask.MaskedPattern; // $FlowFixMe\n\n if (mask instanceof Date || mask === Date) return IMask.MaskedDate; // $FlowFixMe\n\n if (mask instanceof Number || typeof mask === 'number' || mask === Number) return IMask.MaskedNumber; // $FlowFixMe\n\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic; // $FlowFixMe\n\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask; // $FlowFixMe\n\n if (mask instanceof Function) return IMask.MaskedFunction; // $FlowFixMe\n\n if (mask instanceof IMask.Masked) return mask.constructor;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n // $FlowFixMe\n\n return IMask.Masked;\n}\n/** Creates new {@link Masked} depending on mask type */\n\nfunction createMask(opts) {\n // $FlowFixMe\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n opts = Object.assign({}, opts);\n var mask = opts.mask; // $FlowFixMe\n\n if (IMask.Masked && mask instanceof IMask.Masked) return mask;\n var MaskedClass = maskedClass(mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.');\n return new MaskedClass(opts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass };\n", "import { _ as _createClass, a as _classCallCheck, b as _objectWithoutProperties } from '../../_rollupPluginBabelHelpers-a0b34764.js';\nimport createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nvar _excluded = [\"mask\"];\nvar DEFAULT_INPUT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n/** */\n\nvar PatternInputDefinition = /*#__PURE__*/function () {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n function PatternInputDefinition(opts) {\n _classCallCheck(this, PatternInputDefinition);\n\n var mask = opts.mask,\n blockOpts = _objectWithoutProperties(opts, _excluded);\n\n this.masked = createMask({\n mask: mask\n });\n Object.assign(this, blockOpts);\n }\n\n _createClass(PatternInputDefinition, [{\n key: \"reset\",\n value: function reset() {\n this._isFilled = false;\n this.masked.reset();\n }\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n if (fromPos === 0 && toPos >= 1) {\n this._isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n\n return new ChangeDetails();\n }\n }, {\n key: \"value\",\n get: function get() {\n return this.masked.value || (this._isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.masked.unmaskedValue;\n }\n }, {\n key: \"isComplete\",\n get: function get() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n }, {\n key: \"_appendChar\",\n value: function _appendChar(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this._isFilled) return new ChangeDetails();\n var state = this.masked.state; // simulate input\n\n var details = this.masked._appendChar(str, flags);\n\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n\n details.skip = !details.inserted && !this.isOptional;\n this._isFilled = Boolean(details.inserted);\n return details;\n }\n }, {\n key: \"append\",\n value: function append() {\n var _this$masked;\n\n return (_this$masked = this.masked).append.apply(_this$masked, arguments);\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = new ChangeDetails();\n if (this._isFilled || this.isOptional) return details;\n this._isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this$masked2;\n\n return (_this$masked2 = this.masked).extractTail.apply(_this$masked2, arguments);\n }\n }, {\n key: \"appendTail\",\n value: function appendTail() {\n var _this$masked3;\n\n return (_this$masked3 = this.masked).appendTail.apply(_this$masked3, arguments);\n }\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 ? arguments[2] : undefined;\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n var minPos = 0;\n var maxPos = this.value.length;\n var boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _this$masked4, _this$parent;\n\n return (_this$masked4 = this.masked).doValidate.apply(_this$masked4, arguments) && (!this.parent || (_this$parent = this.parent).doValidate.apply(_this$parent, arguments));\n }\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n this.masked.doCommit();\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n masked: this.masked.state,\n _isFilled: this._isFilled\n };\n },\n set: function set(state) {\n this.masked.state = state.masked;\n this._isFilled = state._isFilled;\n }\n }]);\n\n return PatternInputDefinition;\n}();\n\nexport { DEFAULT_INPUT_DEFINITIONS, PatternInputDefinition as default };\n", "import { _ as _createClass, a as _classCallCheck } from '../../_rollupPluginBabelHelpers-a0b34764.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\n\nvar PatternFixedDefinition = /*#__PURE__*/function () {\n /** */\n\n /** */\n\n /** */\n\n /** */\n function PatternFixedDefinition(opts) {\n _classCallCheck(this, PatternFixedDefinition);\n\n Object.assign(this, opts);\n this._value = '';\n }\n\n _createClass(PatternFixedDefinition, [{\n key: \"value\",\n get: function get() {\n return this._value;\n }\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.isUnmasking ? this.value : '';\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this._isRawInput = false;\n this._value = '';\n }\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n var minPos = 0;\n var maxPos = this._value.length;\n\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n }, {\n key: \"isComplete\",\n get: function get() {\n return true;\n }\n }, {\n key: \"_appendChar\",\n value: function _appendChar(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var details = new ChangeDetails();\n if (this._value) return details;\n var appended = this.char === str[0];\n var isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = new ChangeDetails();\n if (this._value) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails('');\n } // $FlowFixMe no ideas\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n }, {\n key: \"append\",\n value: function append(str, flags, tail) {\n var details = this._appendChar(str, flags);\n\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n\n return details;\n }\n }, {\n key: \"doCommit\",\n value: function doCommit() {}\n }, {\n key: \"state\",\n get: function get() {\n return {\n _value: this._value,\n _isRawInput: this._isRawInput\n };\n },\n set: function set(state) {\n Object.assign(this, state);\n }\n }]);\n\n return PatternFixedDefinition;\n}();\n\nexport { PatternFixedDefinition as default };\n", "import { _ as _createClass, a as _classCallCheck, b as _objectWithoutProperties } from '../../_rollupPluginBabelHelpers-a0b34764.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nvar _excluded = [\"chunks\"];\n\nvar ChunksTailDetails = /*#__PURE__*/function () {\n /** */\n function ChunksTailDetails() {\n var chunks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, ChunksTailDetails);\n\n this.chunks = chunks;\n this.from = from;\n }\n\n _createClass(ChunksTailDetails, [{\n key: \"toString\",\n value: function toString() {\n return this.chunks.map(String).join('');\n } // $FlowFixMe no ideas\n\n }, {\n key: \"extend\",\n value: function extend(tailChunk) {\n if (!String(tailChunk)) return;\n if (isString(tailChunk)) tailChunk = new ContinuousTailDetails(String(tailChunk));\n var lastChunk = this.chunks[this.chunks.length - 1];\n var extendLast = lastChunk && (lastChunk.stop === tailChunk.stop || tailChunk.stop == null) && // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n var firstTailChunk;\n\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift();\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n } // if tail chunk still has value\n\n\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n }, {\n key: \"appendTo\",\n value: function appendTo(masked) {\n // $FlowFixMe\n if (!(masked instanceof IMask.MaskedPattern)) {\n var tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n\n var details = new ChangeDetails();\n\n for (var ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n var chunk = this.chunks[ci];\n\n var lastBlockIter = masked._mapPosToBlock(masked.value.length);\n\n var stop = chunk.stop;\n var chunkBlock = void 0;\n\n if (stop != null && (!lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails || // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n\n if (chunkBlock) {\n var tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted; // get not inserted chars\n\n var remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n chunks: this.chunks.map(function (c) {\n return c.state;\n }),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n },\n set: function set(state) {\n var chunks = state.chunks,\n props = _objectWithoutProperties(state, _excluded);\n\n Object.assign(this, props);\n this.chunks = chunks.map(function (cstate) {\n var chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails(); // $FlowFixMe already checked above\n\n chunk.state = cstate;\n return chunk;\n });\n }\n }, {\n key: \"shiftBefore\",\n value: function shiftBefore(pos) {\n if (this.from >= pos || !this.chunks.length) return '';\n var chunkShiftPos = pos - this.from;\n var ci = 0;\n\n while (ci < this.chunks.length) {\n var chunk = this.chunks[ci];\n var shiftChar = chunk.shiftBefore(chunkShiftPos);\n\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n\n if (shiftChar) return shiftChar;\n }\n\n return '';\n }\n }]);\n\n return ChunksTailDetails;\n}();\n\nexport { ChunksTailDetails as default };\n", "import { d as _inherits, e as _createSuper, _ as _createClass, a as _classCallCheck, g as _get, h as _getPrototypeOf } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\n\nvar MaskedRegExp = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedRegExp, _Masked);\n\n var _super = _createSuper(MaskedRegExp);\n\n function MaskedRegExp() {\n _classCallCheck(this, MaskedRegExp);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedRegExp, [{\n key: \"_update\",\n value:\n /**\n @override\n @param {Object} opts\n */\n function _update(opts) {\n if (opts.mask) opts.validate = function (value) {\n return value.search(opts.mask) >= 0;\n };\n\n _get(_getPrototypeOf(MaskedRegExp.prototype), \"_update\", this).call(this, opts);\n }\n }]);\n\n return MaskedRegExp;\n}(Masked);\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, b as _objectWithoutProperties, i as _set } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport { DIRECTION, forceDirection } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport PatternInputDefinition, { DEFAULT_INPUT_DEFINITIONS } from './pattern/input-definition.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\nvar _excluded = [\"_blocks\"];\n\n/**\n Pattern mask\n @param {Object} opts\n @param {Object} opts.blocks\n @param {Object} opts.definitions\n @param {string} opts.placeholderChar\n @param {boolean} opts.lazy\n*/\nvar MaskedPattern = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedPattern, _Masked);\n\n var _super = _createSuper(MaskedPattern);\n\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Show placeholder only when needed */\n function MaskedPattern() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, MaskedPattern);\n\n // TODO type $Shape<MaskedPatternOptions>={} does not work\n opts.definitions = Object.assign({}, DEFAULT_INPUT_DEFINITIONS, opts.definitions);\n return _super.call(this, Object.assign({}, MaskedPattern.DEFAULTS, opts));\n }\n /**\n @override\n @param {Object} opts\n */\n\n\n _createClass(MaskedPattern, [{\n key: \"_update\",\n value: function _update() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n\n _get(_getPrototypeOf(MaskedPattern.prototype), \"_update\", this).call(this, opts);\n\n this._rebuildMask();\n }\n /** */\n\n }, {\n key: \"_rebuildMask\",\n value: function _rebuildMask() {\n var _this = this;\n\n var defs = this.definitions;\n this._blocks = [];\n this._stops = [];\n this._maskedBlocks = {};\n var pattern = this.mask;\n if (!pattern || !defs) return;\n var unmaskingBlock = false;\n var optionalBlock = false;\n\n for (var i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n var _ret = function () {\n var p = pattern.slice(i);\n var bNames = Object.keys(_this.blocks).filter(function (bName) {\n return p.indexOf(bName) === 0;\n }); // order by key length\n\n bNames.sort(function (a, b) {\n return b.length - a.length;\n }); // use block name with max length\n\n var bName = bNames[0];\n\n if (bName) {\n // $FlowFixMe no ideas\n var maskedBlock = createMask(Object.assign({\n parent: _this,\n lazy: _this.lazy,\n placeholderChar: _this.placeholderChar,\n overwrite: _this.overwrite\n }, _this.blocks[bName]));\n\n if (maskedBlock) {\n _this._blocks.push(maskedBlock); // store block index\n\n\n if (!_this._maskedBlocks[bName]) _this._maskedBlocks[bName] = [];\n\n _this._maskedBlocks[bName].push(_this._blocks.length - 1);\n }\n\n i += bName.length - 1;\n return \"continue\";\n }\n }();\n\n if (_ret === \"continue\") continue;\n }\n\n var char = pattern[i];\n\n var _isInput = (char in defs);\n\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n\n continue;\n }\n\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n _isInput = false;\n }\n\n var def = _isInput ? new PatternInputDefinition({\n parent: this,\n lazy: this.lazy,\n placeholderChar: this.placeholderChar,\n mask: defs[char],\n isOptional: optionalBlock\n }) : new PatternFixedDefinition({\n char: char,\n isUnmasking: unmaskingBlock\n });\n\n this._blocks.push(def);\n }\n }\n /**\n @override\n */\n\n }, {\n key: \"state\",\n get: function get() {\n return Object.assign({}, _get(_getPrototypeOf(MaskedPattern.prototype), \"state\", this), {\n _blocks: this._blocks.map(function (b) {\n return b.state;\n })\n });\n },\n set: function set(state) {\n var _blocks = state._blocks,\n maskedState = _objectWithoutProperties(state, _excluded);\n\n this._blocks.forEach(function (b, bi) {\n return b.state = _blocks[bi];\n });\n\n _set(_getPrototypeOf(MaskedPattern.prototype), \"state\", maskedState, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"reset\",\n value: function reset() {\n _get(_getPrototypeOf(MaskedPattern.prototype), \"reset\", this).call(this);\n\n this._blocks.forEach(function (b) {\n return b.reset();\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return this._blocks.every(function (b) {\n return b.isComplete;\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n this._blocks.forEach(function (b) {\n return b.doCommit();\n });\n\n _get(_getPrototypeOf(MaskedPattern.prototype), \"doCommit\", this).call(this);\n }\n /**\n @override\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._blocks.reduce(function (str, b) {\n return str += b.unmaskedValue;\n }, '');\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedPattern.prototype), \"unmaskedValue\", unmaskedValue, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"value\",\n get: function get() {\n // TODO return _value when not in change?\n return this._blocks.reduce(function (str, b) {\n return str += b.value;\n }, '');\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedPattern.prototype), \"value\", value, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n return _get(_getPrototypeOf(MaskedPattern.prototype), \"appendTail\", this).call(this, tail).aggregate(this._appendPlaceholder());\n }\n /**\n @override\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var blockIter = this._mapPosToBlock(this.value.length);\n\n var details = new ChangeDetails();\n if (!blockIter) return details;\n\n for (var bi = blockIter.index;; ++bi) {\n var _block = this._blocks[bi];\n if (!_block) break;\n\n var blockDetails = _block._appendChar(ch, flags);\n\n var skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n /**\n @override\n */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this2 = this;\n\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, bi, bFromPos, bToPos) {\n var blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = _this2._findStopBefore(bi);\n blockChunk.from = _this2._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n\n return chunkTail;\n }\n /**\n @override\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (fromPos === toPos) return '';\n var input = '';\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, _, fromPos, toPos) {\n input += b.extractInput(fromPos, toPos, flags);\n });\n\n return input;\n }\n }, {\n key: \"_findStopBefore\",\n value: function _findStopBefore(blockIndex) {\n var stopBefore;\n\n for (var si = 0; si < this._stops.length; ++si) {\n var stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n\n return stopBefore;\n }\n /** Appends placeholder depending on laziness */\n\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder(toBlockIndex) {\n var _this3 = this;\n\n var details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n\n var startBlockIter = this._mapPosToBlock(this.value.length);\n\n if (!startBlockIter) return details;\n var startBlockIndex = startBlockIter.index;\n var endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(function (b) {\n if (!b.lazy || toBlockIndex != null) {\n // $FlowFixMe `_blocks` may not be present\n var args = b._blocks != null ? [b._blocks.length] : [];\n\n var bDetails = b._appendPlaceholder.apply(b, args);\n\n _this3._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n\n return details;\n }\n /** Finds block in pos */\n\n }, {\n key: \"_mapPosToBlock\",\n value: function _mapPosToBlock(pos) {\n var accVal = '';\n\n for (var bi = 0; bi < this._blocks.length; ++bi) {\n var _block2 = this._blocks[bi];\n var blockStartPos = accVal.length;\n accVal += _block2.value;\n\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n /** */\n\n }, {\n key: \"_blockStartPos\",\n value: function _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce(function (pos, b) {\n return pos += b.value.length;\n }, 0);\n }\n /** */\n\n }, {\n key: \"_forEachBlocksInRange\",\n value: function _forEachBlocksInRange(fromPos) {\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var fn = arguments.length > 2 ? arguments[2] : undefined;\n\n var fromBlockIter = this._mapPosToBlock(fromPos);\n\n if (fromBlockIter) {\n var toBlockIter = this._mapPosToBlock(toPos); // process first block\n\n\n var isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n var fromBlockStartPos = fromBlockIter.offset;\n var fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].value.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (var bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].value.length);\n } // process last block\n\n\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n /**\n @override\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n var removeDetails = _get(_getPrototypeOf(MaskedPattern.prototype), \"remove\", this).call(this, fromPos, toPos);\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, _, bFromPos, bToPos) {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n\n return removeDetails;\n }\n /**\n @override\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n // TODO refactor - extract alignblock\n var beginBlockData = this._mapPosToBlock(cursorPos) || {\n index: 0,\n offset: 0\n };\n var beginBlockOffset = beginBlockData.offset,\n beginBlockIndex = beginBlockData.index;\n var beginBlock = this._blocks[beginBlockIndex];\n if (!beginBlock) return cursorPos;\n var beginBlockCursorPos = beginBlockOffset; // if position inside block - try to adjust it\n\n if (beginBlockCursorPos !== 0 && beginBlockCursorPos < beginBlock.value.length) {\n beginBlockCursorPos = beginBlock.nearestInputPos(beginBlockOffset, forceDirection(direction));\n }\n\n var cursorAtRight = beginBlockCursorPos === beginBlock.value.length;\n var cursorAtLeft = beginBlockCursorPos === 0; // cursor is INSIDE first block (not at bounds)\n\n if (!cursorAtLeft && !cursorAtRight) return this._blockStartPos(beginBlockIndex) + beginBlockCursorPos;\n var searchBlockIndex = cursorAtRight ? beginBlockIndex + 1 : beginBlockIndex;\n\n if (direction === DIRECTION.NONE) {\n // NONE direction used to calculate start input position if no chars were removed\n // FOR NONE:\n // -\n // input|any\n // ->\n // any|input\n // <-\n // filled-input|any\n // check if first block at left is input\n if (searchBlockIndex > 0) {\n var blockIndexAtLeft = searchBlockIndex - 1;\n var blockAtLeft = this._blocks[blockIndexAtLeft];\n var blockInputPos = blockAtLeft.nearestInputPos(0, DIRECTION.NONE); // is input\n\n if (!blockAtLeft.value.length || blockInputPos !== blockAtLeft.value.length) {\n return this._blockStartPos(searchBlockIndex);\n }\n } // ->\n\n\n var firstInputAtRight = searchBlockIndex;\n\n for (var bi = firstInputAtRight; bi < this._blocks.length; ++bi) {\n var blockAtRight = this._blocks[bi];\n\n var _blockInputPos = blockAtRight.nearestInputPos(0, DIRECTION.NONE);\n\n if (!blockAtRight.value.length || _blockInputPos !== blockAtRight.value.length) {\n return this._blockStartPos(bi) + _blockInputPos;\n }\n } // <-\n // find first non-fixed symbol\n\n\n for (var _bi = searchBlockIndex - 1; _bi >= 0; --_bi) {\n var _block3 = this._blocks[_bi];\n\n var _blockInputPos2 = _block3.nearestInputPos(0, DIRECTION.NONE); // is input\n\n\n if (!_block3.value.length || _blockInputPos2 !== _block3.value.length) {\n return this._blockStartPos(_bi) + _block3.value.length;\n }\n }\n\n return cursorPos;\n }\n\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // -\n // any|filled-input\n // <-\n // any|first not empty is not-len-aligned\n // not-0-aligned|any\n // ->\n // any|not-len-aligned or end\n // check if first block at right is filled input\n var firstFilledBlockIndexAtRight;\n\n for (var _bi2 = searchBlockIndex; _bi2 < this._blocks.length; ++_bi2) {\n if (this._blocks[_bi2].value) {\n firstFilledBlockIndexAtRight = _bi2;\n break;\n }\n }\n\n if (firstFilledBlockIndexAtRight != null) {\n var filledBlock = this._blocks[firstFilledBlockIndexAtRight];\n\n var _blockInputPos3 = filledBlock.nearestInputPos(0, DIRECTION.RIGHT);\n\n if (_blockInputPos3 === 0 && filledBlock.unmaskedValue.length) {\n // filled block is input\n return this._blockStartPos(firstFilledBlockIndexAtRight) + _blockInputPos3;\n }\n } // <-\n // find this vars\n\n\n var firstFilledInputBlockIndex = -1;\n var firstEmptyInputBlockIndex; // TODO consider nested empty inputs\n\n for (var _bi3 = searchBlockIndex - 1; _bi3 >= 0; --_bi3) {\n var _block4 = this._blocks[_bi3];\n\n var _blockInputPos4 = _block4.nearestInputPos(_block4.value.length, DIRECTION.FORCE_LEFT);\n\n if (!_block4.value || _blockInputPos4 !== 0) firstEmptyInputBlockIndex = _bi3;\n\n if (_blockInputPos4 !== 0) {\n if (_blockInputPos4 !== _block4.value.length) {\n // aligned inside block - return immediately\n return this._blockStartPos(_bi3) + _blockInputPos4;\n } else {\n // found filled\n firstFilledInputBlockIndex = _bi3;\n break;\n }\n }\n }\n\n if (direction === DIRECTION.LEFT) {\n // try find first empty input before start searching position only when not forced\n for (var _bi4 = firstFilledInputBlockIndex + 1; _bi4 <= Math.min(searchBlockIndex, this._blocks.length - 1); ++_bi4) {\n var _block5 = this._blocks[_bi4];\n\n var _blockInputPos5 = _block5.nearestInputPos(0, DIRECTION.NONE);\n\n var blockAlignedPos = this._blockStartPos(_bi4) + _blockInputPos5;\n\n if (blockAlignedPos > cursorPos) break; // if block is not lazy input\n\n if (_blockInputPos5 !== _block5.value.length) return blockAlignedPos;\n }\n } // process overflow\n\n\n if (firstFilledInputBlockIndex >= 0) {\n return this._blockStartPos(firstFilledInputBlockIndex) + this._blocks[firstFilledInputBlockIndex].value.length;\n } // for lazy if has aligned left inside fixed and has came to the start - use start position\n\n\n if (direction === DIRECTION.FORCE_LEFT || this.lazy && !this.extractInput() && !isInput(this._blocks[searchBlockIndex])) {\n return 0;\n }\n\n if (firstEmptyInputBlockIndex != null) {\n return this._blockStartPos(firstEmptyInputBlockIndex);\n } // find first input\n\n\n for (var _bi5 = searchBlockIndex; _bi5 < this._blocks.length; ++_bi5) {\n var _block6 = this._blocks[_bi5];\n\n var _blockInputPos6 = _block6.nearestInputPos(0, DIRECTION.NONE); // is input\n\n\n if (!_block6.value.length || _blockInputPos6 !== _block6.value.length) {\n return this._blockStartPos(_bi5) + _blockInputPos6;\n }\n }\n\n return 0;\n }\n\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // ->\n // any|not-len-aligned and filled\n // any|not-len-aligned\n // <-\n // not-0-aligned or start|any\n var firstInputBlockAlignedIndex;\n var firstInputBlockAlignedPos;\n\n for (var _bi6 = searchBlockIndex; _bi6 < this._blocks.length; ++_bi6) {\n var _block7 = this._blocks[_bi6];\n\n var _blockInputPos7 = _block7.nearestInputPos(0, DIRECTION.NONE);\n\n if (_blockInputPos7 !== _block7.value.length) {\n firstInputBlockAlignedPos = this._blockStartPos(_bi6) + _blockInputPos7;\n firstInputBlockAlignedIndex = _bi6;\n break;\n }\n }\n\n if (firstInputBlockAlignedIndex != null && firstInputBlockAlignedPos != null) {\n for (var _bi7 = firstInputBlockAlignedIndex; _bi7 < this._blocks.length; ++_bi7) {\n var _block8 = this._blocks[_bi7];\n\n var _blockInputPos8 = _block8.nearestInputPos(0, DIRECTION.FORCE_RIGHT);\n\n if (_blockInputPos8 !== _block8.value.length) {\n return this._blockStartPos(_bi7) + _blockInputPos8;\n }\n }\n\n return direction === DIRECTION.FORCE_RIGHT ? this.value.length : firstInputBlockAlignedPos;\n }\n\n for (var _bi8 = Math.min(searchBlockIndex, this._blocks.length - 1); _bi8 >= 0; --_bi8) {\n var _block9 = this._blocks[_bi8];\n\n var _blockInputPos9 = _block9.nearestInputPos(_block9.value.length, DIRECTION.LEFT);\n\n if (_blockInputPos9 !== 0) {\n var alignedPos = this._blockStartPos(_bi8) + _blockInputPos9;\n\n if (alignedPos >= cursorPos) return alignedPos;\n break;\n }\n }\n }\n\n return cursorPos;\n }\n /** Get block by name */\n\n }, {\n key: \"maskedBlock\",\n value: function maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n /** Get all blocks by name */\n\n }, {\n key: \"maskedBlocks\",\n value: function maskedBlocks(name) {\n var _this4 = this;\n\n var indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(function (gi) {\n return _this4._blocks[gi];\n });\n }\n }]);\n\n return MaskedPattern;\n}(Masked);\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\n\nfunction isInput(block) {\n if (!block) return false;\n var value = block.value;\n return !value || block.nearestInputPos(0, DIRECTION.NONE) !== value.length;\n}\n\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, f as _slicedToArray } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\n\nvar MaskedRange = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedRange, _MaskedPattern);\n\n var _super = _createSuper(MaskedRange);\n\n function MaskedRange() {\n _classCallCheck(this, MaskedRange);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedRange, [{\n key: \"_matchFrom\",\n get:\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n function get() {\n return this.maxLength - String(this.from).length;\n }\n /**\n @override\n */\n\n }, {\n key: \"_update\",\n value: function _update(opts) {\n // TODO type\n opts = Object.assign({\n to: this.to || 0,\n from: this.from || 0\n }, opts);\n var maxLength = String(opts.to).length;\n if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength);\n opts.maxLength = maxLength;\n var fromStr = String(opts.from).padStart(maxLength, '0');\n var toStr = String(opts.to).padStart(maxLength, '0');\n var sameCharsCount = 0;\n\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) {\n ++sameCharsCount;\n }\n\n opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(maxLength - sameCharsCount);\n\n _get(_getPrototypeOf(MaskedRange.prototype), \"_update\", this).call(this, opts);\n }\n /**\n @override\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return _get(_getPrototypeOf(MaskedRange.prototype), \"isComplete\", this) && Boolean(this.value);\n }\n }, {\n key: \"boundaries\",\n value: function boundaries(str) {\n var minstr = '';\n var maxstr = '';\n\n var _ref = str.match(/^(\\D*)(\\d*)(\\D*)/) || [],\n _ref2 = _slicedToArray(_ref, 3),\n placeholder = _ref2[1],\n num = _ref2[2];\n\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n /**\n @override\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n str = _get(_getPrototypeOf(MaskedRange.prototype), \"doPrepare\", this).call(this, str, flags).replace(/\\D/g, '');\n if (!this.autofix) return str;\n var fromStr = String(this.from).padStart(this.maxLength, '0');\n var toStr = String(this.to).padStart(this.maxLength, '0');\n var val = this.value;\n var prepStr = '';\n\n for (var ci = 0; ci < str.length; ++ci) {\n var nextVal = val + prepStr + str[ci];\n\n var _this$boundaries = this.boundaries(nextVal),\n _this$boundaries2 = _slicedToArray(_this$boundaries, 2),\n minstr = _this$boundaries2[0],\n maxstr = _this$boundaries2[1];\n\n if (Number(maxstr) < this.from) prepStr += fromStr[nextVal.length - 1];else if (Number(minstr) > this.to) prepStr += toStr[nextVal.length - 1];else prepStr += str[ci];\n }\n\n return prepStr;\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _get2;\n\n var str = this.value;\n var firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n\n var _this$boundaries3 = this.boundaries(str),\n _this$boundaries4 = _slicedToArray(_this$boundaries3, 2),\n minstr = _this$boundaries4[0],\n maxstr = _this$boundaries4[1];\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && (_get2 = _get(_getPrototypeOf(MaskedRange.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args));\n }\n }]);\n\n return MaskedRange;\n}(MaskedPattern);\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, f as _slicedToArray, g as _get, h as _getPrototypeOf, i as _set } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './regexp.js';\n\n/** Date mask */\n\nvar MaskedDate = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedDate, _MaskedPattern);\n\n var _super = _createSuper(MaskedDate);\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /**\n @param {Object} opts\n */\n function MaskedDate(opts) {\n _classCallCheck(this, MaskedDate);\n\n return _super.call(this, Object.assign({}, MaskedDate.DEFAULTS, opts));\n }\n /**\n @override\n */\n\n\n _createClass(MaskedDate, [{\n key: \"_update\",\n value: function _update(opts) {\n if (opts.mask === Date) delete opts.mask;\n if (opts.pattern) opts.mask = opts.pattern;\n var blocks = opts.blocks;\n opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS()); // adjust year block\n\n if (opts.min) opts.blocks.Y.from = opts.min.getFullYear();\n if (opts.max) opts.blocks.Y.to = opts.max.getFullYear();\n\n if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to) {\n opts.blocks.m.from = opts.min.getMonth() + 1;\n opts.blocks.m.to = opts.max.getMonth() + 1;\n\n if (opts.blocks.m.from === opts.blocks.m.to) {\n opts.blocks.d.from = opts.min.getDate();\n opts.blocks.d.to = opts.max.getDate();\n }\n }\n\n Object.assign(opts.blocks, blocks); // add autofix\n\n Object.keys(opts.blocks).forEach(function (bk) {\n var b = opts.blocks[bk];\n if (!('autofix' in b)) b.autofix = opts.autofix;\n });\n\n _get(_getPrototypeOf(MaskedDate.prototype), \"_update\", this).call(this, opts);\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _get2;\n\n var date = this.date;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return (_get2 = _get(_getPrototypeOf(MaskedDate.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args)) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n /** Checks if date is exists */\n\n }, {\n key: \"isDateExist\",\n value: function isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n /** Parsed Date */\n\n }, {\n key: \"date\",\n get: function get() {\n return this.typedValue;\n },\n set: function set(date) {\n this.typedValue = date;\n }\n /**\n @override\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.isComplete ? _get(_getPrototypeOf(MaskedDate.prototype), \"typedValue\", this) : null;\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedDate.prototype), \"typedValue\", value, this, true);\n }\n }]);\n\n return MaskedDate;\n}(MaskedPattern);\nMaskedDate.DEFAULTS = {\n pattern: 'd{.}`m{.}`Y',\n format: function format(date) {\n var day = String(date.getDate()).padStart(2, '0');\n var month = String(date.getMonth() + 1).padStart(2, '0');\n var year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: function parse(str) {\n var _str$split = str.split('.'),\n _str$split2 = _slicedToArray(_str$split, 3),\n day = _str$split2[0],\n month = _str$split2[1],\n year = _str$split2[2];\n\n return new Date(year, month - 1, day);\n }\n};\n\nMaskedDate.GET_DEFAULT_BLOCKS = function () {\n return {\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n };\n};\n\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n", "import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport IMask from '../core/holder.js';\n\n/**\n Generic element API to use with mask\n @interface\n*/\nvar MaskElement = /*#__PURE__*/function () {\n function MaskElement() {\n _classCallCheck(this, MaskElement);\n }\n\n _createClass(MaskElement, [{\n key: \"selectionStart\",\n get:\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n function get() {\n var start;\n\n try {\n start = this._unsafeSelectionStart;\n } catch (e) {}\n\n return start != null ? start : this.value.length;\n }\n /** Safely returns selection end */\n\n }, {\n key: \"selectionEnd\",\n get: function get() {\n var end;\n\n try {\n end = this._unsafeSelectionEnd;\n } catch (e) {}\n\n return end != null ? end : this.value.length;\n }\n /** Safely sets element selection */\n\n }, {\n key: \"select\",\n value: function select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n\n try {\n this._unsafeSelect(start, end);\n } catch (e) {}\n }\n /** Should be overriden in subclasses */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {}\n /** Should be overriden in subclasses */\n\n }, {\n key: \"isActive\",\n get: function get() {\n return false;\n }\n /** Should be overriden in subclasses */\n\n }, {\n key: \"bindEvents\",\n value: function bindEvents(handlers) {}\n /** Should be overriden in subclasses */\n\n }, {\n key: \"unbindEvents\",\n value: function unbindEvents() {}\n }]);\n\n return MaskElement;\n}();\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\n\nvar HTMLMaskElement = /*#__PURE__*/function (_MaskElement) {\n _inherits(HTMLMaskElement, _MaskElement);\n\n var _super = _createSuper(HTMLMaskElement);\n\n /** Mapping between HTMLElement events and mask internal events */\n\n /** HTMLElement to use mask on */\n\n /**\n @param {HTMLInputElement|HTMLTextAreaElement} input\n */\n function HTMLMaskElement(input) {\n var _this;\n\n _classCallCheck(this, HTMLMaskElement);\n\n _this = _super.call(this);\n _this.input = input;\n _this._handlers = {};\n return _this;\n }\n /** */\n // $FlowFixMe https://github.com/facebook/flow/issues/2839\n\n\n _createClass(HTMLMaskElement, [{\n key: \"rootElement\",\n get: function get() {\n return this.input.getRootNode ? this.input.getRootNode() : document;\n }\n /**\n Is element in focus\n @readonly\n */\n\n }, {\n key: \"isActive\",\n get: function get() {\n //$FlowFixMe\n return this.input === this.rootElement.activeElement;\n }\n /**\n Returns HTMLElement selection start\n @override\n */\n\n }, {\n key: \"_unsafeSelectionStart\",\n get: function get() {\n return this.input.selectionStart;\n }\n /**\n Returns HTMLElement selection end\n @override\n */\n\n }, {\n key: \"_unsafeSelectionEnd\",\n get: function get() {\n return this.input.selectionEnd;\n }\n /**\n Sets HTMLElement selection\n @override\n */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n /**\n HTMLElement value\n @override\n */\n\n }, {\n key: \"value\",\n get: function get() {\n return this.input.value;\n },\n set: function set(value) {\n this.input.value = value;\n }\n /**\n Binds HTMLElement events to mask internal events\n @override\n */\n\n }, {\n key: \"bindEvents\",\n value: function bindEvents(handlers) {\n var _this2 = this;\n\n Object.keys(handlers).forEach(function (event) {\n return _this2._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]);\n });\n }\n /**\n Unbinds HTMLElement events to mask internal events\n @override\n */\n\n }, {\n key: \"unbindEvents\",\n value: function unbindEvents() {\n var _this3 = this;\n\n Object.keys(this._handlers).forEach(function (event) {\n return _this3._toggleEventHandler(event);\n });\n }\n /** */\n\n }, {\n key: \"_toggleEventHandler\",\n value: function _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n }]);\n\n return HTMLMaskElement;\n}(MaskElement);\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nvar HTMLContenteditableMaskElement = /*#__PURE__*/function (_HTMLMaskElement) {\n _inherits(HTMLContenteditableMaskElement, _HTMLMaskElement);\n\n var _super = _createSuper(HTMLContenteditableMaskElement);\n\n function HTMLContenteditableMaskElement() {\n _classCallCheck(this, HTMLContenteditableMaskElement);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(HTMLContenteditableMaskElement, [{\n key: \"_unsafeSelectionStart\",\n get:\n /**\n Returns HTMLElement selection start\n @override\n */\n function get() {\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n return selection && selection.anchorOffset;\n }\n /**\n Returns HTMLElement selection end\n @override\n */\n\n }, {\n key: \"_unsafeSelectionEnd\",\n get: function get() {\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n return selection && this._unsafeSelectionStart + String(selection).length;\n }\n /**\n Sets HTMLElement selection\n @override\n */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n var range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n /**\n HTMLElement value\n @override\n */\n\n }, {\n key: \"value\",\n get: function get() {\n // $FlowFixMe\n return this.input.textContent;\n },\n set: function set(value) {\n this.input.textContent = value;\n }\n }]);\n\n return HTMLContenteditableMaskElement;\n}(HTMLMaskElement);\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n", "import { _ as _createClass, a as _classCallCheck, b as _objectWithoutProperties } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport MaskedDate from '../masked/date.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLMaskElement from './html-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport '../masked/pattern.js';\nimport '../core/change-details.js';\nimport '../masked/base.js';\nimport '../core/continuous-tail-details.js';\nimport '../masked/pattern/input-definition.js';\nimport '../masked/pattern/fixed-definition.js';\nimport '../masked/pattern/chunk-tail-details.js';\nimport '../masked/regexp.js';\nimport '../masked/range.js';\n\nvar _excluded = [\"mask\"];\n/** Listens to element events and controls changes between element and {@link Masked} */\n\nvar InputMask = /*#__PURE__*/function () {\n /**\n View element\n @readonly\n */\n\n /**\n Internal {@link Masked} model\n @readonly\n */\n\n /**\n @param {MaskElement|HTMLInputElement|HTMLTextAreaElement} el\n @param {Object} opts\n */\n function InputMask(el, opts) {\n _classCallCheck(this, InputMask);\n\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n\n this._bindEvents(); // refresh\n\n\n this.updateValue();\n\n this._onChange();\n }\n /** Read or update mask */\n\n\n _createClass(InputMask, [{\n key: \"mask\",\n get: function get() {\n return this.masked.mask;\n },\n set: function set(mask) {\n if (this.maskEquals(mask)) return;\n\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n this.masked.updateOptions({\n mask: mask\n });\n return;\n }\n\n var masked = createMask({\n mask: mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n /** Raw value */\n\n }, {\n key: \"maskEquals\",\n value: function maskEquals(mask) {\n return mask == null || mask === this.masked.mask || mask === Date && this.masked instanceof MaskedDate;\n }\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(str) {\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n /** Unmasked value */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._unmaskedValue;\n },\n set: function set(str) {\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n /** Typed unmasked value */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.masked.typedValue;\n },\n set: function set(val) {\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n /**\n Starts listening to element events\n @protected\n */\n\n }, {\n key: \"_bindEvents\",\n value: function _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n /**\n Stops listening to element events\n @protected\n */\n\n }, {\n key: \"_unbindEvents\",\n value: function _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n /**\n Fires custom event\n @protected\n */\n\n }, {\n key: \"_fireEvent\",\n value: function _fireEvent(ev) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(function (l) {\n return l.apply(void 0, args);\n });\n }\n /**\n Current selection start\n @readonly\n */\n\n }, {\n key: \"selectionStart\",\n get: function get() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n /** Current cursor position */\n\n }, {\n key: \"cursorPos\",\n get: function get() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n },\n set: function set(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n\n this._saveSelection();\n }\n /**\n Stores current selection\n @protected\n */\n\n }, {\n key: \"_saveSelection\",\n value: function _saveSelection() {\n if (this.value !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n /** Syncronizes model value from view */\n\n }, {\n key: \"updateValue\",\n value: function updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n /** Syncronizes view from model value, fires change events */\n\n }, {\n key: \"updateControl\",\n value: function updateControl() {\n var newUnmaskedValue = this.masked.unmaskedValue;\n var newValue = this.masked.value;\n var isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newValue) this.el.value = newValue;\n if (isChanged) this._fireChangeEvents();\n }\n /** Updates options with deep equal check, recreates @{link Masked} model if mask type changes */\n\n }, {\n key: \"updateOptions\",\n value: function updateOptions(opts) {\n var mask = opts.mask,\n restOpts = _objectWithoutProperties(opts, _excluded);\n\n var updateMask = !this.maskEquals(mask);\n var updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts);\n if (updateMask || updateOpts) this.updateControl();\n }\n /** Updates cursor */\n\n }, {\n key: \"updateCursor\",\n value: function updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos; // also queue change cursor for mobile browsers\n\n this._delayUpdateCursor(cursorPos);\n }\n /**\n Delays cursor update to support mobile browsers\n @private\n */\n\n }, {\n key: \"_delayUpdateCursor\",\n value: function _delayUpdateCursor(cursorPos) {\n var _this = this;\n\n this._abortUpdateCursor();\n\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(function () {\n if (!_this.el) return; // if was destroyed\n\n _this.cursorPos = _this._changingCursorPos;\n\n _this._abortUpdateCursor();\n }, 10);\n }\n /**\n Fires custom events\n @protected\n */\n\n }, {\n key: \"_fireChangeEvents\",\n value: function _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n /**\n Aborts delayed cursor update\n @private\n */\n\n }, {\n key: \"_abortUpdateCursor\",\n value: function _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n /** Aligns cursor to nearest available position */\n\n }, {\n key: \"alignCursor\",\n value: function alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT);\n }\n /** Aligns cursor only if selection is empty */\n\n }, {\n key: \"alignCursorFriendly\",\n value: function alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n\n this.alignCursor();\n }\n /** Adds listener on custom event */\n\n }, {\n key: \"on\",\n value: function on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n\n this._listeners[ev].push(handler);\n\n return this;\n }\n /** Removes custom event listener */\n\n }, {\n key: \"off\",\n value: function off(ev, handler) {\n if (!this._listeners[ev]) return this;\n\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n\n var hIndex = this._listeners[ev].indexOf(handler);\n\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n /** Handles view input event */\n\n }, {\n key: \"_onInput\",\n value: function _onInput(e) {\n this._inputEvent = e;\n\n this._abortUpdateCursor(); // fix strange IE behavior\n\n\n if (!this._selection) return this.updateValue();\n var details = new ActionDetails( // new state\n this.el.value, this.cursorPos, // old state\n this.value, this._selection);\n var oldRawValue = this.masked.rawInputValue;\n var offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection).offset; // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n\n var removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n var cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n /** Handles view change event and commits model value */\n\n }, {\n key: \"_onChange\",\n value: function _onChange() {\n if (this.value !== this.el.value) {\n this.updateValue();\n }\n\n this.masked.doCommit();\n this.updateControl();\n\n this._saveSelection();\n }\n /** Handles view drop event, prevents by default */\n\n }, {\n key: \"_onDrop\",\n value: function _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n /** Restore last selection on focus */\n\n }, {\n key: \"_onFocus\",\n value: function _onFocus(ev) {\n this.alignCursorFriendly();\n }\n /** Restore last selection on focus */\n\n }, {\n key: \"_onClick\",\n value: function _onClick(ev) {\n this.alignCursorFriendly();\n }\n /** Unbind view events and removes element reference */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._unbindEvents(); // $FlowFixMe why not do so?\n\n\n this._listeners.length = 0; // $FlowFixMe\n\n delete this.el;\n }\n }]);\n\n return InputMask;\n}();\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\n\nvar MaskedEnum = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedEnum, _MaskedPattern);\n\n var _super = _createSuper(MaskedEnum);\n\n function MaskedEnum() {\n _classCallCheck(this, MaskedEnum);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedEnum, [{\n key: \"_update\",\n value:\n /**\n @override\n @param {Object} opts\n */\n function _update(opts) {\n // TODO type\n if (opts.enum) opts.mask = '*'.repeat(opts.enum[0].length);\n\n _get(_getPrototypeOf(MaskedEnum.prototype), \"_update\", this).call(this, opts);\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _this = this,\n _get2;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.enum.some(function (e) {\n return e.indexOf(_this.unmaskedValue) >= 0;\n }) && (_get2 = _get(_getPrototypeOf(MaskedEnum.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args));\n }\n }]);\n\n return MaskedEnum;\n}(MaskedPattern);\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, f as _slicedToArray, i as _set } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/**\n Number mask\n @param {Object} opts\n @param {string} opts.radix - Single char\n @param {string} opts.thousandsSeparator - Single char\n @param {Array<string>} opts.mapToRadix - Array of single chars\n @param {number} opts.min\n @param {number} opts.max\n @param {number} opts.scale - Digits after point\n @param {boolean} opts.signed - Allow negative\n @param {boolean} opts.normalizeZeros - Flag to remove leading and trailing zeros in the end of editing\n @param {boolean} opts.padFractionalZeros - Flag to pad trailing zeros after point in the end of editing\n*/\nvar MaskedNumber = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedNumber, _Masked);\n\n var _super = _createSuper(MaskedNumber);\n\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n function MaskedNumber(opts) {\n _classCallCheck(this, MaskedNumber);\n\n return _super.call(this, Object.assign({}, MaskedNumber.DEFAULTS, opts));\n }\n /**\n @override\n */\n\n\n _createClass(MaskedNumber, [{\n key: \"_update\",\n value: function _update(opts) {\n _get(_getPrototypeOf(MaskedNumber.prototype), \"_update\", this).call(this, opts);\n\n this._updateRegExps();\n }\n /** */\n\n }, {\n key: \"_updateRegExps\",\n value: function _updateRegExps() {\n // use different regexp to process user input (more strict, input suffix) and tail shifting\n var start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n var midInput = '(0|([1-9]+\\\\d*))?';\n var mid = '\\\\d*';\n var end = (this.scale ? '(' + escapeRegExp(this.radix) + '\\\\d{0,' + this.scale + '})?' : '') + '$';\n this._numberRegExpInput = new RegExp(start + midInput + end);\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp('[' + this.mapToRadix.map(escapeRegExp).join('') + ']', 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n /** */\n\n }, {\n key: \"_removeThousandsSeparators\",\n value: function _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n /** */\n\n }, {\n key: \"_insertThousandsSeparators\",\n value: function _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n var parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n /**\n @override\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(str) {\n var _get2;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return (_get2 = _get(_getPrototypeOf(MaskedNumber.prototype), \"doPrepare\", this)).call.apply(_get2, [this, this._removeThousandsSeparators(str.replace(this._mapToRadixRegExp, this.radix))].concat(args));\n }\n /** */\n\n }, {\n key: \"_separatorsCount\",\n value: function _separatorsCount(to) {\n var extendOnSeparators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var count = 0;\n\n for (var pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n\n return count;\n }\n /** */\n\n }, {\n key: \"_separatorsCountFromSlice\",\n value: function _separatorsCountFromSlice() {\n var slice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._value;\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 ? arguments[2] : undefined;\n\n var _this$_adjustRangeWit = this._adjustRangeWithSeparators(fromPos, toPos);\n\n var _this$_adjustRangeWit2 = _slicedToArray(_this$_adjustRangeWit, 2);\n\n fromPos = _this$_adjustRangeWit2[0];\n toPos = _this$_adjustRangeWit2[1];\n return this._removeThousandsSeparators(_get(_getPrototypeOf(MaskedNumber.prototype), \"extractInput\", this).call(this, fromPos, toPos, flags));\n }\n /**\n @override\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.thousandsSeparator) return _get(_getPrototypeOf(MaskedNumber.prototype), \"_appendCharRaw\", this).call(this, ch, flags);\n var prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n\n var prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n\n this._value = this._removeThousandsSeparators(this.value);\n\n var appendDetails = _get(_getPrototypeOf(MaskedNumber.prototype), \"_appendCharRaw\", this).call(this, ch, flags);\n\n this._value = this._insertThousandsSeparators(this._value);\n var beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n\n var beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n /** */\n\n }, {\n key: \"_findSeparatorAround\",\n value: function _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n var searchFrom = pos - this.thousandsSeparator.length + 1;\n var separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n\n return -1;\n }\n }, {\n key: \"_adjustRangeWithSeparators\",\n value: function _adjustRangeWithSeparators(from, to) {\n var separatorAroundFromPos = this._findSeparatorAround(from);\n\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n\n var separatorAroundToPos = this._findSeparatorAround(to);\n\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n /**\n @override\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n var _this$_adjustRangeWit3 = this._adjustRangeWithSeparators(fromPos, toPos);\n\n var _this$_adjustRangeWit4 = _slicedToArray(_this$_adjustRangeWit3, 2);\n\n fromPos = _this$_adjustRangeWit4[0];\n toPos = _this$_adjustRangeWit4[1];\n var valueBeforePos = this.value.slice(0, fromPos);\n var valueAfterPos = this.value.slice(toPos);\n\n var prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n\n var beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n var separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n\n if (separatorAtLeftPos >= 0) {\n var separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n\n break;\n }\n\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n var separatorAtRightPos = this._findSeparatorAround(cursorPos);\n\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n\n return cursorPos;\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate(flags) {\n var regexp = flags.input ? this._numberRegExpInput : this._numberRegExp; // validate as string\n\n var valid = regexp.test(this._removeThousandsSeparators(this.value));\n\n if (valid) {\n // validate as number\n var number = this.number;\n valid = valid && !isNaN(number) && (this.min == null || this.min >= 0 || this.min <= this.number) && (this.max == null || this.max <= 0 || this.number <= this.max);\n }\n\n return valid && _get(_getPrototypeOf(MaskedNumber.prototype), \"doValidate\", this).call(this, flags);\n }\n /**\n @override\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.value) {\n var number = this.number;\n var validnum = number; // check bounds\n\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = String(validnum);\n var formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n\n _get(_getPrototypeOf(MaskedNumber.prototype), \"doCommit\", this).call(this);\n }\n /** */\n\n }, {\n key: \"_normalizeZeros\",\n value: function _normalizeZeros(value) {\n var parts = this._removeThousandsSeparators(value).split(this.radix); // remove leading zeros\n\n\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, function (match, sign, zeros, num) {\n return sign + num;\n }); // add leading zero\n\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n /** */\n\n }, {\n key: \"_padFractionalZeros\",\n value: function _padFractionalZeros(value) {\n if (!value) return value;\n var parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n /**\n @override\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, '.');\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedNumber.prototype), \"unmaskedValue\", unmaskedValue.replace('.', this.radix), this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return Number(this.unmaskedValue);\n },\n set: function set(n) {\n _set(_getPrototypeOf(MaskedNumber.prototype), \"unmaskedValue\", String(n), this, true);\n }\n /** Parsed Number */\n\n }, {\n key: \"number\",\n get: function get() {\n return this.typedValue;\n },\n set: function set(number) {\n this.typedValue = number;\n }\n /**\n Is negative allowed\n @readonly\n */\n\n }, {\n key: \"allowNegative\",\n get: function get() {\n return this.signed || this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n }]);\n\n return MaskedNumber;\n}(Masked);\nMaskedNumber.DEFAULTS = {\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: ['.'],\n scale: 2,\n signed: false,\n normalizeZeros: true,\n padFractionalZeros: false\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\n\nvar MaskedFunction = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedFunction, _Masked);\n\n var _super = _createSuper(MaskedFunction);\n\n function MaskedFunction() {\n _classCallCheck(this, MaskedFunction);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedFunction, [{\n key: \"_update\",\n value:\n /**\n @override\n @param {Object} opts\n */\n function _update(opts) {\n if (opts.mask) opts.validate = opts.mask;\n\n _get(_getPrototypeOf(MaskedFunction.prototype), \"_update\", this).call(this, opts);\n }\n }]);\n\n return MaskedFunction;\n}(Masked);\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, i as _set, b as _objectWithoutProperties } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/continuous-tail-details.js';\n\nvar _excluded = [\"compiledMasks\", \"currentMaskRef\", \"currentMask\"];\n\n/** Dynamic mask for choosing apropriate mask in run-time */\nvar MaskedDynamic = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedDynamic, _Masked);\n\n var _super = _createSuper(MaskedDynamic);\n\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n /**\n @param {Object} opts\n */\n function MaskedDynamic(opts) {\n var _this;\n\n _classCallCheck(this, MaskedDynamic);\n\n _this = _super.call(this, Object.assign({}, MaskedDynamic.DEFAULTS, opts));\n _this.currentMask = null;\n return _this;\n }\n /**\n @override\n */\n\n\n _createClass(MaskedDynamic, [{\n key: \"_update\",\n value: function _update(opts) {\n _get(_getPrototypeOf(MaskedDynamic.prototype), \"_update\", this).call(this, opts);\n\n if ('mask' in opts) {\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(function (m) {\n return createMask(m);\n }) : [];\n }\n }\n /**\n @override\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var details = this._applyDispatch(ch, flags);\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, flags));\n }\n\n return details;\n }\n }, {\n key: \"_applyDispatch\",\n value: function _applyDispatch() {\n var appended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n var inputValue = this.rawInputValue;\n var insertValue = flags.tail && flags._beforeTailState != null ? // $FlowFixMe - tired to fight with type system\n flags._beforeTailState._rawInputValue : inputValue;\n var tailValue = inputValue.slice(insertValue.length);\n var prevMask = this.currentMask;\n var details = new ChangeDetails();\n var prevMaskState = prevMask && prevMask.state; // clone flags to prevent overwriting `_beforeTailState`\n\n this.currentMask = this.doDispatch(appended, Object.assign({}, flags)); // restore state after dispatch\n\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n\n if (insertValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n var d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n\n if (tailValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n\n return details;\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = this._applyDispatch.apply(this, arguments);\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n\n return details;\n }\n /**\n @override\n */\n\n }, {\n key: \"doDispatch\",\n value: function doDispatch(appended) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.dispatch(appended, this, flags);\n }\n /**\n @override\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _get2, _this$currentMask;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return (_get2 = _get(_getPrototypeOf(MaskedDynamic.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args)) && (!this.currentMask || (_this$currentMask = this.currentMask).doValidate.apply(_this$currentMask, args));\n }\n /**\n @override\n */\n\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.currentMask) this.currentMask.reset();\n this.compiledMasks.forEach(function (m) {\n return m.reset();\n });\n }\n /**\n @override\n */\n\n }, {\n key: \"value\",\n get: function get() {\n return this.currentMask ? this.currentMask.value : '';\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedDynamic.prototype), \"value\", value, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.currentMask ? this.currentMask.unmaskedValue : '';\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedDynamic.prototype), \"unmaskedValue\", unmaskedValue, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.currentMask ? this.currentMask.typedValue : '';\n } // probably typedValue should not be used with dynamic\n ,\n set: function set(value) {\n var unmaskedValue = String(value); // double check it\n\n if (this.currentMask) {\n this.currentMask.typedValue = value;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n\n this.unmaskedValue = unmaskedValue;\n }\n /**\n @override\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return !!this.currentMask && this.currentMask.isComplete;\n }\n /**\n @override\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var details = new ChangeDetails();\n\n if (this.currentMask) {\n var _this$currentMask2;\n\n details.aggregate((_this$currentMask2 = this.currentMask).remove.apply(_this$currentMask2, arguments)) // update with dispatch\n .aggregate(this._applyDispatch());\n }\n\n return details;\n }\n /**\n @override\n */\n\n }, {\n key: \"state\",\n get: function get() {\n return Object.assign({}, _get(_getPrototypeOf(MaskedDynamic.prototype), \"state\", this), {\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(function (m) {\n return m.state;\n }),\n currentMaskRef: this.currentMask,\n currentMask: this.currentMask && this.currentMask.state\n });\n },\n set: function set(state) {\n var compiledMasks = state.compiledMasks,\n currentMaskRef = state.currentMaskRef,\n currentMask = state.currentMask,\n maskedState = _objectWithoutProperties(state, _excluded);\n\n this.compiledMasks.forEach(function (m, mi) {\n return m.state = compiledMasks[mi];\n });\n\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n\n _set(_getPrototypeOf(MaskedDynamic.prototype), \"state\", maskedState, this, true);\n }\n /**\n @override\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var _this$currentMask3;\n\n return this.currentMask ? (_this$currentMask3 = this.currentMask).extractInput.apply(_this$currentMask3, arguments) : '';\n }\n /**\n @override\n */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this$currentMask4, _get3;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.currentMask ? (_this$currentMask4 = this.currentMask).extractTail.apply(_this$currentMask4, args) : (_get3 = _get(_getPrototypeOf(MaskedDynamic.prototype), \"extractTail\", this)).call.apply(_get3, [this].concat(args));\n }\n /**\n @override\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n\n _get(_getPrototypeOf(MaskedDynamic.prototype), \"doCommit\", this).call(this);\n }\n /**\n @override\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos() {\n var _this$currentMask5, _get4;\n\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.currentMask ? (_this$currentMask5 = this.currentMask).nearestInputPos.apply(_this$currentMask5, args) : (_get4 = _get(_getPrototypeOf(MaskedDynamic.prototype), \"nearestInputPos\", this)).call.apply(_get4, [this].concat(args));\n }\n }, {\n key: \"overwrite\",\n get: function get() {\n return this.currentMask ? this.currentMask.overwrite : _get(_getPrototypeOf(MaskedDynamic.prototype), \"overwrite\", this);\n },\n set: function set(overwrite) {\n console.warn('\"overwrite\" option is not available in dynamic mask, use this option in siblings');\n }\n }]);\n\n return MaskedDynamic;\n}(Masked);\nMaskedDynamic.DEFAULTS = {\n dispatch: function dispatch(appended, masked, flags) {\n if (!masked.compiledMasks.length) return;\n var inputValue = masked.rawInputValue; // simulate input\n\n var inputs = masked.compiledMasks.map(function (m, index) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n m.append(appended, flags);\n var weight = m.rawInputValue.length;\n return {\n weight: weight,\n index: index\n };\n }); // pop masks with longer values first\n\n inputs.sort(function (i1, i2) {\n return i2.weight - i1.weight;\n });\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n", "import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../_rollupPluginBabelHelpers-a0b34764.js';\n\n/** Mask pipe source and destination types */\n\nvar PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\n\nfunction createPipe(mask) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : PIPE_TYPE.MASKED;\n var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : PIPE_TYPE.MASKED;\n var masked = createMask(mask);\n return function (value) {\n return masked.runIsolated(function (m) {\n m[from] = value;\n return m[to];\n });\n };\n}\n/** Pipes value through mask depending on mask type, source and destination options */\n\nfunction pipe(value) {\n for (var _len = arguments.length, pipeArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n pipeArgs[_key - 1] = arguments[_key];\n }\n\n return createPipe.apply(void 0, pipeArgs)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n", "export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default } from './core/holder.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as createMask } from './masked/factory.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nimport './_rollupPluginBabelHelpers-a0b34764.js';\nimport './core/utils.js';\nimport './core/action-details.js';\nimport './core/change-details.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/input-definition.js';\nimport './masked/pattern/fixed-definition.js';\nimport './masked/pattern/chunk-tail-details.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch (e) {}\n", "import IMask from 'imask'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['price']\n\n connect() {\n const element = this.priceTarget\n const maskOptions = {\n mask: Number,\n scale: 2,\n padFractionalZeros: true,\n normalizeZeros: true,\n radix: '.',\n }\n\n IMask(element, maskOptions)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { useClickOutside } from 'stimulus-use'\n\n// TODO: Remove this when the Person Profiles are ready\nexport default class extends Controller {\n static targets = ['submit']\n static values = { path: String }\n\n connect() {\n useClickOutside(this)\n }\n\n // Sort of a hacky workaround to get the same\n // click outside submit behavior as the other inline fields\n clickOutside() {\n this.submitTarget.click()\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\nimport { removeExtraBackdrops } from '../helpers/modal_helper'\n\n// Weird wrapper controller that interacts with bootstrap\n// TODO: Move all the modals to not use bootstrap jQuery\nexport default class extends Controller {\n connect() {\n this.modal = $(this.element)\n this.modal.modal('show')\n\n removeExtraBackdrops()\n\n if (document.querySelectorAll(\"span[data-toggle='tooltip'\").length > 0) {\n document.querySelectorAll(\"span[data-toggle='tooltip'\").forEach(function (element) {\n $(element).tooltip({ html: true, delay: { show: 250, hide: 100 } })\n })\n }\n\n $(this.modal).one('hidden.bs.modal', function () {\n this.closest('#modal').innerHTML = ''\n })\n\n document.addEventListener('turbo:submit-end', this.submit.bind(this))\n }\n\n disconnect() {\n document.removeEventListener('turbo:submit-end', this.submit.bind(this))\n }\n\n submit(event) {\n if (event.detail.success) {\n // TODO: See whether or not we still need this with the new turbo update\n if (event.detail.fetchResponse.response.redirected) {\n Turbo.visit(event.detail.fetchResponse.response.url)\n }\n\n $(this.modal).modal('hide')\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { get } from '../helpers/fetch_helper'\n\nexport default class extends Controller {\n static targets = ['dark', 'default']\n\n toggleTheme(event) {\n const [key, value] = this.getKeyValue(event.currentTarget)\n\n get(this.path(key, value))\n\n if (this.isDark) {\n document.body.classList.remove('dark')\n\n // Text Editor\n let textEditorComponents = document.querySelectorAll('.text-editor-component')\n textEditorComponents.forEach((element) => {\n element.classList.remove('trumbowyg-dark')\n })\n\n for (const target of this.darkTargets) {\n target.classList.add('hidden')\n }\n for (const target of this.defaultTargets) {\n target.classList.remove('hidden')\n }\n\n this.element.dataset.value = 'dark'\n } else {\n document.body.classList.add('dark')\n\n for (const target of this.darkTargets) {\n target.classList.remove('hidden')\n }\n for (const target of this.defaultTargets) {\n target.classList.add('hidden')\n }\n\n // Text Editor\n let textEditorComponents = document.querySelectorAll('.text-editor-component')\n textEditorComponents.forEach((element) => {\n element.classList.add('trumbowyg-dark')\n })\n\n this.element.dataset.value = 'default'\n }\n }\n\n toggleProfileCollapse(event) {\n const [key, value] = this.getKeyValue(event.currentTarget)\n\n get(this.path(key, value))\n }\n\n ///\n /// private\n ///\n getKeyValue(element) {\n return [element.dataset.key, element.dataset.value]\n }\n\n path(key, value) {\n return `/preferences/${key}/${value}`\n }\n\n get isDark() {\n return document.body.classList.contains('dark')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['childContainer', 'radioBtnGroupSelector']\n static values = { groupSelector: String, childSelector: String }\n\n hideChildren() {\n for (const child of this.childContainerTargets) {\n child.classList.add('hidden')\n }\n\n if (this.childSelectorValue !== '') {\n for (const selector of this.childSelectorValue.split(/\\s+/)) {\n for (const child of document.querySelectorAll(selector)) {\n child.classList.add('hidden')\n }\n }\n }\n }\n\n showChildren() {\n for (const child of this.childContainerTargets) {\n child.classList.remove('hidden')\n }\n\n if (this.childSelectorValue !== '') {\n for (const selector of this.childSelectorValue.split(/\\s+/)) {\n for (const child of document.querySelectorAll(selector)) {\n child.classList.remove('hidden')\n }\n }\n }\n }\n\n toggleOn() {\n this.radioButtonGroupController().hideAllChildren()\n\n this.showChildren()\n }\n\n radioButtonGroupController() {\n let radioBtnGroup = document.querySelector(this.groupSelectorValue)\n return this.application.getControllerForElementAndIdentifier(radioBtnGroup, 'radio-btn-group')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['radioBtn']\n\n hideAllChildren() {\n for (const radioBtn of this.radioBtnTargets) {\n let c = this.application.getControllerForElementAndIdentifier(radioBtn, 'radio-btn')\n c.hideChildren()\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['programs']\n\n connect() {\n if (this.hasProgramsTarget) {\n $(this.programsTarget).on('select2:select', this.updateNameSelector)\n }\n }\n\n disconnect() {\n if (this.hasProgramsTarget) {\n $(this.programsTarget).off()\n }\n }\n\n updateNameSelector() {\n const frame = document.querySelector('#name-selector')\n\n if (frame) {\n const program_id = this.value\n frame.src = `/calendar/class_events?program_id=${program_id}`\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['registrantList', 'showBtn', 'hideBtn']\n\n showRegistrants() {\n this.registrantListTarget.classList.remove('hidden')\n this.hideBtnTarget.classList.remove('hidden')\n this.showBtnTarget.classList.add('hidden')\n }\n\n hideRegistrants() {\n this.registrantListTarget.classList.add('hidden')\n this.hideBtnTarget.classList.add('hidden')\n this.showBtnTarget.classList.remove('hidden')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = { path: String }\n\n refreshToggler(event) {\n const selected = event.target.innerText.toLowerCase()\n const frame = document.querySelector('#event_toggler')\n\n // These have to go to the new path, so that they can take the\n // turbo frame out of the response, and then put it into the dom.\n frame.src = `${this.pathValue}?selected=${selected}`\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['card']\n static values = { url: String, placement: String }\n\n show() {\n if (this.hasCardTarget) {\n this.cardTarget.classList.remove('hidden')\n } else {\n let loadingHovercard = this.buildHovercardWith(this.loadingContent())\n this.element.appendChild(loadingHovercard)\n\n fetch(this.urlValue)\n .then((r) => r.text())\n .then((html) => {\n let newHovercard = this.buildHovercardWith(html)\n let existingHovercard = this.element.querySelector('.hovercard')\n\n existingHovercard.replaceWith(newHovercard)\n })\n }\n }\n\n hide() {\n if (this.hasCardTarget) {\n this.cardTarget.classList.add('hidden')\n }\n }\n\n disconnect() {\n if (this.hasCardTarget) {\n this.cardTarget.remove()\n }\n }\n\n loadingContent() {\n return `\n <div class='hovercard'>\n <div class='placeholder-bar placeholder-bar-highlight'></div>\n <div class='placeholder-row'>\n <div class='placeholder-bar placeholder-bar-med'></div>\n <div class='placeholder-bar placeholder-bar-lg'></div>\n </div>\n <div class='placeholder-bar'></div>\n <div class='placeholder-bar'></div>\n <div class='placeholder-row'>\n <div class='placeholder-bar placeholder-bar-med'></div>\n <div class='placeholder-bar placeholder-bar-lg placeholder-bar-highlight'></div>\n </div>\n </div>\n `\n }\n\n buildHovercardWith(html) {\n let fragment = document.createRange().createContextualFragment(html)\n\n if (this.placementValue) {\n fragment.querySelector('.hovercard').classList.add(this.placementValue)\n }\n\n return fragment\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n//\n// Membership Template Add/Edit modal\n// a lot of conditional rendering and toggling of the form\n// based on if the membership is individual or trial, or recurring billing or not\n//\nexport default class MembershipTemplatesController extends Controller {\n static targets = ['recurringBillingHide', 'occurrencesHide', 'billingOptions', 'noChargeText', 'paymentReason']\n\n hideRecurringBilling() {\n this.hideNoCharge()\n this.paymentReasonTarget.classList.add('col-span-3')\n this.recurringBillingHideTarget.classList.add('hidden')\n this.occurrencesHideTarget.classList.add('hidden')\n }\n\n showRecurringBilling() {\n this.hideNoCharge()\n this.paymentReasonTarget.classList.remove('col-span-3')\n this.recurringBillingHideTarget.classList.remove('hidden')\n this.occurrencesHideTarget.classList.remove('hidden')\n }\n\n hideNoCharge() {\n this.billingOptionsTarget.classList.remove('hidden')\n this.noChargeTextTarget.classList.add('hidden')\n }\n\n showNoCharge() {\n this.billingOptionsTarget.classList.add('hidden')\n this.noChargeTextTarget.classList.remove('hidden')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n updateCalendarDate(event) {\n const date = event.target.dataset.date\n\n document.dispatchEvent(new CustomEvent('calendar:updateCalendarDate', { detail: { date } }))\n }\n}\n", "/* global initializeTooltips */\n// TODO: create an esm version of initializeTooltips so that we aren't\n// poluting our files with random globals.\n\nimport { Controller } from '@hotwired/stimulus'\nexport default class extends Controller {\n static targets = ['table', 'tbody', 'infinity', 'spinner', 'footer', 'all', 'more']\n\n showMore() {\n if (this.moreTarget.classList.contains('disabled')) {\n return\n }\n\n fetch(this.moreTarget.dataset.path, {\n method: 'GET',\n })\n .then((response) => response.json())\n .then((data) => {\n if (this.hasTbodyTarget) {\n this.tbodyTarget.insertAdjacentHTML('beforeend', data.table_data)\n } else {\n this.tableTarget.insertAdjacentHTML('beforeend', data.table_data)\n }\n\n this.footerTarget.innerHTML = data.footer\n initializeTooltips($(this.element.parentElement))\n })\n }\n\n showAll() {\n this.showMore()\n this.allTarget.classList.add('disabled')\n this.moreTarget.classList.add('disabled')\n\n const that = this\n ;(function onScroll() {\n that.infinityTarget.addEventListener('scroll', function scroll() {\n const bottom =\n that.infinityTarget.scrollHeight - Math.abs(that.infinityTarget.scrollTop) >=\n that.infinityTarget.offsetHeight\n\n if (bottom) {\n that.spinnerTarget.classList.remove('hidden')\n\n if (that.moreTarget.parentElement.classList.contains('at-bottom')) {\n that.spinnerTarget.classList.add('hidden')\n } else {\n that.infinityTarget.removeEventListener('scroll', scroll)\n fetch(that.moreTarget.dataset.path, {\n method: 'GET',\n })\n .then((response) => response.json())\n .then((data) => {\n initializeTooltips()\n if (that.hasTbodyTarget) {\n that.tbodyTarget.insertAdjacentHTML('beforeend', data.table_data)\n } else {\n that.tableTarget.insertAdjacentHTML('beforeend', data.table_data)\n }\n that.footerTarget.innerHTML = data.footer\n that.allTarget.classList.add('disabled')\n that.moreTarget.classList.add('disabled')\n onScroll()\n })\n }\n }\n\n that.allTarget.classList.add('disabled')\n that.moreTarget.classList.add('disabled')\n })\n })()\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class PrettyCheckboxController extends Controller {\n static targets = ['click', 'input', 'icon', 'selectAll', 'deselectAll']\n\n connect() {\n for (const t of this.clickTargets) {\n t.addEventListener('click', function (e) {\n let target = e.target.classList.contains('.menu-item') ? e.target : e.target.closest('.menu-item')\n\n let input = target.querySelector('input[type=\"checkbox\"]')\n let icon = target.querySelector('.fa-check')\n\n input.checked = !input.checked\n icon.classList.toggle('checkbox-disabled')\n })\n }\n }\n\n selectAll() {\n this.selectAllTarget.classList.add('hidden')\n this.deselectAllTarget.classList.remove('hidden')\n for (const i of this.inputTargets) {\n i.checked = true\n }\n for (const i of this.iconTargets) {\n i.classList.remove('checkbox-disabled')\n }\n }\n\n deselectAll() {\n this.selectAllTarget.classList.remove('hidden')\n this.deselectAllTarget.classList.add('hidden')\n for (const i of this.inputTargets) {\n i.checked = false\n }\n for (const i of this.iconTargets) {\n i.classList.add('checkbox-disabled')\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['ranks']\n\n connect() {\n if (this.hasRanksTarget) {\n $(this.ranksTarget).on('select2:select', this.updateRankPreview)\n }\n }\n\n disconnect() {\n if (this.hasRanksTarget) {\n $(this.ranksTarget).off()\n }\n }\n\n updateRankPreview() {\n // Since the eventListener in connect is called from jQuery,\n // it modifies this, so that it is not the class itself, but the jQuery object,\n // so we can't do any of the actual stimulus things here\n const frame = document.querySelector('#program-ranks')\n\n if (frame) {\n if (this.value.split('_')[0] === 'from') {\n const program_id = this.value.split('_')[1]\n frame.src = `${window.location}/${program_id}/ranks`\n } else {\n frame.src = undefined\n frame.innerHTML = ''\n }\n }\n }\n}\n", "/**\n * Grays out the selected select2 option if it has a '' value, typically ones labeled \"None\"\n *\n * @param {HTMLElement} element - The select2 element whose option will be deemphasized\n * @example\n * grayOutTheNone(myElement)\n */\nexport function grayOutTheNone(element) {\n if ($(element).val() === '') {\n $(element.nextElementSibling).addClass('none-selected')\n } else {\n $(element.nextElementSibling).removeClass('none-selected')\n }\n}\n", "export function previewBeltGraphic($form) {\n const formData = $form.serialize()\n const path = `/settings/programs/ranks/preview_belt_graphic?${formData}`\n\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n var html\n $.ajax({\n type: 'GET',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n async: false,\n complete(data) {\n if (data.status === 200) html = data.responseText\n else return false\n },\n })\n return html\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { grayOutTheNone } from '../../helpers/gray_out_helper'\nimport { previewBeltGraphic } from '../../helpers/belt_graphic_preview_helper'\n\nfunction formChanged(element) {\n const $form = $(element).parents('form.ranks-modal')\n const html = previewBeltGraphic($form)\n\n if (html) {\n $form.find('.graphic-preview .preview-empty-message').addClass('hidden')\n $form.find('.graphic-preview .preview').removeClass('hidden')\n } else {\n $form.find('.graphic-preview .preview-empty-message').removeClass('hidden')\n $form.find('.graphic-preview .preview').addClass('hidden')\n }\n\n $form.find('.graphic-preview .preview').html(html)\n}\n\nexport default class extends Controller {\n static targets = ['colorOptions', 'emblemOptions', 'dropdown', 'checkbox']\n\n connect() {\n if (this.hasEmblemOptionsTarget) {\n this.emblemOptionsTargets.forEach((emblem) => {\n $(emblem).on('select2:select', this.revealSubOptions)\n })\n }\n if (this.hasColorOptionsTarget) {\n $(this.colorOptionsTarget).on('select2:select', this.activateSecondOption)\n }\n if (this.hasDropdownTarget) {\n this.dropdownTargets.forEach((dropdown) => {\n grayOutTheNone(dropdown)\n $(dropdown).on(\n 'select2:select',\n (function (that, element) {\n return function () {\n that.formChangedSelect(element)\n }\n })(this, dropdown),\n )\n })\n }\n if (this.hasCheckboxTarget) {\n this.checkboxTargets.forEach((checkbox) => {\n $(checkbox).on(\n 'click',\n (function (that, element) {\n return function () {\n that.formChangedCheckbox(element)\n }\n })(this, checkbox),\n )\n })\n }\n }\n\n revealSubOptions(e) {\n if (e.delegateTarget.value === '') {\n $(this).parent().find('.emblem-option-selects').removeClass('revealed')\n } else {\n $(this).parent().find('.emblem-option-selects').addClass('revealed')\n $(this).parent().find('.emblem-option-selects').addClass('fade-in')\n }\n }\n\n activateSecondOption(e) {\n if (e.delegateTarget.value === '') {\n $(e.delegateTarget).parent().parent().find('.color-2-select').addClass('disabled')\n } else {\n $(e.delegateTarget).parent().parent().find('.color-2-select').removeClass('disabled')\n }\n }\n\n formChangedSelect(element) {\n grayOutTheNone(element)\n formChanged(element)\n }\n\n formChangedCheckbox(element) {\n formChanged(element)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class RecurringClassesController extends Controller {\n static targets = ['classNameInput']\n\n showClassOptions(event) {\n if (event.target.type === 'checkbox') return\n\n const classNameOptions = event.target.closest('.class-name-options-fields')\n for (const classNameOption of classNameOptions.querySelectorAll('.class-name-option')) {\n classNameOption.classList.add('hidden')\n }\n\n event.target.parentNode.querySelector('.class-name-option').classList.remove('hidden')\n }\n}\n", "import { Turbo } from '@hotwired/turbo-rails'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class StudentsFilterController extends Controller {\n static targets = ['programFilter', 'rankFilter']\n static values = { frame: String }\n\n // TODO: Rename this whole file or build it into a filter component\n filter() {\n const url = new URL(window.location)\n\n if (this.checkedProgramTargets.length) {\n url.searchParams.set(...this.programParams)\n }\n\n if (this.checkedRankTargets.length) {\n url.searchParams.set(...this.rankParams)\n }\n\n if (this.hasFrameValue) {\n const frame = document.querySelector(`#${this.frameValue}`)\n frame.src = url\n } else {\n Turbo.cache.clear()\n Turbo.visit(url)\n }\n }\n\n clear() {\n const url = `${window.location.pathname}`\n\n Turbo.cache.clear()\n Turbo.visit(url)\n }\n\n ///\n /// private\n ///\n\n queryParams(targets) {\n const ids = targets.map((target) => target.value)\n const name = targets[0].id\n return [name, ids]\n }\n\n get checkedRankTargets() {\n return this.rankFilterTargets.filter((target) => target.checked)\n }\n\n get checkedProgramTargets() {\n return this.programFilterTargets.filter((target) => target.checked)\n }\n\n get programParams() {\n return this.queryParams(this.checkedProgramTargets)\n }\n\n get rankParams() {\n return this.queryParams(this.checkedRankTargets)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n if (this.element.classList.contains('select2-with-image')) {\n let placeholderText = ''\n if (this.element.dataset.placeholder) {\n placeholderText = this.element.dataset.placeholder\n }\n\n $(this.element).select2({\n theme: 'bootstrap',\n templateSelection: this.templateImageOptions,\n templateResult: this.templateImageOptions,\n placeholder: placeholderText,\n allowClear: true,\n width: null,\n })\n } else if (this.element.classList.contains('select2-search')) {\n let placeholderText = ''\n if (this.element.dataset.placeholder) {\n placeholderText = this.element.dataset.placeholder\n }\n\n $(this.element).select2({\n theme: 'bootstrap',\n placeholder: placeholderText,\n allowClear: true,\n width: null,\n })\n } else if (this.element.classList.contains('select2-checkmark')) {\n $(this.element).select2({\n theme: 'bootstrap',\n width: null,\n minimumResultsForSearch: Infinity,\n templateResult(state) {\n return $(\n `<span class='select2--checkmark flex items-center'>\n <i class='fas fa-check soft-hidden'></i>\n <span class='ml-2'>${state.text}</span>\n </span>`,\n )\n },\n })\n } else if (this.element.classList.contains('select2-people')) {\n let searchType = this.element.dataset.searchType\n ? this.element.dataset.searchType\n : '[type:Student,Prospect]'\n\n $(this.element).select2({\n theme: 'bootstrap',\n templateSelection: this.templateImageOptions,\n templateResult: this.templateImageOptions,\n escapeMarkup(markup) {\n return markup\n },\n placeholder: $('.person-select-placeholder').html(),\n ajax: {\n url: '/select_search?format=json',\n dataType: 'json',\n data(params) {\n var query = { query: `${searchType} ${params.term}` }\n\n return query\n },\n },\n })\n } else {\n $(this.element).select2({\n theme: 'bootstrap',\n width: null,\n minimumResultsForSearch: Infinity,\n })\n }\n }\n\n templateImageOptions(state) {\n if (!state.id) return state.text\n\n let $state = $(`<span class=\"flex items-center\">${state.text}</span>`)\n if ($(state.element).data('image') !== undefined) {\n const image_data = $(state.element).data('image')\n $state = $(`<span class=\"flex items-center\">\n <img src=\"${image_data}\" class=\"employee-image\" />\n ${state.text}\n </span>`)\n }\n if (state.image) {\n $state = $(`<span class=\"flex items-center\">\n <img src=\"${state.image}\" class=\"employee-image\" />\n ${state.text}\n </span>`)\n }\n return $state\n }\n\n formatText(icon) {\n return $(`<span><i class=\"fas ${$(icon.element).data('icon')}\"></i> ${icon.text}</span>`)\n }\n}\n", "import IMask from 'imask'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n const maskOptions = {\n overwrite: true,\n autofix: true,\n mask: 'H:MM',\n blocks: {\n H: {\n mask: Number,\n placeholderChar: '0',\n min: 1,\n max: 12,\n scale: 0,\n normalizeZeros: true,\n },\n MM: {\n mask: IMask.MaskedRange,\n from: 0,\n to: 59,\n maxLength: 2,\n },\n },\n }\n\n IMask(this.element, maskOptions)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class ToggleClassController extends Controller {\n static targets = ['element', 'required']\n static values = { selector: String }\n static classes = ['actionable']\n\n connect() {\n if (this.hasSelectorValue) {\n this.toToggle = document.querySelector(this.selectorValue)\n } else if (this.hasElementTarget) {\n this.toToggle = this.elementTarget\n } else {\n this.toToggle = this.element\n }\n\n const eventId = this.toToggle.id || this.toToggle.classList[0]\n\n this.addEvent = new Event(`add:${eventId}`)\n this.removeEvent = new Event(`remove:${eventId}`)\n }\n\n add() {\n this.toToggle.classList.add(this.actionableClass)\n if (this.hasRequiredTarget) {\n this.requiredTarget.required = false\n }\n\n document.dispatchEvent(this.addEvent)\n }\n\n remove() {\n this.toToggle.classList.remove(this.actionableClass)\n if (this.hasRequiredTarget) {\n this.requiredTarget.required = true\n }\n\n document.dispatchEvent(this.removeEvent)\n }\n\n toggle() {\n this.toToggle.classList.toggle(this.actionableClass)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static outlets = ['tom-select', 'collapse--component']\n static targets = ['nextMembership', 'hiddenRank']\n static values = { nextMembership: String }\n\n handleProgramChange({ target }) {\n this.disableAllRankDropdowns()\n\n const rankDropdown = this.tomSelectOutlets.find(\n (sel) => parseInt(sel.context.element.dataset.programId) === parseInt(target.value),\n )\n const allowEnable = rankDropdown.context.element.dataset.allowEnable === 'true'\n\n const hiddenRank = this.hiddenRankTargets.find(\n (sel) => parseInt(sel.dataset.programId) === parseInt(target.value),\n )\n\n if (allowEnable) {\n rankDropdown.tomSelect.enable()\n } else {\n hiddenRank.disabled = false\n }\n }\n\n selectNoProgram() {\n this.disableAllRankDropdowns()\n }\n\n //\n // private\n //\n\n disableAllRankDropdowns() {\n this.tomSelectOutlets.forEach((rankDropdown) => {\n rankDropdown.tomSelect.disable()\n })\n this.hiddenRankTargets.forEach((hiddenRank) => {\n hiddenRank.disabled = true\n })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [\n 'membershipAmount',\n 'membershipDueDate',\n 'membershipEndDate',\n 'taxRate',\n 'subtotal',\n 'salesTax',\n 'grandTotal',\n 'taxExempt',\n 'dateGroup',\n 'dateRadio',\n 'attendanceRadio',\n 'attendanceGroup',\n 'membershipAttendance',\n 'unlimitedRadio',\n 'toggleRegistrationFee',\n 'registrationFeeContainer',\n 'registrationFeeAmount',\n 'registrationFeeTaxRate',\n 'intervalDuration',\n ]\n\n static outlets = ['flatpickr']\n\n static values = [\n { name: 'taxExempt', type: Boolean, default: false },\n { name: 'total', type: Number, default: 0 },\n { name: 'subtotal', type: Number, default: 0 },\n { name: 'salesTax', type: Number, default: 0 },\n ]\n\n toggleRegistrationFee({ params, target }) {\n const parsedTemplateId = params.templateId.toString()\n const registrationFeeInput = this.registrationFeeInput(parsedTemplateId)\n const registrationFeeContainer = this.registrationFeeContainer(parsedTemplateId)\n registrationFeeInput.disabled = !target.checked\n registrationFeeContainer.classList.toggle('hidden')\n this.updateTotals()\n }\n\n toggleTax() {\n this.taxExemptValue = !this.taxExemptValue\n this.taxExemptTargets.forEach((taxExemptTarget) => {\n taxExemptTarget.value = this.taxExemptValue\n })\n this.updateTotals()\n }\n\n startDateChanged({ target }) {\n this.updateTotals()\n const endDateOutlet = this.endDateOutlet(target.dataset.templateId)\n if (!endDateOutlet) return\n\n const selectedDate = new Date(target.value)\n if (endDateOutlet.element.disabled) {\n this.setEndDate(selectedDate, endDateOutlet)\n } else {\n let newDate = new Date(selectedDate.getTime())\n newDate.setDate(newDate.getDate() + 1)\n endDateOutlet.fp.set('minDate', newDate.toISOString().slice(0, 10))\n }\n }\n\n setEndDate(selectedDate, endDateOutlet) {\n const intervalDurationElement = this.intervalDuration(endDateOutlet.element.dataset.templateId)\n if (!intervalDurationElement) return\n const intervalDuration = intervalDurationElement.value\n const endDate = this.addIntervalToDate(selectedDate, intervalDuration)\n endDateOutlet.fp.setDate(endDate.toISOString().slice(0, 10))\n }\n\n updateTotals() {\n this.resetTotals()\n this.membershipDueDateTargets.forEach((membershipDueDate) => {\n if (this.isTodayValue(membershipDueDate.value)) {\n const templateId = membershipDueDate.dataset.templateId\n this.calculateTotals(templateId)\n }\n })\n this.updateDisplay()\n }\n\n durationKindChange({ params: { templateId } }) {\n const parsedTemplateId = templateId.toString()\n if (this.dateRadio(parsedTemplateId).checked) {\n this.handleDateRadioChange(parsedTemplateId)\n } else if (this.attendanceRadio(parsedTemplateId).checked) {\n this.handleAttendanceRadioChange(parsedTemplateId)\n } else if (this.unlimitedRadio(parsedTemplateId).checked) {\n this.handleUnlimitedRadioChange(parsedTemplateId)\n }\n }\n\n ///\n /// private\n ///\n\n calculateTotals(templateId) {\n let value = this.amountForMembershipTemplate(templateId)\n const taxRate = this.taxRateForMembershipTemplate(templateId)\n const registrationFee = this.registrationFeeForMembershipTemplate(templateId)\n const registrationFeeTaxRate = this.taxRateForRegistrationFee(templateId)\n let taxAmount = value * taxRate\n if (registrationFee) {\n const registrationFeeTaxAmount = registrationFee * registrationFeeTaxRate\n value += registrationFee\n taxAmount += registrationFeeTaxAmount\n }\n this.subtotalValue += value\n this.salesTaxValue += Math.round(taxAmount)\n const total = value + taxAmount\n this.totalValue += total\n }\n\n handleUnlimitedRadioChange(templateId) {\n this.attendanceGroup(templateId).classList.add('hidden')\n this.dateGroup(templateId).classList.add('hidden')\n this.membershipEndDate(templateId).disabled = true\n this.membershipEndDate(templateId).nextElementSibling.disabled = true\n this.membershipAttendance(templateId).disabled = true\n }\n\n handleDateRadioChange(templateId) {\n this.attendanceGroup(templateId).classList.add('hidden')\n this.dateGroup(templateId).classList.remove('hidden')\n this.membershipEndDate(templateId).disabled = false\n this.membershipEndDate(templateId).nextElementSibling.disabled = false\n this.membershipAttendance(templateId).disabled = true\n }\n\n handleAttendanceRadioChange(templateId) {\n this.attendanceGroup(templateId).classList.remove('hidden')\n this.dateGroup(templateId).classList.add('hidden')\n this.membershipEndDate(templateId).disabled = true\n this.membershipEndDate(templateId).nextElementSibling.disabled = true\n this.membershipAttendance(templateId).disabled = false\n }\n\n // Early return in case the billing is turned off or we're on full page signup\n // and haven't gotten there yet\n updateDisplay() {\n if (!this.hasSubtotalTarget) return\n if (!this.hasSalesTaxTarget) return\n if (!this.hasGrandTotalTarget) return\n this.subtotalTarget.value = this.subtotalValue\n this.salesTaxTarget.value = this.salesTaxValue\n this.grandTotalTarget.value = this.totalValue\n }\n\n resetTotals() {\n this.totalValue = 0\n this.subtotalValue = 0\n this.salesTaxValue = 0\n }\n\n taxRateForMembershipTemplate(templateId) {\n const taxRateElement = this.taxRate(templateId)\n if (!taxRateElement) return 0.0\n return this.taxExemptValue ? 0.0 : parseFloat(taxRateElement.value)\n }\n\n taxRateForRegistrationFee(templateId) {\n const taxRateElement = this.registrationFeeTaxRate(templateId)\n if (!taxRateElement) return 0.0\n return this.taxExemptValue ? 0.0 : parseFloat(taxRateElement.value)\n }\n\n amountForMembershipTemplate(templateId) {\n const amountElement = this.membershipAmount(templateId)\n if (!amountElement) return 0.0\n return parseFloat(amountElement.value)\n }\n\n registrationFeeForMembershipTemplate(templateId) {\n const registrationFeeInput = this.registrationFeeInput(templateId)\n if (registrationFeeInput && !registrationFeeInput.disabled) {\n const amount = this.registrationFeeInput(templateId).value\n return parseFloat(amount)\n }\n }\n\n isTodayValue(value) {\n if (!value) return false\n\n const beginningOfDay = new Date()\n const valueDate = new Date(value)\n\n beginningOfDay.setHours(0, 0, 0, 0)\n return valueDate.toISOString().slice(0, 10) === beginningOfDay.toISOString().slice(0, 10)\n }\n\n endDateOutlet(templateId) {\n return this.flatpickrOutlets.find(function (outlet) {\n return (\n outlet.element.dataset.templateId === templateId &&\n outlet.element.dataset.calculateMembershipTotalsTarget === 'membershipEndDate'\n )\n })\n }\n\n addIntervalToDate(date, interval) {\n const [value, unit] = interval.split(' ')\n let newDate = new Date(date.getTime())\n let momentDate = window.moment(newDate)\n momentDate.add(value, unit)\n return momentDate.toDate()\n }\n\n attendanceGroup(templateId) {\n return this.attendanceGroupTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n dateGroup(templateId) {\n return this.dateGroupTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n attendanceRadio(templateId) {\n return this.attendanceRadioTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n dateRadio(templateId) {\n return this.dateRadioTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n unlimitedRadio(templateId) {\n return this.unlimitedRadioTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n registrationFeeInput(templateId) {\n return this.registrationFeeAmountTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n registrationFeeContainer(templateId) {\n return this.registrationFeeContainerTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n membershipDueDate(templateId) {\n return this.membershipDueDateTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n membershipEndDate(templateId) {\n return this.membershipEndDateTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n membershipAmount(templateId) {\n return this.membershipAmountTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n membershipAttendance(templateId) {\n return this.membershipAttendanceTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n taxRate(templateId) {\n return this.taxRateTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n registrationFeeTaxRate(templateId) {\n return this.registrationFeeTaxRateTargets.find((el) => el.dataset.templateId === templateId)\n }\n\n intervalDuration(templateId) {\n return this.intervalDurationTargets.find((el) => el.dataset.templateId === templateId)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// This only works with a checkbox or radio buttons being the disabler at the moment\n// will add support for other element types as we need them\nexport default class extends Controller {\n static targets = ['disabler', 'disablee']\n static values = {\n disable: { type: String, default: '0' },\n }\n\n connect() {\n if (this.hasDisablerTarget) this.toggle(false)\n }\n\n toggle(shouldFocus = true) {\n if (this.disablerTarget.type === 'checkbox' || this.disablerTarget.type === 'radio') {\n this.disableeTargets.forEach((disablee) => {\n disablee.disabled = !this.disablerTarget.checked\n })\n } else {\n this.disableeTargets.forEach((disablee) => {\n disablee.disabled = this.disablerTarget.value === this.disableValue\n })\n }\n if (!this.disableeTarget.disabled && shouldFocus) this.disableeTarget.focus()\n if (this.disablerTarget.disabled) this.disableeTarget.value = ''\n }\n\n betterToggle() {\n this.disableeTarget.disabled = !this.disableeTarget.disabled\n }\n\n add() {\n this.disableeTarget.disabled = true\n if (this.disableeTarget.getAttribute('data-toggle-disable-remove-value') !== null) {\n this.disableeTarget.value = ''\n this.disableeTarget.dispatchEvent(new Event('change', { bubbles: true }))\n }\n }\n\n remove() {\n this.disableeTarget.disabled = false\n }\n}\n", "export function elementIsFlatpickr(element) {\n return (\n (element.getAttribute('data-controller') || '').includes('flatpickr') ||\n element.classList.contains('flatpickr-input')\n )\n}\n", "import { elementIsVisible } from '../helpers/visibility_helper'\nimport { elementIsFlatpickr } from '../helpers/flatpickr_helper'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['submit', 'required', 'radioBtnGroup']\n\n connect() {\n this.checkForDisable()\n }\n\n requiredTargetConnected() {\n this.change()\n }\n\n requiredTargetDisconnected() {\n this.change()\n }\n\n change() {\n this.checkForDisable()\n }\n\n checkForDisable() {\n if (!this.hasSubmitTarget) return\n\n if (this.requiredTargets.length === 0 || this.valid) {\n this.submitTarget.disabled = false\n } else {\n this.submitTarget.disabled = true\n }\n }\n\n isTargetBlank(el) {\n if (el.disabled) return false\n const blank = el.value === null || el.value === ''\n return blank\n }\n\n get valid() {\n if (this.hasBlankFormFields()) {\n return false\n }\n\n if (!this.hasCheckedRadioButtons() || !this.hasCheckedCheckboxes()) {\n return false\n }\n\n return true\n }\n\n hasBlankFormFields() {\n if (this.formFields.length === 0) {\n return false\n }\n return this.formFields.some(this.isTargetBlank)\n }\n\n hasCheckedRadioButtons() {\n if (this.radioButtons.length === 0 || !this.radioButtons.some((el) => !el.disabled)) {\n return true\n }\n return this.radioBtnGroupTargets.every((group) => {\n const checkedRadios = group.querySelectorAll('input[type=\"radio\"]:checked')\n return checkedRadios.length > 0\n })\n }\n\n hasCheckedCheckboxes() {\n return this.checkboxFieldsets.length === 0 ? true : this.checkedCheckboxes\n }\n\n get radioButtons() {\n return this.requiredTargets.filter((target) => target.type === 'radio')\n }\n\n get checkboxFieldsets() {\n return this.requiredTargets.filter((target) => target.tagName === 'FIELDSET')\n }\n\n get checkedCheckboxes() {\n return this.checkboxFieldsets.every((fieldset) => {\n const checkboxes = fieldset.querySelectorAll('input[type=\"checkbox\"]')\n return Array.from(checkboxes).some((checkbox) => checkbox.checked)\n })\n }\n\n get formFields() {\n return this.requiredTargets.filter(\n (target) =>\n target.type !== 'radio' &&\n target.tagName !== 'FIELDSET' &&\n (elementIsVisible(target) || elementIsFlatpickr(target)),\n )\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport TomSelect from 'tom-select'\n\nexport default class extends Controller {\n static values = { relativeTo: String, selected: String }\n\n connect() {\n this.tomSelect = new TomSelect(this.element, { ...this.sharedOptions, ...this.extraOptions })\n\n if (this.selectedValue) {\n this.tomSelect.setValue(this.selectedValue?.split(','), true)\n }\n\n this.tomSelect.on('change', (value) => {\n this.selectedValue = value\n })\n\n if (!this.hasRelativeToValue) return\n\n const relativeTo = this.element.closest(this.relativeToValue)\n\n if (!relativeTo) throw new Error(`Could not find relativeTo element: ${this.relativeToValue}`)\n\n this.tomSelect.on('dropdown_open', (dropdown) => {\n const { top: relativeToTop, left: relativeToLeft } = relativeTo.getBoundingClientRect()\n const tsControl = this.tomSelect.control\n const {\n top: controlTop,\n left: controlLeft,\n width: controlWidth,\n height: controlHeight,\n } = tsControl.getBoundingClientRect()\n\n dropdown.style.width = `${controlWidth}px`\n\n dropdown.style.left = `${controlLeft - relativeToLeft}px`\n dropdown.style.top = `${controlTop - relativeToTop + controlHeight}px`\n })\n }\n\n disconnect() {\n this.tomSelect.destroy()\n }\n\n ///\n /// private\n ///\n get defaultOptions() {\n return {\n plugins: ['no_backspace_delete'],\n controlInput: null,\n maxItems: 1,\n selectOnTab: true,\n maxOptions: null,\n }\n }\n\n get extraOptionsMap() {\n return {\n 'tom-select-with-search': { search: true, create: true, createOnBlur: true },\n 'tom-select-with-search-no-create': { search: true, create: false, createOnBlur: false },\n 'tom-select-multi': { maxItems: null },\n 'tom-select-no-search': { search: false, render: { no_results: null } },\n }\n }\n\n get sharedOptions() {\n const selectedValue = this.selectedValue\n\n return {\n highlight: false,\n plugins: ['remove_button'],\n persist: false,\n selectOnTab: true,\n maxOptions: null,\n onInitialize() {\n this.wrapper.classList.remove('hidden')\n\n if (this.control.classList.contains('tom-select-multi')) return\n\n // We want other tomselects to be initialized before we set the value\n setTimeout(() => {\n this.addItem(selectedValue)\n }, 50)\n },\n }\n }\n\n get extraOptions() {\n if (this.element.classList.contains('tom-select-with-search')) {\n return this.extraOptionsMap['tom-select-with-search']\n } else if (this.element.classList.contains('tom-select-with-search-no-create')) {\n return this.extraOptionsMap['tom-select-with-search-no-create']\n } else if (this.element.classList.contains('tom-select-multi')) {\n return this.extraOptionsMap['tom-select-multi']\n } else if (this.element.classList.contains('tom-select-no-search')) {\n return this.extraOptionsMap['tom-select-no-search']\n }\n return this.defaultOptions\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n setTimeout(() => {\n $(this.element).tooltip({ html: true, delay: { show: 250, hide: 100 }, trigger: 'hover' })\n })\n }\n\n off() {\n $(this.element).tooltip('hide')\n $(this.element).tooltip('disable')\n }\n\n on() {\n $(this.element).tooltip('enable')\n }\n\n swapText({ params: { text } }) {\n $(this.element).attr('data-original-title', text).tooltip('fixTitle')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { useClickOutside } from 'stimulus-use'\n\nexport default class extends Controller {\n connect() {\n useClickOutside(this)\n }\n\n addHTTPS() {\n if (this.hasHTTP) return\n\n this.element.value = `https://${this.element.value}`\n }\n\n clickOutside() {\n if (!this.element.value) return\n\n this.addHTTPS()\n }\n\n ///\n /// private\n ///\n\n get hasHTTP() {\n return this.element.value.match(/^https?:\\/\\//) || this.element.value.match(/^http:\\/\\//)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Takes a frame, and replaces the src of the frame with the frame src or window source + a query param generated\n// by the attached input field.\nexport default class extends Controller {\n static values = { frame: String }\n\n change(e) {\n const input = e.target\n const frame = document.querySelector(`#${this.frameValue}`)\n\n let src = frame.src || window.location.href\n const url = new URL(src)\n\n let params = new URLSearchParams(url.search)\n params.set(input.id, input.value)\n\n frame.src = `${window.location.href}?${params.toString()}`\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['processPayment', 'processPaymentBtn']\n static values = { submitPayment: Boolean }\n\n connect() {\n this.form = this.element\n this.submitFooter = this.form.querySelector('.footer')\n\n if (!this.submitPaymentValue) {\n this.processPaymentBtnTarget.classList.add('hidden')\n }\n }\n\n submitPayment() {\n this.submitPaymentValue = true\n this.processPaymentBtnTarget.classList.remove('hidden')\n this.submitFooter.classList.add('hidden')\n }\n\n noPayment() {\n this.submitPaymentValue = false\n this.processPaymentBtnTarget.classList.add('hidden')\n this.submitFooter.classList.remove('hidden')\n }\n\n paymentProcessingComponent() {\n return this.application.getControllerForElementAndIdentifier(\n this.processPaymentTarget,\n 'payment-methods--component',\n )\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n fetch(this.element.dataset.src)\n .then((response) => response.blob())\n .then((imageBlob) => {\n const url = URL.createObjectURL(imageBlob)\n this.loadImage(url)\n })\n }\n\n // TODO: these should be targets instead of querySelectors\n loadImage(src) {\n this.element.querySelector('.loading').remove()\n\n this.element.querySelector('img').src = src\n }\n}\n", "export function setCookie(name, value, expires) {\n if (expires) {\n document.cookie = `${name}=${value}; expires=${expires.toUTCString()}`\n } else {\n document.cookie = `${name}=${value}; path=/`\n }\n}\n\nexport function getCookie(name) {\n const cookies = Object.fromEntries(\n document.cookie.split(/; /).map((c) => {\n const [key, v] = c.split('=', 2)\n return [key, decodeURIComponent(v)]\n }),\n )\n return cookies[name] || ''\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { getCookie, setCookie } from '../helpers/cookies'\n\nexport default class extends Controller {\n static targets = ['install', 'iosPrompt', 'androidPrompt', 'modal']\n\n connect() {\n window.addEventListener('beforeinstallprompt', this.initializePrompt.bind(this))\n\n if (!this.isAllowedToShowPrompt) {\n this.destroy()\n return\n }\n\n if (this.isAndroid) {\n this.destroyIosPrompt()\n }\n\n if (this.isIos) {\n this.destroyAndroidPrompt()\n }\n\n if (!this.shouldShowIosPrompt) return\n\n this.showIosPrompt()\n }\n\n disconnect() {\n window.removeEventListener('beforeinstallprompt', this.initializePrompt.bind(this))\n }\n\n dismissIosPrompt() {\n setCookie(this.cookieName, 'true', this.softExpirationDate)\n\n this.iosPromptTarget.classList.remove('open')\n this.destroy()\n }\n\n hideIosPrompt() {\n setCookie(this.cookieName, 'true', this.hardExpirationDate)\n\n this.iosPromptTarget.classList.remove('open')\n this.destroy()\n }\n\n dismissAndroidPrompt() {\n setCookie(this.cookieName, 'true', this.softExpirationDate)\n\n this.androidPromptTarget.classList.remove('open')\n this.destroy()\n }\n\n hideAndroidPrompt() {\n setCookie(this.cookieName, 'true', this.hardExpirationDate)\n\n this.androidPromptTarget.classList.remove('open')\n this.destroy()\n }\n\n showIosPrompt() {\n if (!this.hasIosPromptTarget) return\n\n this.iosPromptTarget.classList.add('open')\n if (this.isNotSafari) {\n this.iosPromptTarget.querySelector('#not-safari').classList.remove('hidden')\n } else {\n this.iosPromptTarget.querySelector('#safari').classList.remove('hidden')\n }\n }\n\n showAndroidPrompt() {\n if (!this.hasAndroidPromptTarget) return\n\n this.androidPromptTarget.classList.add('open')\n }\n\n destroyIosPrompt() {\n if (!this.hasIosPromptTarget) return\n\n this.iosPromptTarget.remove()\n }\n\n destroyAndroidPrompt() {\n if (!this.hasAndroidPromptTarget) return\n\n this.androidPromptTarget.remove()\n }\n\n async install() {\n if (this.deferredPrompt !== undefined) {\n this.deferredPrompt.prompt()\n\n const { outcome } = await this.deferredPrompt.userChoice\n\n if (outcome === 'accepted') {\n for (const target of this.installTargets) {\n target.classList.add('hidden')\n\n if (this.isAndroid) {\n $(this.modalTarget).modal('show')\n this.hideAndroidPrompt()\n }\n }\n }\n\n this.destroy()\n }\n }\n\n initializePrompt(event) {\n // Prevent Chrome 67 and earlier from automatically showing the prompt\n event.preventDefault()\n\n // Stash the event so it can be triggered later.\n this.deferredPrompt = event\n\n // Update UI notify the user they can add to home screen\n for (const target of this.installTargets) {\n target.classList.remove('hidden')\n }\n\n if (!this.isAllowedToShowPrompt) return\n\n if (this.isAndroid) {\n this.showAndroidPrompt()\n }\n }\n\n destroy() {\n if (this.hasAndroidPromptTarget) {\n this.waitForAnimations(this.androidPromptTarget).then(() => {\n this.androidPromptTarget.remove()\n })\n }\n\n if (this.hasIosPromptTarget) {\n this.waitForAnimations(this.iosPromptTarget).then(() => {\n this.iosPromptTarget.remove()\n })\n }\n }\n\n async waitForAnimations(element) {\n await Promise.all(element.getAnimations().map((animation) => animation.finished))\n }\n\n get isIos() {\n return /iphone|ipad|ipod/.test(this.userAgent.toLowerCase())\n }\n\n get isNotSafari() {\n return this.isIos && /CriOS|FxiOS/.test(this.userAgent)\n }\n\n get isAndroid() {\n return /android/.test(this.userAgent.toLowerCase())\n }\n\n get shouldShowIosPrompt() {\n return this.hasIosPromptTarget && this.isIos && !this.isStandalone\n }\n\n get softExpirationDate() {\n const expirationDays = 3\n const today = new Date()\n const expirationDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() + expirationDays)\n return expirationDate\n }\n\n get hardExpirationDate() {\n const expirationYears = 10\n const today = new Date()\n const expirationDate = new Date(today.getFullYear() + expirationYears, today.getMonth(), today.getDate())\n\n return expirationDate\n }\n\n get isAllowedToShowPrompt() {\n const cookie = getCookie(this.cookieName)\n return cookie !== 'true'\n }\n\n get cookieName() {\n return 'kicksite_SuppressPWAInstallPrompt'\n }\n\n get userAgent() {\n return window.navigator.userAgent\n }\n\n get isStandalone() {\n return 'standalone' in window.navigator && window.navigator.standalone\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { post } from '../helpers/fetch_helper'\n\nexport default class extends Controller {\n static values = { section: String, path: String }\n\n connect() {\n let user_agent = window.navigator.userAgent\n let mobile = window.navigator.standalone\n\n post('/beacon_transmissions', {\n beacon_transmission: {\n section: this.sectionValue,\n path: this.pathValue,\n user_agent,\n mobile,\n },\n })\n\n this.element.remove()\n }\n}\n", "export const HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport const defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: (err) => typeof console !== \"undefined\" && console.warn(err),\n getWeek: (givenDate) => {\n const date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n", "export const english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\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 longhand: [\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 daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: (nth) => {\n const s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n", "export const pad = (number, length = 2) => `000${number}`.slice(length * -1);\nexport const int = (bool) => (bool === true ? 1 : 0);\nexport function debounce(fn, wait) {\n let t;\n return function () {\n clearTimeout(t);\n t = setTimeout(() => fn.apply(this, arguments), wait);\n };\n}\nexport const arrayify = (obj) => obj instanceof Array ? obj : [obj];\n", "export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n const e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n const wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (const key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n const path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n", "import { int, pad } from \"../utils\";\nconst doNothing = () => undefined;\nexport const monthToStr = (monthNumber, shorthand, locale) => locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\nexport const revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n H: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n J: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n K: (dateObj, amPM, locale) => {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1000),\n W: function (dateObj, weekNum, locale) {\n const weekNumber = parseInt(weekNum);\n const date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: (dateObj, year) => {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: (_, ISODate) => new Date(ISODate),\n d: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n h: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n i: (dateObj, minutes) => {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),\n w: doNothing,\n y: (dateObj, year) => {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport const tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport const formats = {\n Z: (date) => date.toISOString(),\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: (date) => pad(date.getHours()),\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: (date, locale) => locale.amPM[int(date.getHours() > 11)],\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: (date) => pad(date.getSeconds()),\n U: (date) => date.getTime() / 1000,\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: (date) => pad(date.getFullYear(), 4),\n d: (date) => pad(date.getDate()),\n h: (date) => (date.getHours() % 12 ? date.getHours() % 12 : 12),\n i: (date) => pad(date.getMinutes()),\n j: (date) => date.getDate(),\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: (date) => pad(date.getMonth() + 1),\n n: (date) => date.getMonth() + 1,\n s: (date) => date.getSeconds(),\n u: (date) => date.getTime(),\n w: (date) => date.getDay(),\n y: (date) => String(date.getFullYear()).substring(2),\n};\n", "import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport const createDateFormatter = ({ config = defaults, l10n = english, isMobile = false, }) => (dateObj, frmt, overrideLocale) => {\n const locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map((c, i, arr) => formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\")\n .join(\"\");\n};\nexport const createDateParser = ({ config = defaults, l10n = english }) => (date, givenFormat, timeless, customLocale) => {\n if (date !== 0 && !date)\n return undefined;\n const locale = customLocale || l10n;\n let parsedDate;\n const dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n const format = givenFormat || (config || defaults).dateFormat;\n const datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr))\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n let matched, ops = [];\n for (let i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n const token = format[i];\n const isBackSlash = token === \"\\\\\";\n const escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n const match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n ops.forEach(({ fn, val }) => (parsedDate = fn(parsedDate, val, locale) || parsedDate));\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(`Invalid date provided: ${dateOrig}`));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n};\nexport function compareDates(date1, date2, timeless = true) {\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport const isBetween = (ts, ts1, ts2) => {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport const duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n let hours = config.defaultHour;\n let minutes = config.defaultMinute;\n let seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n const minHour = config.minDate.getHours();\n const minMinutes = config.minDate.getMinutes();\n const minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n const maxHr = config.maxDate.getHours();\n const maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours, minutes, seconds };\n}\n", "\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target, ...args) {\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n for (const source of args) {\n if (source) {\n Object.keys(source).forEach((key) => (target[key] = source[key]));\n }\n }\n return target;\n };\n}\n", "import { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nconst DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n const self = {\n config: Object.assign(Object.assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth(month = self.currentMonth, yr = self.currentYear) {\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n const config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n const daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n const defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n const defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n const prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n let hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n const limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n const limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n const maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n const minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n const date = dateObj || self.latestSelectedDateObj;\n if (date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n const eventTarget = getEventTarget(event);\n const year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach((ev) => bind(element, ev, handler, options));\n if (element instanceof Array)\n return element.forEach((el) => bind(el, event, handler, options));\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: () => element.removeEventListener(event, handler),\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach((evt) => {\n Array.prototype.forEach.call(self.element.querySelectorAll(`[data-${evt}]`), (el) => bind(el, \"click\", self[evt]));\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n const debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", (e) => {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n const selText = (e) => getEventTarget(e).select();\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", () => self.secondElement && self.secondElement.select());\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", (e) => {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n const jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n const oldYear = self.currentYear;\n const oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n const eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n const target = e && getEventTarget(e);\n const input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n const event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n const fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n const { weekWrapper, weekNumbers } = buildWeeks();\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n const customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n const wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n const dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n const startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n for (let m = startMonth; m != endMonth; m += delta) {\n const month = self.daysContainer.children[m];\n const startIndex = delta > 0 ? 0 : month.children.length - 1;\n const endIndex = delta > 0 ? month.children.length : -1;\n for (let i = startIndex; i != endIndex; i += delta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n const givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n const loopDelta = delta > 0 ? 1 : -1;\n for (let m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n const month = self.daysContainer.children[m];\n const startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n const numMonthDays = month.children.length;\n for (let i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n const dayFocused = isInView(document.activeElement || document.body);\n const startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n const firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n const prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n const daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n let dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n const dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n const frag = document.createDocumentFragment();\n for (let i = 0; i < self.config.showMonths; i++) {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n const shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (let i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n const month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n const container = createElement(\"div\", \"flatpickr-month\");\n const monthNavFragment = window.document.createDocumentFragment();\n let monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", (e) => {\n const target = getEventTarget(e);\n const selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n const yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n const yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n const currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container,\n yearElement,\n monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (let m = self.config.showMonths; m--;) {\n const month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: () => self.__hidePrevMonthArrow,\n set(bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: () => self.__hideNextMonthArrow,\n set(bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n const defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n const separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n const hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n const minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n const secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (let i = self.config.showMonths; i--;) {\n const container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n const firstDayOfWeek = self.l10n.firstDayOfWeek;\n let weekdays = [...self.l10n.weekdays.shorthand];\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = [\n ...weekdays.splice(firstDayOfWeek, weekdays.length),\n ...weekdays.splice(0, firstDayOfWeek),\n ];\n }\n for (let i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = `\n <span class='flatpickr-weekday'>\n ${weekdays.join(\"</span><span class='flatpickr-weekday'>\")}\n </span>\n `;\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n const weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n const weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper,\n weekNumbers,\n };\n }\n function changeMonth(value, isOffset = true) {\n const delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent = true, toInitial = true) {\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n const { hours, minutes, seconds } = getDefaultHours(self.config);\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (let i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n const wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach((k) => {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n const eventTarget = getEventTarget(e);\n const isCalendarElement = isCalendarElem(eventTarget);\n const isInput = eventTarget === self.input ||\n eventTarget === self.altInput ||\n self.element.contains(eventTarget) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n const lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n const isIgnored = !self.config.ignoredFocusElements.some((elem) => elem.contains(eventTarget));\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n const newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless = true) {\n var _a;\n const dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n const bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (let i = 0, d; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n const parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n const isInput = e.target === self._input;\n if (isInput &&\n (self.selectedDates.length > 0 || self._input.value.length > 0) &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n const eventTarget = getEventTarget(e);\n const isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n const allowInput = self.config.allowInput;\n const allowKeydown = self.isOpen && (!allowInput || !isInput);\n const allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n const isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n const delta = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta);\n else {\n e.stopPropagation();\n changeMonth(delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n const delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n const elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter((x) => x);\n const i = elems.indexOf(eventTarget);\n if (i !== -1) {\n const target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n const hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n let containsDisabled = false;\n let minRange = 0, maxRange = 0;\n for (let t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (let m = 0; m < self.config.showMonths; m++) {\n const month = self.daysContainer.children[m];\n for (let i = 0, l = month.children.length; i < l; i++) {\n const dayElem = month.children[i], date = dayElem.dateObj;\n const timestamp = date.getTime();\n const outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n continue;\n }\n else if (containsDisabled && !outOfRange)\n continue;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement = self._positionElement) {\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n const eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n const wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(() => self.hourElement.select(), 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return (date) => {\n const dateObj = (self.config[`_${type}Date`] = self.parseDate(date, self.config.dateFormat));\n const inverseDateObj = self.config[`_${type === \"min\" ? \"max\" : \"min\"}Date`];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter((d) => isEnabled(d));\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n const boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n const formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: () => self.config._enable,\n set: (dates) => {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: () => self.config._disable,\n set: (dates) => {\n self.config._disable = parseDateRules(dates);\n },\n });\n const timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n const defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n const defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + ` h:i${userConfig.enableSeconds ? \":S\" : \"\"} K`;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: () => self.config._minDate,\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: () => self.config._maxDate,\n set: minMaxDateSetter(\"max\"),\n });\n const minMaxTimeSetter = (type) => (val) => {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n };\n Object.defineProperty(self.config, \"minTime\", {\n get: () => self.config._minTime,\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: () => self.config._maxTime,\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (let i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter((hook) => self.config[hook] !== undefined).forEach((hook) => {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (let i = 0; i < self.config.plugins.length; i++) {\n const pluginConf = self.config.plugins[i](self) || {};\n for (const key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(`flatpickr: invalid locale ${self.config.locale}`));\n self.l10n = Object.assign(Object.assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = `(${self.l10n.amPM[0]}|${self.l10n.amPM[1]}|${self.l10n.amPM[0].toLowerCase()}|${self.l10n.amPM[1].toLowerCase()})`;\n const userConfig = Object.assign(Object.assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n const positionElement = customPositionElement || self._positionElement;\n const calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, ((acc, child) => acc + child.offsetHeight), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n const top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n let left = window.pageXOffset + inputBounds.left;\n let isCenter = false;\n let isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n const right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n const centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = `${top}px`;\n if (!rightMost) {\n self.calendarContainer.style.left = `${left}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = `${right}px`;\n }\n else {\n const doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n const bodyWidth = window.document.body.offsetWidth;\n const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n const centerBefore = \".flatpickr-calendar.centerMost:before\";\n const centerAfter = \".flatpickr-calendar.centerMost:after\";\n const centerIndex = doc.cssRules.length;\n const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);\n self.calendarContainer.style.left = `${centerLeft}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n let editableSheet = null;\n for (let i = 0; i < document.styleSheets.length; i++) {\n const sheet = document.styleSheets[i];\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n const isSelectable = (day) => day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n const t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n const target = t;\n const selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n const shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n const selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n const isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n const single = self.config.mode === \"single\" && !self.config.enableTime;\n const range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n const CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n clickOpens: [\n () => {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (const key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach((x) => x());\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach((x) => x());\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n let dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map((d) => self.parseDate(d, format));\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map((date) => self.parseDate(date, format));\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map((date) => self.parseDate(date, format));\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(inputDate)}`));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter((d) => d instanceof Date && isEnabled(d, false)));\n if (self.config.mode === \"range\")\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n function setDate(date, triggerChange = false, format = self.config.dateFormat) {\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map((rule) => {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter((x) => x);\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n const preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n const inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", (e) => {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n const hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (let i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n const e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (let i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach((yearElement, i) => {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map((dObj) => self.formatDate(dObj, format))\n .filter((d, i, arr) => self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i)\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange = true) {\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n const eventTarget = getEventTarget(e);\n const isPrevMonth = self.prevMonthNav.contains(eventTarget);\n const isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n const isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n const min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n let newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n const isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n const nodes = Array.prototype.slice\n .call(nodeList)\n .filter((x) => x instanceof HTMLElement);\n const instances = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: Object.assign({}, English),\n default: Object.assign({}, English),\n};\nflatpickr.localize = (l10n) => {\n flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = (config) => {\n flatpickr.defaultConfig = Object.assign(Object.assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n", "/*\nStimulus 3.0.0\nCopyright \u00A9 2021 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n }\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map;\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(eventListener => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(eventListener => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values())\n .reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map;\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions).sort().forEach(key => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n identifier: matches[5],\n methodName: matches[7]\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n constructor(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n static forToken(token) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content));\n }\n toString() {\n const eventNameSuffix = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventNameSuffix}->${this.identifier}#${this.methodName}`;\n }\n get params() {\n if (this.eventTarget instanceof Element) {\n return this.getParamsFromEventTargetAttributes(this.eventTarget);\n }\n else {\n return {};\n }\n }\n getParamsFromEventTargetAttributes(eventTarget) {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`);\n const attributes = Array.from(eventTarget.attributes);\n attributes.forEach(({ name, value }) => {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n Object.assign(params, { [camelize(key)]: typecast(value) });\n }\n });\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n}\nconst defaultEventNames = {\n \"a\": e => \"click\",\n \"button\": e => \"click\",\n \"form\": e => \"submit\",\n \"input\": e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n \"select\": e => \"change\",\n \"textarea\": e => \"input\"\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n const { params } = this.action;\n const actionEvent = Object.assign(event, { params });\n this.method.call(this.controller, actionEvent);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set;\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, childList: true, subtree: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(node, attributeName) {\n const element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map;\n this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map(attribute => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some(set => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([key, values]) => values.has(value))\n .map(([key, values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map;\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap;\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach(token => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach(token => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens)\n .findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(content => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap;\n this.valuesByTokenByElement = new WeakMap;\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map;\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map;\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n this.invokeChangedCallbacksForDefaultValues();\n }\n start() {\n this.stringMapObserver.start();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(key => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap;\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n this.delegate.targetConnected(element, name);\n }\n }\n disconnectTarget(element, name) {\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n this.delegate.targetDisconnected(element, name);\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n return values;\n }, new Set));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [\n ...Object.getOwnPropertyNames(object),\n ...Object.getOwnPropertySymbols(object)\n ];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () { this.a.call(this); };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b;\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap;\n this.connectedContexts = new Set;\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap;\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set;\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target\n || this.findTarget(targetName)\n || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName)\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n }\n findElement(selector) {\n return this.element.matches(selector)\n ? this.element\n : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...this.element.matches(selector) ? [this.element] : [],\n ...this.queryElements(selector).filter(this.containsElement)\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap;\n this.scopeReferenceCounts = new WeakMap;\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map;\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap;\n this.modulesByIdentifier = new Map;\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(context => context.element == element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(scope => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: identifier => `data-${identifier}-target`\n};\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n static start(element, schema) {\n const application = new Application(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n if (controllerConstructor.shouldLoad) {\n this.load({ identifier, controllerConstructor });\n }\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach(definition => this.router.loadDefinition(definition));\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map(context => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise(resolve => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n }\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n }\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n }\n }\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n }\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n }\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n }\n }\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair) {\n const definition = parseValueDefinitionPair(valueDefinitionPair);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n }\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition]) {\n return valueDescriptorForTokenAndTypeDefinition(token, typeDefinition);\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array: return \"array\";\n case Boolean: return \"boolean\";\n case Number: return \"number\";\n case Object: return \"object\";\n case String: return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\": return \"boolean\";\n case \"number\": return \"number\";\n case \"string\": return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(typeObject) {\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n if (typeFromObject) {\n const defaultValueType = parseValueTypeDefault(typeObject.default);\n if (typeFromObject !== defaultValueType) {\n throw new Error(`Type \"${typeFromObject}\" must match the type of the default value. Given default value: \"${typeObject.default}\" as \"${defaultValueType}\"`);\n }\n return typeFromObject;\n }\n}\nfunction parseValueTypeDefinition(typeDefinition) {\n const typeFromObject = parseValueTypeObject(typeDefinition);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n throw new Error(`Unknown value type \"${typeDefinition}\"`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const defaultValue = typeDefinition.default;\n if (defaultValue !== undefined)\n return defaultValue;\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(token, typeDefinition) {\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(typeDefinition);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() { return defaultValueForDefinition(typeDefinition); },\n get hasCustomDefaultValue() { return parseValueTypeDefault(typeDefinition) !== undefined; },\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\nconst defaultValuesByType = {\n get array() { return []; },\n boolean: false,\n number: 0,\n get object() { return {}; },\n string: \"\"\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(\"Expected array\");\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || value == \"false\");\n },\n number(value) {\n return Number(value);\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(\"Expected object\");\n }\n return object;\n },\n string(value) {\n return value;\n }\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "export const kebabCase = string =>\n string\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n\nexport const capitalize = string => {\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n", "const booleanOptions = [\n 'allowInput',\n 'altInput',\n 'animate',\n 'clickOpens',\n 'closeOnSelect',\n 'disableMobile',\n 'enableSeconds',\n 'enableTime',\n 'inline',\n 'noCalendar',\n 'shorthandCurrentMonth',\n 'static',\n 'time_24hr',\n 'weekNumbers',\n 'wrap'\n]\n\nconst stringOptions = [\n 'altInputClass',\n 'conjunction',\n 'mode',\n 'nextArrow',\n 'position',\n 'prevArrow',\n 'monthSelectorType'\n]\n\nconst numberOptions = [\n 'defaultHour',\n 'defaultMinute',\n 'defaultSeconds',\n 'hourIncrement',\n 'minuteIncrement',\n 'showMonths'\n]\n\nconst arrayOptions = ['disable', 'enable', 'disableDaysOfWeek', 'enableDaysOfWeek']\n\nconst arrayOrStringOptions = ['defaultDate']\n\nconst dateOptions = ['maxDate', 'minDate', 'maxTime', 'minTime', 'now']\n\nexport const dateFormats = ['altFormat', 'ariaDateFormat', 'dateFormat']\n\nexport const options = {\n string: stringOptions,\n boolean: booleanOptions,\n date: dateOptions,\n array: arrayOptions,\n number: numberOptions,\n arrayOrString: arrayOrStringOptions\n}\n", "export const events = ['change', 'open', 'close', 'monthChange', 'yearChange', 'ready', 'valueUpdate', 'dayCreate']\n", "export const elements = [\n 'calendarContainer',\n 'currentYearElement',\n 'days',\n 'daysContainer',\n 'input',\n 'nextMonthNav',\n 'monthNav',\n 'prevMonthNav',\n 'rContainer',\n 'selectedDateElem',\n 'todayDateElem',\n 'weekdayContainer'\n]\n", "export const mapping = {\n '%Y': 'Y',\n '%y': 'y',\n '%C': 'Y',\n '%m': 'm',\n '%-m': 'n',\n '%_m': 'n',\n '%B': 'F',\n '%^B': 'F',\n '%b': 'M',\n '%^b': 'M',\n '%h': 'M',\n '%^h': 'M',\n '%d': 'd',\n '%-d': 'j',\n '%e': 'j',\n '%H': 'H',\n '%k': 'H',\n '%I': 'h',\n '%l': 'h',\n '%-l': 'h',\n '%P': 'K',\n '%p': 'K',\n '%M': 'i',\n '%S': 'S',\n '%A': 'l',\n '%a': 'D',\n '%w': 'w'\n}\n\nconst strftimeRegex = new RegExp(\n Object.keys(mapping)\n .join('|')\n .replace(new RegExp('\\\\^', 'g'), '\\\\^'),\n 'g'\n)\n\nexport const convertDateFormat = (format) => {\n return format.replace(strftimeRegex, (match) => {\n return mapping[match]\n })\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport flatpickr from 'flatpickr'\nimport { kebabCase, capitalize } from './utils'\nimport { options, dateFormats } from './config_options'\nimport { events } from './events'\nimport { elements } from './elements'\nimport { convertDateFormat } from './strftime_mapping'\n\nclass StimulusFlatpickr extends Controller {\n static targets = ['instance']\n\n initialize() {\n this.config = {}\n }\n\n connect() {\n this._initializeEvents()\n this._initializeOptions()\n this._initializeDateFormats()\n\n this.fp = flatpickr(this.flatpickrElement, {\n ...this.config\n })\n\n this._initializeElements()\n }\n\n disconnect() {\n const value = this.inputTarget.value\n this.fp.destroy()\n this.inputTarget.value = value\n }\n\n _initializeEvents() {\n events.forEach((event) => {\n if (this[event]) {\n const hook = `on${capitalize(event)}`\n this.config[hook] = this[event].bind(this)\n }\n })\n }\n\n _initializeOptions() {\n Object.keys(options).forEach((optionType) => {\n const optionsCamelCase = options[optionType]\n optionsCamelCase.forEach((option) => {\n const optionKebab = kebabCase(option)\n if (this.data.has(optionKebab)) {\n this.config[option] = this[`_${optionType}`](optionKebab)\n }\n })\n })\n this._handleDaysOfWeek()\n }\n\n _handleDaysOfWeek() {\n if (this.config.disableDaysOfWeek) {\n this.config.disableDaysOfWeek = this._validateDaysOfWeek(this.config.disableDaysOfWeek)\n this.config.disable = [...(this.config.disable || []), this._disable.bind(this)]\n }\n\n if (this.config.enableDaysOfWeek) {\n this.config.enableDaysOfWeek = this._validateDaysOfWeek(this.config.enableDaysOfWeek)\n this.config.enable = [...(this.config.enable || []), this._enable.bind(this)]\n }\n }\n\n _validateDaysOfWeek(days) {\n if (Array.isArray(days)) {\n return days.map((day) => parseInt(day))\n } else {\n console.error('days of week must be a valid array')\n return []\n }\n }\n\n _disable(date) {\n const disabledDays = this.config.disableDaysOfWeek\n return disabledDays.includes(date.getDay())\n }\n\n _enable(date) {\n const enabledDays = this.config.enableDaysOfWeek\n return enabledDays.includes(date.getDay())\n }\n\n _initializeDateFormats() {\n dateFormats.forEach((dateFormat) => {\n if (this.data.has(dateFormat)) {\n this.config[dateFormat] = convertDateFormat(this.data.get(dateFormat))\n }\n })\n }\n\n _initializeElements() {\n elements.forEach((element) => {\n this[`${element}Target`] = this.fp[element]\n })\n }\n\n _string(option) {\n return this.data.get(option)\n }\n\n _date(option) {\n return this.data.get(option)\n }\n\n _boolean(option) {\n return !(this.data.get(option) == '0' || this.data.get(option) == 'false')\n }\n\n _array(option) {\n return JSON.parse(this.data.get(option))\n }\n\n _number(option) {\n return parseInt(this.data.get(option))\n }\n\n _arrayOrString(option) {\n const val = this.data.get(option)\n try {\n return JSON.parse(val)\n } catch (e) {\n return val\n }\n }\n\n get flatpickrElement() {\n return (this.hasInstanceTarget && this.instanceTarget) || this.element\n }\n}\n\nexport default StimulusFlatpickr\n", "import Flatpickr from 'stimulus-flatpickr'\nimport monthSelectPlugin from 'flatpickr/dist/plugins/monthSelect/index'\n\nexport default class extends Flatpickr {\n static values = { required: Boolean }\n\n connect() {\n if (this.element.dataset.flatpickrMode === 'month') {\n this.config = {\n plugins: [\n new monthSelectPlugin({\n shorthand: 'true',\n altFormat: 'F Y',\n }),\n ],\n }\n } else {\n this.config = {\n allowInput: this.requiredValue,\n }\n }\n\n super.connect()\n\n if (this.requiredValue) {\n this.inputTarget.nextElementSibling.onkeydown = () => false\n }\n }\n}\n", "/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n", "/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n const tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n", "import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;", "import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };", "import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };", "import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };", "import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };", "import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}", "import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}", "/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};", "export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}", "import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n}", "export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}", "export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}", "import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}", "export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}", "export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}", "export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}", "import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}", "import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};", "import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}", "export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}", "export default function minTranslate() {\n return -this.snapGrid[0];\n}", "export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}", "import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}", "import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};", "export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}", "export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}", "import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}", "import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}", "import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};", "import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}", "export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n return swiper.slideTo(swiper.slides.length - 1, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}", "import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}", "import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}", "export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}", "export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}", "import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};", "export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}", "export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}", "import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n swiper.emit('touchStart', e);\n}", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}", "import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}", "export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}", "export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}", "export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === -0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}", "import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};", "import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}", "import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}", "import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};", "function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}", "export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}", "import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}", "export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}", "import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};", "function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};", "export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};", "import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}", "/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;", "import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n\n swiper.updateProgress();\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n\n return;\n }\n\n const prependIndexes = [];\n const appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n\n appendIndexes.forEach(index => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach(index => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n\n update(true);\n }\n\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n\n function removeAllSlides() {\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}", "/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n if (!inView) return undefined;\n }\n\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n\n emit('keyPress', kc);\n return undefined;\n }\n\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}", "/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n } // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n }\n\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n\n return false;\n }\n\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n if (params.invert) delta = -delta; // Get the scroll positions\n\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}", "import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}", "import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\n}", "export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}", "import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy\n });\n}", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag'\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}", "import $ from '../../shared/dom.js';\nexport default function Parallax({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n parallax: {\n enabled: false\n }\n });\n\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const {\n $el,\n slides,\n progress,\n snapGrid\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const {\n $el\n } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n\n scale = value;\n }\n\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n } // Events\n\n\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\n isScaling = true;\n }\n\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n } // Define if we need image drag\n\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n } // Velocity\n\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n } // Toggle Zoom\n\n\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const {\n passiveListener\n } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n } // Attach/Detach Events\n\n\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n });\n swiper.lazy = {};\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(imageEl => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(sourceEl => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const {\n $wrapperEl,\n params: swiperParams,\n slides,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n let slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\n });\n}", "/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2\u2212x1) \u00D7 (y3\u2212y1)) \u00F7 (x3\u2212x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}", "import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group'\n }\n });\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n\n function addElId($el, id) {\n $el.attr('id', id);\n }\n\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each(bulletEl => {\n const $bulletEl = $(bulletEl);\n\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n }\n\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n function init() {\n const params = swiper.params.a11y;\n swiper.$el.append(liveRegion); // Container\n\n const $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live); // Slide\n\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n addElRole($(swiper.slides), params.slideRole);\n const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n }); // Navigation\n\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n }\n }\n\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n }\n }\n\n on('beforeInit', () => {\n liveRegion = $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`);\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n updateNavigation();\n });\n on('toEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('fromEdge', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}", "import { getWindow } from 'ssr-window';\nexport default function History({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides'\n }\n });\n let initialized = false;\n let paths = {};\n\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n\n const currentState = window.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n\n const destroy = () => {\n const window = getWindow();\n\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n swiper,\n extendParams,\n emit,\n on\n}) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n });\n\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n\n if (hash) {\n const speed = 0;\n\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}", "/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n swiper,\n extendParams,\n on,\n emit\n}) {\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}", "import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n if (!swiper.thumbs.swiper) return;\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n if (swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}", "import { now } from '../../shared/utils.js';\nexport default function freeMode({\n swiper,\n extendParams,\n emit,\n once\n}) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n\n function onTouchMove() {\n const {\n touchEventsData: data,\n touches\n } = swiper; // Velocity\n\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n\n function onTouchEnd({\n currentPos\n }) {\n const {\n params,\n $wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper; // Time diff\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchMove,\n onTouchEnd\n }\n });\n}", "export default function Grid({\n swiper,\n extendParams\n}) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup,\n spaceBetween\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid; // Set slides order\n\n let newSlideOrderIndex;\n let column;\n let row;\n\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n spaceBetween,\n centeredSlides,\n roundLengths\n } = swiper.params;\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n });\n\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}", "export default function appendSlide(slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n}", "export default function prependSlide(slides) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n let newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}", "export default function addSlide(index, slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n const baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}", "export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}", "export default function removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}", "import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n swiper\n}) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}", "export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n}", "export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}", "export default function effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides\n}) {\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}", "import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.css({\n opacity: slideOpacity\n }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}", "import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: `${swiperWidth}px`\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform);\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n };\n\n const setTransition = duration => {\n const {\n $el,\n slides\n } = swiper;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}", "import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`<div class=\"swiper-slide-shadow${side ? `-${side}` : ''}\"></div>`);\n $shadowContainer.append($shadowEl);\n }\n\n return $shadowEl;\n}", "import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}", "import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth; // Each slide offset from center\n\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}", "import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const {\n slides,\n $wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n } // set translate\n\n\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n }); // set rotates\n\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n if (custom && data.shadow || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({\n opacity: opacityString\n });\n\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}", "import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n activeIndex\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (i === activeIndex || i === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${rotate}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}", "/**\n * Swiper 7.4.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2021 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: December 24, 2021\n */\n\nimport Swiper from './core/core.js';\nexport { default as Swiper, default } from './core/core.js';\nimport Virtual from './modules/virtual/virtual.js';\nimport Keyboard from './modules/keyboard/keyboard.js';\nimport Mousewheel from './modules/mousewheel/mousewheel.js';\nimport Navigation from './modules/navigation/navigation.js';\nimport Pagination from './modules/pagination/pagination.js';\nimport Scrollbar from './modules/scrollbar/scrollbar.js';\nimport Parallax from './modules/parallax/parallax.js';\nimport Zoom from './modules/zoom/zoom.js';\nimport Lazy from './modules/lazy/lazy.js';\nimport Controller from './modules/controller/controller.js';\nimport A11y from './modules/a11y/a11y.js';\nimport History from './modules/history/history.js';\nimport HashNavigation from './modules/hash-navigation/hash-navigation.js';\nimport Autoplay from './modules/autoplay/autoplay.js';\nimport Thumbs from './modules/thumbs/thumbs.js';\nimport FreeMode from './modules/free-mode/free-mode.js';\nimport Grid from './modules/grid/grid.js';\nimport Manipulation from './modules/manipulation/manipulation.js';\nimport EffectFade from './modules/effect-fade/effect-fade.js';\nimport EffectCube from './modules/effect-cube/effect-cube.js';\nimport EffectFlip from './modules/effect-flip/effect-flip.js';\nimport EffectCoverflow from './modules/effect-coverflow/effect-coverflow.js';\nimport EffectCreative from './modules/effect-creative/effect-creative.js';\nimport EffectCards from './modules/effect-cards/effect-cards.js';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumbs, FreeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n", "var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nimport { Controller } from \"@hotwired/stimulus\";\nimport Swiper from \"swiper/bundle\";\nclass src_default extends Controller {\n connect() {\n this.swiper = new Swiper(this.element, __spreadValues(__spreadValues({}, this.defaultOptions), this.optionsValue));\n }\n disconnect() {\n this.swiper.destroy();\n this.swiper = void 0;\n }\n get defaultOptions() {\n return {};\n }\n}\nsrc_default.values = {\n options: Object\n};\nexport { src_default as default };\n", "import { Controller } from '@hotwired/stimulus'\nimport { useClickOutside } from 'stimulus-use'\n\nexport default class extends Controller {\n static targets = ['item', 'opener']\n static values = { ignore: String }\n static outlets = ['tooltip']\n\n connect() {\n document.addEventListener('turbo:before-render', this.clickOutside.bind(this))\n\n useClickOutside(this)\n }\n\n disconnect() {\n document.removeEventListener('turbo:before-render', this.clickOutside.bind(this))\n }\n\n toggle() {\n if (this.isOpen) {\n this.close()\n } else {\n this.open()\n }\n }\n\n open() {\n this.tooltipOutlets.forEach((tooltip) => {\n tooltip.off()\n })\n\n this.element.classList.remove('collapsed')\n this.openerTarget.classList.add('active')\n }\n\n close() {\n this.tooltipOutlets.forEach((tooltip) => {\n tooltip.on()\n })\n\n this.collapseExpandedItems(true)\n this.element.classList.add('collapsed')\n this.openerTarget.classList.remove('active')\n }\n\n clickOutside(event) {\n if (!this.isOpen) return\n\n if (this.hasIgnoreValue) {\n const ignoreElement = document.querySelector(this.ignoreValue)\n if (ignoreElement && (event.target === ignoreElement || ignoreElement.contains(event.target))) {\n return\n }\n }\n\n this.element.classList.add('collapsed')\n this.openerTarget.classList.remove('active')\n\n this.tooltipOutlets.forEach((tooltip) => {\n tooltip.on()\n })\n\n for (const item of this.notCollapsedItems) {\n item.classList.add('collapsed', 'in')\n\n setTimeout(() => {\n item.classList.remove('in')\n }, 10)\n }\n }\n\n expandCollapseItem(event) {\n let clickedItem = event.target.closest('li')\n\n if (clickedItem.classList.contains('collapsed')) {\n this.collapseExpandedItems()\n clickedItem.classList.remove('collapsed')\n } else {\n clickedItem.classList.add('collapsed')\n }\n }\n\n collapseExpandedItems(heckin_fast) {\n let classes = heckin_fast ? ['collapsed', 'in'] : ['collapsed']\n for (const item of this.notCollapsedItems) {\n item.classList.add(...classes)\n }\n }\n\n get notCollapsedItems() {\n return this.itemTargets.filter((item) => !item.classList.contains('collapsed'))\n }\n\n get isOpen() {\n return !this.element.classList.contains('collapsed')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['collapseElement', 'ignoreElement']\n\n beginToggle(event) {\n if (this.ignoreClick(event)) return\n\n this.collapseElementTarget.classList.remove('hidden')\n this.dispatch('going', { detail: { collapsed: this.element.classList.contains('collapsed') } })\n\n setTimeout(() => {\n this.element.classList.add('going')\n this.element.classList.toggle('collapsed')\n })\n }\n\n completeToggle() {\n this.element.classList.remove('going')\n\n this.dispatch('complete', { detail: { collapsed: this.element.classList.contains('collapsed') } })\n }\n\n open() {\n this.element.classList.remove('collapsed')\n }\n\n close() {\n this.element.classList.add('collapsed')\n }\n\n ignoreClick(event) {\n let ignore = false\n\n if (event.target.tagName === 'A' || event.target.tagName === 'BUTTON') ignore = true\n\n this.ignoreElementTargets.forEach((element) => {\n if (element === event.target || element === event.target.parentElement) ignore = true\n })\n\n return ignore\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n // these have to be jquery because bootstrap uses jquery events\n $(this.element).on('hide.bs.dropdown', this.hideAllSubmenus.bind(this))\n }\n\n disconnect() {\n $(this.element).off('hide.bs.dropdown', this.hideAllSubmenus.bind(this))\n }\n\n showSubmenu({ currentTarget, params: { submenuId } }) {\n this.hideAllSubmenus()\n\n const submenu = document.querySelector(`#${submenuId}`)\n\n submenu.classList.remove('hidden')\n submenu.classList.add('!block')\n submenu.setAttribute('data-open', '')\n\n const { top: itemTop, width: itemWidth } = currentTarget.getBoundingClientRect()\n const parentMenuTop = currentTarget.closest('.dropdown-menu').getBoundingClientRect().top\n const { height: toggleHeight } = this.element.getBoundingClientRect()\n\n submenu.style.left = `${itemWidth}px`\n submenu.style.top = `${toggleHeight + itemTop - parentMenuTop}px`\n }\n\n hideSubmenu({ params: { submenuId } }) {\n const submenu = document.querySelector(`#${submenuId}`)\n const mouseInSubmenu = submenu.matches(':hover')\n\n if (mouseInSubmenu) return\n\n submenu.classList.add('hidden')\n submenu.classList.remove('!block')\n submenu.removeAttribute('data-open')\n }\n\n hideAllSubmenus() {\n const submenus = this.element.querySelectorAll('.dropdown-submenu[data-open]')\n\n submenus.forEach((submenu) => {\n submenu.classList.add('hidden')\n submenu.classList.remove('!block')\n submenu.removeAttribute('data-open')\n })\n }\n\n stopPropagation(event) {\n event.stopPropagation()\n }\n}\n", "import { useClickOutside } from 'stimulus-use'\nimport ApplicationController from '../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n static targets = ['tray', 'dialog', 'close', 'open']\n\n connect() {\n useClickOutside(this, { element: this.dialogTarget, events: ['mousedown'] })\n\n this.positionDialog()\n }\n\n open() {\n this.dialogTarget.hidden = false\n this.dialogTarget.classList.add('block')\n this.trayTarget.classList.add('open')\n this.closeTarget.classList.remove('hidden')\n this.openTarget.classList.add('hidden')\n this.openTarget.parentElement.classList.add('z-[1004]')\n\n document.body.classList.add('overflow-hidden')\n }\n\n close() {\n if (!this.trayTarget.classList.contains('open')) return\n\n this.trayTarget.classList.remove('open')\n this.trayTarget.classList.add('going')\n document.body.classList.remove('overflow-hidden')\n\n this.trayTarget.addEventListener(\n 'transitionend',\n () => {\n this.trayTarget.classList.remove('going')\n this.dialogTarget.hidden = true\n },\n { once: true },\n )\n\n this.trayTarget.classList.remove('open')\n this.closeTarget.classList.add('hidden')\n this.openTarget.classList.remove('hidden')\n this.openTarget.parentElement.classList.remove('z-[1004]')\n }\n\n disconnect() {\n this.close()\n }\n\n ///\n /// private\n ///\n\n positionDialog() {\n const closeParent = this.closeTarget.parentElement\n const rect = closeParent.getBoundingClientRect()\n\n this.dialogTarget.style.top = `${rect.bottom}px`\n this.dialogTarget.style.maxHeight = `calc(100dvh - ${rect.bottom}px - 10%)`\n }\n\n clickOutside(event) {\n if (getComputedStyle(this.dialogTarget).visibility === 'hidden') return\n\n if (this.isUserback(event)) return\n\n if (this.isModal(event)) return\n\n const calendars = Array.from(document.querySelectorAll('.flatpickr-calendar'))\n const hasTarget = calendars.filter((calendar) => calendar.contains(event.target))\n\n if (hasTarget.length !== 0) return\n\n this.close()\n }\n\n isModal({ target }) {\n return target.closest('.modal')\n }\n\n isUserback({ target }) {\n if (target.tagName === 'UBDIV') return true\n\n const toolbar = target.closest('utoolbar')\n\n if (toolbar) return true\n\n const overlay = target.closest('.userback-overlay')\n\n if (overlay) return true\n\n return false\n }\n}\n", "/* eslint-disable no-undef */\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['autocomplete', 'id', 'street', 'city', 'state', 'zip', 'country', 'lat', 'lng']\n static values = { message: String }\n\n initialize() {\n // A bit unfortunate that we have to do this, but Google doesn't have an NPM version of the maps API\n // that is meant to run in the browser so we have to pull it from the global scope :(\n this.autocomplete = new google.maps.places.Autocomplete(this.autocompleteTarget, { types: ['address'] })\n this.autocomplete.addListener('place_changed', this.placeChanged.bind(this))\n }\n\n clearHiddenFields(event) {\n this.streetTarget.removeAttribute('value')\n this.cityTarget.removeAttribute('value')\n this.stateTarget.removeAttribute('value')\n this.zipTarget.removeAttribute('value')\n this.countryTarget.removeAttribute('value')\n this.latTarget.removeAttribute('value')\n this.lngTarget.removeAttribute('value')\n\n if (event.target.value === '') {\n this.autocompleteTarget.setCustomValidity('')\n } else if (this.autocompleteTarget.checkValidity()) {\n this.autocompleteTarget.setCustomValidity(this.messageValue)\n }\n\n this.dispatch('input')\n }\n\n ///\n /// private\n ///\n placeChanged() {\n const place = this.autocomplete.getPlace()\n if (place.geometry) {\n this.autocompleteTarget.value = place.formatted_address\n }\n\n const [street, city, state, zip, country] = this.parseComponent(place.address_components)\n\n this.streetTarget.value = street\n this.cityTarget.value = city\n this.stateTarget.value = state\n this.zipTarget.value = zip\n this.countryTarget.value = country\n this.latTarget.value = place.geometry.location.lat()\n this.lngTarget.value = place.geometry.location.lng()\n\n this.autocompleteTarget.setCustomValidity('')\n this.dispatch('input')\n this.zipTarget.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n // A function that takes a Google API Places address component array and returns an array of strings\n // for the street, city, state, zip, and country fields.\n parseComponent(components) {\n const street_number = components.find((component) => component.types.includes('street_number'))\n const route = components.find((component) => component.types.includes('route'))\n const city = components.find((component) => component.types.includes('locality'))\n const state = components.find((component) => component.types.includes('administrative_area_level_1'))\n const zip = components.find((component) => component.types.includes('postal_code'))\n const country = components.find((component) => component.types.includes('country'))\n\n return [\n street_number && route ? `${street_number.long_name} ${route.long_name}` : '',\n city ? city.long_name : '',\n state ? state.long_name : '',\n zip ? zip.long_name : '',\n country ? country.long_name : '',\n ]\n }\n\n get validInput() {\n return Boolean(this.latTarget.value) && Boolean(this.lngTarget.value)\n }\n\n get submitButton() {\n return this.element.closest('form').querySelector('input[type=\"submit\"]')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['input', 'form', 'image']\n\n edit() {\n this.inputTarget.click()\n }\n\n update() {\n const file = this.inputTarget.files[0]\n const url = URL.createObjectURL(file)\n\n this.imageTarget.src = url\n }\n\n submit() {\n this.formTarget.requestSubmit()\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [\n 'newCard',\n 'existingCard',\n 'existingCards',\n 'processPaymentBtn',\n 'processPaymentIcon',\n 'token',\n 'tokenizer',\n ]\n\n static values = { billingForm: String, formId: String }\n\n connect() {\n // If we have vaults, we want to default to not tokenize, since they'll be showing\n this.tokenize = !this.hasExistingCardsTarget\n this.originalProcessText = this.processPaymentBtnTarget.innerText\n }\n\n process() {\n this.disableBtn()\n\n this.billingProviderController.setPaymentToken(this.tokenize, this.tokenTarget).then((success) => {\n if (success) {\n this.parentForm.requestSubmit()\n } else {\n this.enableBtn()\n }\n })\n }\n\n disableBtn() {\n this.processPaymentBtnTarget.disabled = true\n\n let nodes = this.processPaymentBtnTarget.childNodes\n let textNode = [...nodes].find((child) => child.nodeType === Node.TEXT_NODE)\n textNode.data = this.processPaymentBtnTarget.dataset.disableWith\n\n this.processPaymentIconTarget.classList.remove('hidden')\n }\n\n enableBtn() {\n this.processPaymentBtnTarget.disabled = false\n\n let nodes = this.processPaymentBtnTarget.childNodes\n let textNode = [...nodes].find((child) => child.nodeType === Node.TEXT_NODE)\n textNode.data = this.originalProcessText\n\n this.processPaymentIconTarget.classList.add('hidden')\n }\n\n addNew() {\n this.tokenize = true\n this.transitionIn(this.newCardTarget)\n this.transitionOut(this.existingCardsTarget)\n }\n\n existingCards(e) {\n this.tokenize = false\n this.transitionIn(this.existingCardsTarget)\n\n if (this.existingCardTargets.length > 0) {\n let inputNode = this.existingCardTargets[0]\n inputNode.checked = true\n }\n\n this.transitionOut(this.newCardTarget)\n\n e.preventDefault()\n }\n\n //\n // private\n //\n transitionIn(target) {\n target.classList.add('in')\n target.classList.remove('out')\n }\n\n transitionOut(target) {\n target.classList.add('out')\n target.classList.remove('in')\n }\n\n get parentForm() {\n return document.querySelector(`#${this.formIdValue}`)\n }\n\n get billingProviderController() {\n let kebabBilling = this.billingFormValue\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase()\n let controller_name = `${kebabBilling}-form--component`\n return this.application.getControllerForElementAndIdentifier(this.tokenizerTarget, controller_name)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['token', 'tokenizer']\n static values = { provider: String, formId: String }\n\n connect() {\n this.billingProviderController.mountCard()\n }\n\n get parentForm() {\n return this.element.closest('form')\n }\n\n get billingProviderController() {\n let controllerName = this.providerValue\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase()\n return this.application.getControllerForElementAndIdentifier(this.parentForm, controllerName)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Pallette } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\n\nexport default class extends Controller {\n static values = { intent: String }\n\n saveCard(event) {\n event.target.disabled = true\n\n this.confirmSetupIntent().then((success) => {\n if (success) {\n let parentForm = document.querySelector(`#new-card`)\n parentForm.requestSubmit()\n } else {\n event.target.disabled = false\n }\n })\n }\n\n confirmSetupIntent() {\n let card = this.card\n let opts = {}\n let name = document.getElementById('stripe-cardholder-name')\n\n opts.payment_method = {\n card,\n billing_details: {\n name: name.value,\n },\n }\n\n return this.stripe.confirmCardSetup(this.intentValue, opts).then(function (result) {\n if (result.error) {\n var errorElement = document.getElementById('stripe-card-errors')\n errorElement.textContent = result.error.message\n return false\n }\n\n $('input#credit-card-token').val(result.setupIntent.payment_method)\n return true\n })\n }\n\n // eslint-disable-next-line no-unused-vars\n setPaymentToken(tokenize, _tokenTarget) {\n let card = this.card\n let opts = {}\n if (document.querySelector('.save-vault input') && document.querySelector('.save-vault input').checked) {\n opts.setup_future_usage = 'off_session'\n }\n\n if (tokenize) {\n opts.payment_method = { card }\n } else {\n let vault = document.querySelector('.vaults:checked').dataset.reference\n opts.payment_method = vault\n }\n\n return this.stripe.confirmCardPayment(this.intentValue, opts).then(function (result) {\n if (result.error) {\n const errorElement = document.getElementById('stripe-card-errors')\n errorElement.textContent = result.error.message\n return false\n }\n\n $('input#credit-card-token').val(result.paymentIntent.id)\n return true\n })\n }\n\n connect() {\n const STRIPE_PUBLIC_KEY = $('#stripe-account-token').data('public-key')\n const STRIPE_ACCOUNT_TOKEN = $('#stripe-account-token').data('account')\n\n // NOTE: This is dumb\n let secondaryColor = Pallette.black\n\n if ($('body.dark').length) {\n secondaryColor = Pallette.white\n }\n\n const invalidColor = Pallette.red\n\n // eslint-disable-next-line no-undef\n this.stripe = Stripe(STRIPE_PUBLIC_KEY, { stripeAccount: STRIPE_ACCOUNT_TOKEN })\n let elements = this.stripe.elements()\n this.card = elements.create('card', {\n iconStyle: 'solid',\n style: {\n base: {\n iconColor: secondaryColor,\n color: secondaryColor,\n lineHeight: '36px',\n fontFamily: '\"Hind Vadodara\", sans-serif',\n fontSize: '19px',\n textTransform: 'uppercase',\n\n '::placeholder': { color: '#aeaeab' },\n },\n invalid: {\n iconColor: invalidColor,\n color: invalidColor,\n },\n },\n })\n this.card.mount('#stripe-card-form')\n\n this.card.addEventListener('change', function (event) {\n const displayError = document.getElementById('stripe-card-errors')\n if (event.error) {\n displayError.textContent = event.error.message\n } else {\n displayError.textContent = ''\n }\n })\n\n document.querySelector('#stripe-card-form').addEventListener('clear:stripe', () => {\n this.card.clear()\n })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Pallette } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\nexport default class extends Controller {\n saveCard(event) {\n event.target.disabled = true\n\n this.setPaymentToken(true).then((success) => {\n if (success) {\n let parentForm = document.querySelector(`#new-card`)\n parentForm.requestSubmit()\n } else {\n event.target.disabled = false\n }\n })\n }\n\n // eslint-disable-next-line no-unused-vars\n setPaymentToken(tokenize, _tokenTarget) {\n if (!tokenize) return Promise.resolve(true)\n\n this.tokenizer.submission = (resp) => {\n this.element.dispatchEvent(new CustomEvent('tokenized', { detail: resp }))\n }\n\n this.tokenizer.submit()\n\n return new Promise((resolve) => {\n this.element.addEventListener('tokenized', function (result) {\n if (result.detail.status === 'success') {\n $('#credit-card-token').val(result.detail.token)\n resolve(true)\n } else if (result.detail.status === 'validation') {\n document.getElementById('basys-card-errors').innerHTML = 'Invalid card information'\n resolve(false)\n } else {\n $('#basys-card-errors').html(result.detail.msg)\n resolve(false)\n }\n })\n })\n }\n\n connect() {\n // NOTE: This is dumb\n let secondaryColor = Pallette.black\n\n if ($('body.dark').length) {\n secondaryColor = Pallette.white\n }\n\n const invalidColor = Pallette.red\n const basysPublicKey = $('#basys-account-token').data('public-key')\n\n // eslint-disable-next-line no-undef\n this.tokenizer = new Tokenizer({\n apikey: basysPublicKey,\n container: document.querySelector('#basys-card-form'),\n onLoad() {\n $('.basys-form-component .hidden').removeClass('hidden')\n $('#loading').addClass('hidden')\n },\n settings: {\n payment: { placeholderCreditCard: 'CARD NUMBER' },\n styles: {\n '.payment input': {\n border: `solid 2px ${Pallette.secondaryDark}`,\n 'border-radius': '5px',\n\n 'padding-top': '20px',\n 'padding-bottom': '20px',\n\n 'background-color': 'transparent',\n color: secondaryColor,\n 'line-height': '36px',\n 'font-family': '\"Hind Vadodara\", sans-serif',\n 'font-size': '19px',\n 'text-transform': 'uppercase',\n },\n\n '.payment .cc input': {\n 'padding-top': '20px',\n 'padding-bottom': '20px',\n },\n\n '.payment input.invalid': { border: `solid 2px ${invalidColor}` },\n },\n },\n })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Pallette } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\nexport default class extends Controller {\n static values = { publicToken: String }\n\n saveCard(event) {\n event.target.disabled = true\n\n this.setPaymentToken(true).then((success) => {\n if (success) {\n let parentForm = document.querySelector(`#new-card`)\n parentForm.requestSubmit()\n } else {\n event.target.disabled = false\n }\n })\n }\n\n // eslint-disable-next-line no-unused-vars\n setPaymentToken(tokenize, tokenTarget) {\n if (!tokenize) return Promise.resolve(true)\n\n return this.client\n .getPaymentKey(this.paymentCard)\n .then(function (result) {\n $('input#credit-card-token').val(result)\n return true\n })\n .catch(function () {\n return false\n })\n }\n\n connect() {\n var USA_EPAY_PUBLIC_TOKEN = this.publicTokenValue\n ? this.publicTokenValue\n : $('#usa-epay-public-token').data('public-token')\n\n if (USA_EPAY_PUBLIC_TOKEN === undefined) throw new Error('No public_token found.')\n\n // NOTE: This is dumb\n let secondaryColor = Pallette.black\n\n if ($('body.dark').length) {\n secondaryColor = Pallette.white\n }\n\n const invalidColor = Pallette.red\n\n // eslint-disable-next-line no-undef\n this.client = new usaepay.Client(USA_EPAY_PUBLIC_TOKEN)\n this.paymentCard = this.client.createPaymentCardEntry()\n var style = {\n base: {\n backgroundColor: 'transparent',\n color: secondaryColor,\n lineHeight: '36px',\n fontFamily: '\"Hind Vadodara\", sans-serif',\n fontSize: '19px',\n textTransform: 'uppercase',\n height: '36px',\n border: `solid 2px ${Pallette.secondaryDark} !important`,\n borderRadius: '5px !important',\n padding: '20px 10px !important',\n marginRight: '5px',\n },\n // eslint-disable-next-line max-len\n '{}\\n.payjs-input-icon { display: none; } @media (max-width: 767px) { #payjs-cnum { width: 100%; padding-left: 0; } #payjs-cvv { min-width: 3em; } #payjs-exp { min-width: 3.5em; } }':\n '',\n invalid: { color: invalidColor },\n }\n this.paymentCard.generateHTML(style)\n\n if ($('#usa-epay-card-form').html() === '') {\n this.paymentCard.addHTML('usa-epay-card-form')\n }\n\n this.paymentCard.addEventListener('error', function (errorMessage) {\n var errorContainer = document.getElementById('usa-epay-card-errors')\n errorContainer.textContent = errorMessage\n })\n\n document.querySelector('#usa-epay-card-form').addEventListener('clear:usaepay', () => {\n this.innerHTML = ''\n this.paymentCard.addHTML('usa-epay-card-form')\n })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['input', 'show', 'hide']\n\n showPassword() {\n this.inputTarget.type = 'text'\n this.showTarget.classList.add('hidden')\n this.hideTarget.classList.remove('hidden')\n }\n\n hidePassword() {\n this.inputTarget.type = 'password'\n this.showTarget.classList.remove('hidden')\n this.hideTarget.classList.add('hidden')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport intlTelInput from 'intl-tel-input'\n\nexport default class extends Controller {\n static values = { name: String }\n static targets = ['input']\n\n connect() {\n this.intlTelInput = intlTelInput(this.inputTarget, {\n utilsScript: '/assets/intl-tel-input/utils.js',\n formatOnDisplay: true,\n separateDialCode: true,\n hiddenInput: this.nameValue,\n initialCountry: document.body.dataset.countryCode || 'us',\n })\n }\n\n disconnect() {\n this.inputTarget.value = this.intlTelInput.getNumber()\n this.intlTelInput.destroy()\n }\n\n setHiddenInput() {\n this.inputTarget.nextElementSibling.value = this.intlTelInput.getNumber()\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { useClickOutside } from 'stimulus-use'\n\nexport default class extends Controller {\n static targets = ['real', 'fake']\n\n connect() {\n useClickOutside(this)\n }\n\n reveal() {\n this.fakeTarget.classList.toggle('hidden')\n this.realTarget.classList.toggle('hidden')\n }\n\n clickOutside() {\n this.fakeTarget.classList.remove('hidden')\n this.realTarget.classList.add('hidden')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = { percentage: Number }\n\n connect() {\n setTimeout(() => {\n this.element.style.setProperty('--value', this.percentageValue || 0)\n }, 200)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport TomSelect from 'tom-select'\n\nexport default class extends Controller {\n static values = {\n type: String,\n statuses: String,\n placeholder: String,\n polymorphic: Boolean,\n selectedType: { type: String, default: 'Person' },\n }\n\n initialize() {\n this.tomSelect = new TomSelect(this.element, {\n search: true,\n persist: false,\n highlight: false,\n addPrecedence: true,\n selectOnTab: true,\n valueField: 'id',\n labelField: 'text',\n searchField: 'text',\n placeholder: this.placeholderValue,\n load: this.load.bind(this),\n render: {\n item: this.renderItem.bind(this),\n option: this.renderOption,\n loading: this.renderLoading,\n },\n })\n }\n\n connect() {\n this.tomSelect.clearOptions()\n }\n\n updateType(pluralType) {\n if (pluralType === 'families') {\n this.type = 'Family'\n return\n }\n\n this.type = 'Person'\n }\n\n ///\n /// private\n ///\n set type(value) {\n // This is kind of stupid but like.. whatever\n this.selectedTypeValue = value\n this.element.nextElementSibling.nextElementSibling.value = value\n }\n\n load(query, callback) {\n const url = this.path(query)\n\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n callback(data.results)\n })\n .catch(() => callback())\n }\n\n // Doing this in the render call is supremely stupid but\n // the actual tom-select callbacks just.. like don't work?\n renderItem(item, escape) {\n if (this.polymorphicValue) {\n this.updateType(item.type)\n }\n\n return `<span class=\"flex gap-1 items-center\">\n <img src=\"${escape(item.image)}\" class=\"employee-image !w-4 !h-4\" />\n ${escape(item.text)}\n </span>`\n }\n\n renderOption(item, escape) {\n return `<span class=\"flex gap-2 items-center\">\n <img src=\"${escape(item.image)}\" class=\"employee-image !w-10 !h-10\" />\n ${escape(item.text)}\n </span>`\n }\n\n renderLoading() {\n return `<i class=\"fa-solid fa-spinner-third fa-spin fa-2x flex mx-auto\"></i>`\n }\n\n path(query) {\n const url = new URL(this.currentUrl)\n url.pathname = 'select_search'\n url.searchParams.set('format', 'json')\n url.searchParams.set('query', query)\n url.searchParams.set('types', this.typeValue)\n url.searchParams.set('statuses', this.statusesValue)\n\n return url.toString()\n }\n\n get currentUrl() {\n return `${window.location.protocol}//${window.location.host}`\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { setCookie } from '../../javascript/helpers/cookies'\n\n// TODO: Eventually dashboard modules should probably all use these?\nexport default class extends Controller {\n static values = { cookieName: String }\n\n connect() {\n this.element.addEventListener('collapse--component:complete', this.setPreference.bind(this))\n }\n\n disconnect() {\n this.element.removeEventListener('collapse--component:complete', this.setPreference)\n }\n\n ///\n /// private\n ///\n setPreference(event) {\n const expirationYears = 10\n const today = new Date()\n const expirationDate = new Date(today.getFullYear() + expirationYears, today.getMonth(), today.getDate())\n\n setCookie(this.cookieNameValue, !event.detail.collapsed, expirationDate)\n }\n}\n", "import { useClickOutside, useHotkeys } from 'stimulus-use'\nimport ApplicationController from '../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n static targets = ['dialog']\n static values = { turbo: Boolean, closable: { default: true, type: Boolean } }\n\n connect() {\n if (this.closableValue) {\n useClickOutside(this, { element: this.dialogTarget, events: ['mousedown'] })\n useHotkeys(this, { esc: [this.hide.bind(this)] })\n }\n\n // We have to wait for the modal to get rendered in the\n // DOM before we can actually show it\n if (this.turboValue) {\n window.FontAwesome?.dom?.i2svg()\n setTimeout(this.show.bind(this), this.delay)\n }\n }\n\n show() {\n this.hideAllTooltips()\n\n const currentWidth = document.body.offsetWidth\n\n this.element.classList.add('open')\n\n this.waitForAnimations(this.element, () => {\n this.focus(this.element.querySelector('[autofocus]'))\n })\n\n document.body.style.marginRight = `${document.body.offsetWidth - currentWidth}px`\n }\n\n confirm() {\n this.element.classList.remove('open', 'in')\n\n this.waitForAnimations(this.element, () => {\n this.element.dispatchEvent(new CustomEvent('modal:hidden', { detail: { finished: true } }))\n })\n }\n\n hide() {\n this.element.classList.remove('open', 'in')\n\n this.waitForAnimations(this.element, () => {\n this.element.dispatchEvent(new CustomEvent('modal:hidden', { detail: { finished: false } }))\n })\n\n document.body.style.marginRight = null\n }\n\n clickOutside(event) {\n // Otherwise this gets called for hidden modals like the confirm modal\n if (getComputedStyle(this.dialogTarget).visibility === 'hidden') return\n if (event.target.clientWidth < event.offsetX) return\n\n if (this.isUserback(event)) return\n if (event.target.closest('.pac-container')) return\n\n const calendars = Array.from(document.querySelectorAll('.flatpickr-calendar'))\n const hasTarget = calendars.filter((calendar) => calendar.contains(event.target))\n\n if (hasTarget.length === 0) {\n this.hide()\n }\n }\n\n ///\n /// private\n ///\n hideAllTooltips() {\n const tooltips = document.querySelectorAll('.tooltip')\n\n for (const tooltip of [...tooltips]) {\n tooltip.remove()\n }\n }\n\n isUserback({ target }) {\n if (target.tagName === 'UBDIV') return true\n\n const toolbar = target.closest('utoolbar')\n\n if (toolbar) return true\n\n const overlay = target.closest('.userback-overlay')\n\n if (overlay) return true\n\n return false\n }\n\n get delay() {\n return 100\n }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n static targets = ['dialog']\n\n connect() {\n this.submitCallback = this.submit.bind(this)\n this.modalHiddenCallback = this.delete.bind(this)\n this.renderCallback = this.render.bind(this)\n\n this.element.addEventListener('modal:hidden', this.modalHiddenCallback, true)\n\n document.addEventListener('turbo:before-frame-render', this.renderCallback, true)\n }\n\n disconnect() {\n this.element.removeEventListener('modal:hidden', this.modalHiddenCallback, true)\n document.removeEventListener('turbo:submit-end', this.submitCallback, true)\n document.removeEventListener('turbo:before-frame-render', this.renderCallback, true)\n }\n\n ///\n /// private\n ///\n addSubmitListener() {\n document.addEventListener('turbo:submit-end', this.submitCallback, true)\n }\n\n submit(event) {\n if (event.detail.success) {\n this.hide()\n }\n }\n\n render({ detail }) {\n const defaultRendering = detail.render\n\n detail.render = async (currentElement, newElement) => {\n if (!currentElement.matches('#modal')) {\n await defaultRendering(currentElement, newElement)\n return\n }\n\n const newDialogClasses = newElement.querySelector('.modal-dialog').classList\n const oldContent = currentElement.querySelector('.modal-content')\n const newContent = newElement.querySelector('.modal-content')\n\n this.dialogTarget.classList.remove(...this.dialogTarget.classList)\n this.dialogTarget.classList.add(...newDialogClasses)\n\n await defaultRendering(oldContent, newContent)\n\n window.FontAwesome?.dom?.i2svg()\n }\n }\n\n hide() {\n this.element.classList.remove('open', 'in')\n\n this.waitForAnimations(this.element, () => {\n this.element.dispatchEvent(new CustomEvent('modal:hidden', { detail: { finished: false } }))\n })\n\n document.body.style.marginRight = null\n }\n\n delete() {\n this.element.remove()\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n disconnect() {\n document.removeEventListener('turbo:submit-end', this.submitCallback, true)\n }\n\n hide() {\n this.element.classList.remove('open', 'in')\n\n Promise.all(this.element.getAnimations().map((animation) => animation.finished)).then(() => {\n document.dispatchEvent(new Event('modal:hidden'))\n })\n }\n\n submit(event) {\n if (event.detail.success) {\n this.hide()\n }\n }\n\n submitAndHide() {\n this.submitCallback = this.submit.bind(this)\n document.addEventListener('turbo:submit-end', this.submitCallback, true)\n }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n static targets = ['editable', 'display', 'hiddenInput', 'wrapper', 'counter', 'error']\n static values = { max: Number }\n\n connect() {\n this.editableText = this.hiddenText\n this.displayHTML = this.constructDisplayHTML(this.hiddenText)\n this.counterText = this.hiddenText.length\n\n if (this.isSingleLine) {\n this.updateScrollCallback = this.updateScroll.bind(this)\n this.addScrollSyncEvents()\n }\n }\n\n disconnect() {\n if (this.isSingleLine) {\n this.removeScrollSyncEvents()\n }\n }\n\n update() {\n const text = this.editableText\n\n this.hiddenText = text\n this.counterText = this.hiddenText.length\n this.displayHTML = this.constructDisplayHTML(text)\n\n if (this.isSingleLine) {\n this.displayTarget.scrollLeft = this.displayTarget.scrollWidth\n }\n\n this.validate(text)\n }\n\n clear() {\n this.editableText = ''\n this.update()\n }\n\n ///\n /// private\n ///\n validate(text) {\n if (this.hasErrorTarget) return\n\n if (this.maxValue < text.length) {\n this.makeInvalid()\n } else {\n this.makeValid()\n }\n }\n\n makeInvalid() {\n this.editableTarget.classList.add('!input-danger')\n this.wrapperTarget.classList.add('!text-danger-600')\n\n this.vibrate(50)\n }\n\n makeValid() {\n this.editableTarget.classList.remove('!input-danger')\n this.wrapperTarget.classList.remove('!text-danger-600')\n }\n\n constructDisplayHTML(text) {\n const unhighlighted = this.clean(text.substr(0, this.maxValue))\n const highlighted = `<span class='bg-danger-600/50'>${this.clean(text.substr(this.maxValue))}</span>`\n\n return `${unhighlighted}${highlighted}`\n }\n\n clean(text) {\n return text.replace(/</g, '<').replace(/>/g, '>').replace(/\\n/g, '<br>')\n }\n\n addScrollSyncEvents() {\n const events = ['blur', 'change', 'focus', 'input', 'keydown', 'keyup', 'scroll']\n\n for (const event of events) {\n this.editableTarget.addEventListener(event, this.updateScrollCallback, true)\n }\n }\n\n removeScrollSyncEvents() {\n const events = ['blur', 'change', 'focus', 'input', 'keydown', 'keyup', 'scroll']\n\n for (const event of events) {\n this.editableTarget.removeEventListener(event, this.updateScrollCallback, true)\n }\n }\n\n updateScroll() {\n requestAnimationFrame(() => {\n this.displayTarget.scrollLeft = this.editableTarget.scrollLeft\n })\n }\n\n get isSingleLine() {\n return this.editableTarget.tagName === 'INPUT'\n }\n\n get editableText() {\n if (this.isSingleLine) return this.editableTarget.value\n\n return this.editableTarget.innerText\n }\n\n set editableText(text) {\n if (this.isSingleLine) {\n this.editableTarget.value = text\n } else {\n this.editableTarget.innerText = text\n }\n }\n\n get hiddenText() {\n return this.hiddenInputTarget.value\n }\n\n set hiddenText(text) {\n this.hiddenInputTarget.value = text\n }\n\n set counterText(text) {\n this.counterTarget.innerText = text\n }\n\n set displayHTML(text) {\n this.displayTarget.innerHTML = text\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['hiddenText', 'cta', 'ellipsis', 'overflowEllipsis']\n static values = { expand: String, collapse: String }\n\n connect() {\n this.hidden = true\n }\n\n toggleFullDisplay(e) {\n e.preventDefault()\n\n this.hidden = !this.hidden\n if (this.hidden) {\n this.ctaText = this.expandValue\n } else {\n this.ctaText = this.collapseValue\n }\n }\n\n ///\n /// private\n ///\n get hidden() {\n return this.hiddenTextTarget.hidden\n }\n\n set hidden(hidden) {\n this.hiddenTextTarget.hidden = hidden\n\n if (this.hasOverflowEllipsisTarget) {\n this.overflowEllipsisTarget.hidden = hidden\n }\n\n this.ellipsisTarget.hidden = !hidden\n }\n\n set ctaText(text) {\n this.ctaTarget.innerHTML = text\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\nexport default class extends Controller {\n static targets = ['categoryFilter']\n static values = {\n frame: String,\n selectedFilters: Object,\n path: String,\n }\n\n initialize() {\n this.initializeSelectedFilters()\n }\n\n handleCheck(e) {\n if (e.target.checked) {\n this.addToFilters(e.params)\n } else {\n this.removeFromFilters(e.params)\n }\n }\n\n filter() {\n const url = this.hasPathValue ? new URL(this.pathValue) : new URL(window.location)\n\n if (Object.keys(this.selectedFiltersValue).length) {\n let searchParams = new URLSearchParams(this.selectedFiltersValue).toString()\n url.search = searchParams\n }\n\n if (this.hasFrameValue) {\n const frame = document.querySelector(`#${this.frameValue}`)\n frame.src = url\n } else {\n Turbo.cache.clear()\n Turbo.visit(url)\n }\n }\n\n clear() {\n const url = `${window.location.pathname}`\n\n Turbo.cache.clear()\n Turbo.visit(url)\n }\n\n ///\n /// private\n ///\n initializeSelectedFilters() {\n for (let i = 0; i < this.checkedCategoryTargets.length; i++) {\n let dataset = this.checkedCategoryTargets[i].dataset\n this.addToFilters({\n category: dataset['filter-ComponentCategoryParam'],\n value: dataset['filter-ComponentValueParam'],\n })\n }\n }\n\n addToFilters(params) {\n let currentSelectedFilters = this.selectedFiltersValue\n if (params.category in currentSelectedFilters) {\n currentSelectedFilters[params.category].push(params.value.toString())\n } else {\n currentSelectedFilters[params.category] = [params.value.toString()]\n }\n\n this.selectedFiltersValue = currentSelectedFilters\n }\n\n removeFromFilters(params) {\n let currentSelectedFilters = this.selectedFiltersValue\n let category = currentSelectedFilters[params.category]\n category = category.filter((item) => item !== params.value.toString())\n if (category.length === 0) {\n delete currentSelectedFilters[params.category]\n } else {\n currentSelectedFilters[params.category] = category\n }\n\n this.selectedFiltersValue = currentSelectedFilters\n }\n\n get checkedCategoryTargets() {\n return this.categoryFilterTargets.filter((target) => target.checked)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['container', 'slide']\n\n left() {\n const tip = this.slideTarget\n const width = tip.clientWidth\n this.containerTarget.scrollLeft -= width\n }\n\n right() {\n const tip = this.slideTarget\n const width = tip.clientWidth\n this.containerTarget.scrollLeft += width\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n selectClassEvent(event) {\n let calendarEvent = this.findCalEventFromTarget(event.target)\n this.setSelectedClassAttributes(calendarEvent.dataset)\n\n for (const item of document.querySelectorAll('.calendar-event')) {\n item.classList.remove('selected')\n }\n calendarEvent.classList.add('selected')\n }\n\n //\n // private\n //\n // TODO: This just does the same thing as event.currentTarget so it should get removed\n findCalEventFromTarget(target) {\n // depending on if the user clicks the time or the space around it\n if (target.hasAttribute('data-name')) {\n return target\n }\n\n return target.closest('.calendar-event')\n }\n\n // TODO: These should proabably be handled by targets rather than id selectors\n setSelectedClassAttributes(dataset) {\n document.querySelector('#selected-class-name').textContent = dataset.name\n document.querySelector('#selected-class-date').textContent = dataset.date\n document.querySelector('#selected-class-time').textContent = dataset.time\n\n if (dataset.description) {\n document.querySelector('#selected-class-desc').textContent = dataset.description\n }\n\n if (dataset.instructor) {\n document.querySelector('#selected-class-instructor').textContent = dataset.instructor\n } else {\n document.querySelector('#selected-class-instructor').textContent = ''\n }\n\n document.querySelector('#scheduler_params_selected_class_object_type').value = dataset.type\n document.querySelector('#scheduler_params_selected_class_object_id').value = dataset.id\n document.querySelector('#scheduler_params_selected_class_date').value = dataset.date\n\n $('.add-new button.btn.btn-primary').removeAttr('disabled')\n $('.add-new button.btn.btn-primary').removeClass('hidden')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { initializeTooltips } from '../../../../vendor/assets/javascripts/voltage'\nimport {\n initializeStudentAttendanceLog,\n initializeStudentStatusDropdowns,\n initializeStudentRestore,\n} from '../../../assets/javascripts/school/students'\nimport { initializeSelectAllCheckboxes } from '../../../assets/javascripts/forms'\n\n// TODO: Remove this when the student list is un-bad-ified\nexport default class extends Controller {\n connect() {\n initializeTooltips($(this.element))\n initializeStudentStatusDropdowns($(this.element))\n initializeStudentAttendanceLog($(this.element))\n initializeSelectAllCheckboxes($(\"input.select-all-item[type='checkbox']\"), true)\n initializeStudentRestore($('.student-restore'))\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['location']\n\n connect() {\n if (this.scrollOffset > 0) {\n this.element.scrollTo({ top: this.scrollOffset })\n }\n }\n\n get top() {\n return this.element.getBoundingClientRect().top\n }\n\n get distances() {\n return this.locationTargets.map((locationTarget) => locationTarget.getBoundingClientRect().top - this.top)\n }\n\n get scrollOffset() {\n return Math.min(...this.distances) - 10\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['input']\n static values = { on: String, off: String }\n\n toggle() {\n this.inputTarget.value = this.inputTarget.value === this.onValue ? this.offValue : this.onValue\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['frame']\n static values = { on: String, off: String, id: String }\n\n toggle(event) {\n Promise.all(event.target.getAnimations().map((animation) => animation.finished)).then(() => {\n this.frame.src = this.isOn ? this.offValue : this.onValue\n })\n }\n\n ///\n /// private\n ///\n get isOn() {\n return !this.frame.src || this.frame.src.includes(this.onValue)\n }\n\n get frame() {\n if (this.hasFrameTarget) {\n return this.frameTarget\n }\n\n if (this.hasIdValue) {\n return document.querySelector(`#${this.idValue}`)\n }\n\n return this.element\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['input']\n\n copy() {\n const isHidden = this.inputTarget.classList.contains('hidden')\n\n if (isHidden) {\n this.inputTarget.classList.remove('hidden')\n }\n\n let textValue = ''\n if (this.inputTarget.tagName === 'INPUT' || this.inputTarget.tagName === 'TEXTAREA') {\n this.inputTarget.select()\n textValue = this.inputTarget.value\n } else {\n textValue = this.inputTarget.innerText.trim()\n }\n\n // NOTE: This doesn't work without HTTPS, the other method is deprecated\n navigator.clipboard.writeText(textValue)\n\n if (isHidden) {\n this.inputTarget.classList.add('hidden')\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Eventually this should be replaced with purely turbo\n// but since the Student Profile modules use tables, we can't put\n// turbo frames in them, so we have to click view more a lot of times\nexport default class extends Controller {\n static targets = ['more', 'infinity', 'spinner']\n\n viewAll(event) {\n this.spinnerTarget.classList.remove('hidden')\n event.target.disabled = true\n\n this.fetchMore()\n\n this.keepDisabled = true\n this.shouldViewAll = true\n }\n\n moreTargetConnected(element) {\n if (this.keepDisabled) {\n element.disabled = true\n }\n\n this.requestSent = false\n }\n\n scroll() {\n if (!this.shouldViewAll) return\n\n const bottom =\n this.infinityTarget.scrollHeight - Math.abs(this.infinityTarget.scrollTop) >=\n this.infinityTarget.offsetHeight - 500\n\n if (bottom && this.hasMoreTarget && !this.requestSent) {\n this.requestSent = true\n this.fetchMore()\n }\n\n if (bottom && !this.hasMoreTarget) {\n this.spinnerTarget.classList.add('hidden')\n this.shouldViewAll = false\n }\n }\n\n ///\n /// private\n ///\n\n fetchMore() {\n this.moreTarget.disabled = false\n\n this.moreTarget.click()\n\n this.moreTarget.disabled = true\n }\n\n get keepDisabled() {\n return this._keepDisabled\n }\n\n set keepDisabled(_keepDisabled) {\n this._keepDisabled = _keepDisabled\n }\n\n get shouldViewAll() {\n return this._shouldViewAll\n }\n\n set shouldViewAll(_shouldViewAll) {\n this._shouldViewAll = _shouldViewAll\n }\n\n get requestSent() {\n return this._requestSent\n }\n\n set requestSent(_requestSent) {\n this._requestSent = _requestSent\n }\n}\n", "/* eslint-env jquery */\n\n/* global initializeDropdownTabs */\n/* global initializeTooltips */\n/* global initializeAdditionalInfoModalContent */\n/* global findCheckedCheckBoxes */\n/* global initializeSelectAllCheckboxes */\n/* global Turbo */\n\n/* eslint no-use-before-define: 0 */\n\nfunction transitionPersonIntoDisabledState() {\n 'use strict'\n\n var checkedCheckBoxes = findCheckedCheckBoxes()\n\n var bulkCheckbox = $('input#select-all')\n if (bulkCheckbox.is(':checked')) {\n bulkCheckbox.hide()\n bulkCheckbox.prop('checked', false)\n bulkCheckbox.parent().prepend('<div class=\"spinner spinner-grow\" />')\n }\n checkedCheckBoxes.parent().html('<div class=\"spinner spinner-grow\" />')\n}\n\nfunction findCheckedPersonIds(checkedCheckBoxes) {\n 'use strict'\n\n var personIds = []\n\n checkedCheckBoxes.each(function () {\n let personId = this.dataset.personId\n personIds.push(personId)\n })\n\n return personIds\n}\n\nfunction handleAdditionalInfoNeededUpdateProspectResponse(container, path, button, data) {\n 'use strict'\n\n $('#update-prospect-modal').html(data.responseText)\n initializeAdditionalInfoModalContent()\n $('#update-prospect-modal').modal('show')\n $('#update-prospect-modal').on('hidden.bs.modal', function () {\n $('#update-prospect-modal').unbind()\n })\n $('#update-prospect-modal')\n .find('form')\n .on('ajax:complete', function (e) {\n if (e.originalEvent.detail[0].status === 200) {\n updateProspectLeadState(container, path, button)\n } else {\n $('#global-alerts').append(e.originalEvent.detail[0].responseText)\n }\n\n $('#update-prospect-modal').modal('hide')\n })\n}\n\nfunction handleUpdateProspectLeadStateResponse(container, path, button, data) {\n 'use strict'\n\n if (data.status === 200) {\n if ($(container).length > 0) {\n container.fadeOut('fast', function () {\n $('#update-prospect-modal').unbind()\n $('#update-prospect-modal').modal('hide')\n\n container.html(data.responseText)\n initializeTooltips(container)\n initializeDropdownTabs($(this))\n initializeProspectLeadStateDropdowns(container)\n initializeSelectAllCheckboxes(container.find(\"input.select-all-item[type='checkbox']\"), false)\n initializeAssignedToFields(container)\n initializeProspectNoting($(this))\n container.fadeIn('fast')\n })\n } else {\n $('#update-prospect-modal').unbind()\n $('#update-prospect-modal').modal('hide')\n Turbo.visit(window.location.toString(), { action: 'replace' })\n }\n } else if (data.status === 400) {\n handleAdditionalInfoNeededUpdateProspectResponse(container, path, button, data)\n } else if (data.status === 401) {\n $('#global-alerts').append(data.responseText)\n return false\n } else if (data.status === 404) {\n $('#global-alerts').append(data.responseText)\n return false\n } else {\n $('#global-alerts').append(data.responseText)\n return false\n }\n\n return true\n}\n\nfunction updateProspectLeadState(container, path, button) {\n 'use strict'\n\n button.attr('disabled', true)\n\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n $.ajax({\n type: 'PUT',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(data) {\n return handleUpdateProspectLeadStateResponse(container, path, button, data)\n },\n })\n}\n\nexport function initializeProspectLeadStateDropdowns(parent) {\n 'use strict'\n\n $(parent)\n .find('.status-modifier .dropdown-tabs-menu li a')\n .on('voltage:dropdown-tabs:selected', function () {\n const $this = $(this)\n const $target = $this.closest('.prospect-wrapper')\n const path = $this.data('path')\n if (!path) return\n\n const $parentButton = $this.closest('.dropdown-tabs').find('button')\n\n return updateProspectLeadState($target, path, $parentButton)\n })\n}\n\nexport function initializeAssignedToFields(parent) {\n 'use strict'\n\n $(parent)\n .find('.employee-image.employee-blank, .employee-image.employee-edit')\n .on('click', function () {\n var $this = $(this)\n var path = $this.data('path')\n $('#update-prospect-modal').html('<div class=\"spinner spinner-grow center\" />')\n $('#update-prospect-modal').modal('show')\n $('#update-prospect-modal').on('hidden.bs.modal', function () {\n $('#update-prospect-modal').unbind()\n })\n $.ajax({\n type: 'GET',\n url: path,\n complete(data) {\n $('#update-prospect-modal').html(data.responseText)\n initializeAdditionalInfoModalContent()\n $('#update-prospect-modal')\n .find('form')\n .on('ajax:complete', function (e) {\n if (e.originalEvent.detail[0].status !== 200) {\n $('#global-alerts').append(e.originalEvent.detail[0].responseText)\n }\n\n $('#update-prospect-modal').modal('hide')\n })\n },\n })\n\n return false\n })\n}\n\nexport function initializeProspectNoting(parent) {\n 'use strict'\n\n $(parent)\n .find('.prospect-note')\n .on('click', function () {\n var $this = $(this)\n var path = $this.data('path')\n $('#update-prospect-modal').html('<div class=\"spinner spinner-grow center\" />')\n $('#update-prospect-modal').modal('show')\n $('#update-prospect-modal').on('hidden.bs.modal', function () {\n $('#update-prospect-modal').unbind()\n })\n $.ajax({\n type: 'GET',\n url: path,\n complete(data) {\n $('#update-prospect-modal').html(data.responseText)\n initializeAdditionalInfoModalContent()\n $('#update-prospect-modal')\n .find('form')\n .on('ajax:complete', function (e) {\n if (e.originalEvent.detail[0].status !== 200) {\n $('#global-alerts').append(e.originalEvent.detail[0].responseText)\n }\n\n $('#update-prospect-modal').modal('hide')\n })\n },\n })\n\n return false\n })\n\n handleTruncatedProspectNotes()\n\n $(window).resize(function () {\n handleTruncatedProspectNotes()\n })\n}\n\n// Makes the dynamic \"Read More\" logic on a Prospect Note work\nfunction handleTruncatedProspectNotes() {\n 'use strict'\n\n var ps = document.querySelectorAll('.prospect-note p')\n ps.forEach(function (p) {\n // Note :: Without the -1, this logic will not work for FireFox v.68\n // For whatever reason, the FF browser is always off-by-one.\n p.classList[p.scrollHeight - 1 > p.offsetHeight ? 'add' : 'remove']('truncated')\n })\n}\n\nfunction initializeProspectDelete(element) {\n 'use strict'\n\n $(element).on('click', function (e) {\n e.preventDefault()\n var path = element.data('path')\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n $.ajax({\n type: 'DELETE',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(data) {\n if (data.status === 400) {\n $('#update-prospect-modal').html('<div class=\"spinner spinner-grow center\" />')\n $('#update-prospect-modal').modal('show')\n $('#update-prospect-modal').on('hidden.bs.modal', function () {\n $('#update-prospect-modal').unbind()\n })\n $('#update-prospect-modal').html(data.responseText)\n return false\n }\n $('#global-alerts').append(data.responseText)\n return false\n },\n })\n return true\n })\n}\n\nfunction initializeBulkEdit(element) {\n $(element).on('click', function () {\n var bulkAction = $(this).data('bulk-action')\n var path = $(this).data('path')\n var checkedCheckBoxes = findCheckedCheckBoxes()\n var selectedPersonIds = findCheckedPersonIds(checkedCheckBoxes)\n\n transitionPersonIntoDisabledState()\n $.ajax({\n type: 'POST',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', $(\"meta[name='csrf-token']\").attr('content'))\n },\n data: {\n personIds: selectedPersonIds,\n bulkAction,\n },\n complete(data) {\n if (data.status !== 200) $('#global-alerts').append(data.responseText)\n\n return false\n },\n })\n })\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n let checkBoxes = document.querySelectorAll(\"input.select-all-item[type='checkbox']\")\n initializeSelectAllCheckboxes($(checkBoxes), true)\n let bulkActions = document.querySelectorAll('.execute-bulk-action')\n initializeBulkEdit(bulkActions)\n\n $('#prospects').on('turbo:frame-render', function () {\n checkBoxes = document.querySelectorAll(\"input.select-all-item[type='checkbox']\")\n initializeSelectAllCheckboxes($(checkBoxes), true)\n bulkActions = document.querySelectorAll('.execute-bulk-action')\n initializeBulkEdit(bulkActions)\n })\n\n initializeProspectLeadStateDropdowns($('#prospect-profile.panel.left-sidebar'))\n initializeProspectDelete($('#prospect-delete'))\n initializeProspectDelete($('#prospect-delete-also'))\n})\n", "import { Controller } from '@hotwired/stimulus'\nimport { initializeTooltips, initializeDropdownTabs } from '../../../../vendor/assets/javascripts/voltage'\nimport { initializeSelectAllCheckboxes } from '../../../assets/javascripts/forms'\nimport {\n initializeProspectLeadStateDropdowns,\n initializeProspectNoting,\n initializeAssignedToFields,\n} from '../../../assets/javascripts/school/prospects'\n\nexport default class extends Controller {\n connect() {\n initializeTooltips($(this.element))\n initializeDropdownTabs($(this.element))\n initializeProspectLeadStateDropdowns($(this.element))\n initializeAssignedToFields($(this.element))\n initializeProspectNoting($(this.element))\n initializeSelectAllCheckboxes($(\"input.select-all-item[type='checkbox']\"), true)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['fieldset', 'body', 'clearableSelect']\n\n add() {\n const newFieldset = this.fieldset.cloneNode(true)\n const newInputs = newFieldset.querySelectorAll('input')\n const newSelects = newFieldset.querySelectorAll('select')\n\n for (const input of [...newInputs, ...newSelects]) {\n input.name = input.name.replace(/\\d+/, this.number)\n\n if (input.getAttribute('data-duplicate-fieldset-ignore') !== null) continue\n\n // This might not work in 100% of cases, but for the most part it should, but it clears errors and adjust labels\n this.adjustFor(input)\n this.removeError(input)\n this.resetValue(input)\n\n if (input.getAttribute('data-duplicate-fieldset-default') !== null) {\n input.value = input.dataset.duplicateFieldsetDefault\n }\n }\n\n this.cleanSelects(newFieldset)\n this.bodyTarget.appendChild(newFieldset)\n\n for (const select of this.clearableSelectTargets) {\n select.lastChild.remove()\n }\n }\n\n ///\n /// private\n ///\n\n adjustFor(input) {\n const id = input.getAttribute('id')\n if (!id) return\n\n // This ensuredly just doesn't work for ToggleComponents, but we'll cross that bridge when we get there\n const label = input.closest('label')\n\n if (!label) return\n\n const { newId } = this\n\n label.setAttribute('for', newId)\n input.id = newId\n }\n\n removeError(input) {\n const nextSibling = input.nextElementSibling\n if (nextSibling?.classList?.contains('text-danger-600') && input.classList.contains('input-danger')) {\n nextSibling.remove()\n }\n input.classList.remove('input-danger')\n }\n\n // This surely will need more logic to handle more complex cases, but I can't think of any right now\n resetValue(input) {\n const type = input.type\n\n if (type === 'checkbox' && (input.name.includes('_destroy') || input.dataset.clearable)) {\n input.checked = false\n } else {\n input.value = ''\n }\n\n if (input.getAttribute('data-duplicate-fieldset-disabled') === null) {\n input.classList.remove('disabled')\n input.removeAttribute('readonly')\n }\n }\n\n cleanSelects(newFieldset) {\n const wrappers = newFieldset.querySelectorAll('.ts-wrapper')\n for (const wrapper of wrappers) {\n wrapper.remove()\n }\n const selects = newFieldset.querySelectorAll('select')\n for (const select of selects) {\n select.classList.remove('tomselected', 'ts-hidden-accessible')\n }\n }\n\n get fieldset() {\n // Grabs the last one in case ordering matters\n return this.fieldsetTargets[this.fieldsetTargets.length - 1]\n }\n\n get number() {\n return this.fieldsetTargets.length\n }\n\n get newId() {\n return Math.random().toString(16).substring(2, 12)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = {\n sortType: { type: String, default: 'Number' },\n sortDirection: { type: String, default: 'desc' },\n }\n\n connect() {\n this.sortChildren()\n }\n\n ///\n /// private\n ///\n\n sortChildren() {\n if (this.childrenSorted) return\n\n this.children.sort(this.compare.bind(this)).forEach((child) => this.element.appendChild(child))\n }\n\n compare(left, right) {\n const leftCode = this.parse(left.getAttribute('data-sort-code')) || 0\n const rightCode = this.parse(right.getAttribute('data-sort-code')) || 0\n\n if (leftCode < rightCode) return this.sortDirectionValue === 'asc' ? -1 : 1\n if (leftCode > rightCode) return this.sortDirectionValue === 'asc' ? 1 : -1\n return 0\n }\n\n parse(value) {\n if (this.sortTypeValue === 'Number') return parseFloat(value)\n if (this.sortTypeValue === 'String') return value\n }\n\n get children() {\n return Array.from(this.element.children)\n }\n\n get childrenSorted() {\n let [left, ...rights] = this.children\n\n for (const right of rights) {\n if (this.compare(left, right) > 0) return false\n\n left = right\n }\n return true\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { enableApplyToPreviewButton } from '../../assets/javascripts/school/bizbuilders'\n\nexport default class extends Controller {\n connect() {\n $('.trumbo-editor')\n .trumbowyg({\n btns: [\n ['undo', 'redo'],\n ['formatting'],\n ['strong', 'em', 'del'],\n ['foreColor', 'backColor'],\n ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull'],\n ['unorderedList', 'orderedList'],\n ['horizontalRule'],\n ['indent', 'outdent'],\n ['removeformat'],\n ['link', 'upload'],\n ],\n plugins: {\n upload: {\n serverPath: '/files.js',\n headers: {\n 'X-CSRF-Token': $(\"meta[name='csrf-token']\").attr('content'),\n 'X-Requested-With': 'XMLHttpRequest',\n },\n fileFieldName: 'file',\n urlPropertyName: 'url',\n },\n },\n svgPath: this.element.dataset.iconsPath,\n removeformatPasted: true,\n })\n .on('tbwchange', function () {\n if ($('#landing-page-form .apply-btn').length) enableApplyToPreviewButton()\n })\n }\n\n disconnect() {\n $('.trumbo-editor').trumbowyg('destroy')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n submit() {\n this.element.requestSubmit()\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = {\n title: String,\n newTitle: String,\n style: String,\n newStyle: String,\n delay: Number,\n immediate: Boolean,\n }\n\n connect() {\n if (this.immediateValue) {\n this.transition()\n }\n }\n\n transition() {\n this.style = this.newStyleValue\n this.title = this.newTitleValue\n\n setTimeout(() => {\n this.style = this.styleValue\n this.title = this.titleValue\n }, this.delayValue)\n }\n\n ///\n /// private\n ///\n\n set style(_style) {\n if (!this.hasNewStyleValue) return\n\n this.element.classList.remove(this.styleValue)\n this.element.classList.remove(this.newStyleValue)\n this.element.classList.add(_style)\n }\n\n set title(_title) {\n if (!this.hasNewTitleValue) return\n\n this.element.innerText = _title\n }\n}\n", "import AutoSortController from '../../javascript/controllers/auto_sort_controller'\nimport { useMutation } from 'stimulus-use'\n\nexport default class extends AutoSortController {\n static values = { scroll: Boolean }\n\n initialize() {\n useMutation(this, { childList: true })\n }\n\n mutate(entries) {\n this.sortChildren()\n\n if (this.scrollValue) {\n const mutation = entries[0]\n const addedNodes = Array.from(mutation.addedNodes)\n\n if (addedNodes.length > 0) {\n addedNodes[0].scrollIntoView({ behavior: 'smooth' })\n }\n }\n }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\nimport { useMutation } from 'stimulus-use'\n\nexport default class extends ApplicationController {\n static targets = ['display', 'hiddenInput']\n static values = { code: String, max: Number, exponent: Number }\n\n VALID_KEYS = ['Backspace', 'Enter', 'Tab', '0', 'ArrowLeft', 'ArrowRight']\n\n connect() {\n this.displayValue = this.hiddenValue || '0'\n this.update(false)\n\n useMutation(this, { element: this.hiddenInputTarget, attributes: true, attributeFilter: ['value'] })\n }\n\n denyInvalidKeys(event) {\n if (this.validKey(event.key)) return\n\n event.preventDefault()\n }\n\n mutate() {\n this.displayValue = this.constructDisplayValue(this.hiddenValue)\n }\n\n focus(event) {\n setTimeout(() => {\n const input = event.target\n input.selectionStart = input.value.length\n input.selectionEnd = input.value.length\n input.focus()\n }, 0)\n }\n\n update(dispatch = true) {\n this.hiddenValue = parseInt(this.displayValue.match(/\\d+/g)?.join('')) || 0\n this.capHiddenValue()\n this.displayValue = this.constructDisplayValue(this.hiddenValue)\n\n if (dispatch) this.dispatch('change')\n }\n\n maxValueChanged() {\n this.capHiddenValue()\n this.displayValue = this.constructDisplayValue(this.hiddenValue)\n }\n\n ///\n /// private\n ///\n validKey(key) {\n return this.VALID_KEYS.includes(key) || !isNaN(key)\n }\n\n capHiddenValue() {\n if (this.hiddenValue > this.maxValue) {\n this.hiddenValue = this.maxValue\n this.vibrate(100)\n }\n }\n\n constructDisplayValue(text) {\n if (text === '') return ''\n\n const options = {\n minimumFractionDigits: this.exponentValue,\n maximumFractionDigits: this.exponentValue,\n }\n const result = new Intl.NumberFormat(this.codeValue, options).format(parseFloat(text) * this.subunitMultiplier)\n\n return result\n }\n\n get subunitMultiplier() {\n return 10 ** -this.exponentValue\n }\n\n get hiddenValue() {\n return this.hiddenInputTarget.value\n }\n\n set hiddenValue(text) {\n this.hiddenInputTarget.value = text\n }\n\n get displayValue() {\n return this.displayTarget.value\n }\n\n set displayValue(text) {\n this.displayTarget.value = text\n this.displayTarget.size = text.length || 1\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['input']\n static values = { digits: Number }\n\n VALID_KEYS = ['Backspace', 'Enter', 'Tab', '0', 'ArrowLeft', 'ArrowRight']\n\n connect() {\n this.update()\n }\n\n denyInvalidKeys(event) {\n if (this.validKey(event.key)) return\n\n event.preventDefault()\n }\n\n update() {\n // Takes xx.yyy -> xxyyy\n const withoutDecimal = parseInt(this.value.match(/\\d+/g)?.join('')) || 0\n this.value = this.constructDisplayValue(withoutDecimal)\n }\n\n ///\n /// private\n ///\n validKey(key) {\n return this.VALID_KEYS.includes(key) || !isNaN(key)\n }\n\n constructDisplayValue(text) {\n if (text === '') return ''\n\n // Takes xxyyy -> xx.yyy\n const result = (parseFloat(text) / 10 ** this.digitsValue).toFixed(this.digitsValue)\n\n if (parseFloat(result) >= 100) return (100.0).toFixed(this.digitsValue)\n\n return result\n }\n\n get value() {\n return this.inputTarget.value\n }\n\n set value(text) {\n this.inputTarget.value = text\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = { min: Number, max: Number }\n\n deny(event) {\n if (event.key !== '.') return\n\n event.preventDefault()\n }\n\n clamp() {\n const value = this.element.value\n if (value === '') return\n\n if (this.hasMaxValue && value > this.maxValue) {\n this.element.value = this.maxValue\n }\n\n if (value !== this.element.value) {\n this.element.dispatchEvent(new Event('change'))\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['input', 'requiredField']\n\n // Need to trigger this upon connecting or else it causes weird behavior\n connect() {\n this.change()\n }\n\n change() {\n if (this.inputTarget.checked) {\n this.requiredFieldTarget.required = true\n } else {\n this.requiredFieldTarget.required = false\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['selectContainer', 'hiddenContainer', 'hiddenField', 'required']\n static values = {\n show: { type: String, default: '-1' },\n }\n\n connect() {\n if (this.hasSelectContainerTarget) this.change()\n }\n\n change() {\n if (this.selectContainerTarget.value === this.showValue) {\n this.hiddenContainerTarget.classList.remove('hidden')\n if (this.hasRequiredTarget) {\n this.requiredTarget.required = true\n }\n } else {\n this.hiddenContainerTarget.classList.add('hidden')\n if (this.hasRequiredTarget) {\n this.requiredTarget.required = false\n }\n }\n }\n}\n", "function isEven(num) {\n return num % 2 === 0\n}\n\nexport function roundHalfEven(num) {\n const strNm = num.toString()\n const decimalIndex = strNm.indexOf('.')\n\n if (decimalIndex === -1) {\n return num\n }\n\n const [integer, decimal] = strNm.split('.').map((i) => parseInt(i))\n\n if (decimal !== 5) {\n return Math.round(num)\n }\n\n if (isEven(integer)) {\n return integer\n }\n\n return integer + 1\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { roundHalfEven } from '../helpers/rounding_helper'\n\nexport default class extends Controller {\n static targets = [\n 'quantity',\n 'description',\n 'amountCents',\n 'amountCentsHidden',\n 'amount',\n 'taxRate',\n 'taxTotal',\n 'paymentReasonId',\n 'itemId',\n 'itemType',\n 'inventoryItemId',\n 'itemName',\n 'uncategorizedId',\n ]\n\n static values = {\n admin: { type: Boolean, default: false },\n defaultTaxRate: { type: String, default: '0' },\n }\n\n useTax = true\n\n connect() {\n this.updateAmount()\n }\n\n // when an inventory item is selected\n populate({ target }) {\n const option = target.options[target.selectedIndex]\n\n if (!option.dataset.id && !option.value) {\n this.resetValues()\n\n return\n }\n\n if (!option.dataset.id) {\n this.populateWithoutId(option)\n\n return\n }\n\n if (option.dataset.paymentReasonId) {\n this.populatePaymentReason(option)\n }\n\n if (option.dataset.amountCents) {\n this.populateAmountCents(option)\n }\n\n this.disableFields()\n }\n\n disableFields() {\n const paymentReasonSelect = this.paymentReasonIdTarget.nextSibling.querySelector('.ts-control')\n paymentReasonSelect.classList.add('disabled')\n paymentReasonSelect.setAttribute('tabindex', '-1')\n this.paymentReasonIdTarget.nextSibling.classList.add('cursor-not-allowed')\n this.paymentReasonIdTarget.nextSibling.classList.remove('cursor-pointer')\n if (!this.adminValue) this.amountCentsTarget.setAttribute('readonly', 'true')\n if (!this.adminValue) this.amountCentsTarget.setAttribute('tabindex', '-1')\n if (!this.adminValue) this.amountCentsTarget.classList.add('disabled')\n }\n\n enableFields() {\n const paymentReasonSelect = this.paymentReasonIdTarget.nextSibling.querySelector('.ts-control')\n this.paymentReasonIdTarget.tomselect.clear()\n this.paymentReasonIdTarget.tomselect.load('')\n this.paymentReasonIdTarget.tomselect.setValue(this.uncategorizedIdTarget.value)\n paymentReasonSelect.removeAttribute('tabindex')\n paymentReasonSelect.classList.remove('disabled')\n this.paymentReasonIdTarget.nextSibling.classList.add('cursor-pointer')\n this.paymentReasonIdTarget.nextSibling.classList.remove('cursor-not-allowed')\n this.amountCentsTarget.removeAttribute('readonly')\n this.amountCentsTarget.removeAttribute('tabindex')\n this.amountCentsTarget.classList.remove('disabled')\n this.resetValues()\n }\n\n resetValues() {\n this.amountCentsHiddenTarget.value = 0\n this.taxRateTarget.value = 0\n this.amountTarget.value = 0\n this.taxTotalTarget.value = 0\n this.taxTotalTarget.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n // when the price(amountCentsHidden) or quantity has changed update the amount\n updateAmount() {\n const quantity = this.quantityTarget.value\n const price = this.amountCentsHiddenTarget.value\n const amountField = quantity * parseFloat(price)\n this.amountTarget.value = amountField\n\n if (this.useTax) {\n const option = this.descriptionTarget.options[this.descriptionTarget.selectedIndex]\n let taxRate = 0\n if (option.dataset.id) {\n taxRate = option.dataset.taxRate\n this.calculateTax(taxRate)\n this.taxRateTarget.value = taxRate\n } else {\n taxRate = parseFloat(this.defaultTaxRateValue)\n this.taxRateTarget.value = taxRate\n this.calculateTax(taxRate)\n }\n } else {\n this.taxRateTarget.value = 0\n this.taxTotalTarget.value = 0\n }\n\n this.amountTarget.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n toggleTax() {\n this.useTax = !this.useTax\n }\n\n ///\n /// private\n ///\n calculateTax(taxRate) {\n this.taxTotalTarget.value = roundHalfEven((taxRate / 100) * this.amountTarget.value, 0)\n }\n\n populateWithoutId(option) {\n if (this.hasItemNameTarget) {\n this.itemNameTarget.value = option.value\n }\n\n this.enableFields()\n }\n\n populatePaymentReason(option) {\n let control = this.paymentReasonIdTarget.tomselect\n control.addOption({ value: option.dataset.paymentReasonId })\n control.addItem(option.dataset.paymentReasonId)\n }\n\n populateAmountCents(option) {\n this.amountCentsHiddenTarget.value = option.dataset.amountCents\n\n if (this.hasItemIdTarget) {\n this.itemIdTarget.value = option.dataset.id\n this.itemTypeTarget.value = 'InventoryItem'\n }\n if (this.hasInventoryItemIdTarget) {\n this.inventoryItemIdTarget.value = option.dataset.id\n }\n\n this.itemNameTarget.value = option.dataset.name\n this.taxRateTarget.value = option.dataset.taxRate\n this.updateAmount()\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['amount', 'taxTotal', 'subtotal', 'salesTax', 'grandTotal']\n static outlets = ['line-item-calculate']\n\n useTax = true\n\n lineItemCalculateOutletConnected(outlet) {\n outlet.useTax = this.useTax\n }\n\n calculate() {\n if (this.amountTargets.length === 0) return\n\n this.subtotalTarget.value = this.subtotal\n this.salesTaxTarget.value = this.salesTax\n this.grandTotalTarget.value = this.grandTotal\n }\n\n toggleTax() {\n this.useTax = !this.useTax\n\n for (const outlet of this.lineItemCalculateOutlets) {\n outlet.toggleTax()\n outlet.updateAmount()\n }\n\n this.calculate()\n }\n\n get subtotal() {\n const value = this.amountTargets\n .filter((target) => !target.closest('.form-fields').querySelector('.swap-checkbox')?.checked)\n .map((target) => parseFloat(target.value) || 0)\n .reduce((accumulator, currentValue) => accumulator + currentValue, 0)\n\n return Math.round(value)\n }\n\n get salesTax() {\n if (!this.useTax) return 0\n\n const value = this.taxTotalTargets\n .filter((target) => !target.closest('.form-fields').querySelector('.swap-checkbox')?.checked)\n .map((target) => parseFloat(target.value) || 0)\n .reduce((accumulator, currentValue) => accumulator + currentValue, 0)\n\n return Math.round(value)\n }\n\n get grandTotal() {\n return Math.round(this.subtotal + this.salesTax)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['issueDate', 'terms', 'dueDate', 'termsSpecified']\n\n calculate() {\n const theDate = new Date(this.issueDateTarget.value.replaceAll('-', '/'))\n theDate.setDate(theDate.getDate() + this.terms)\n\n const dueDate = theDate.toLocaleDateString(undefined, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })\n this.dueDateTarget.value = dueDate\n }\n\n get terms() {\n const index = this.termsTarget.options.selectedIndex\n let termsOffset = parseInt(this.termsTarget.options[index].value)\n\n // -1 if a Custom Term was selected\n if (termsOffset === -1) {\n termsOffset = parseInt(this.termsSpecifiedTarget.value) || 0\n }\n\n if (termsOffset < 1) {\n return termsOffset\n }\n return termsOffset - 1\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['due', 'hiddenValue']\n static values = { total: Number }\n\n updateChangeDue() {\n if (this.totalValue < this.hiddenValueTarget.value) {\n this.dueTarget.value = this.hiddenValueTarget.value - this.totalValue\n } else {\n this.dueTarget.value = 0\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { getStream } from '../helpers/fetch_helper'\n\nexport default class extends Controller {\n static values = { streamUrl: String, params: String }\n\n fetchStream({ target }) {\n if (target.tagName === 'SELECT') {\n getStream(this.constructUrl(target.selectedOptions[0].value))\n return\n }\n\n getStream(this.constructUrl(target.value))\n }\n\n ///\n /// private\n ///\n constructUrl(value) {\n const base = `${this.streamUrlValue}/${value}`\n\n if (this.hasParamsValue) {\n return `${base}?${this.paramsValue}`\n }\n\n return base\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['sourceType', 'source']\n static values = { provider: String, submitBtnId: String, purpose: String }\n\n connect() {\n this.submitCallback = this.submit.bind(this)\n\n this.bindSubmit()\n }\n\n bindSubmit() {\n this.element.addEventListener('submit', this.submitCallback, true)\n }\n\n unbindSubmit() {\n this.element.removeEventListener('submit', this.submitCallback, true)\n }\n\n // eslint-disable-next-line complexity\n submit(event) {\n this.disableSubmit()\n if (\n this.sourceIsManual ||\n this.sourceIsCheck ||\n this.sourceIsAch ||\n this.weHaveAToken ||\n this.weHaveAVaultAndWeAreNotStripe ||\n this.weAreStripeAndHaveConfirmedSetupIntent ||\n this.weAreAStripeVaultThatHasBeenProcessed\n ) {\n return true\n }\n\n event.preventDefault()\n // This is pretty gross but Stripe is the only one that doesn't require actually making a payment to\n // save the card\n if (this.weAreStripe) {\n this.handleStripeSubmit(event)\n } else {\n this.handleNonStripeSubmit()\n }\n }\n\n //\n // PRIVATE\n //\n\n handleStripeSubmit(event) {\n if (this.purposeValue === 'pay') {\n this.setPaymentToken(this.sourceIsToken, this.sourceElement)\n } else {\n this.billingProviderController.saveCard(event, this.sourceElement)\n }\n }\n\n handleNonStripeSubmit() {\n this.setPaymentToken(this.sourceIsToken, this.sourceElement)\n }\n\n setPaymentToken(sourceIsToken, sourceElement) {\n this.billingProviderController.setPaymentToken(sourceIsToken, sourceElement).then((success) => {\n if (success) {\n this.element.requestSubmit()\n } else {\n // eslint-disable-next-line no-console\n console.log('tokenizer: tokenization failed')\n this.enableSubmit()\n }\n })\n }\n\n //\n // private\n //\n\n disableSubmit() {\n this.submitButton.disabled = true\n }\n\n enableSubmit() {\n this.submitButton.disabled = false\n }\n\n get sourceElement() {\n if (this.sourceTypeTarget.value === 'token') {\n return this.sourceTarget\n }\n return this.sourceTargets.filter((i) => i.checked)[0]\n }\n\n get submitButton() {\n return document.querySelector(`[form=\"${this.element.id}\"]`)\n }\n\n get billingProviderController() {\n let controllerName = this.providerValue\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase()\n return this.application.getControllerForElementAndIdentifier(this.element, controllerName)\n }\n\n get sourceIsManual() {\n return this.sourceTypeTarget.value === 'manual'\n }\n\n get sourceIsCheck() {\n return this.sourceTypeTarget.value === 'check'\n }\n\n get sourceIsAch() {\n return this.sourceTypeTarget.value === 'ach'\n }\n\n get sourceIsVault() {\n return this.sourceTypeTarget.value === 'vault'\n }\n\n get sourceIsToken() {\n return this.sourceTypeTarget.value === 'token'\n }\n\n get weHaveAToken() {\n return this.sourceIsToken && this.hasSourceTarget && this.sourceTarget.value\n }\n\n get weAreStripe() {\n return this.providerValue === 'Stripe'\n }\n\n get weHaveAVaultAndWeAreNotStripe() {\n return this.sourceIsVault && this.providerValue !== 'Stripe'\n }\n\n get weAreStripeAndHaveConfirmedSetupIntent() {\n return this.weAreStripe && this.billingProviderController.confirmedValue\n }\n\n get weAreAStripeVaultThatHasBeenProcessed() {\n // We've already processed the submission once and confirmed the payment from a pm\n // back into a payment intent, so we gucci\n return this.weAreStripe && this.sourceIsVault && this.sourceElement.value.includes('::')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Pallette } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\nimport { post } from '../helpers/fetch_helper'\n\nexport default class extends Controller {\n static values = { intent: String, confirmed: Boolean }\n static targets = ['savePaymentMethod', 'cardholderName']\n static outlets = ['searchable-person-field']\n\n saveCard(event, tokenTarget) {\n event.target.disabled = true\n\n this.confirmSetupIntent(tokenTarget).then((success) => {\n if (success) {\n this.element.closest('form').requestSubmit()\n } else {\n event.target.disabled = false\n }\n })\n }\n\n confirmSetupIntent(tokenTarget) {\n let card = this.card\n let opts = {}\n let cardholderName = this.cardholderNameTargets.map((t) => t.value).join(' ')\n\n opts.payment_method = {\n card,\n billing_details: {\n name: cardholderName,\n },\n }\n\n return this.stripe.confirmCardSetup(this.intentValue, opts).then((result) => {\n if (result.error) {\n var errorElement = document.getElementById('stripe-card-errors')\n errorElement.textContent = result.error.message\n return false\n }\n tokenTarget.value = result.setupIntent.id\n this.confirmedValue = true\n if (document.getElementById('input#credit-card-token')) {\n document.getElementById('input#credit-card-token').value = result.setupIntent.payment_method\n }\n return true\n })\n }\n\n // eslint-disable-next-line no-unused-vars\n setPaymentToken(tokenize, tokenTarget) {\n let card = this.card\n let opts = {}\n if (this.hasSavePaymentMethodTarget && this.savePaymentMethodTarget.checked) {\n opts.setup_future_usage = 'off_session'\n }\n\n if (tokenize) {\n opts.payment_method = { card }\n } else {\n // Token target is the vault ID if we're not tokenizing\n // TODO what if it's not set for some reason?\n opts.payment_method = tokenTarget.dataset.reference\n }\n\n return this.stripe.confirmCardPayment(this.intentValue, opts).then(function (result) {\n if (result.error) {\n let errorElement = document.getElementById('stripe-card-errors')\n if (!errorElement) {\n errorElement = document.getElementById('errors')\n }\n errorElement.textContent = result.error.message\n return false\n }\n\n // Token target is the vault ID if we're not tokenizing\n if (tokenize) {\n tokenTarget.value = result.paymentIntent.id\n } else {\n tokenTarget.value += `::${result.paymentIntent.id}`\n }\n\n return true\n })\n }\n\n connect() {\n const STRIPE_PUBLIC_KEY = document.getElementById('stripe-account-token').dataset.publicKey\n const STRIPE_ACCOUNT_TOKEN = document.getElementById('stripe-account-token').dataset.account\n\n // eslint-disable-next-line no-undef\n this.stripe = Stripe(STRIPE_PUBLIC_KEY, { stripeAccount: STRIPE_ACCOUNT_TOKEN })\n\n if (document.getElementById('stripe-card-form')) {\n this.mountCard()\n }\n }\n\n generateSetupIntent({ currentTarget }) {\n const url = '/setup_intents'\n const payerId = currentTarget.value || currentTarget.dataset.payerId\n let payerType\n if (this.hasSearchablePersonFieldOutlet) {\n payerType = this.searchablePersonFieldOutlet.selectedTypeValue\n } else {\n payerType = currentTarget.dataset.payerType\n }\n\n post(url, { payer_id: payerId, payer_type: payerType })\n .then((response) => response.json())\n .then((data) => {\n this.intentValue = data.intent.client_secret\n this.cardholderNameTarget.value = data.payer_name\n })\n }\n\n mountCard() {\n // NOTE: This is dumb\n let secondaryColor = Pallette.black\n\n if (document.querySelector('body.dark')) {\n secondaryColor = Pallette.white\n }\n\n const invalidColor = Pallette.red\n\n let elements = this.stripe.elements()\n this.card = elements.create('card', {\n iconStyle: 'solid',\n style: {\n base: {\n iconColor: secondaryColor,\n color: secondaryColor,\n lineHeight: '36px',\n fontFamily: '\"Hind Vadodara\", sans-serif',\n fontSize: '19px',\n textTransform: 'uppercase',\n\n '::placeholder': { color: '#aeaeab' },\n },\n invalid: {\n iconColor: invalidColor,\n color: invalidColor,\n },\n },\n })\n this.card.mount('#stripe-card-form')\n\n this.card.addEventListener('change', function (event) {\n const displayError = document.getElementById('stripe-card-errors')\n if (event.error) {\n displayError.textContent = event.error.message\n } else {\n displayError.textContent = ''\n }\n })\n\n document.querySelector('#stripe-card-form').addEventListener('clear:stripe', () => {\n this.card.clear()\n })\n }\n\n //\n // private\n //\n\n set intentValue(value) {\n this.data.set('intentValue', value)\n }\n\n set confirmedValue(value) {\n this.data.set('confirmedValue', value)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Pallette } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\nexport default class extends Controller {\n static targets = ['token']\n\n saveCard(event) {\n event.target.disabled = true\n\n this.setPaymentToken(true, this.tokenTarget).then((success) => {\n if (success) {\n this.parentForm.requestSubmit()\n } else {\n event.target.disabled = false\n }\n })\n }\n\n // eslint-disable-next-line no-unused-vars\n setPaymentToken(tokenize, tokenTarget) {\n if (!tokenize) return Promise.resolve(true)\n\n this.tokenizer.submission = (resp) => {\n this.element.dispatchEvent(new CustomEvent('tokenized', { detail: resp }))\n }\n\n this.tokenizer.submit()\n\n return new Promise((resolve) => {\n this.element.addEventListener('tokenized', function (result) {\n if (result.detail.status === 'success') {\n tokenTarget.value = result.detail.token\n let event = new Event('change')\n tokenTarget.dispatchEvent(event)\n resolve(true)\n } else if (result.detail.status === 'validation') {\n document.getElementById('basys-card-errors').innerHTML = 'Invalid card information'\n resolve(false)\n } else {\n document.getElementById('basys-card-errors').innerHTML = result.detail.msg\n resolve(false)\n }\n })\n })\n }\n\n mountCard() {\n // NOTE: This is dumb\n this.submitButton.disabled = true\n let secondaryColor = Pallette.black\n\n if (document.querySelector('body.dark')) {\n secondaryColor = Pallette.white\n }\n\n const invalidColor = Pallette.red\n const basysPublicKey = document.getElementById('basys-account-token').dataset.publicKey\n\n const self = this\n // eslint-disable-next-line no-undef\n this.tokenizer = new Tokenizer({\n apikey: basysPublicKey,\n container: document.querySelector('#basys-card-form'),\n onLoad() {\n for (const element of document.querySelectorAll('.basys-form-component .hidden')) {\n element.classList.remove('hidden')\n }\n\n document.querySelector('#loading').classList.add('hidden')\n\n self.submitButton.disabled = false\n },\n settings: {\n payment: { placeholderCreditCard: 'CARD NUMBER' },\n styles: {\n '.payment input': {\n border: `solid 2px ${Pallette.secondaryDark}`,\n 'border-radius': '5px',\n\n 'padding-top': '20px',\n 'padding-bottom': '20px',\n\n 'background-color': 'transparent',\n color: secondaryColor,\n 'line-height': '36px',\n 'font-family': '\"Hind Vadodara\", sans-serif',\n 'font-size': '19px',\n 'text-transform': 'uppercase',\n },\n\n '.payment .cc input': {\n 'padding-top': '20px',\n 'padding-bottom': '20px',\n },\n\n '.payment input.invalid': { border: `solid 2px ${invalidColor}` },\n },\n },\n })\n }\n\n get parentForm() {\n return this.element.closest('form')\n }\n\n get submitButton() {\n const formId = this.parentForm.id\n\n return document.querySelector(`[form=\"${formId}\"]`)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Pallette } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\nexport default class extends Controller {\n static values = { publicToken: String }\n static targets = ['token']\n\n saveCard(event) {\n event.target.disabled = true\n\n this.setPaymentToken(true, this.tokenTarget).then((success) => {\n if (success) {\n let parentForm = document.querySelector(`#new-card`)\n parentForm.requestSubmit()\n } else {\n event.target.disabled = false\n }\n })\n }\n\n // eslint-disable-next-line no-unused-vars\n setPaymentToken(tokenize, tokenTarget) {\n if (!tokenize) return Promise.resolve(true)\n\n return this.client\n .getPaymentKey(this.paymentCard)\n .then(function (result) {\n tokenTarget.value = result\n return true\n })\n .catch(function () {\n return false\n })\n }\n\n connect() {\n var USA_EPAY_PUBLIC_TOKEN = this.publicTokenValue\n ? this.publicTokenValue\n : document.getElementById('usa-epay-public-token').dataset.publicToken\n\n if (USA_EPAY_PUBLIC_TOKEN === undefined) throw new Error('No public_token found.')\n\n // eslint-disable-next-line no-undef\n this.client = new usaepay.Client(USA_EPAY_PUBLIC_TOKEN)\n\n if (document.querySelector('#usa-epay-card-form')) {\n this.mountCard()\n }\n }\n\n mountCard() {\n // NOTE: This is dumb\n let secondaryColor = Pallette.black\n\n if (document.querySelector('body.dark')) {\n secondaryColor = Pallette.white\n }\n\n const invalidColor = Pallette.red\n\n // eslint-disable-next-line no-undef\n this.paymentCard = this.client.createPaymentCardEntry()\n var style = {\n base: {\n backgroundColor: 'transparent',\n color: secondaryColor,\n lineHeight: '36px',\n fontFamily: '\"Hind Vadodara\", sans-serif',\n fontSize: '19px',\n textTransform: 'uppercase',\n height: '36px',\n border: `solid 2px ${Pallette.secondaryDark} !important`,\n borderRadius: '5px !important',\n padding: '20px 10px !important',\n minWidth: '90px',\n marginRight: '5px',\n },\n // eslint-disable-next-line max-len\n '{}\\n.payjs-input-icon { display: none; } #payjs-container { display: flex; justify-content: space-between; } @media (max-width: 767px) { #payjs-cnum { padding-left: 0; } #payjs-cvv { width: 4em; min-width: 0px !important; } #payjs-exp { width: 4em; } }':\n '',\n invalid: { color: invalidColor },\n }\n this.paymentCard.generateHTML(style)\n\n if (!document.getElementById('usa-epay-card-form').value) {\n this.paymentCard.addHTML('usa-epay-card-form')\n }\n\n this.paymentCard.addEventListener('error', function (errorMessage) {\n var errorContainer = document.getElementById('usa-epay-card-errors')\n errorContainer.textContent = errorMessage\n })\n\n document.querySelector('#usa-epay-card-form').addEventListener('clear:usaepay', () => {\n this.innerHTML = ''\n this.paymentCard.addHTML('usa-epay-card-form')\n })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['iframe']\n static values = { onLoad: Boolean }\n\n connect() {\n if (this.onLoadValue) window.print()\n }\n\n print() {\n this.iframeTarget.contentWindow.print()\n }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n // There is a tacit assumption that the sumTarget is a MoneyField and the distributeToTargets\n // use the Money stimulus controller to allow for ease of use.\n static targets = ['sum', 'allSelector', 'selector', 'distributeTo', 'amountRemaining', 'clearedCheck']\n static values = { max: { type: Number, default: 0 }, start: { type: Number, default: 0 } }\n\n connect() {\n this.constructItems()\n this.sumTarget.parentElement.setAttribute('data-money-field--component-max-value', this.maxValue)\n this.sumValue = this.startValue\n\n if (!this.hasSelectorTarget) {\n for (const item of this.items) {\n item.select()\n }\n }\n\n this.updateAllSelected()\n this.distribute()\n }\n\n distribute() {\n const distributeSum = (totalRemaining, item) => {\n const remaining = totalRemaining - item.amount\n\n if (remaining > 0) {\n item.select()\n item.distributed = item.amount\n return remaining\n }\n\n const amount = remaining + item.amount\n\n if (amount > 0) {\n item.distributed = amount\n } else {\n item.distributed = 0\n }\n\n return 0\n }\n\n this.selectedItems.reduce(distributeSum, this.sumTarget.value)\n\n this.render()\n }\n\n select_all({ target }) {\n const checked = target.checked\n\n for (const element of this.selectorTargets) {\n element.checked = checked\n this.select({ target: element, render: false })\n }\n\n this.render()\n }\n\n select({ target, render = true }) {\n const checked = target.checked\n const item = this.items.find((i) => i.id === parseInt(target.dataset.id))\n\n if (checked) {\n item.select()\n\n this.resetSelectedItems()\n } else {\n item.unselect()\n item.distributed = 0\n\n this.allSelectorTarget.checked = false\n }\n\n this.updateAllSelected()\n this.updateSumAndMax()\n\n if (render) this.render()\n }\n\n ///\n /// private\n ///\n render() {\n for (const item of this.items) {\n if (!item.distributeToElement) continue\n\n item.distributeToElement.dataset.moneyAmountValue = item.distributed\n\n item.distributeToElement.classList.remove('text-kicksite-yellow-600')\n item.distributeToElement.classList.remove('text-success-400')\n item.distributeToElement.classList.remove('text-danger-600')\n item.clearedCheckElement.classList.remove('invisible')\n item.amountRemainingElement.classList.remove('line-through')\n\n if (item.cleared) {\n item.amountRemainingElement.classList.add('line-through')\n item.distributeToElement.classList.add('text-success-400')\n\n continue\n }\n\n item.clearedCheckElement.classList.add('invisible')\n\n if (!item.selected) continue\n\n if (item.distributed > 0) {\n item.distributeToElement.classList.add('text-kicksite-yellow-600')\n\n continue\n }\n\n item.distributeToElement.classList.add('text-danger-600')\n }\n }\n\n constructItems() {\n this.items = []\n for (const element of this.distributeToTargets) {\n const amount = parseFloat(element.dataset.amount) || 0\n const item = new Item(parseInt(element.dataset.id), false, amount)\n\n item.distributeToElement = element\n item.selectorElement = this.selectorTargets.find((sel) => sel.dataset.id === item.id.toString())\n item.amountRemainingElement = this.amountRemainingTargets.find(\n (amt) => amt.dataset.id === item.id.toString(),\n )\n item.clearedCheckElement = this.clearedCheckTargets.find((check) => check.dataset.id === item.id.toString())\n\n this.items.push(item)\n }\n }\n\n updateAllSelected() {\n if (!this.hasAllSelectorTarget) return\n\n const allSelected = this.items.every((i) => i.selected)\n\n this.allSelectorTarget.checked = allSelected\n }\n\n updateSumAndMax() {\n this.maxValue = this.selectedItems.reduce((total, i) => total + i.amount, 0)\n this.sumTarget.parentElement.setAttribute('data-money-field--component-max-value', this.maxValue)\n this.sumValue = this.selectedItems.reduce((total, i) => total + i.distributed, 0)\n }\n\n resetSelectedItems() {\n for (const selectedItem of this.selectedItems) {\n selectedItem.distributed = selectedItem.amount\n }\n }\n\n get selectedItems() {\n return this.items.filter((i) => i.selected)\n }\n\n get items() {\n return this._items\n }\n\n set items(value) {\n this._items = value\n }\n\n get sumValue() {\n return this._sum\n }\n\n set sumValue(value) {\n if (value < 0) value = 0\n if (value > this.maxValue) value = this.maxValue\n\n this.sumTarget.value = value\n this._sum = value\n }\n}\n\nclass Item {\n constructor(id, selected, amount, distributed = 0) {\n this.id = id\n this.selected = selected || false\n this.amount = amount\n this._distributed = distributed\n this.cleared = false\n }\n\n select() {\n this.selected = true\n }\n\n unselect() {\n this.selected = false\n }\n\n get distributed() {\n return this._distributed\n }\n\n set distributed(value) {\n if (value >= this.amount) {\n this.cleared = true\n } else {\n this.cleared = false\n }\n\n this._distributed = value\n }\n\n get selectorElement() {\n return this._selectorElement\n }\n\n set selectorElement(value) {\n this._selectorElement = value\n\n if (!this._selectorElement) return\n\n this.selected = this._selectorElement.checked\n }\n\n get distributeToElement() {\n return this._distributedToElement\n }\n\n set distributeToElement(value) {\n this._distributedToElement = value\n }\n\n get amountRemainingElement() {\n return this._amountRemainingElement\n }\n\n set amountRemainingElement(value) {\n this._amountRemainingElement = value\n }\n\n get clearedCheckElement() {\n return this._clearedCheckElement\n }\n\n set clearedCheckElement(value) {\n this._clearedCheckElement = value\n }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n static values = { code: String, exponent: Number, amount: { type: Number, default: 0 } }\n\n format() {\n const options = {\n minimumFractionDigits: this.exponentValue,\n maximumFractionDigits: this.exponentValue,\n style: 'currency',\n currency: this.codeValue,\n currencyDisplay: 'narrowSymbol',\n }\n const result = new Intl.NumberFormat(this.codeValue, options).format(\n parseFloat(this.amountValue) * this.subunitMultiplier,\n )\n\n this.element.innerText = result\n }\n\n amountValueChanged() {\n this.format()\n }\n\n get subunitMultiplier() {\n return 10 ** -this.exponentValue\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['lineItem']\n\n remove({ target }) {\n if (this.lineItemTargets.length === 1) {\n const newInputs = this.lineItemTarget.querySelectorAll('input')\n\n for (const input of newInputs) {\n if (input.getAttribute('data-duplicate-fieldset-ignore') !== null) continue\n\n this.resetValues(input)\n }\n this.cleanSelects()\n } else {\n target.closest('.form-fields').remove()\n this.lineItemTarget.dispatchEvent(new Event('change', { bubbles: true }))\n }\n }\n\n resetValues(input) {\n if (input.getAttribute('data-duplicate-fieldset-disabled') === null) {\n input.classList.remove('disabled')\n input.removeAttribute('readonly')\n input.value = ''\n input.dispatchEvent(new Event('change', { bubbles: true }))\n }\n }\n\n cleanSelects() {\n const selects = this.lineItemTarget.querySelectorAll('select')\n for (const select of selects) {\n select.tomselect.clear()\n select.tomselect.load('')\n select.nextSibling.classList.add('cursor-pointer')\n select.nextSibling.querySelector('.ts-control').classList.remove('disabled')\n }\n }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n static targets = ['autopay', 'save']\n\n displayPreexistingBillings(event) {\n if (event.target.value) {\n const payerType = document.querySelector(\"input[name='recurring_billing[payer_type]']\").value\n const payerId = event.target.value\n\n let params = new URLSearchParams()\n params.set('payer_id', payerId)\n params.set('payer_type', payerType)\n\n const src = `/recurring_billings/new?${params.toString()}`\n const frame = 'additional_recurring_billings'\n this.setFrame({ params: { frame, src } })\n }\n }\n\n toggleAutopayModalSubmission(event) {\n if (event.target.checked) {\n this.autopayTarget.classList.remove('hidden')\n this.saveTarget.classList.add('hidden')\n } else {\n this.autopayTarget.classList.add('hidden')\n this.saveTarget.classList.remove('hidden')\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [\n 'hiddenField',\n 'display',\n 'drop',\n 'innerCanvas',\n 'outerCanvas',\n 'cropCanvas',\n 'fileField',\n 'error',\n 'zoomSliderWrapper',\n 'zoomSlider',\n ]\n\n static values = { disablesSubmit: { type: Boolean, default: true } }\n\n dragging = false\n _dragStart = { x: 0, y: 0 }\n\n _cameraOffset = { x: 0, y: 0 }\n cameraZoom = 1\n lastZoom = 1\n\n DRAGPAN_SENSITIVITY = 0.25\n MAX_ZOOM = 5\n MIN_ZOOM = 0.25\n MIN_ZOOM_SCALE_FACTOR = 0.1\n\n SCROLL_SENSITIVITY = 0.0005\n\n connect() {\n this.displayCtx = this.innerCanvasTarget.getContext('2d')\n this.cropCtx = this.cropCanvasTarget.getContext('2d')\n this.outsideCtx = this.outerCanvasTarget.getContext('2d')\n\n this.addDisplayListeners()\n\n this.drawing = false\n\n if (this.disablesSubmitValue) {\n this.submitButton = document.querySelector(`[form=${this.element.closest('form').id}`)\n this.submitButton.disabled = true\n }\n }\n\n disconnect() {\n this.removeDisplayListeners()\n }\n\n selectFile() {\n this.hiddenFieldTarget.click()\n }\n\n async dropFile(event) {\n event.preventDefault()\n\n const file = event.dataTransfer.files[0]\n\n await this.displayFile(file)\n }\n\n async fileSelected() {\n const file = this.hiddenFieldTarget.files[0]\n\n await this.displayFile(file)\n }\n\n setZoomFromSlider() {\n const zoom = parseFloat(this.zoomSliderTarget.value)\n\n this.cameraZoom = zoom\n\n this.drawFrame()\n }\n\n crop() {\n const matrix = this.displayCtx.getTransform()\n\n // We have to cut and paste the 300x300 piece of the image from the source image into the cropCanvas\n // So, since the source image is scaled to a max of 800px, we first need to grab the scale factor,\n // to go from the visible canvas coordinates to the source image coordinates\n // Then, we can can directly grab the offset from the top left of the source image from its transform matrix\n // and use all of that to draw the cropped image into the cropCanvas\n const sourceX = matrix.e\n const sourceY = matrix.f\n\n const sourceWidth = this.cropCanvasTarget.width * this.visibleToSourceScale.x\n const sourceHeight = this.cropCanvasTarget.height * this.visibleToSourceScale.y\n\n this.cropCtx.clearRect(0, 0, this.cropCanvasTarget.width, this.cropCanvasTarget.height)\n this.cropCtx.drawImage(\n this.innerCanvasTarget,\n sourceX,\n sourceY,\n sourceWidth,\n sourceHeight,\n 0,\n 0,\n this.cropCanvasTarget.width,\n this.cropCanvasTarget.height,\n )\n\n this.cropCanvasTarget.toBlob((blob) => {\n const file = new File([blob], 'avatar.png', { type: 'image/png' })\n const dataTransfer = new DataTransfer()\n dataTransfer.items.add(file)\n\n this.fileFieldTarget.files = dataTransfer.files\n })\n }\n\n reset() {\n if (this.nextFrame) {\n cancelAnimationFrame(this.nextFrame)\n this.drawing = false\n }\n\n this.displayCtx.resetTransform()\n this.outsideCtx.resetTransform()\n this.cropCtx.resetTransform()\n\n this.displayCtx.clearRect(0, 0, 10000, 10000)\n this.outsideCtx.clearRect(0, 0, 10000, 10000)\n this.cropCtx.clearRect(0, 0, 10000, 10000)\n\n this.cameraZoom = 1\n this.lastZoom = 1\n this._cameraOffset = { x: 0, y: 0 }\n this._dragStart = { x: 0, y: 0 }\n this.dragging = false\n\n this.zoomSliderTarget.value = 1\n\n this.fileFieldTarget.value = null\n this.hiddenFieldTarget.value = null\n\n if (this.disablesSubmitValue) {\n this.submitButton.disabled = true\n }\n\n this.errorTarget.classList.add('hidden')\n\n this.displayTarget.classList.add('hidden')\n this.dropTarget.classList.remove('hidden')\n this.zoomSliderWrapperTarget.classList.remove('flex')\n this.zoomSliderWrapperTarget.classList.add('hidden')\n }\n\n ///\n /// private\n ///\n\n draw() {\n if (!this.drawing) {\n cancelAnimationFrame(this.nextFrame)\n this.nextFrame = null\n return\n }\n\n this.drawFrame()\n this.nextFrame = requestAnimationFrame(this.draw.bind(this))\n }\n\n drawFrame() {\n // This has to be hard coded to a big number to handle zooming and panning\n this.displayCtx.clearRect(0, 0, 10000, 10000)\n\n this.displayCtx.save()\n this.displayCtx.scale(this.cameraZoom, this.cameraZoom)\n this.displayCtx.translate(this.cameraOffset.x, this.cameraOffset.y)\n this.displayCtx.drawImage(this.image, 0, 0)\n this.displayCtx.restore()\n\n this.outsideCtx.clearRect(0, 0, 10000, 10000)\n\n this.outsideCtx.save()\n this.outsideCtx.globalAlpha = 0.35\n this.outsideCtx.scale(this.cameraZoom, this.cameraZoom)\n this.outsideCtx.translate(this.cameraOffset.x, this.cameraOffset.y)\n this.outsideCtx.drawImage(this.image, 0, 0)\n this.outsideCtx.restore()\n\n this.crop()\n }\n\n displayFile(file) {\n try {\n const fileReader = new FileReader()\n fileReader.onload = () => {\n this.image = new Image()\n this.image.onload = this.start.bind(this)\n this.image.src = fileReader.result\n }\n\n fileReader.readAsDataURL(file)\n\n this.errorTarget.classList.add('hidden')\n } catch {\n this.errorTarget.classList.remove('hidden')\n }\n }\n\n start() {\n this.innerCanvasTarget.width = this.image.width\n this.innerCanvasTarget.height = this.image.height\n\n this.outerCanvasTarget.width = this.image.width\n this.outerCanvasTarget.height = this.image.height\n\n this.displayCtx.resetTransform()\n this.outsideCtx.resetTransform()\n\n this.displayCtx.drawImage(this.image, 0, 0)\n this.outsideCtx.drawImage(this.image, 0, 0)\n\n this.dropTarget.classList.add('hidden')\n this.displayTarget.classList.remove('hidden')\n this.zoomSliderWrapperTarget.classList.remove('hidden')\n this.zoomSliderWrapperTarget.classList.add('flex')\n\n const boundingRect = this.innerCanvasTarget.getBoundingClientRect()\n const scale = {\n x: this.innerCanvasTarget.width / boundingRect.width,\n y: this.innerCanvasTarget.height / boundingRect.height,\n }\n\n this.visibleToSourceScale = scale\n\n this.dragging = false\n this._dragStart = { x: 0, y: 0 }\n this._cameraOffset = {\n x: -this.image.width / 2 + (this.cropCanvasTarget.width / 2) * this.visibleToSourceScale.x,\n y: -this.image.height / 2 + (this.cropCanvasTarget.height / 2) * this.visibleToSourceScale.y,\n }\n this.cameraZoom = 1\n\n if (this.disablesSubmitValue) {\n this.submitButton.disabled = false\n }\n\n this.drawFrame()\n }\n\n startDrag(event) {\n this.dragging = true\n\n this.dragStart = this.getPosition(event)\n\n this.drawing = true\n this.draw()\n }\n\n stopDrag() {\n this.dragging = false\n this.lastZoom = this.cameraZoom\n\n this.drawing = false\n }\n\n drag(event) {\n if (!this.dragging) return\n\n this.cameraOffset = this.getPosition(event)\n }\n\n zoom(event) {\n event.preventDefault()\n\n if (this.dragging) return\n\n const zoomAmount = event.deltaY * this.SCROLL_SENSITIVITY\n\n // Clamp the zoom amount to the min and max zoom\n this.cameraZoom = Math.max(this.MIN_ZOOM, Math.min(this.MAX_ZOOM, this.cameraZoom + zoomAmount))\n this.zoomSliderTarget.value = this.cameraZoom\n\n this.drawFrame()\n }\n\n pinchZoom(event) {\n event.preventDefault()\n\n const touch1 = event.touches[0]\n const touch2 = event.touches[1]\n\n // sqrt isnt really needed here and is expensive\n const distance = (touch1.clientX - touch2.clientX) ** 2 + (touch1.clientY - touch2.clientY) ** 2\n\n if (!this.initialPinchDistance) {\n this.initialPinchDistance = distance\n return\n }\n\n if (this.dragging) return\n\n const zoomFactor = distance / this.initialPinchDistance\n\n this.cameraZoom = Math.max(this.MIN_ZOOM, Math.min(this.MAX_ZOOM, this.lastZoom * zoomFactor))\n this.zoomSliderTarget.value = this.cameraZoom\n\n this.drawFrame()\n }\n\n touch(event, singleTouchHandler) {\n if (!event.touches) return\n\n event.preventDefault()\n\n if (event.touches.length === 1) {\n singleTouchHandler(event)\n return\n }\n\n if (!(event.touches.length === 2 && event.type === 'touchmove')) return\n\n this.dragging = false\n\n this.pinchZoom(event)\n }\n\n getPosition(event) {\n const rect = this.innerCanvasTarget.getBoundingClientRect()\n const inverseMatrix = this.displayCtx.getTransform().inverse()\n const clientPosition = this.clientPosition(event)\n\n const position = {\n x: (clientPosition.x - rect.left) * this.visibleToSourceScale.x,\n y: (clientPosition.y - rect.top) * this.visibleToSourceScale.y,\n }\n\n // All this does is take the position of the mouse and transform it from being in\n // screen space coordinates to the source image coordinates (with 0,0 at the top left of the image)\n return {\n x: inverseMatrix.a * position.x + inverseMatrix.c * position.y + inverseMatrix.e,\n y: inverseMatrix.b * position.x + inverseMatrix.d * position.y + inverseMatrix.f,\n }\n }\n\n clientPosition(event) {\n if (event.touches) {\n return {\n x: event.touches[0].clientX,\n y: event.touches[0].clientY,\n }\n }\n\n return {\n x: event.clientX,\n y: event.clientY,\n }\n }\n\n addDisplayListeners() {\n this.mouseDownListener = this.startDrag.bind(this)\n this.mouseUpListener = this.stopDrag.bind(this)\n this.mouseMoveListener = this.drag.bind(this)\n this.mouseLeaveListener = this.stopDrag.bind(this)\n\n this.zoomListener = this.zoom.bind(this)\n\n this.touchStartListener = (event) => {\n this.touch(event, this.startDrag.bind(this))\n }\n this.touchEndListener = (event) => {\n this.initialPinchDistance = null\n this.touch(event, this.stopDrag.bind(this))\n }\n this.touchMoveListener = (event) => {\n this.touch(event, this.drag.bind(this))\n }\n\n this.displayTarget.addEventListener('mousedown', this.mouseDownListener)\n this.displayTarget.addEventListener('mouseup', this.mouseUpListener)\n this.displayTarget.addEventListener('mousemove', this.mouseMoveListener)\n this.displayTarget.addEventListener('mouseleave', this.mouseLeaveListener)\n\n this.displayTarget.addEventListener('touchstart', this.touchStartListener)\n this.displayTarget.addEventListener('touchend', this.touchEndListener)\n this.displayTarget.addEventListener('touchmove', this.touchMoveListener)\n\n this.displayTarget.addEventListener('wheel', this.zoomListener)\n }\n\n removeDisplayListeners() {\n this.displayTarget.removeEventListener('mousedown', this.mouseDownListener)\n this.displayTarget.removeEventListener('mouseup', this.mouseUpListener)\n this.displayTarget.removeEventListener('mousemove', this.mouseMoveListener)\n this.displayTarget.removeEventListener('mouseleave', this.mouseLeaveListener)\n\n this.displayTarget.removeEventListener('touchstart', this.touchStartListener)\n this.displayTarget.removeEventListener('touchend', this.touchEndListener)\n this.displayTarget.removeEventListener('touchmove', this.touchMoveListener)\n\n this.displayTarget.removeEventListener('wheel', this.zoomListener)\n }\n\n get zoomScaleFactor() {\n const normalized = (this.cameraZoom - this.MIN_ZOOM) / (this.MAX_ZOOM - this.MIN_ZOOM)\n\n return Math.max(this.MIN_ZOOM_SCALE_FACTOR, normalized)\n }\n\n get dragStart() {\n return this._dragStart\n }\n\n set dragStart({ x, y }) {\n this._dragStart = {\n x: (this.DRAGPAN_SENSITIVITY * x) / this.zoomScaleFactor - this.cameraOffset.x,\n y: (this.DRAGPAN_SENSITIVITY * y) / this.zoomScaleFactor - this.cameraOffset.y,\n }\n }\n\n get cameraOffset() {\n return this._cameraOffset\n }\n\n set cameraOffset({ x, y }) {\n this._cameraOffset = {\n x: (this.DRAGPAN_SENSITIVITY * x) / this.zoomScaleFactor - this.dragStart.x,\n y: (this.DRAGPAN_SENSITIVITY * y) / this.zoomScaleFactor - this.dragStart.y,\n }\n }\n\n get visibleToSourceScale() {\n return this._scale\n }\n\n set visibleToSourceScale(scale) {\n this._scale = scale\n }\n}\n", "// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `bin/rails generate channel` command.\n\nimport { createConsumer } from '@rails/actioncable'\n\nexport default createConsumer()\n", "import ApplicationController from './application_controller'\nimport consumer from '../channels/consumer'\n\nexport default class extends ApplicationController {\n static targets = [\n 'progress',\n 'count',\n 'processingIcon',\n 'successIcon',\n 'sendingMessage',\n 'sentMessage',\n 'allFailedMessage',\n 'failureIcon',\n 'failedPeople',\n 'failureMessage',\n 'failureCount',\n 'failureSingular',\n 'failurePlural',\n 'confirmationEmail',\n ]\n\n static values = { current: Number, max: Number, channel: String }\n\n completed = false\n total = 0\n failures = 0\n failedPeopleHoldingCell = []\n\n connect() {\n this.channel = this.createChannel(this)\n\n this.alertsFrame.classList.add('hidden')\n\n document.addEventListener(\n 'turbo:submit-end',\n () => {\n this.dispatch('begin-action', { bubbles: true })\n },\n { once: true },\n )\n }\n\n failedPeopleTargetConnected() {\n if (this.failedPeopleHoldingCell.length > 0) {\n this.failureMessageTarget.classList.remove('hidden')\n }\n\n if (this.failedPeopleHoldingCell.length === 1) {\n this.failureSingularTarget.classList.remove('hidden')\n this.failurePluralTarget.classList.add('hidden')\n } else {\n this.failureSingularTarget.classList.add('hidden')\n this.failurePluralTarget.classList.remove('hidden')\n }\n\n this.failureCountTarget.textContent = this.failedPeopleHoldingCell.length\n\n for (const html of this.failedPeopleHoldingCell) {\n this.failedPeopleTarget.insertAdjacentHTML('beforeend', html)\n }\n\n this.failedPeopleHoldingCell = []\n }\n\n progressTargetConnected() {\n this.displayProgress()\n\n if (this.completed) {\n this.displaySuccess()\n\n this.displayProgressFailures()\n }\n }\n\n disconnect() {\n this.channel.unsubscribe()\n\n this.resetAlerts()\n this.alertsFrame.classList.remove('hidden')\n }\n\n ///\n /// private\n ///\n\n createChannel(self) {\n return consumer.subscriptions.create(this.channelValue, {\n received: (data) => {\n if (data.status === 'success') {\n self.incrementProgress()\n } else if (data.status === 'failure') {\n self.displayFailedPeople(data.entity_html)\n } else if (data.status === 'complete') {\n self.completed = true\n self.total = data.total\n self.failures = data.failures\n\n self.displayCompletion()\n self.displayProgressFailures()\n }\n },\n })\n }\n\n incrementProgress() {\n this.currentValue += 1\n\n this.displayProgress()\n }\n\n displayProgress() {\n if (!this.hasProgressTarget) return\n\n if (this.currentValue >= this.maxValue) {\n this.displaySuccess()\n }\n\n this.progressTarget.setAttribute('value', this.currentValue)\n\n this.countTarget.textContent = this.currentValue\n }\n\n displaySuccess() {\n if (!this.hasProcessingIconTarget) return\n\n this.sendingMessageTarget.classList.add('hidden')\n this.sentMessageTarget.classList.remove('hidden')\n\n this.processingIconTarget.addEventListener(\n 'animationiteration',\n () => {\n this.processingIconTarget.classList.add('hidden')\n this.successIconTarget.classList.remove('hidden')\n\n this.successIconTarget.classList.add('opacity-100')\n this.successIconTarget.classList.remove('opacity-0')\n },\n { once: true },\n )\n }\n\n displayFailure() {\n this.sendingMessageTarget.classList.add('hidden')\n this.allFailedMessageTarget.classList.remove('hidden')\n\n this.processingIconTarget.addEventListener(\n 'animationiteration',\n () => {\n this.processingIconTarget.classList.add('hidden')\n this.failureIconTarget.classList.remove('hidden')\n\n this.failureIconTarget.classList.add('opacity-100')\n this.failureIconTarget.classList.remove('opacity-0')\n },\n { once: true },\n )\n\n if (this.hasConfirmationEmailTarget) {\n this.displayConfirmationText()\n }\n }\n\n displayCompletion() {\n if (this.total === this.failures) {\n this.displayFailure()\n } else {\n this.displaySuccess()\n }\n }\n\n displayFailedPeople(personHtml) {\n if (this.hasFailedPeopleTarget) {\n this.failureMessageTarget.classList.remove('hidden')\n this.failedPeopleTarget.insertAdjacentHTML('beforeend', personHtml)\n\n this.failureCountTarget.textContent = this.failedPeopleTarget.children.length\n\n if (this.failedPeopleTarget.children.length === 1) {\n this.failureSingularTarget.classList.remove('hidden')\n this.failurePluralTarget.classList.add('hidden')\n } else {\n this.failureSingularTarget.classList.add('hidden')\n this.failurePluralTarget.classList.remove('hidden')\n }\n } else {\n this.failedPeopleHoldingCell.push(personHtml)\n }\n\n if (this.hasConfirmationEmailTarget) {\n this.displayConfirmationText()\n }\n }\n\n displayProgressFailures() {\n if (!this.hasProgressTarget) return\n if (this.failures === 0) return\n\n this.progressTarget.classList.add('progress-with-failures')\n }\n\n displayConfirmationText() {\n this.confirmationEmailTarget.classList.remove('hidden')\n }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n static targets = ['selector', 'active', 'inactive', 'frozen']\n static values = ['active', 'inactive', 'frozen']\n\n connect() {\n this.showRelevantMessage()\n }\n\n showRelevantMessage() {\n const selected = this.selectorTarget.options[this.selectorTarget.selectedIndex].value\n\n this.activeTarget.classList.add('hidden')\n this.inactiveTarget.classList.add('hidden')\n this.frozenTarget.classList.add('hidden')\n\n if (selected === 'active') {\n this.activeTarget.classList.remove('hidden')\n } else if (selected === 'inactive') {\n this.inactiveTarget.classList.remove('hidden')\n } else if (selected === 'frozen') {\n this.frozenTarget.classList.remove('hidden')\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n remove() {\n this.element.style.display = 'none'\n }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n static outlets = ['filterable-list--action']\n static targets = ['entityCheckbox', 'banner', 'anchor', 'list', 'pagination']\n\n static values = { selectedEntities: { type: Array, default: [] }, allEntities: Array, perPage: Number }\n\n connect() {\n document.addEventListener(\n 'DOMContentLoaded',\n () => {\n window.FontAwesome.dom.watch()\n },\n { once: true },\n )\n\n this.renderCallback = this.render.bind(this)\n this.beginActionCallback = this.deselectAllEntities.bind(this)\n document.addEventListener('turbo:before-frame-render', this.renderCallback)\n document.addEventListener('quick-action-progress:begin-action', this.beginActionCallback)\n }\n\n disconnect() {\n window.FontAwesome.dom.watch()\n\n document.removeEventListener('turbo:before-frame-render', this.renderCallback)\n document.removeEventListener('quick-action-progress:begin-action', this.beginActionCallback)\n }\n\n render(event) {\n if (!document.startViewTransition) return\n\n event.preventDefault()\n\n document.startViewTransition(() => {\n event.detail.resume()\n })\n }\n\n entityCheckboxTargetConnected(element) {\n const value = parseInt(element.value)\n\n if (!this.selectedEntitiesValue.includes(value)) return\n\n element.checked = true\n }\n\n enableSelection({ detail: { applyFilters, bannerText } }) {\n this.enableAllCheckboxes()\n\n if (bannerText) {\n this.bannerTarget.innerText = bannerText\n this.bannerTarget.classList.remove('hidden')\n setTimeout(() => {\n this.bannerTarget.classList.add('opacity-100')\n this.bannerTarget.classList.remove('opacity-0')\n }, 10)\n } else {\n this.bannerTarget.classList.remove('opacity-100')\n this.bannerTarget.classList.add('opacity-0')\n\n this.waitForAnimations(this.bannerTarget, () => {\n this.bannerTarget.classList.add('hidden')\n })\n }\n\n if (applyFilters) {\n this.applyFilters()\n }\n }\n\n disableSelection({ detail: { applyFilters } }) {\n this.disableAllCheckboxes()\n this.selectedEntitiesValue = []\n\n if (applyFilters) {\n this.applyFilters()\n }\n\n this.bannerTarget.classList.remove('opacity-100')\n this.bannerTarget.classList.add('opacity-0')\n\n this.waitForAnimations(this.bannerTarget, () => {\n this.bannerTarget.classList.add('hidden')\n })\n }\n\n toggleEntitySelected({ params: { id } }) {\n if (this.selectedEntitiesValue.includes(id)) {\n this.selectedEntitiesValue = this.selectedEntitiesValue.filter((entityId) => entityId !== id)\n } else {\n this.selectedEntitiesValue = [...this.selectedEntitiesValue, id]\n }\n }\n\n selectAllEntitiesOnPage() {\n this.checkAllCheckboxes()\n\n this.selectedEntitiesValue = this.entityCheckboxTargets.map((checkbox) => parseInt(checkbox.value))\n }\n\n selectAllEntitiesOnAllPages() {\n this.checkAllCheckboxes()\n\n this.selectedEntitiesValue = this.allEntitiesValue\n }\n\n deselectAllEntities() {\n this.uncheckAllCheckboxes()\n\n this.selectedEntitiesValue = []\n }\n\n executeQuickAction({ params: { path } }) {\n // Take the path, add the current query string to it\n const fullPath = `${path}?${window.location.search}&ids=${this.selectedEntitiesValue.join(',')}`\n\n this.anchorTarget.href = fullPath\n\n this.anchorTarget.click()\n }\n\n selectedEntitiesValueChanged() {\n this.dispatch('selected-entities-changed', {\n prefix: 'list',\n detail: {\n amount: this.selectedEntitiesValue.length,\n total: this.allEntitiesValue.length,\n perPage: this.perPageValue,\n },\n })\n }\n\n cancelQuickAction() {\n this.filterableListActionOutlets.filter((action) => action.checked).forEach((action) => action.cancel())\n }\n\n ///\n /// private\n ///\n\n checkAllCheckboxes() {\n this.entityCheckboxTargets.forEach((checkbox) => {\n checkbox.checked = true\n })\n }\n\n uncheckAllCheckboxes() {\n this.entityCheckboxTargets.forEach((checkbox) => {\n checkbox.checked = false\n })\n }\n\n enableAllCheckboxes() {\n this.entityCheckboxTargets.forEach((checkbox) => {\n checkbox.disabled = false\n })\n }\n\n disableAllCheckboxes() {\n this.entityCheckboxTargets.forEach((checkbox) => {\n checkbox.disabled = true\n checkbox.checked = false\n })\n }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n static targets = ['toggler', 'direction']\n static outlets = ['filterable-list']\n static values = { filters: String, statuses: String }\n\n apply({ currentTarget, params }) {\n this.selectSort(currentTarget.nextElementSibling, params)\n }\n\n ///\n /// private\n ///\n\n selectSort(sortElement, { direction }) {\n this.togglerTarget.childNodes[0].textContent = sortElement.innerText\n this.directionTarget.value = direction\n\n this.element.closest('form').requestSubmit()\n }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nimport { useDebounce } from 'stimulus-use'\n\nexport default class extends ApplicationController {\n static targets = ['spinner']\n static debounces = ['search']\n\n initialize() {\n useDebounce(this, { wait: 600 })\n }\n\n connect() {\n this.submitCallback = this.hideSpinner.bind(this)\n document.addEventListener('turbo:submit-end', this.submitCallback, true)\n }\n\n disconnect() {\n document.removeEventListener('turbo:submit-end', this.submitCallback, true)\n }\n\n search() {\n this.spinnerTarget.classList.remove('hidden')\n\n this.form?.requestSubmit()\n }\n\n hideSpinner(event) {\n if (event.target !== this.form) return\n\n this.spinnerTarget.classList.add('hidden')\n }\n\n ///\n /// private\n ///\n\n get form() {\n return this.element.closest('form')\n }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n static outlets = ['filter-section']\n static values = { previousFilters: Array, filters: Array, title: String, path: String, bannerText: String }\n static targets = ['checkbox']\n\n select() {\n this.dispatch('selected', {\n prefix: 'action',\n bubbles: true,\n detail: { title: this.titleValue, path: this.pathValue, bannerText: this.bannerTextValue },\n })\n\n this.#selectAction(this.filtersValue)\n }\n\n cancel() {\n this.dispatch('deselected', {\n prefix: 'action',\n bubbles: true,\n })\n\n this.#resetList()\n }\n\n get checked() {\n return this.checkboxTarget.checked\n }\n\n ///\n /// private\n ///\n\n #selectAction() {\n this.#removeFilters()\n this.#selectFilters(this.filtersValue)\n this.element.closest('form').requestSubmit()\n this.filterSectionOutlet.updateCount()\n }\n\n #resetList() {\n this.#removeFilters()\n this.checkboxTarget.checked = false\n this.modifyQueryStringInline('quick_action', '')\n this.element.closest('form').requestSubmit()\n this.filterSectionOutlet.updateCount()\n }\n\n #selectFilters(filters) {\n filters.forEach((filter) => {\n const checkbox = document.querySelector(`#${filter}`)\n\n if (!checkbox) return\n\n checkbox.checked = true\n checkbox.dispatchEvent(new CustomEvent('change', { detail: { dispatch: false } }))\n })\n }\n\n #removeFilters() {\n this.filterSectionOutlet.filterGroupOutlets.forEach((filterGroup) => {\n filterGroup.checkboxTargets.forEach((checkbox) => {\n if (!checkbox) return\n\n checkbox.checked = false\n checkbox.dispatchEvent(new CustomEvent('change', { detail: { dispatch: false } }))\n })\n })\n }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n static values = { enabled: Boolean }\n static targets = ['selectAllOnPage', 'selectAllOnAllPages', 'deselectAll', 'selectedAmount', 'execute', 'anchor']\n\n connect() {\n this.adjustWidth()\n\n if (this.enabledValue) {\n this.show()\n } else {\n this.hide()\n }\n\n const selectedAction = document.querySelector(\n '[data-controller=\"filterable-list--action\"] input:checked',\n )?.parentElement\n\n if (!selectedAction) return\n\n this.setupActionButton({\n detail: {\n title: selectedAction.getAttribute('data-filterable-list--action-title-value'),\n path: selectedAction.getAttribute('data-filterable-list--action-path-value'),\n },\n })\n }\n\n show() {\n this.element.classList.remove('invisible')\n this.element.classList.add('opacity-100')\n this.element.classList.remove('opacity-0')\n }\n\n hide() {\n this.element.classList.remove('opacity-100')\n this.element.classList.add('opacity-0')\n\n this.waitForAnimations(this.element, () => {\n this.element.classList.add('invisible')\n })\n }\n\n setupActionButton({ detail: { title, path } }) {\n this.executeTarget.innerText = title\n this.executeTarget.setAttribute('data-filterable-list-path-param', path)\n }\n\n adjustElements({ detail: { amount, total, perPage } }) {\n this.adjustSelectionButtons(amount, total, perPage)\n\n this.selectedAmountTarget.innerText = amount\n }\n\n adjustWidth() {\n this.element.style.width = `${this.element.parentElement.offsetWidth}px`\n }\n\n ///\n /// private\n ///\n\n adjustSelectionButtons(amount, total, perPage) {\n if (amount > 0) {\n this.deselectAllTarget.disabled = false\n this.executeTarget.disabled = false\n } else {\n this.deselectAllTarget.disabled = true\n this.executeTarget.disabled = true\n }\n\n const hasPages = total > perPage\n\n if (!hasPages) {\n this.selectAllOnPageTarget.classList.remove('hidden')\n this.selectAllOnAllPagesTarget.classList.add('hidden')\n\n this.selectAllOnPageTarget.disabled = amount === total\n this.selectAllOnAllPagesTarget.disabled = true\n\n return\n }\n\n const atLeastOnePageSelected = amount >= perPage\n\n if (amount === total) {\n if (atLeastOnePageSelected) {\n this.selectAllOnPageTarget.classList.add('hidden')\n this.selectAllOnAllPagesTarget.classList.remove('hidden')\n\n this.selectAllOnPageTarget.disabled = true\n this.selectAllOnAllPagesTarget.disabled = true\n\n return\n }\n\n this.selectAllOnPageTarget.classList.remove('hidden')\n this.selectAllOnAllPagesTarget.classList.add('hidden')\n\n this.selectAllOnPageTarget.disabled = true\n this.selectAllOnAllPagesTarget.disabled = true\n\n return\n }\n\n if (atLeastOnePageSelected) {\n this.selectAllOnPageTarget.classList.add('hidden')\n this.selectAllOnAllPagesTarget.classList.remove('hidden')\n\n this.selectAllOnPageTarget.disabled = true\n this.selectAllOnAllPagesTarget.disabled = false\n\n return\n }\n\n this.selectAllOnPageTarget.classList.remove('hidden')\n this.selectAllOnAllPagesTarget.classList.add('hidden')\n\n this.selectAllOnPageTarget.disabled = false\n this.selectAllOnAllPagesTarget.disabled = true\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [\n 'form',\n 'selectAll',\n 'checkbox',\n 'dropdown',\n 'programSelect',\n 'program',\n 'rank',\n 'programsDropdown',\n ]\n\n static values = {\n selectText: String,\n deselectText: String,\n }\n\n updateSelectAll() {\n this.checkboxTargets.forEach((checkbox) => {\n checkbox.checked = this.selectAllTarget.checked\n })\n this.handleCheckboxChange()\n }\n\n handleCheckboxChange() {\n if (this.checkboxTargets.some((checkbox) => checkbox.checked)) {\n this.dropdownTarget.classList.remove('disabled')\n } else {\n this.dropdownTarget.classList.add('disabled')\n }\n }\n\n toggleDropdownSelect() {\n const programsChecked = this.programTargets.some((target) => target.checked)\n if (programsChecked) {\n this.programsDropdownTarget.classList.add('border-kicksite-yellow-600')\n } else {\n this.programsDropdownTarget.classList.remove('border-kicksite-yellow-600')\n }\n }\n\n toggleProgramSelect({ target }) {\n const parent = document.getElementById(target.dataset.program)\n parent.checked = true\n this.toggleDropdownSelect()\n }\n\n toggleSelectAll({ target }) {\n if (target.hasAttribute('data-select-all')) {\n if (target.dataset.attendancesTarget === 'programSelect') {\n this.selectProgramTargets()\n } else {\n this.selectRankTargets(target)\n }\n } else if (target.dataset.attendancesTarget === 'programSelect') {\n this.deselectProgramTargets()\n } else {\n this.deselectRankTargets(target)\n }\n }\n\n selectProgramTargets() {\n this.programTargets.forEach((programTarget) => {\n programTarget.checked = true\n })\n this.programSelectTarget.innerText = this.deselectTextValue\n this.programSelectTarget.removeAttribute('data-select-all')\n this.programsDropdownTarget.classList.add('border-kicksite-yellow-600')\n }\n\n selectRankTargets(target) {\n const selectedRanks = target.closest('ul').querySelectorAll('input')\n selectedRanks.forEach((rankItem) => {\n rankItem.checked = true\n })\n target.innerText = this.deselectTextValue\n target.removeAttribute('data-select-all')\n const parent = document.getElementById(target.dataset.programid)\n parent.checked = true\n this.toggleDropdownSelect()\n }\n\n deselectProgramTargets() {\n this.programTargets.forEach((programTarget) => {\n programTarget.checked = false\n })\n this.programSelectTarget.innerText = this.selectTextValue\n this.programSelectTarget.setAttribute('data-select-all', '')\n this.programsDropdownTarget.classList.remove('border-kicksite-yellow-600')\n }\n\n deselectRankTargets(target) {\n const deselectedRanks = target.closest('ul').querySelectorAll('input')\n deselectedRanks.forEach((rankTarget) => {\n rankTarget.checked = false\n })\n target.innerText = this.selectTextValue\n target.setAttribute('data-select-all', '')\n const parent = document.getElementById(target.dataset.programid)\n parent.checked = false\n this.toggleDropdownSelect()\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['emailSection', 'smsSection', 'emailInput', 'smsInput']\n\n handleOptionChange({ target: { value } }) {\n if (value === 'email') {\n this.showEmailOption()\n } else {\n this.showSMSOption()\n }\n }\n\n ///\n /// private\n ///\n\n showEmailOption() {\n this.emailSectionTarget.classList.remove('hidden')\n this.emailInputTarget.disabled = false\n this.smsSectionTarget.classList.add('hidden')\n this.smsInputTarget.disabled = true\n this.emailInputTarget.focus()\n }\n\n showSMSOption() {\n this.emailSectionTarget.classList.add('hidden')\n this.emailInputTarget.disabled = true\n this.smsSectionTarget.classList.remove('hidden')\n this.smsInputTarget.disabled = false\n this.smsInputTarget.focus()\n }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nexport const DEFAULT_TIMEOUT = 15000\n\nexport default class extends ApplicationController {\n static targets = ['pdfViewer']\n static values = { filePath: String, fileName: String, adobeId: String }\n\n connect() {\n // eslint-disable-next-line no-undef\n if (typeof AdobeDC === 'undefined') {\n document.addEventListener(\n 'adobe_dc_view_sdk.ready',\n () => {\n this.setPDFViewer()\n },\n {},\n )\n } else {\n this.setPDFViewer()\n }\n }\n\n ///\n /// private\n ///\n\n setPDFViewer() {\n // eslint-disable-next-line no-undef\n let adobeDCView = new AdobeDC.View({ clientId: this.adobeIdValue, divId: this.pdfViewerTarget.id })\n let previewFilePromise = adobeDCView.previewFile(\n {\n content: { location: { url: this.filePathValue } },\n metaData: { fileName: this.fileNameValue },\n },\n { embedMode: 'SIZED_CONTAINER' },\n )\n\n const waitPromise = (ms) => new Promise((resolve) => setTimeout(resolve, ms))\n const pdfTimeout = (pdfPromise, ms) =>\n Promise.race([\n pdfPromise,\n waitPromise(ms).then(() => {\n throw new Error(`PDF Viewer timeout after ${ms} ms`)\n }),\n ])\n\n pdfTimeout(previewFilePromise, DEFAULT_TIMEOUT).catch(() => {\n this.pdfViewerTarget.innerHTML = this.constructObjectViewer()\n })\n }\n\n constructObjectViewer() {\n // eslint-disable-next-line max-len\n return `<object data='${this.filePathValue}' class=\"h-[34rem]\" type: 'application/pdf' width=\"100%\" height:\"100%\"></object>`\n }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\nimport FroalaEditor from 'froala-editor'\nimport 'froala-editor/js/plugins/align.min.js'\nimport 'froala-editor/js/plugins/colors.min.js'\nimport 'froala-editor/js/plugins/image.min.js'\nimport 'froala-editor/js/plugins/link.min.js'\nimport 'froala-editor/js/plugins/special_characters.min.js'\nimport 'froala-editor/js/plugins/draggable.min.js'\nimport 'froala-editor/js/plugins/font_size.min.js'\nimport 'froala-editor/js/plugins/lists.min.js'\nimport 'froala-editor/js/plugins/paragraph_format.min.js'\nimport 'froala-editor/js/plugins/help.min.js'\nimport 'froala-editor/js/plugins/quick_insert.min.js'\nimport 'froala-editor/js/plugins/video.min.js'\nimport 'froala-editor/js/plugins/table.min.js'\nimport 'froala-editor/js/plugins/url.min.js'\n\nFroalaEditor.ICON_DEFAULT_TEMPLATE = 'font_awesome'\nFroalaEditor.DefineIcon('token', { NAME: 'coins' })\nFroalaEditor.DefineIcon('emoticons', { NAME: 'face-smile' })\nFroalaEditor.DefineIcon('signature', { NAME: 'signature' })\nFroalaEditor.DefineIcon('autoplay', { NAME: 'circle-play' })\nFroalaEditor.RegisterCommand('insertToken', {\n title: 'Insert Special Token',\n focus: true,\n undo: true,\n refreshAfterCallback: true,\n showOnMobile: true,\n options: {\n last_name: 'Last Name',\n first_name: 'First Name',\n street: 'Street',\n street_2: 'Street 2',\n city: 'City',\n state: 'State',\n zip: 'Zip',\n country: 'Country',\n date_of_birth: 'Date of Birth',\n memberships: 'Memberships',\n },\n type: 'dropdown',\n callback(_, value) {\n this.html.insert(`((${value}))`)\n },\n icon: 'token',\n})\nFroalaEditor.RegisterCommand('insertSignature', {\n title: 'Insert Signature',\n focus: true,\n undo: true,\n refreshAfterCallback: true,\n showOnMobile: true,\n callback() {\n this.html.insert('((signature_area))<br/>')\n },\n icon: 'signature',\n})\nFroalaEditor.RegisterQuickInsertButton('signature', {\n icon: 'signature',\n title: 'Insert Signature',\n callback() {\n this.html.insert('((signature_area))<br/>')\n },\n undo: true,\n})\n\nconst staticOptions = {\n key: 'bMA6aC5B5D2G2A2B2J2yQNDMIJg1IQNSEa1EUAi1XVFQd1EaG3C2A5A3C4E3D1D4D2E2==',\n attribution: false,\n imageUploadURL: '/files.js',\n imageUploadMethod: 'POST',\n imageUploadParam: 'file',\n}\n\nconst textButtons = [\n 'token',\n 'bold',\n 'italic',\n 'underline',\n 'strikeThrough',\n 'subscript',\n 'superscript',\n 'fontSize',\n 'textColor',\n 'backgroundColor',\n 'clearFormatting',\n]\n\nconst paragraphButtons = [\n 'alignLeft',\n 'alignCenter',\n 'alignRight',\n 'alignJustify',\n 'formatOL',\n 'formatUL',\n 'paragraphFormat',\n 'outdent',\n 'indent',\n]\n\nconst miscButtons = ['undo', 'redo', 'selectAll', 'help']\n\nexport default class extends ApplicationController {\n static values = { includeTokens: Boolean }\n\n initialize() {\n this.editor = new FroalaEditor(this.element, {\n ...staticOptions,\n theme: document.body.classList.contains('dark') ? 'dark' : 'default',\n imageUploadParams: { authenticity_token: document.querySelector('meta[name=\"csrf-token\"]').content },\n quickInsertButtons: this.quickInsertButtons,\n toolbarButtons: {\n moreText: {\n buttons: textButtons,\n },\n moreParagraph: {\n buttons: paragraphButtons,\n },\n moreRich: {\n buttons: this.richButtons,\n buttonsVisible: 3,\n },\n moreMisc: {\n buttons: miscButtons,\n align: 'right',\n buttonsVisible: 0,\n },\n },\n events: {\n initialized: () => {\n // There is some weirdness with Froala thinking it needs this dummy element on load when it.. doesnt.\n document.querySelector('.fr-sticky-dummy')?.remove()\n\n this.element.parentNode.classList.add('opacity-100')\n this.element.parentNode.classList.remove('opacity-0')\n\n this.dispatch('ready', { bubbles: true })\n },\n },\n })\n }\n\n get wysiwygElement() {\n return this.element.previousElementSibling\n }\n\n ///\n /// private\n ///\n\n get quickInsertButtons() {\n const buttons = ['image', 'video', 'table', 'ul', 'ol', 'signature', 'hr']\n\n if (this.includeTokensValue) return buttons\n\n return buttons.filter((button) => button !== 'signature')\n }\n\n get richButtons() {\n const buttons = ['insertLink', 'insertImage', 'insertVideo', 'insertTable', 'specialCharacters', 'insertHR']\n\n if (this.includeTokensValue) {\n return ['insertSignature', 'insertToken', ...buttons]\n }\n\n return buttons\n }\n}\n", "import { get } from '../helpers/fetch_helper'\nimport ApplicationController from './application_controller'\n\nconst PREVIEW_WIDTH_IN_PX = 816 // this is 8.5 inches at 96dpi\nconst THIRTY_MB = 1024 * 1024 * 30\nexport default class extends ApplicationController {\n static outlets = ['wysiwyg', 'collapse--component']\n static targets = [\n 'preview',\n 'warning',\n 'signatureTypeCheckbox',\n 'fileDropzone',\n 'fileField',\n 'fileStats',\n 'fileName',\n 'fileSize',\n 'fileError',\n 'pdfPreview',\n 'templateSelect',\n ]\n\n static values = {\n tokens: { type: Object, default: {} },\n overrideTokens: { type: Object, default: {} },\n checkboxHtml: String,\n signatureHtml: String,\n currentHtml: String,\n }\n\n connect() {\n // Weird hack to get around some odd froala behavior\n if (this.element.querySelector('.fr-box')) {\n this.setup()\n }\n\n if (!this.hasPdfPreviewTarget) return\n\n this.pdfPreviewTarget.onload = async () => {\n if (!this.pdfPreviewTarget.getAttribute('src')) return\n\n this.previewTarget.classList.add('animate-fade-out-slow')\n\n await this.waitForAnimations(this.previewTarget, () => {\n this.previewTarget.innerHTML = ''\n this.wysiwygOutlet.editor.html.set(null)\n\n this.previewTarget.classList.remove('animate-fade-out-slow')\n this.previewTarget.classList.add('hidden')\n })\n }\n }\n\n setup() {\n this.wysiwygOutlet.editor.events.on('input', () => this.loadContent())\n this.wysiwygOutlet.editor.events.on('contentChanged', () => this.loadContent())\n\n if (this.shouldShowWarning) {\n this.warningTarget.classList.remove('hidden')\n }\n\n this.loadContent()\n }\n\n updateContent({ target }) {\n const selectedOption = target.selectedOptions[0]\n\n const signatureType = selectedOption.getAttribute('data-signature-type')\n\n this.selectSignatureType(signatureType)\n\n let content = ''\n\n if (selectedOption.hasAttribute('data-content')) {\n content = selectedOption.getAttribute('data-content')\n }\n\n this.wysiwygOutlet.editor.html.set(content)\n this.wysiwygOutlet.editor.undo.saveStep\n\n this.loadContent()\n }\n\n overrideToken({ target, params: { token } }) {\n const value = target.value\n\n if (value.length > 0) {\n this.overrideTokensValue[token] = value\n } else {\n delete this.overrideTokensValue[token]\n }\n\n this.loadContent()\n }\n\n setCheckboxSignature() {\n this.currentHtmlValue = this.checkboxHtmlValue\n\n if (!this.content.includes('((signature_area))')) return\n\n this.loadContent()\n }\n\n setSignature() {\n this.currentHtmlValue = this.signatureHtmlValue\n\n if (!this.content.includes('((signature_area))')) return\n\n this.loadContent()\n }\n\n setNoSignature() {\n this.currentHtmlValue = ''\n\n if (!this.content.includes('((signature_area))')) return\n\n this.loadContent()\n }\n\n selectPerson({ target }) {\n const id = target.value\n const type = document.querySelector('input[name=\"agreement[agreeable_type]\"]').value\n let src = '/agreements/tokens'\n if (!id || !type) {\n this.tokensValue = {}\n }\n\n src = `${src}?agreeable_id=${id}&agreeable_type=${type}`\n\n get(src)\n .then((response) => response.json())\n .then((json) => {\n this.tokensValue = json\n })\n }\n\n openFileField() {\n this.fileFieldTarget.click()\n }\n\n uploadPdf({ dataTransfer }) {\n this.fileFieldTarget.files = dataTransfer.files\n\n this.previewPdf()\n }\n\n previewPdf() {\n const file = this.fileFieldTarget.files[0]\n\n this.fileDropzoneTarget.classList.add('max-w-lg')\n this.fileDropzoneTarget.classList.remove('max-w-7xl')\n\n this.showFileStats(file)\n\n if (file.size > THIRTY_MB || file.type !== 'application/pdf') {\n this.pdfPreviewTarget.src = ''\n this.fileErrorTarget.classList.remove('hidden')\n return\n }\n\n this.fileErrorTarget.classList.add('hidden')\n\n const fileReader = new FileReader()\n fileReader.onload = async (event) => {\n this.pdfPreviewTarget.setAttribute('src', `${event.target.result}#toolbar=0&navpanes=0&scrollbar=0`)\n\n await this.revealPdfPreview()\n }\n fileReader.readAsDataURL(file)\n }\n\n async removePdf() {\n this.fileFieldTarget.value = null\n\n this.fileStatsTarget.classList.add('hidden')\n this.fileDropzoneTarget.classList.remove('max-w-lg')\n this.fileDropzoneTarget.classList.add('max-w-7xl')\n\n this.pdfPreviewTarget.classList.add('hidden')\n this.pdfPreviewTarget.setAttribute('src', '')\n\n this.previewTarget.classList.add('animate-fade-in-slow')\n this.previewTarget.classList.remove('hidden')\n\n this.selectSignatureType('2')\n this.templateSelectTarget.tomselect.enable()\n\n this.signatureTypeCheckboxTargets.forEach((checkbox) => {\n checkbox.disabled = false\n })\n\n this.collapseComponentOutlet.element.classList.remove('opacity-50', 'pointer-events-none')\n\n this.fileErrorTarget.classList.add('hidden')\n\n this.wysiwygOutlet.editor.edit.on()\n\n this.fileNameTarget.innerText = 'N/A'\n this.fileSizeTarget.innerText = 'N/A'\n\n await this.waitForAnimations(this.previewTarget, () => {\n this.previewTarget.classList.remove('animate-fade-in-slow')\n })\n }\n\n ///\n /// private\n ///\n loadContent() {\n if (this.previewHidden) return\n\n this.previewTarget.innerHTML = this.tokenizedContent\n }\n\n selectSignatureType(signatureType) {\n if (signatureType === '1') {\n this.currentHtmlValue = this.checkboxHtmlValue\n } else if (signatureType === '2') {\n this.currentHtmlValue = this.signatureHtmlValue\n } else {\n signatureType = 'on'\n this.currentHtmlValue = ''\n }\n\n this.signatureTypeCheckboxTargets.forEach((checkbox) => {\n checkbox.checked = false\n\n if (checkbox.value === signatureType) {\n checkbox.checked = true\n }\n })\n\n if (this.signatureTypeCheckboxTargets.every((checkbox) => !checkbox.checked)) {\n this.currentHtmlValue = this.signatureHtmlValue\n\n this.signatureTypeCheckboxTargets.find((checkbox) => checkbox.value === '2').checked = true\n }\n }\n\n fileSize(file) {\n const fileSizeInKB = file.size / 1024\n\n if (fileSizeInKB < 1024) {\n return `${fileSizeInKB.toFixed(2)} KB`\n }\n\n return `${(fileSizeInKB / 1024).toFixed(2)} MB`\n }\n\n showFileStats(file) {\n this.fileDropzoneTarget.addEventListener(\n 'transitionend',\n async () => {\n this.fileStatsTarget.classList.add('animate-fade-in-slow')\n this.fileStatsTarget.classList.remove('hidden')\n\n await this.waitForAnimations(this.fileStatsTarget, () => {\n this.fileStatsTarget.classList.remove('animate-fade-in-slow')\n })\n },\n { once: true },\n )\n\n this.fileNameTarget.innerText = file.name\n this.fileSizeTarget.innerText = this.fileSize(file)\n }\n\n async revealPdfPreview() {\n this.pdfPreviewTarget.classList.add('animate-fade-in-slow')\n this.pdfPreviewTarget.classList.remove('hidden')\n\n this.selectSignatureType(null)\n this.templateSelectTarget.tomselect.disable()\n\n this.signatureTypeCheckboxTargets.forEach((checkbox) => {\n checkbox.disabled = true\n })\n\n this.collapseComponentOutlet.close()\n this.collapseComponentOutlet.element.classList.add('opacity-50', 'pointer-events-none')\n\n this.wysiwygOutlet.editor.edit.off()\n\n await this.waitForAnimations(this.pdfPreviewTarget, () => {\n this.pdfPreviewTarget.classList.remove('animate-fade-in-slow')\n })\n }\n\n get tokenizedContent() {\n let content = this.wysiwygOutlet.editor.html.get()\n\n if (this.currentHtmlValue.length > 0) {\n content = content.replace(/\\(\\(signature_area\\)\\)/g, this.currentHtmlValue)\n }\n\n if (!this.hasTokens) return content\n\n const keys = Object.keys(this.tokensValue).concat(Object.keys(this.overrideTokensValue))\n\n keys.forEach((token) => {\n const tokenRegex = new RegExp(`\\\\(\\\\(${token}\\\\)\\\\)`, 'g')\n const tokenValue = this.overrideTokensValue[token] || this.tokensValue[token]\n\n if (!tokenValue) {\n content = content.replace(tokenRegex, '')\n return\n }\n\n content = content.replace(tokenRegex, tokenValue)\n })\n\n return content\n }\n\n get content() {\n return this.wysiwygOutlet.editor.html.get()\n }\n\n get hasTokens() {\n return Object.keys(this.tokensValue).length > 0\n }\n\n get shouldShowWarning() {\n return this.wysiwygOutlet.wysiwygElement.clientWidth !== PREVIEW_WIDTH_IN_PX && this.previewHidden\n }\n\n get previewHidden() {\n const style = window.getComputedStyle(this.previewTarget)\n\n if (!this.hasPdfPreviewTarget) return style.display === 'none'\n\n const pdfStyle = window.getComputedStyle(this.pdfPreviewTarget)\n\n return style.display === 'none' && pdfStyle.display === 'none'\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['submit', 'endDateInput', 'attendanceInput']\n\n connect() {\n this.validate()\n }\n\n validate() {\n const endDate = this.endDateInputTarget.value\n const attendance = this.attendanceInputTarget.value\n this.submitTarget.disabled = endDate === '' && (attendance === '' || attendance === '0')\n }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n static targets = [\n 'ranks',\n 'programs',\n 'billingContainer',\n 'billingToggle',\n 'billingAmount',\n 'rankLabel',\n 'programLabel',\n ]\n\n filterRanks({ target }) {\n const selectedOption = target.selectedOptions[0]\n if (selectedOption.value === 'No Program') return\n if (selectedOption.hasAttribute('data-ranks')) {\n this.ranksTarget.disabled = false\n this.rankSelect.enable()\n } else {\n this.ranksTarget.disabled = true\n this.rankSelect.disable()\n }\n\n const ranks = JSON.parse(selectedOption.getAttribute('data-ranks'))\n\n // The distinction between `option` and `item` here isn't super clear\n // but from the docs looks like option is the select options and item\n // is the SELECTED thing, so we have to do both here\n this.rankSelect.clear()\n this.rankSelect.clearOptions()\n\n if (!ranks) {\n this.rankSelect.addOption({ value: '', text: 'N/A' })\n this.rankSelect.addItem('')\n return\n }\n\n ranks.forEach((rank) => {\n this.rankSelect.addOption({ value: rank?.id, text: rank?.name || 'N/A' })\n })\n\n this.rankSelect.addItem(ranks[0].id)\n }\n\n selectMembership({ target }) {\n const selectedOption = target.selectedOptions[0]\n let params = new URLSearchParams()\n params.set('membership_template_id', selectedOption.value)\n const src = `/students/new?${params.toString()}`\n const frame = 'signup_section'\n this.setFrame({ params: { frame, src } })\n }\n\n toggleBilling({ target }) {\n if (target.checked) {\n this.billingContainerTarget.classList.remove('hidden')\n this.billingAmountTarget.disabled = false\n } else {\n this.billingContainerTarget.classList.add('hidden')\n this.billingAmountTarget.disabled = true\n }\n }\n\n durationKindChange({ target }) {\n if (target.value === 'attendance-based') {\n this.programSelect.removeOption('-1')\n const firstValue = Object.keys(this.programSelect.options)[0]\n this.programSelect.setValue(firstValue, false)\n this.programLabelTarget.classList.add('required')\n this.rankLabelTarget.classList.add('required')\n } else if (!this.programSelect.getOption('-1')) {\n this.programSelect.addOption({ value: '-1', text: 'No Program' })\n this.programSelect.setValue('-1', false)\n this.programSelect.addItem('-1')\n this.programSelect.refreshOptions(false)\n this.programLabelTarget.classList.remove('required')\n this.rankLabelTarget.classList.remove('required')\n }\n }\n\n ///\n /// private\n ///\n\n get programSelect() {\n return this.programsTarget.tomselect\n }\n\n get rankSelect() {\n return this.ranksTarget.tomselect\n }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nimport { useDebounce } from 'stimulus-use'\n\nexport default class extends ApplicationController {\n static targets = ['selectedBadge']\n static outlets = ['filter-group']\n static debounces = ['submitForm']\n static values = { debounce: { type: Boolean, default: true }, badgeId: String }\n\n connect() {\n if (this.debounceValue) {\n useDebounce(this, { wait: 200 })\n }\n this.modifyFormDataCallback = this.modifyFormData.bind(this)\n\n this.#formTarget.addEventListener('formdata', this.modifyFormDataCallback)\n\n this.updateCount()\n }\n\n disconnect() {\n if (!this.#formTarget) return\n\n this.#formTarget.removeEventListener('formdata', this.modifyFormDataCallback)\n }\n\n reset() {\n this.filterGroupOutlets.forEach((filterGroup) => {\n filterGroup.selectAll(false)\n\n if (filterGroup.hasAllTarget) return\n\n this.updateCount()\n })\n\n this.#formTarget.requestSubmit()\n }\n\n modifyFormData({ formData }) {\n const temp = {}\n const keysToDelete = []\n\n for (const [key, value] of formData) {\n if (value.length === 0) {\n keysToDelete.push(key)\n\n continue\n }\n\n temp[key] ||= []\n temp[key].push(value)\n }\n\n keysToDelete.forEach((key) => {\n formData.delete(key)\n })\n\n for (const [key, value] of Object.entries(temp)) {\n formData.set(key, value.join(','))\n }\n }\n\n submitForm() {\n this.#formTarget.requestSubmit()\n }\n\n updateCount() {\n if (!this.#selectedBadge) return\n\n const amountSelected = this.element.querySelectorAll('input[name][type=\"checkbox\"]:checked').length\n\n this.#selectedBadge.hidden = amountSelected <= 0\n\n if (amountSelected > 0) {\n this.#selectedBadge.innerText = amountSelected\n }\n }\n\n get #selectedBadge() {\n if (this.hasSelectedBadgeTarget) return this.selectedBadgeTarget\n if (!this.badgeIdValue) return null\n\n return document.querySelector(this.badgeIdValue)\n }\n\n get #formTarget() {\n return this.element.closest('form')\n }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n static outlets = ['filter-section-filter']\n static targets = ['all', 'checkbox', 'childAll', 'childCheckbox']\n\n connect() {\n this.toggleAllCheckbox(false)\n }\n\n selectAll(dispatch = true, destroyChildren = true) {\n this.checkboxTargets.forEach((checkbox) => {\n checkbox.checked = false\n })\n\n if (this.hasAllTarget) {\n this.allTarget.checked = true\n }\n\n if (dispatch) this.dispatch('toggle')\n\n // This fixes a stupid timing issue on connect causing a bunch of warnings.\n // The warnings realistically don't matter, but they're annoying.\n if (!destroyChildren) return\n\n this.filterSectionFilterOutlets.forEach((filterSectionFilter) => {\n filterSectionFilter.destroyChildren(false)\n })\n }\n\n selectAllChildren({ params: { childName } }, dispatch = true) {\n const childCheckboxes = this.childCheckboxTargets.filter((checkbox) => checkbox.name === childName)\n\n childCheckboxes.forEach((checkbox) => {\n checkbox.checked = false\n })\n\n const childAll = this.childAllTargets.find((allTarget) => allTarget.parentElement.id === `${childName}_all`)\n\n if (childAll) {\n childAll.checked = true\n }\n\n if (dispatch) this.dispatch('toggle')\n\n this.toggleAllCheckbox()\n }\n\n toggleOne({ detail }) {\n this.toggleAllCheckbox()\n\n const dispatch = detail?.dispatch ?? true\n if (dispatch) this.dispatch('toggle')\n }\n\n toggleOneChild({ currentTarget }) {\n const childName = currentTarget.parentElement.dataset.filterSectionFilterChildNameValue\n this.toggleChildAllCheckbox(childName)\n\n this.dispatch('toggle')\n }\n\n ///\n /// private\n ///\n\n toggleAllCheckbox(destroyChildren = true) {\n if (!this.hasAllTarget) return\n\n const allChecked = this.checkboxTargets.every((checkbox) => checkbox.checked)\n const allUnchecked = this.checkboxTargets.every((checkbox) => !checkbox.checked)\n const allChildrenChecked = this.childCheckboxTargets.every((checkbox) => checkbox.checked)\n const allChildrenUnchecked = this.childCheckboxTargets.every((checkbox) => !checkbox.checked)\n\n if (allChildrenChecked || allChildrenUnchecked) {\n this.allTarget.checked = allChecked || allUnchecked\n\n if (allChecked || allUnchecked) this.selectAll(false, destroyChildren)\n }\n }\n\n toggleChildAllCheckbox(childName) {\n if (!this.hasChildAllTarget) return\n\n const allChecked = this.childCheckboxTargets\n .filter((checkbox) => checkbox.name === childName)\n .every((checkbox) => checkbox.checked)\n const allUnchecked = this.childCheckboxTargets\n .filter((checkbox) => checkbox.name === childName)\n .every((checkbox) => !checkbox.checked)\n\n const childAll = this.childAllTargets.find((allTarget) => allTarget.parentElement.id === `${childName}_all`)\n childAll.checked = allChecked || allUnchecked\n\n if (allChecked || allUnchecked) {\n this.selectAllChildren({ params: { childName } }, false)\n } else {\n this.toggleAllCheckbox()\n }\n }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n static targets = ['checkbox']\n static values = { disables: String, children: Array, childName: String, allText: String }\n\n initialize() {\n if (!this.hasChildrenValue) return\n\n this.buildOrDestroyChildren()\n }\n\n toggleCheckbox() {\n if (this.hasChildrenValue) {\n this.buildOrDestroyChildren()\n }\n\n if (!this.hasDisablesValue) return\n\n this.disableOthers()\n }\n\n ///\n /// private\n ///\n buildOrDestroyChildren() {\n if (this.checkboxTarget.checked) {\n this.buildChildren()\n } else {\n this.destroyChildren()\n }\n }\n\n buildChildren() {\n this.childrenValue.reverse().forEach((child) => {\n const newElement = this.element.cloneNode(true)\n\n newElement.id = `${this.childNameValue}_${child.id}`\n newElement.lastElementChild.innerText = child.name\n newElement.lastElementChild.classList.add('pl-4', 'border-l-2', 'border-primary')\n\n newElement.removeAttribute('data-controller')\n newElement.removeAttribute('data-filter-section-filter-children-value')\n\n const newCheckbox = newElement.firstElementChild\n\n newCheckbox.id = `${this.childNameValue}_${child.id}`\n newCheckbox.name = this.childNameValue\n newCheckbox.value = child.id\n newCheckbox.checked = this.currentURL.searchParams.get(this.childNameValue)?.includes(child.id)\n newCheckbox.setAttribute('data-filter-group-target', 'childCheckbox')\n newCheckbox.setAttribute('data-action', 'change->filter-group#toggleOneChild')\n\n this.element.insertAdjacentElement('afterend', newElement)\n })\n\n const allElement = this.element.cloneNode(true)\n allElement.lastElementChild.innerText = this.allTextValue\n allElement.lastElementChild.classList.add('pl-4', 'border-l-2', 'border-primary')\n\n allElement.id = `${this.childNameValue}_all`\n allElement.removeAttribute('data-controller')\n allElement.removeAttribute('data-filter-section-filter-children-value')\n\n const allCheckbox = allElement.firstElementChild\n\n allCheckbox.checked = !this.currentURL.searchParams.has(this.childNameValue)\n allCheckbox.setAttribute('data-filter-group-target', 'childAll')\n allCheckbox.setAttribute('data-action', 'change->filter-group#selectAllChildren')\n allCheckbox.setAttribute('data-filter-group-child-name-param', this.childNameValue)\n allCheckbox.removeAttribute('name')\n allCheckbox.removeAttribute('value')\n\n this.element.insertAdjacentElement('afterend', allElement)\n\n this.dispatch('built')\n }\n\n destroyChildren() {\n document.querySelector(`#${this.childNameValue}_all`)?.remove()\n\n this.childrenValue.forEach((child) => {\n const id = `${this.childNameValue}_${child.id}`\n document.querySelector(`#${id}`)?.remove()\n })\n }\n\n disableOthers() {\n const filterNamesToDisable = this.disablesValue.split(',')\n const filterGroupElement = this.element.closest('.filter-group')\n filterNamesToDisable.forEach((filterName) => {\n const filterToDisable = filterGroupElement.querySelector(`#${filterName}`)\n\n if (!filterToDisable) return\n\n filterToDisable.checked = false\n })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['form', 'selectAll', 'checkbox', 'dropdown']\n\n dropdownTargetConnected() {\n this.handleCheckboxChange()\n }\n\n submit(event) {\n this.formTarget.action = event.params.url\n this.formTarget.requestSubmit()\n }\n\n updateSelectAll() {\n this.checkboxTargets.forEach((checkbox) => {\n checkbox.checked = this.selectAllTarget.checked\n })\n this.handleCheckboxChange()\n }\n\n handleCheckboxChange() {\n if (this.checkboxTargets.some((checkbox) => checkbox.checked)) {\n this.dropdownTarget.classList.remove('disabled')\n } else {\n this.dropdownTarget.classList.add('disabled')\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = { prevEndDate: String, prevKind: String }\n static targets = [\n 'disabler',\n 'input',\n 'submit',\n 'dateField',\n 'attendanceField',\n 'dateRadio',\n 'attendanceRadio',\n 'unlimitedRadio',\n 'programLabel',\n 'prevExpiration',\n 'prevUnlimited',\n ]\n\n checkboxBehavior(event) {\n if (event.target.id === 'date') {\n this.enableDateField()\n this.dateRadioTarget.checked = true\n } else if (event.target.id === 'attendance') {\n this.enableAttendanceField()\n this.programLabelTarget.classList.add('required')\n this.attendanceRadioTarget.checked = true\n } else {\n if (this.hasDateFieldTarget) {\n this.disableDateField()\n } else {\n this.disableAttendanceField()\n this.programLabelTarget.classList.remove('required')\n }\n this.unlimitedRadioTarget.checked = true\n }\n }\n\n checkInactivate() {\n this.inputTargets.forEach((inputTarget) => {\n inputTarget.checked = !this.disablerTarget.checked\n inputTarget.disabled = !this.disablerTarget.checked\n })\n }\n\n enableDateField() {\n this.dateFieldTarget.nextSibling.classList.add('!border-kicksite-yellow-600')\n this.dateFieldTarget.disabled = false\n this.dateFieldTarget.nextSibling.disabled = false\n }\n\n disableDateField() {\n this.dateFieldTarget.nextSibling.classList.remove('!border-kicksite-yellow-600')\n this.dateFieldTarget.nextSibling.disabled = true\n }\n\n enableAttendanceField() {\n this.attendanceFieldTarget.classList.add('!border-kicksite-yellow-600')\n this.attendanceFieldTarget.disabled = false\n }\n\n disableAttendanceField() {\n this.attendanceFieldTarget.classList.remove('!border-kicksite-yellow-600')\n this.attendanceFieldTarget.disabled = true\n }\n\n checkPreviousValue() {\n if (this.unlimitedRadioTarget.checked) {\n if (this.prevKindValue === 'unlimited') {\n this.prevUnlimitedTarget.classList.add('hidden')\n this.prevExpirationTarget.classList.add('hidden')\n } else {\n this.prevUnlimitedTarget.classList.remove('hidden')\n this.prevExpirationTarget.classList.add('hidden')\n }\n } else if (this.dateRadioTarget.checked) {\n if (this.prevKindValue === 'unlimited' || this.prevEndDateValue !== this.dateFieldTarget.value) {\n this.prevExpirationTarget.classList.remove('hidden')\n this.prevUnlimitedTarget.classList.add('hidden')\n } else if (this.prevEndDateValue === this.dateFieldTarget.value) {\n this.prevExpirationTarget.classList.add('hidden')\n this.prevUnlimitedTarget.classList.add('hidden')\n }\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['backdateNotice']\n static outlets = ['flatpickr']\n\n dateChange() {\n const dateValue = this.flatpickrOutlet.fp.selectedDates[0]\n dateValue.setHours(0, 0, 0, 0)\n const currentDate = new Date()\n currentDate.setHours(0, 0, 0, 0)\n\n if (new Date(dateValue) < currentDate) {\n this.backdateNoticeTarget.classList.remove('hidden')\n } else {\n this.backdateNoticeTarget.classList.add('hidden')\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['rbToggle', 'submit', 'rbSection', 'rbResumeDate', 'membershipResumeDate']\n\n toggleRecurringBilling() {\n if (this.rbToggleTarget.checked) {\n this.rbSectionTarget.classList.remove('hidden')\n } else {\n this.rbSectionTarget.classList.add('hidden')\n }\n this.checkSubmit()\n }\n\n checkSubmit() {\n if (this.membershipResumeDateTarget.value === '') {\n this.disableSubmit()\n return\n }\n\n if (this.hasRbResumeDateTarget) {\n if (this.rbResumeDateTarget.value === '') {\n this.disableSubmit()\n } else {\n this.enableSubmit()\n }\n } else {\n this.enableSubmit()\n }\n }\n\n enableSubmit() {\n this.submitTarget.disabled = false\n }\n\n disableSubmit() {\n this.submitTarget.disabled = true\n }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n SCROLL_OFFSET = 200\n\n connect() {\n this.scrollToError()\n }\n\n scrollToError() {\n if (!this.input) return\n\n window.scrollTo({ top: this.scrollTop, behavior: 'smooth' })\n\n this.input.focus()\n }\n\n ///\n /// private\n ///\n\n get scrollTop() {\n return this.input.getBoundingClientRect().top + window.scrollY - this.SCROLL_OFFSET\n }\n\n get input() {\n let input = this.element.querySelector('.input-danger')\n input ||= this.element.querySelector('.\\\\!input-danger')\n\n return input\n }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n static outlets = ['payment-processing']\n static targets = ['tab', 'cc', 'magstripe']\n\n showCc({ target }) {\n this.resetTabs()\n\n target.classList.add('active')\n\n this.ccTarget.classList.remove('hidden')\n this.magstripeTarget.classList.add('hidden')\n\n this.disableMagstripeFields()\n this.enableCcFields()\n\n if (this.hasPaymentProcessingOutlet) {\n this.paymentProcessingOutlet.bindSubmit()\n }\n }\n\n showMagstripe({ target }) {\n this.resetTabs()\n\n target.classList.add('active')\n\n this.ccTarget.classList.add('hidden')\n this.magstripeTarget.classList.remove('hidden')\n\n this.disableCcFields()\n this.enableMagstripeFields()\n\n if (this.hasPaymentProcessingOutlet) {\n this.paymentProcessingOutlet.unbindSubmit()\n }\n }\n\n ///\n /// private\n ///\n\n resetTabs() {\n this.tabTargets.forEach((tab) => tab.classList.remove('active'))\n }\n\n disableCcFields() {\n this.disableFieldsFor(this.ccTarget)\n }\n\n enableCcFields() {\n this.enableFieldsFor(this.ccTarget)\n }\n\n disableMagstripeFields() {\n this.disableFieldsFor(this.magstripeTarget)\n }\n\n enableMagstripeFields() {\n this.enableFieldsFor(this.magstripeTarget)\n }\n\n disableFieldsFor(element) {\n element.querySelectorAll('input').forEach((input) => {\n input.disabled = true\n })\n }\n\n enableFieldsFor(element) {\n element.querySelectorAll('input').forEach((input) => {\n input.disabled = false\n })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['total', 'adjustment', 'newTotal']\n static values = { code: String, exponent: Number }\n\n subtract() {\n const total = this.parseTotalTarget\n const adjustment = parseFloat(this.adjustmentTarget.value)\n this.newTotalTarget.innerText = this.constructDisplayValue(total - adjustment)\n }\n\n resetFields({ target: { defaultValue } }) {\n if (defaultValue === 'write_off') {\n this.adjustmentTarget.value = this.parseTotalTarget\n } else {\n this.adjustmentTarget.value = 0\n }\n this.subtract()\n }\n\n constructDisplayValue(newTotal) {\n const options = {\n minimumFractionDigits: this.exponentValue,\n maximumFractionDigits: this.exponentValue,\n style: 'currency',\n currency: this.codeValue,\n }\n const result = new Intl.NumberFormat(this.codeValue, options).format(newTotal * this.subunitMultiplier)\n\n return result\n }\n\n get subunitMultiplier() {\n return 10 ** -this.exponentValue\n }\n\n get parseTotalTarget() {\n return parseFloat(this.totalTarget.innerText.replace(/[^0-9|-]/g, ''))\n }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n static values = { invoiceCount: Number, total: Number }\n static targets = ['input', 'more', 'total', 'complete']\n\n updateTotals() {\n if (!this.hasCompleteTarget) return\n\n if (this.inputTarget.disabled) {\n this.completeTarget.classList.add('hidden')\n return\n }\n\n let value = Number(this.inputTarget.value)\n\n if (value < this.invoiceCountValue) {\n value = this.invoiceCountValue\n }\n\n this.totalValue = value\n\n if (!this.inputTarget.value) {\n this.completeTarget.classList.add('hidden')\n return\n }\n\n if (this.moreValue > 0) {\n this.completeTarget.classList.add('hidden')\n } else {\n this.completeTarget.classList.remove('hidden')\n }\n }\n\n totalValueChanged() {\n if (!this.hasTotalTarget) return\n if (!this.hasMoreTarget) return\n\n this.totalTarget.textContent = this.totalValue\n this.moreTarget.textContent = this.moreValue\n }\n\n get moreValue() {\n const value = this.totalValue - this.invoiceCountValue\n\n if (value < 0) return 0\n\n return value\n }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n static values = { attendanceCount: Number, total: Number }\n static targets = ['input', 'more', 'total', 'expired']\n\n updateTotals() {\n if (this.inputTarget.disabled) {\n this.expiredTarget.classList.add('hidden')\n return\n }\n\n let value = Number(this.inputTarget.value)\n\n if (value < this.attendanceCountValue) {\n value = this.attendanceCountValue\n }\n\n this.totalValue = value\n\n if (!this.inputTarget.value) {\n this.expiredTarget.classList.add('hidden')\n this.moreTarget.parentElement.classList.remove('text-danger-600')\n return\n }\n\n if (this.moreValue > 0) {\n this.expiredTarget.classList.add('hidden')\n this.moreTarget.parentElement.classList.remove('text-danger-600')\n } else {\n this.expiredTarget.classList.remove('hidden')\n this.moreTarget.parentElement.classList.add('text-danger-600')\n }\n }\n\n totalValueChanged() {\n if (!this.hasTotalTarget) return\n if (!this.hasMoreTarget) return\n\n this.totalTarget.textContent = this.totalValue\n this.moreTarget.textContent = this.moreValue\n }\n\n get moreValue() {\n const value = this.totalValue - this.attendanceCountValue\n if (value < 0) return 0\n\n return value\n }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n static targets = ['sendEmail', 'agreementDropdown', 'emailInput']\n static outlets = ['tooltip']\n static values = { needsAgreement: String, needsEmail: String }\n\n toggleEmailButton() {\n if (!this.hasAgreementSelected) {\n this.tooltipOutlet.swapText({ params: { text: this.needsAgreementValue } })\n } else if (!this.emailInputValid) {\n this.tooltipOutlet.swapText({ params: { text: this.needsEmailValue } })\n }\n\n if (this.hasAgreementSelected && this.emailInputValid) {\n this.enableEmailButton()\n } else {\n this.disableEmailButton()\n }\n }\n\n ///\n /// private\n ///\n\n enableEmailButton() {\n this.sendEmailTarget.disabled = false\n this.sendEmailTarget.checked = true\n\n this.tooltipOutlet.off()\n }\n\n disableEmailButton() {\n this.sendEmailTarget.disabled = true\n this.sendEmailTarget.checked = false\n\n this.tooltipOutlet.on()\n }\n\n get hasAgreementSelected() {\n return !isNaN(parseInt(this.agreementDropdownTarget.value))\n }\n\n get emailInputValid() {\n return this.emailInputTarget.value.length > 0\n }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nimport { useClickOutside, useDebounce } from 'stimulus-use'\n\nexport default class extends ApplicationController {\n static targets = ['result', 'form', 'search', 'close', 'input']\n static debounces = ['search']\n\n initialize() {\n useDebounce(this, { wait: 600 })\n useClickOutside(this)\n }\n\n openSearch() {\n this.searchTarget.classList.remove('soft-hidden')\n this.closeTarget.classList.remove('soft-hidden')\n this.inputTarget.focus()\n\n this.element.classList.remove('md:w-48', 'md:w-72', 'relative')\n this.element.classList.add('w-full', 'absolute')\n }\n\n closeSearch() {\n this.searchTarget.classList.add('soft-hidden')\n this.closeTarget.classList.add('soft-hidden')\n\n this.element.classList.remove('w-full', 'absolute')\n this.element.classList.add('relative')\n }\n\n clickOutside() {\n this.element.classList.add('md:w-48')\n this.element.classList.remove('md:w-72')\n this.resultTarget.classList.add('hidden')\n this.closeSearch()\n }\n\n focus() {\n this.element.classList.remove('md:w-48')\n this.element.classList.add('md:w-72')\n\n if (this.resultTarget.dataset.resultSize > 0) {\n this.resultTarget.classList.remove('hidden')\n }\n }\n\n search() {\n this.formTarget.requestSubmit()\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n toggleBorder({ currentTarget }) {\n let classDetails = this.element.querySelectorAll('.class_detail.border-kicksite-yellow-600')\n\n classDetails.forEach((currentElement) => {\n currentElement.classList.toggle('border-kicksite-yellow-600')\n currentElement.classList.toggle('border-primary')\n })\n\n currentTarget.classList.toggle('border-primary')\n currentTarget.classList.toggle('border-kicksite-yellow-600')\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['form', 'selectAll', 'checkbox', 'program', 'promotionDate', 'submit']\n\n static values = { progressText: String }\n\n submitTargetConnected() {\n this.handleCheckboxChange()\n }\n\n updateSelectAll() {\n this.checkboxTargets.forEach((checkbox) => {\n checkbox.checked = this.selectAllTarget.checked\n })\n this.handleCheckboxChange()\n }\n\n handleCheckboxChange() {\n if (this.checkboxTargets.some((checkbox) => checkbox.checked)) {\n this.submitTarget.classList.remove('disabled')\n this.submitTarget.disabled = false\n } else {\n this.submitTarget.classList.add('disabled')\n this.submitTarget.disabled = true\n }\n }\n\n displayInProgress() {\n if (!this.promotionDateTarget.value) {\n return\n }\n\n this.programTarget.nextSibling.querySelector('.ts-control').classList.add('disabled')\n this.submitTarget.classList.add('disabled')\n this.submitTarget.disabled = true\n this.submitTarget.value = this.progressTextValue\n this.promotionDateTarget.nextSibling.disabled = true\n }\n}\n", "import ApplicationController from './application_controller'\nimport consumer from '../channels/consumer'\n\nexport default class extends ApplicationController {\n static targets = ['progress']\n\n static values = { current: Number, max: Number, channel: String }\n completed = false\n total = 0\n failures = 0\n\n connect() {\n this.channel = this.createChannel(this)\n document.addEventListener(\n 'turbo:submit-end',\n () => {\n this.dispatch('begin-action', { bubbles: true })\n },\n { once: true },\n )\n }\n\n createChannel(self) {\n return consumer.subscriptions.create(this.channelValue, {\n received: (data) => {\n if (data.status === 'start') {\n self.maxValue = data.max\n self.updateMaxValue()\n } else if (data.status === 'success') {\n self.incrementProgress()\n } else if (data.status === 'complete') {\n self.completed = true\n self.total = data.total\n self.failures = data.failures\n\n self.displayProgressFailures()\n }\n },\n })\n }\n\n incrementProgress() {\n this.currentValue += 1\n\n this.displayProgress()\n }\n\n updateMaxValue() {\n this.progressTarget.setAttribute('max', this.maxValue)\n }\n\n displayProgress() {\n if (!this.hasProgressTarget) return\n\n this.progressTarget.setAttribute('value', this.currentValue)\n }\n\n displayProgressFailures() {\n if (!this.hasProgressTarget) return\n if (this.failures === 0) return\n\n this.progressTarget.classList.add('progress-with-failures')\n }\n}\n", "/**\n * Fuse.js v7.0.0 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2023 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n return !Array.isArray\n ? getTag(value) === '[object Array]'\n : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value\n }\n let result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n return (\n value === true ||\n value === false ||\n (isObjectLike(value) && getTag(value) == '[object Boolean]')\n )\n}\n\nfunction isObject(value) {\n return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n return value == null\n ? value === undefined\n ? '[object Undefined]'\n : '[object Null]'\n : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n constructor(keys) {\n this._keys = [];\n this._keyMap = {};\n\n let totalWeight = 0;\n\n keys.forEach((key) => {\n let obj = createKey(key);\n\n this._keys.push(obj);\n this._keyMap[obj.id] = obj;\n\n totalWeight += obj.weight;\n });\n\n // Normalize weights so that their sum is equal to 1\n this._keys.forEach((key) => {\n key.weight /= totalWeight;\n });\n }\n get(keyId) {\n return this._keyMap[keyId]\n }\n keys() {\n return this._keys\n }\n toJSON() {\n return JSON.stringify(this._keys)\n }\n}\n\nfunction createKey(key) {\n let path = null;\n let id = null;\n let src = null;\n let weight = 1;\n let getFn = null;\n\n if (isString(key) || isArray(key)) {\n src = key;\n path = createKeyPath(key);\n id = createKeyId(key);\n } else {\n if (!hasOwn.call(key, 'name')) {\n throw new Error(MISSING_KEY_PROPERTY('name'))\n }\n\n const name = key.name;\n src = name;\n\n if (hasOwn.call(key, 'weight')) {\n weight = key.weight;\n\n if (weight <= 0) {\n throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n }\n }\n\n path = createKeyPath(name);\n id = createKeyId(name);\n getFn = key.getFn;\n }\n\n return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n let list = [];\n let arr = false;\n\n const deepGet = (obj, path, index) => {\n if (!isDefined(obj)) {\n return\n }\n if (!path[index]) {\n // If there's no path left, we've arrived at the object we care about.\n list.push(obj);\n } else {\n let key = path[index];\n\n const value = obj[key];\n\n if (!isDefined(value)) {\n return\n }\n\n // If we're at the last value in the path, and if it's a string/number/bool,\n // add it to the list\n if (\n index === path.length - 1 &&\n (isString(value) || isNumber(value) || isBoolean(value))\n ) {\n list.push(toString(value));\n } else if (isArray(value)) {\n arr = true;\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepGet(value[i], path, index + 1);\n }\n } else if (path.length) {\n // An object. Recurse further.\n deepGet(value, path, index + 1);\n }\n }\n };\n\n // Backwards compatibility (since path used to be a string)\n deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n // Whether the matches should be included in the result set. When `true`, each record in the result\n // set will include the indices of the matched characters.\n // These can consequently be used for highlighting purposes.\n includeMatches: false,\n // When `true`, the matching function will continue to the end of a search pattern even if\n // a perfect match has already been located in the string.\n findAllMatches: false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n // When `true`, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n isCaseSensitive: false,\n // When true, the matching function will continue to the end of a search pattern even if\n includeScore: false,\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n // Whether to sort the result list, by score\n shouldSort: true,\n // Default sort function: sort by ascending score, ascending index\n sortFn: (a, b) =>\n a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100\n};\n\nconst AdvancedOptions = {\n // When `true`, it enables the use of unix-like search commands\n useExtendedSearch: false,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: get,\n // When `true`, search will ignore `location` and `distance`, so it won't matter\n // where in the string the pattern appears.\n // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n ignoreLocation: false,\n // When `true`, the calculation for the relevance score (used for sorting) will\n // ignore the field-length norm.\n // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n ignoreFieldNorm: false,\n // The weight to determine how much field length norm effects scoring.\n fieldNormWeight: 1\n};\n\nvar Config = {\n ...BasicOptions,\n ...MatchOptions,\n ...FuzzyOptions,\n ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n const cache = new Map();\n const m = Math.pow(10, mantissa);\n\n return {\n get(value) {\n const numTokens = value.match(SPACE).length;\n\n if (cache.has(numTokens)) {\n return cache.get(numTokens)\n }\n\n // Default function is 1/sqrt(x), weight makes that variable\n const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n // In place of `toFixed(mantissa)`, for faster computation\n const n = parseFloat(Math.round(norm * m) / m);\n\n cache.set(numTokens, n);\n\n return n\n },\n clear() {\n cache.clear();\n }\n }\n}\n\nclass FuseIndex {\n constructor({\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n } = {}) {\n this.norm = norm(fieldNormWeight, 3);\n this.getFn = getFn;\n this.isCreated = false;\n\n this.setIndexRecords();\n }\n setSources(docs = []) {\n this.docs = docs;\n }\n setIndexRecords(records = []) {\n this.records = records;\n }\n setKeys(keys = []) {\n this.keys = keys;\n this._keysMap = {};\n keys.forEach((key, idx) => {\n this._keysMap[key.id] = idx;\n });\n }\n create() {\n if (this.isCreated || !this.docs.length) {\n return\n }\n\n this.isCreated = true;\n\n // List is Array<String>\n if (isString(this.docs[0])) {\n this.docs.forEach((doc, docIndex) => {\n this._addString(doc, docIndex);\n });\n } else {\n // List is Array<Object>\n this.docs.forEach((doc, docIndex) => {\n this._addObject(doc, docIndex);\n });\n }\n\n this.norm.clear();\n }\n // Adds a doc to the end of the index\n add(doc) {\n const idx = this.size();\n\n if (isString(doc)) {\n this._addString(doc, idx);\n } else {\n this._addObject(doc, idx);\n }\n }\n // Removes the doc at the specified index of the index\n removeAt(idx) {\n this.records.splice(idx, 1);\n\n // Change ref index of every subsquent doc\n for (let i = idx, len = this.size(); i < len; i += 1) {\n this.records[i].i -= 1;\n }\n }\n getValueForItemAtKeyId(item, keyId) {\n return item[this._keysMap[keyId]]\n }\n size() {\n return this.records.length\n }\n _addString(doc, docIndex) {\n if (!isDefined(doc) || isBlank(doc)) {\n return\n }\n\n let record = {\n v: doc,\n i: docIndex,\n n: this.norm.get(doc)\n };\n\n this.records.push(record);\n }\n _addObject(doc, docIndex) {\n let record = { i: docIndex, $: {} };\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n this.keys.forEach((key, keyIndex) => {\n let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n if (!isDefined(value)) {\n return\n }\n\n if (isArray(value)) {\n let subRecords = [];\n const stack = [{ nestedArrIndex: -1, value }];\n\n while (stack.length) {\n const { nestedArrIndex, value } = stack.pop();\n\n if (!isDefined(value)) {\n continue\n }\n\n if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n i: nestedArrIndex,\n n: this.norm.get(value)\n };\n\n subRecords.push(subRecord);\n } else if (isArray(value)) {\n value.forEach((item, k) => {\n stack.push({\n nestedArrIndex: k,\n value: item\n });\n });\n } else ;\n }\n record.$[keyIndex] = subRecords;\n } else if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n n: this.norm.get(value)\n };\n\n record.$[keyIndex] = subRecord;\n }\n });\n\n this.records.push(record);\n }\n toJSON() {\n return {\n keys: this.keys,\n records: this.records\n }\n }\n}\n\nfunction createIndex(\n keys,\n docs,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys.map(createKey));\n myIndex.setSources(docs);\n myIndex.create();\n return myIndex\n}\n\nfunction parseIndex(\n data,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const { keys, records } = data;\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys);\n myIndex.setIndexRecords(records);\n return myIndex\n}\n\nfunction computeScore$1(\n pattern,\n {\n errors = 0,\n currentLocation = 0,\n expectedLocation = 0,\n distance = Config.distance,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n const accuracy = errors / pattern.length;\n\n if (ignoreLocation) {\n return accuracy\n }\n\n const proximity = Math.abs(expectedLocation - currentLocation);\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n\n return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n matchmask = [],\n minMatchCharLength = Config.minMatchCharLength\n) {\n let indices = [];\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i];\n if (match && start === -1) {\n start = i;\n } else if (!match && start !== -1) {\n end = i - 1;\n if (end - start + 1 >= minMatchCharLength) {\n indices.push([start, end]);\n }\n start = -1;\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n indices.push([start, i - 1]);\n }\n\n return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n text,\n pattern,\n patternAlphabet,\n {\n location = Config.location,\n distance = Config.distance,\n threshold = Config.threshold,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n includeMatches = Config.includeMatches,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n if (pattern.length > MAX_BITS) {\n throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n }\n\n const patternLen = pattern.length;\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length;\n // Handle the case when location > text.length\n const expectedLocation = Math.max(0, Math.min(location, textLen));\n // Highest score beyond which we give up.\n let currentThreshold = threshold;\n // Is there a nearby exact match? (speedup)\n let bestLocation = expectedLocation;\n\n // Performance: only computer matches when the minMatchCharLength > 1\n // OR if `includeMatches` is true.\n const computeMatches = minMatchCharLength > 1 || includeMatches;\n // A mask of the matches, used for building the indices\n const matchMask = computeMatches ? Array(textLen) : [];\n\n let index;\n\n // Get all exact matches, here for speed up\n while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n let score = computeScore$1(pattern, {\n currentLocation: index,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n currentThreshold = Math.min(score, currentThreshold);\n bestLocation = index + patternLen;\n\n if (computeMatches) {\n let i = 0;\n while (i < patternLen) {\n matchMask[index + i] = 1;\n i += 1;\n }\n }\n }\n\n // Reset the best location\n bestLocation = -1;\n\n let lastBitArr = [];\n let finalScore = 1;\n let binMax = patternLen + textLen;\n\n const mask = 1 << (patternLen - 1);\n\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0;\n let binMid = binMax;\n\n while (binMin < binMid) {\n const score = computeScore$1(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score <= currentThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid;\n\n let start = Math.max(1, expectedLocation - binMid + 1);\n let finish = findAllMatches\n ? textLen\n : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n // Initialize the bit array\n let bitArr = Array(finish + 2);\n\n bitArr[finish + 1] = (1 << i) - 1;\n\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1;\n let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n if (computeMatches) {\n // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n matchMask[currentLocation] = +!!charMatch;\n }\n\n // First pass: exact match\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n // Subsequent passes: fuzzy match\n if (i) {\n bitArr[j] |=\n ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n }\n\n if (bitArr[j] & mask) {\n finalScore = computeScore$1(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore;\n bestLocation = currentLocation;\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation);\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = computeScore$1(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score > currentThreshold) {\n break\n }\n\n lastBitArr = bitArr;\n }\n\n const result = {\n isMatch: bestLocation >= 0,\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n score: Math.max(0.001, finalScore)\n };\n\n if (computeMatches) {\n const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n if (!indices.length) {\n result.isMatch = false;\n } else if (includeMatches) {\n result.indices = indices;\n }\n }\n\n return result\n}\n\nfunction createPatternAlphabet(pattern) {\n let mask = {};\n\n for (let i = 0, len = pattern.length; i < len; i += 1) {\n const char = pattern.charAt(i);\n mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n }\n\n return mask\n}\n\nclass BitapSearch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n this.options = {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n this.chunks = [];\n\n if (!this.pattern.length) {\n return\n }\n\n const addChunk = (pattern, startIndex) => {\n this.chunks.push({\n pattern,\n alphabet: createPatternAlphabet(pattern),\n startIndex\n });\n };\n\n const len = this.pattern.length;\n\n if (len > MAX_BITS) {\n let i = 0;\n const remainder = len % MAX_BITS;\n const end = len - remainder;\n\n while (i < end) {\n addChunk(this.pattern.substr(i, MAX_BITS), i);\n i += MAX_BITS;\n }\n\n if (remainder) {\n const startIndex = len - MAX_BITS;\n addChunk(this.pattern.substr(startIndex), startIndex);\n }\n } else {\n addChunk(this.pattern, 0);\n }\n }\n\n searchIn(text) {\n const { isCaseSensitive, includeMatches } = this.options;\n\n if (!isCaseSensitive) {\n text = text.toLowerCase();\n }\n\n // Exact match\n if (this.pattern === text) {\n let result = {\n isMatch: true,\n score: 0\n };\n\n if (includeMatches) {\n result.indices = [[0, text.length - 1]];\n }\n\n return result\n }\n\n // Otherwise, use Bitap algorithm\n const {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n ignoreLocation\n } = this.options;\n\n let allIndices = [];\n let totalScore = 0;\n let hasMatches = false;\n\n this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n const { isMatch, score, indices } = search(text, pattern, alphabet, {\n location: location + startIndex,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n includeMatches,\n ignoreLocation\n });\n\n if (isMatch) {\n hasMatches = true;\n }\n\n totalScore += score;\n\n if (isMatch && indices) {\n allIndices = [...allIndices, ...indices];\n }\n });\n\n let result = {\n isMatch: hasMatches,\n score: hasMatches ? totalScore / this.chunks.length : 1\n };\n\n if (hasMatches && includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n}\n\nclass BaseMatch {\n constructor(pattern) {\n this.pattern = pattern;\n }\n static isMultiMatch(pattern) {\n return getMatch(pattern, this.multiRegex)\n }\n static isSingleMatch(pattern) {\n return getMatch(pattern, this.singleRegex)\n }\n search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n const matches = pattern.match(exp);\n return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'exact'\n }\n static get multiRegex() {\n return /^=\"(.*)\"$/\n }\n static get singleRegex() {\n return /^=(.*)$/\n }\n search(text) {\n const isMatch = text === this.pattern;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!(.*)$/\n }\n search(text) {\n const index = text.indexOf(this.pattern);\n const isMatch = index === -1;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'prefix-exact'\n }\n static get multiRegex() {\n return /^\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^\\^(.*)$/\n }\n search(text) {\n const isMatch = text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-prefix-exact'\n }\n static get multiRegex() {\n return /^!\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!\\^(.*)$/\n }\n search(text) {\n const isMatch = !text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'suffix-exact'\n }\n static get multiRegex() {\n return /^\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^(.*)\\$$/\n }\n search(text) {\n const isMatch = text.endsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [text.length - this.pattern.length, text.length - 1]\n }\n }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-suffix-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^!(.*)\\$$/\n }\n search(text) {\n const isMatch = !text.endsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\nclass FuzzyMatch extends BaseMatch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n super(pattern);\n this._bitapSearch = new BitapSearch(pattern, {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n });\n }\n static get type() {\n return 'fuzzy'\n }\n static get multiRegex() {\n return /^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^(.*)$/\n }\n search(text) {\n return this._bitapSearch.searchIn(text)\n }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'include'\n }\n static get multiRegex() {\n return /^'\"(.*)\"$/\n }\n static get singleRegex() {\n return /^'(.*)$/\n }\n search(text) {\n let location = 0;\n let index;\n\n const indices = [];\n const patternLen = this.pattern.length;\n\n // Get all exact matches\n while ((index = text.indexOf(this.pattern, location)) > -1) {\n location = index + patternLen;\n indices.push([index, location - 1]);\n }\n\n const isMatch = !!indices.length;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices\n }\n }\n}\n\n// \u2757Order is important. DO NOT CHANGE.\nconst searchers = [\n ExactMatch,\n IncludeMatch,\n PrefixExactMatch,\n InversePrefixExactMatch,\n InverseSuffixExactMatch,\n SuffixExactMatch,\n InverseExactMatch,\n FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n return pattern.split(OR_TOKEN).map((item) => {\n let query = item\n .trim()\n .split(SPACE_RE)\n .filter((item) => item && !!item.trim());\n\n let results = [];\n for (let i = 0, len = query.length; i < len; i += 1) {\n const queryItem = query[i];\n\n // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n let found = false;\n let idx = -1;\n while (!found && ++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isMultiMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n found = true;\n }\n }\n\n if (found) {\n continue\n }\n\n // 2. Handle single query matches (i.e, once that are *not* quoted)\n idx = -1;\n while (++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isSingleMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n break\n }\n }\n }\n\n return results\n })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token | Match type | Description |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript` | fuzzy-match | Items that fuzzy match `jscript` |\n * | `=scheme` | exact-match | Items that are `scheme` |\n * | `'python` | include-match | Items that include `python` |\n * | `!ruby` | inverse-exact-match | Items that do not include `ruby` |\n * | `^java` | prefix-exact-match | Items that start with `java` |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$` | suffix-exact-match | Items that end with `.js` |\n * | `!.go$` | inverse-suffix-exact-match | Items that do not end with `.go` |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n constructor(\n pattern,\n {\n isCaseSensitive = Config.isCaseSensitive,\n includeMatches = Config.includeMatches,\n minMatchCharLength = Config.minMatchCharLength,\n ignoreLocation = Config.ignoreLocation,\n findAllMatches = Config.findAllMatches,\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance\n } = {}\n ) {\n this.query = null;\n this.options = {\n isCaseSensitive,\n includeMatches,\n minMatchCharLength,\n findAllMatches,\n ignoreLocation,\n location,\n threshold,\n distance\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.query = parseQuery(this.pattern, this.options);\n }\n\n static condition(_, options) {\n return options.useExtendedSearch\n }\n\n searchIn(text) {\n const query = this.query;\n\n if (!query) {\n return {\n isMatch: false,\n score: 1\n }\n }\n\n const { includeMatches, isCaseSensitive } = this.options;\n\n text = isCaseSensitive ? text : text.toLowerCase();\n\n let numMatches = 0;\n let allIndices = [];\n let totalScore = 0;\n\n // ORs\n for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n const searchers = query[i];\n\n // Reset indices\n allIndices.length = 0;\n numMatches = 0;\n\n // ANDs\n for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n const searcher = searchers[j];\n const { isMatch, indices, score } = searcher.search(text);\n\n if (isMatch) {\n numMatches += 1;\n totalScore += score;\n if (includeMatches) {\n const type = searcher.constructor.type;\n if (MultiMatchSet.has(type)) {\n allIndices = [...allIndices, ...indices];\n } else {\n allIndices.push(indices);\n }\n }\n } else {\n totalScore = 0;\n numMatches = 0;\n allIndices.length = 0;\n break\n }\n }\n\n // OR condition, so if TRUE, return\n if (numMatches) {\n let result = {\n isMatch: true,\n score: totalScore / numMatches\n };\n\n if (includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n }\n\n // Nothing was matched\n return {\n isMatch: false,\n score: 1\n }\n }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n let searcherClass = registeredSearchers[i];\n if (searcherClass.condition(pattern, options)) {\n return new searcherClass(pattern, options)\n }\n }\n\n return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n AND: '$and',\n OR: '$or'\n};\n\nconst KeyType = {\n PATH: '$path',\n PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n [key]: query[key]\n }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n const next = (query) => {\n let keys = Object.keys(query);\n\n const isQueryPath = isPath(query);\n\n if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n return next(convertToExplicit(query))\n }\n\n if (isLeaf(query)) {\n const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n if (!isString(pattern)) {\n throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n }\n\n const obj = {\n keyId: createKeyId(key),\n pattern\n };\n\n if (auto) {\n obj.searcher = createSearcher(pattern, options);\n }\n\n return obj\n }\n\n let node = {\n children: [],\n operator: keys[0]\n };\n\n keys.forEach((key) => {\n const value = query[key];\n\n if (isArray(value)) {\n value.forEach((item) => {\n node.children.push(next(item));\n });\n }\n });\n\n return node\n };\n\n if (!isExpression(query)) {\n query = convertToExplicit(query);\n }\n\n return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n results,\n { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n results.forEach((result) => {\n let totalScore = 1;\n\n result.matches.forEach(({ key, norm, score }) => {\n const weight = key ? key.weight : null;\n\n totalScore *= Math.pow(\n score === 0 && weight ? Number.EPSILON : score,\n (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n );\n });\n\n result.score = totalScore;\n });\n}\n\nfunction transformMatches(result, data) {\n const matches = result.matches;\n data.matches = [];\n\n if (!isDefined(matches)) {\n return\n }\n\n matches.forEach((match) => {\n if (!isDefined(match.indices) || !match.indices.length) {\n return\n }\n\n const { indices, value } = match;\n\n let obj = {\n indices,\n value\n };\n\n if (match.key) {\n obj.key = match.key.src;\n }\n\n if (match.idx > -1) {\n obj.refIndex = match.idx;\n }\n\n data.matches.push(obj);\n });\n}\n\nfunction transformScore(result, data) {\n data.score = result.score;\n}\n\nfunction format(\n results,\n docs,\n {\n includeMatches = Config.includeMatches,\n includeScore = Config.includeScore\n } = {}\n) {\n const transformers = [];\n\n if (includeMatches) transformers.push(transformMatches);\n if (includeScore) transformers.push(transformScore);\n\n return results.map((result) => {\n const { idx } = result;\n\n const data = {\n item: docs[idx],\n refIndex: idx\n };\n\n if (transformers.length) {\n transformers.forEach((transformer) => {\n transformer(result, data);\n });\n }\n\n return data\n })\n}\n\nclass Fuse {\n constructor(docs, options = {}, index) {\n this.options = { ...Config, ...options };\n\n if (\n this.options.useExtendedSearch &&\n !true\n ) {\n throw new Error(EXTENDED_SEARCH_UNAVAILABLE)\n }\n\n this._keyStore = new KeyStore(this.options.keys);\n\n this.setCollection(docs, index);\n }\n\n setCollection(docs, index) {\n this._docs = docs;\n\n if (index && !(index instanceof FuseIndex)) {\n throw new Error(INCORRECT_INDEX_TYPE)\n }\n\n this._myIndex =\n index ||\n createIndex(this.options.keys, this._docs, {\n getFn: this.options.getFn,\n fieldNormWeight: this.options.fieldNormWeight\n });\n }\n\n add(doc) {\n if (!isDefined(doc)) {\n return\n }\n\n this._docs.push(doc);\n this._myIndex.add(doc);\n }\n\n remove(predicate = (/* doc, idx */) => false) {\n const results = [];\n\n for (let i = 0, len = this._docs.length; i < len; i += 1) {\n const doc = this._docs[i];\n if (predicate(doc, i)) {\n this.removeAt(i);\n i -= 1;\n len -= 1;\n\n results.push(doc);\n }\n }\n\n return results\n }\n\n removeAt(idx) {\n this._docs.splice(idx, 1);\n this._myIndex.removeAt(idx);\n }\n\n getIndex() {\n return this._myIndex\n }\n\n search(query, { limit = -1 } = {}) {\n const {\n includeMatches,\n includeScore,\n shouldSort,\n sortFn,\n ignoreFieldNorm\n } = this.options;\n\n let results = isString(query)\n ? isString(this._docs[0])\n ? this._searchStringList(query)\n : this._searchObjectList(query)\n : this._searchLogical(query);\n\n computeScore(results, { ignoreFieldNorm });\n\n if (shouldSort) {\n results.sort(sortFn);\n }\n\n if (isNumber(limit) && limit > -1) {\n results = results.slice(0, limit);\n }\n\n return format(results, this._docs, {\n includeMatches,\n includeScore\n })\n }\n\n _searchStringList(query) {\n const searcher = createSearcher(query, this.options);\n const { records } = this._myIndex;\n const results = [];\n\n // Iterate over every string in the index\n records.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n results.push({\n item: text,\n idx,\n matches: [{ score, value: text, norm, indices }]\n });\n }\n });\n\n return results\n }\n\n _searchLogical(query) {\n\n const expression = parse(query, this.options);\n\n const evaluate = (node, item, idx) => {\n if (!node.children) {\n const { keyId, searcher } = node;\n\n const matches = this._findMatches({\n key: this._keyStore.get(keyId),\n value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n searcher\n });\n\n if (matches && matches.length) {\n return [\n {\n idx,\n item,\n matches\n }\n ]\n }\n\n return []\n }\n\n const res = [];\n for (let i = 0, len = node.children.length; i < len; i += 1) {\n const child = node.children[i];\n const result = evaluate(child, item, idx);\n if (result.length) {\n res.push(...result);\n } else if (node.operator === LogicalOperator.AND) {\n return []\n }\n }\n return res\n };\n\n const records = this._myIndex.records;\n const resultMap = {};\n const results = [];\n\n records.forEach(({ $: item, i: idx }) => {\n if (isDefined(item)) {\n let expResults = evaluate(expression, item, idx);\n\n if (expResults.length) {\n // Dedupe when adding\n if (!resultMap[idx]) {\n resultMap[idx] = { idx, item, matches: [] };\n results.push(resultMap[idx]);\n }\n expResults.forEach(({ matches }) => {\n resultMap[idx].matches.push(...matches);\n });\n }\n }\n });\n\n return results\n }\n\n _searchObjectList(query) {\n const searcher = createSearcher(query, this.options);\n const { keys, records } = this._myIndex;\n const results = [];\n\n // List is Array<Object>\n records.forEach(({ $: item, i: idx }) => {\n if (!isDefined(item)) {\n return\n }\n\n let matches = [];\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n keys.forEach((key, keyIndex) => {\n matches.push(\n ...this._findMatches({\n key,\n value: item[keyIndex],\n searcher\n })\n );\n });\n\n if (matches.length) {\n results.push({\n idx,\n item,\n matches\n });\n }\n });\n\n return results\n }\n _findMatches({ key, value, searcher }) {\n if (!isDefined(value)) {\n return []\n }\n\n let matches = [];\n\n if (isArray(value)) {\n value.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({\n score,\n key,\n value: text,\n idx,\n norm,\n indices\n });\n }\n });\n } else {\n const { v: text, n: norm } = value;\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({ score, key, value: text, norm, indices });\n }\n }\n\n return matches\n }\n}\n\nFuse.version = '7.0.0';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n Fuse.parseQuery = parse;\n}\n\n{\n register(ExtendedSearch);\n}\n\nexport { Fuse as default };\n", "import ApplicationController from './application_controller'\nimport Fuse from 'fuse.js'\nimport { useClickOutside, useHotkeys } from 'stimulus-use'\n\nexport default class extends ApplicationController {\n static targets = ['aside', 'search', 'link', 'divider']\n static outlets = ['sidebar--component']\n\n connect() {\n useHotkeys(this, {\n hotkeys: {\n '/': {\n handler: (event) => {\n event.preventDefault()\n this.open()\n },\n options: {\n keydown: true,\n keyup: false,\n },\n },\n escape: {\n handler: (event) => {\n event.preventDefault()\n this.close()\n },\n options: {\n keydown: true,\n keyup: false,\n },\n },\n },\n filter: (event) => {\n if (!event.key) return\n\n const { tagName } = event.target\n const disallowedField =\n event.target.isContentEditable ||\n ((tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') && !event.target.readOnly)\n\n return event.key === 'Escape' || !disallowedField\n },\n })\n\n useClickOutside(this, { element: this.asideTarget, events: ['mousedown'] })\n }\n\n open() {\n this.asideTarget.classList.remove('hidden')\n\n this.focusSearchField()\n }\n\n close() {\n this.asideTarget.classList.add('hidden')\n\n this.sidebarComponentOutlet.close()\n this.resetSearch()\n }\n\n resetSearch() {\n this.searchTarget.value = ''\n this.showAllLinks()\n this.focusSearchField()\n }\n\n filter(event) {\n if (event.key === 'Tab') return\n\n if (!this.searchTarget.value) {\n this.showAllLinks()\n\n return\n }\n\n const fuse = new Fuse(this.fuseList, {\n includeScore: true,\n keys: [\n {\n name: 'title',\n weight: 0.7,\n },\n {\n name: 'tags',\n weight: 0.3,\n },\n ],\n })\n const results = fuse.search(this.searchTarget.value).filter((result) => result.score <= 0.5)\n\n this.hideAllLinks()\n results.forEach(({ item: { element } }) => {\n element.classList.remove('hidden')\n if (element.hasAttribute('data-section')) return\n\n const section = element.closest('[data-section]')\n section.classList.remove('hidden')\n\n if (!section.hasAttribute('data-controller')) return\n\n section.classList.remove('collapsed')\n })\n\n this.dividerTargets.forEach((divider) => {\n const shownElementAboveDivider = shownElementAbove(divider)\n const shownElementBelowDivider = shownElementBelow(divider)\n\n if (shownElementAboveDivider && shownElementBelowDivider) {\n divider.classList.remove('hidden')\n }\n })\n }\n\n clickOutside() {\n if (this.asideTarget.classList.contains('hidden')) return\n\n this.close()\n }\n\n ///\n /// private\n ///\n\n get fuseList() {\n return this.linkTargets.map((link) => ({\n title: link.innerText,\n element: link,\n tags: link.dataset.tags,\n }))\n }\n\n focusSearchField() {\n this.searchTarget.focus()\n }\n\n showAllLinks() {\n this.linkTargets.forEach((link) => {\n link.classList.remove('hidden')\n if (!link.hasAttribute('data-section')) {\n const section = link.closest('[data-section]')\n\n section.classList.remove('hidden')\n\n if (!section.hasAttribute('data-controller')) return\n\n section.classList.add('collapsed')\n }\n })\n\n this.dividerTargets.forEach((divider) => {\n divider.classList.remove('hidden')\n })\n }\n\n hideAllLinks() {\n this.linkTargets.forEach((link) => {\n link.classList.add('hidden')\n if (!link.hasAttribute('data-section')) {\n link.closest('[data-section]').classList.add('hidden')\n }\n })\n\n this.dividerTargets.forEach((divider) => {\n divider.classList.add('hidden')\n })\n }\n}\n\nfunction shownElementAbove(element) {\n let previousElement = element.previousElementSibling\n while (previousElement && previousElement.tagName !== 'DIV') {\n if (!previousElement.classList.contains('hidden')) {\n return true\n }\n\n previousElement = previousElement.previousElementSibling\n }\n\n return false\n}\n\nfunction shownElementBelow(element) {\n let nextElement = element.nextElementSibling\n while (nextElement && nextElement.tagName !== 'DIV') {\n if (!nextElement.classList.contains('hidden')) {\n return true\n }\n\n nextElement = nextElement.nextElementSibling\n }\n\n return false\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\n\nexport default class extends Controller {\n static outlets = ['searchable-person-field']\n static targets = ['quantity']\n static values = { url: String }\n\n searchablePersonFieldOutletConnected() {\n // This is a bit hacky, but we need to wait for the modal to fully\n // open before focusing, which takes ~250ms\n setTimeout(() => {\n this.#focusPersonField()\n }, 250)\n }\n\n refreshFrame({ target: { form } }) {\n const params = new URLSearchParams(new FormData(form))\n params.delete('utf8')\n params.delete('authenticity_token')\n const src = `${this.urlValue}?${params.toString()}`\n\n Turbo.visit(src, { frame: 'ranks_programs' })\n }\n\n showQuantity() {\n this.#focusPersonField()\n\n if (!this.hasQuantityTarget) return\n\n this.quantityTarget.hidden = false\n }\n\n hideQuantity() {\n this.#focusPersonField()\n\n if (!this.hasQuantityTarget) return\n\n this.quantityTarget.hidden = true\n }\n\n #focusPersonField() {\n if (!this.hasSearchablePersonFieldOutlet) return\n if (this.searchablePersonFieldOutlet.element.value) return\n\n this.searchablePersonFieldOutlet.tomSelect.focus()\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\n\nexport default class extends Controller {\n static values = { url: String }\n\n refreshFrame(event) {\n const params = new URLSearchParams(new FormData(event.target.form))\n const src = `${this.urlValue}?${params.toString()}`\n\n Turbo.visit(src, { frame: 'ranks_programs' })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nconst THIRTY_MEGABYTES = 1024 * 1024 * 30\nexport default class extends Controller {\n static targets = ['input', 'uploadedFiles', 'banner', 'fileArea']\n\n connect() {\n this.element\n .closest('form')\n .addEventListener('direct-uploads:start', this.#disableForm.bind(this), { once: true })\n }\n\n add({ dataTransfer }) {\n this.#addFiles(dataTransfer.files)\n\n this.#render()\n }\n\n remove({ params: { index } }) {\n this.#removeFile(index)\n\n this.#render()\n }\n\n fileSelected() {\n this.#render()\n }\n\n renderProgressBar({ detail: { id, file } }) {\n this.#renderWithProgressBar(id, file)\n }\n\n updateProgressBar({ detail: { id, progress } }) {\n this.#updateProgressBar(id, progress)\n }\n\n markUploaded({ detail: { id } }) {\n this.#markUploaded(id)\n }\n\n openFormField() {\n this.inputTarget.click()\n }\n\n #validateFileSize(file) {\n return file.size <= THIRTY_MEGABYTES\n }\n\n #validateFileType(file) {\n const type = file.type\n const accept = this.inputTarget.accept\n\n if (accept === '') return\n\n const acceptedTypes = accept.split(',').map((t) => t.trim())\n\n const fileTypeIsValid = acceptedTypes.some((acceptedType) => {\n const [typePrefix] = acceptedType.split('/')\n if (acceptedType.includes('*') && type.startsWith(typePrefix)) {\n return true\n } else if (type === acceptedType) {\n return true\n }\n\n return false\n })\n\n return fileTypeIsValid\n }\n\n #addFiles(otherFiles) {\n const dataTransfer = new DataTransfer()\n\n Array.from(this.inputTarget.files).forEach((file) => {\n dataTransfer.items.add(file)\n })\n\n Array.from(otherFiles).forEach((file) => {\n dataTransfer.items.add(file)\n })\n\n this.inputTarget.files = dataTransfer.files\n }\n\n #removeFile(index) {\n const files = Array.from(this.inputTarget.files)\n const dataTransfer = new DataTransfer()\n\n files.forEach((file, i) => {\n if (i !== index) {\n dataTransfer.items.add(file)\n }\n })\n\n this.inputTarget.files = dataTransfer.files\n }\n\n #render() {\n this.uploadedFilesTarget.innerHTML = ''\n\n if (this.inputTarget.files.length === 0) {\n this.#showBanner()\n this.#disableForm()\n\n return\n }\n\n this.#hideBanner()\n\n const fileData = this.#buildFileData()\n\n const allValid = fileData.every((file) => file.error === null)\n\n if (allValid) {\n this.#enableForm()\n } else {\n this.#disableForm()\n }\n\n fileData.forEach((file, index) => {\n this.#renderFile(file, index)\n })\n }\n\n #buildFileData() {\n return Array.from(this.inputTarget.files).map((file, index) => {\n let error = null\n\n if (!this.#validateFileSize(file)) {\n error = 'Too large.'\n }\n\n if (!this.#validateFileType(file)) {\n error = 'Invalid file type.'\n }\n\n return {\n name: file.name,\n size: this.#humanizeFileSize(file.size),\n index,\n error,\n }\n })\n }\n\n #renderFile(file, index) {\n const wrapper = document.createElement('div')\n wrapper.classList.add('flex', 'justify-between', 'gap-2', 'items-center', 'w-full')\n wrapper.dataset.index = index\n\n const html = `\n <div class=\"flex gap-4\">\n <span data-file-name class=\"truncate max-w-48\">${file.name}</span>\n <span data-file-text class=\"text-basic-700\">${file.size}</span>\n </div>\n\n <button type=\"button\" data-action=\"click->file-field#remove\" data-file-field-index-param=\"${index}\" \n class=\"text-danger-600 w-5 h-5\">\n <i class=\"fas fa-xmark w-5 h-5\"></i>\n </button>\n `\n\n wrapper.innerHTML = html\n\n if (file.error) {\n wrapper.querySelector('[data-file-text]').textContent = file.error\n wrapper.querySelector('[data-file-text]').classList.add('text-danger-600')\n wrapper.querySelector('[data-file-text]').classList.remove('text-basic-700')\n wrapper.querySelector('[data-file-name]').classList.add('line-through')\n wrapper.querySelector('[data-file-name]').classList.add('text-basic-700')\n }\n\n this.uploadedFilesTarget.insertAdjacentHTML('beforeend', wrapper.outerHTML)\n }\n\n #renderWithProgressBar(id, file) {\n const element = this.uploadedFilesTarget.querySelector('[data-index]')\n\n element.removeAttribute('data-index')\n element.id = `file-${id}`\n\n element.innerHTML = `\n <div class=\"flex flex-col gap-2 max-w-xs\">\n <span class=\"truncate\">${file.name}</span>\n <div class=\"flex gap-4 items-center\">\n <span class=\"text-basic-700\">Uploading...</span>\n <progress hidden class=\"progress progress-success h-2\" value=\"0\" max=\"100\"></progress>\n </div>\n </div>\n `\n }\n\n #updateProgressBar(fileIndex, progress) {\n const target = this.uploadedFilesTarget.querySelector(`#file-${fileIndex}`)\n\n target.querySelector('.progress').value = progress\n }\n\n #markUploaded(fileIndex) {\n const target = this.uploadedFilesTarget.querySelector(`#file-${fileIndex}`)\n\n target.querySelector('.text-basic-700').textContent = 'Uploaded.'\n }\n\n #showBanner() {\n this.bannerTarget.classList.remove('hidden')\n this.fileAreaTarget.classList.add('hidden')\n }\n\n #hideBanner() {\n this.bannerTarget.classList.add('hidden')\n this.fileAreaTarget.classList.remove('hidden')\n }\n\n #humanizeFileSize(size) {\n const i = Math.floor(Math.log(size) / Math.log(1024))\n const unit = ['B', 'KB', 'MB', 'GB', 'TB'][i]\n const humanSize = Number(size / 1024 ** i)\n .toFixed(1)\n .replace(/\\.0$/, '')\n\n return `${humanSize} ${unit}`\n }\n\n #enableForm() {\n const id = this.element.closest('form').id\n document.querySelector(`[form=\"${id}\"]`).disabled = false\n }\n\n #disableForm() {\n const id = this.element.closest('form').id\n document.querySelector(`[form=\"${id}\"]`).disabled = true\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [\n 'newContact',\n 'newStudent',\n 'existingPerson',\n 'newPersonForm',\n 'existingPersonForm',\n 'existingPersonField',\n 'exceedStudentLimit',\n 'submit',\n ]\n\n static values = { newStudentDisable: Boolean }\n\n toggleForm() {\n if (this.newStudentTarget.checked || this.newContactTarget.checked) {\n this.existingPersonFieldTarget.tomselect.disable()\n if (this.newStudentTarget.checked && this.newStudentDisableValue) {\n this.existingPersonFormTarget.classList.add('hidden')\n this.exceedStudentLimitTarget.classList.remove('hidden')\n this.newPersonFormTarget.classList.add('hidden')\n this.submitTarget.classList.add('hidden')\n } else {\n this.newPersonFormTarget.classList.remove('hidden')\n this.existingPersonFormTarget.classList.add('hidden')\n this.exceedStudentLimitTarget.classList.add('hidden')\n this.submitTarget.classList.remove('hidden')\n }\n } else if (this.existingPersonTarget.checked) {\n this.existingPersonFieldTarget.tomselect.enable()\n this.newPersonFormTarget.classList.add('hidden')\n this.existingPersonFormTarget.classList.remove('hidden')\n this.exceedStudentLimitTarget.classList.add('hidden')\n this.submitTarget.classList.remove('hidden')\n }\n }\n}\n", "/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n", "import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n", "function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n", "import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n return topLayerSelectors.some(selector => {\n try {\n return floating.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element) || isTopLayer(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(data.floating))\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, flip, hide, inline, limitShift, platform, shift, size };\n", "import { Controller } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\nimport { computePosition, offset, flip, autoUpdate } from '@floating-ui/dom'\nimport { useClickOutside } from 'stimulus-use'\nimport { elementIsVisible } from '../../javascript/helpers/visibility_helper'\n\nexport default class extends Controller {\n static targets = ['body']\n static values = { hoverTime: { type: Number, default: 300 } }\n\n #timeoutId = null\n\n connect() {\n useClickOutside(this, { element: this.bodyTarget })\n }\n\n show({ target, params: { placement, id } }) {\n this.#timeoutId = setTimeout(() => this.#showBody(target, placement, id), this.hoverTimeValue)\n }\n\n hide() {\n if (!this.#timeoutId) return\n\n clearTimeout(this.#timeoutId)\n\n this.bodyTarget.hidden = true\n\n if (!this.cleanup) return\n\n this.cleanup()\n }\n\n clickOutside() {\n this.hide()\n }\n\n #showBody(target, placement, id) {\n Turbo.visit(`/people/${id}/hovercard`, { frame: 'person_hovercard' })\n\n addEventListener(\n 'turbo:frame-render',\n () => {\n this.bodyTarget.src = null\n\n if (elementIsVisible(target)) {\n this.bodyTarget.hidden = false\n }\n\n this.cleanup = this.#positionBodyAnchoredTo(target, placement)\n },\n { once: true },\n )\n }\n\n #positionBodyAnchoredTo(element, placement) {\n return autoUpdate(element, this.bodyTarget, () => {\n computePosition(element, this.bodyTarget, {\n placement,\n middleware: [offset(8), flip()],\n }).then(({ x, y }) => {\n Object.assign(this.bodyTarget.style, {\n left: `${x}px`,\n top: `${y}px`,\n })\n })\n })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['tab', 'module', 'dropdownButton', 'profileNav']\n static classes = ['highlight']\n static values = { selectedModule: String }\n\n connect() {\n this.changeTab({ params: { module: this.selectedModuleValue } })\n }\n\n changeTab({ params: { module } }) {\n const tab = this.#getTab(module) || this.#getTab('all')\n const mod = this.#getModule(module)\n this.#highlightTab(tab)\n this.#focusModule(mod)\n this.#updateProfileNav(module)\n }\n\n #focusModule(module) {\n const url = new URL(window.location)\n const searchParams = new URLSearchParams(window.location.search)\n if (module) {\n this.#hideAllModules()\n module.hidden = false\n searchParams.set('module', module.id)\n } else {\n this.#showAllModules()\n searchParams.set('module', 'all')\n }\n\n url.search = searchParams\n window.history.replaceState(history.state, '', url)\n }\n\n #showAllModules() {\n this.moduleTargets.forEach((module) => {\n module.hidden = false\n })\n }\n\n #hideAllModules() {\n this.moduleTargets.forEach((module) => {\n module.hidden = true\n })\n }\n\n #highlightTab(tab) {\n if (this.hasDropdownButtonTarget) {\n this.dropdownButtonTarget.textContent = tab.textContent\n }\n\n this.tabTargets.forEach((target) => target.classList.remove(...this.highlightClasses))\n tab.classList.add(...this.highlightClasses)\n }\n\n #getTab(id) {\n return this.tabTargets.find((target) => target.id === `${id}-nav`)\n }\n\n #getModule(id) {\n return this.moduleTargets.find((target) => target.id === id)\n }\n\n #updateProfileNav(module) {\n this.profileNavTargets.forEach((member) => {\n const url = new URL(member.href)\n const searchParams = new URLSearchParams(url.search)\n\n searchParams.set('module', module)\n url.search = searchParams\n member.href = url\n })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['adminDetailsInputs', 'sameAsOwnerCheckBox']\n\n toggleAdminDetails() {\n this.adminDetailsInputsTarget.classList.toggle('!max-h-0')\n this.adminDetailsInputsTarget.querySelectorAll('input').forEach((el) => el.classList.toggle('disabled'))\n }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n removeEmailField({ target }) {\n const emailInput = target.closest('.email-input')\n\n emailInput.nextElementSibling.hidden = false\n emailInput.remove()\n }\n}\n", "// NOTE: separate `:not()` selectors has broader browser support than the newer\n// `:not([inert], [inert] *)` (Feb 2023)\n// CAREFUL: JSDom does not support `:not([inert] *)` as a selector; using it causes\n// the entire query to fail, resulting in no nodes found, which will break a lot\n// of things... so we have to rely on JS to identify nodes inside an inert container\nconst candidateSelectors = [\n 'input:not([inert])',\n 'select:not([inert])',\n 'textarea:not([inert])',\n 'a[href]:not([inert])',\n 'button:not([inert])',\n '[tabindex]:not(slot):not([inert])',\n 'audio[controls]:not([inert])',\n 'video[controls]:not([inert])',\n '[contenteditable]:not([contenteditable=\"false\"]):not([inert])',\n 'details>summary:first-of-type:not([inert])',\n 'details:not([inert])',\n];\nconst candidateSelector = /* #__PURE__ */ candidateSelectors.join(',');\n\nconst NoElement = typeof Element === 'undefined';\n\nconst matches = NoElement\n ? function () {}\n : Element.prototype.matches ||\n Element.prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n\nconst getRootNode =\n !NoElement && Element.prototype.getRootNode\n ? (element) => element?.getRootNode?.()\n : (element) => element?.ownerDocument;\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Element} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n * see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n * False if `node` is falsy.\n */\nconst isInert = function (node, lookUp = true) {\n // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n // JS API property; we have to check the attribute, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's an active element\n const inertAtt = node?.getAttribute?.('inert');\n const inert = inertAtt === '' || inertAtt === 'true';\n\n // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n // if it weren't for `matches()` not being a function on shadow roots; the following\n // code works for any kind of node\n // CAREFUL: JSDom does not appear to support certain selectors like `:not([inert] *)`\n // so it likely would not support `:is([inert] *)` either...\n const result = inert || (lookUp && node && isInert(node.parentNode)); // recursive\n\n return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nconst isContentEditable = function (node) {\n // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n // to use the attribute directly to check for this, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's a non-editable element\n const attValue = node?.getAttribute?.('contenteditable');\n return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nconst getCandidates = function (el, includeContainer, filter) {\n // even if `includeContainer=false`, we still have to check it for inertness because\n // if it's inert, all its children are inert\n if (isInert(el)) {\n return [];\n }\n\n let candidates = Array.prototype.slice.apply(\n el.querySelectorAll(candidateSelector)\n );\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n candidates = candidates.filter(filter);\n return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n * if a function, implies shadow support is enabled and either returns the shadow root of an element\n * or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nconst getCandidatesIteratively = function (\n elements,\n includeContainer,\n options\n) {\n const candidates = [];\n const elementsToCheck = Array.from(elements);\n while (elementsToCheck.length) {\n const element = elementsToCheck.shift();\n if (isInert(element, false)) {\n // no need to look up since we're drilling down\n // anything inside this container will also be inert\n continue;\n }\n\n if (element.tagName === 'SLOT') {\n // add shadow dom slot scope (slot itself cannot be focusable)\n const assigned = element.assignedElements();\n const content = assigned.length ? assigned : element.children;\n const nestedCandidates = getCandidatesIteratively(content, true, options);\n if (options.flatten) {\n candidates.push(...nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: nestedCandidates,\n });\n }\n } else {\n // check candidate element\n const validCandidate = matches.call(element, candidateSelector);\n if (\n validCandidate &&\n options.filter(element) &&\n (includeContainer || !elements.includes(element))\n ) {\n candidates.push(element);\n }\n\n // iterate over shadow content if possible\n const shadowRoot =\n element.shadowRoot ||\n // check for an undisclosed shadow\n (typeof options.getShadowRoot === 'function' &&\n options.getShadowRoot(element));\n\n // no inert look up because we're already drilling down and checking for inertness\n // on the way down, so all containers to this root node should have already been\n // vetted as non-inert\n const validShadowRoot =\n !isInert(shadowRoot, false) &&\n (!options.shadowRootFilter || options.shadowRootFilter(element));\n\n if (shadowRoot && validShadowRoot) {\n // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n // shadow exists, so look at light dom children as fallback BUT create a scope for any\n // child candidates found because they're likely slotted elements (elements that are\n // children of the web component element (which has the shadow), in the light dom, but\n // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n // _after_ we return from this recursive call\n const nestedCandidates = getCandidatesIteratively(\n shadowRoot === true ? element.children : shadowRoot.children,\n true,\n options\n );\n\n if (options.flatten) {\n candidates.push(...nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: nestedCandidates,\n });\n }\n } else {\n // there's not shadow so just dig into the element's (light dom) children\n // __without__ giving the element special scope treatment\n elementsToCheck.unshift(...element.children);\n }\n }\n }\n return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nconst hasTabIndex = function (node) {\n return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nconst getTabIndex = function (node) {\n if (!node) {\n throw new Error('No node provided');\n }\n\n if (node.tabIndex < 0) {\n // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if (\n (/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) ||\n isContentEditable(node)) &&\n !hasTabIndex(node)\n ) {\n return 0;\n }\n }\n\n return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n * has tabIndex -1, but needs to be sorted by document order in order for its content to be\n * inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nconst getSortOrderTabIndex = function (node, isScope) {\n const tabIndex = getTabIndex(node);\n\n if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n return 0;\n }\n\n return tabIndex;\n};\n\nconst sortOrderedTabbables = function (a, b) {\n return a.tabIndex === b.tabIndex\n ? a.documentOrder - b.documentOrder\n : a.tabIndex - b.tabIndex;\n};\n\nconst isInput = function (node) {\n return node.tagName === 'INPUT';\n};\n\nconst isHiddenInput = function (node) {\n return isInput(node) && node.type === 'hidden';\n};\n\nconst isDetailsWithSummary = function (node) {\n const r =\n node.tagName === 'DETAILS' &&\n Array.prototype.slice\n .apply(node.children)\n .some((child) => child.tagName === 'SUMMARY');\n return r;\n};\n\nconst getCheckedRadio = function (nodes, form) {\n for (let i = 0; i < nodes.length; i++) {\n if (nodes[i].checked && nodes[i].form === form) {\n return nodes[i];\n }\n }\n};\n\nconst isTabbableRadio = function (node) {\n if (!node.name) {\n return true;\n }\n const radioScope = node.form || getRootNode(node);\n const queryRadios = function (name) {\n return radioScope.querySelectorAll(\n 'input[type=\"radio\"][name=\"' + name + '\"]'\n );\n };\n\n let radioSet;\n if (\n typeof window !== 'undefined' &&\n typeof window.CSS !== 'undefined' &&\n typeof window.CSS.escape === 'function'\n ) {\n radioSet = queryRadios(window.CSS.escape(node.name));\n } else {\n try {\n radioSet = queryRadios(node.name);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(\n 'Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s',\n err.message\n );\n return false;\n }\n }\n\n const checked = getCheckedRadio(radioSet, node.form);\n return !checked || checked === node;\n};\n\nconst isRadio = function (node) {\n return isInput(node) && node.type === 'radio';\n};\n\nconst isNonTabbableRadio = function (node) {\n return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nconst isNodeAttached = function (node) {\n // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n // (but NOT _the_ document; see second 'If' comment below for more).\n // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n // is attached, and the one we need to check if it's in the document or not (because the\n // shadow, and all nodes it contains, is never considered in the document since shadows\n // behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n // is hidden, or is not in the document itself but is detached, it will affect the shadow's\n // visibility, including all the nodes it contains). The host could be any normal node,\n // or a custom element (i.e. web component). Either way, that's the one that is considered\n // part of the document, not the shadow root, nor any of its children (i.e. the node being\n // tested).\n // To further complicate things, we have to look all the way up until we find a shadow HOST\n // that is attached (or find none) because the node might be in nested shadows...\n // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n // document (per the docs) and while it's a Document-type object, that document does not\n // appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n // to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n // using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n // node is actually detached.\n // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n // if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n // from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n // `ownerDocument` will be `null`, hence the optional chaining on it.\n let nodeRoot = node && getRootNode(node);\n let nodeRootHost = nodeRoot?.host;\n\n // in some cases, a detached node will return itself as the root instead of a document or\n // shadow root object, in which case, we shouldn't try to look further up the host chain\n let attached = false;\n if (nodeRoot && nodeRoot !== node) {\n attached = !!(\n nodeRootHost?.ownerDocument?.contains(nodeRootHost) ||\n node?.ownerDocument?.contains(node)\n );\n\n while (!attached && nodeRootHost) {\n // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n // which means we need to get the host's host and check if that parent host is contained\n // in (i.e. attached to) the document\n nodeRoot = getRootNode(nodeRootHost);\n nodeRootHost = nodeRoot?.host;\n attached = !!nodeRootHost?.ownerDocument?.contains(nodeRootHost);\n }\n }\n\n return attached;\n};\n\nconst isZeroArea = function (node) {\n const { width, height } = node.getBoundingClientRect();\n return width === 0 && height === 0;\n};\nconst isHidden = function (node, { displayCheck, getShadowRoot }) {\n // NOTE: visibility will be `undefined` if node is detached from the document\n // (see notes about this further down), which means we will consider it visible\n // (this is legacy behavior from a very long way back)\n // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n // _visibility_ check, not a _display_ check\n if (getComputedStyle(node).visibility === 'hidden') {\n return true;\n }\n\n const isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n const nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n return true;\n }\n\n if (\n !displayCheck ||\n displayCheck === 'full' ||\n displayCheck === 'legacy-full'\n ) {\n if (typeof getShadowRoot === 'function') {\n // figure out if we should consider the node to be in an undisclosed shadow and use the\n // 'non-zero-area' fallback\n const originalNode = node;\n while (node) {\n const parentElement = node.parentElement;\n const rootNode = getRootNode(node);\n if (\n parentElement &&\n !parentElement.shadowRoot &&\n getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n ) {\n // node has an undisclosed shadow which means we can only treat it as a black box, so we\n // fall back to a non-zero-area test\n return isZeroArea(node);\n } else if (node.assignedSlot) {\n // iterate up slot\n node = node.assignedSlot;\n } else if (!parentElement && rootNode !== node.ownerDocument) {\n // cross shadow boundary\n node = rootNode.host;\n } else {\n // iterate up normal dom\n node = parentElement;\n }\n }\n\n node = originalNode;\n }\n // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n // (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n // it might be a falsy value, which means shadow DOM support is disabled\n\n // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n // now we can just test to see if it would normally be visible or not, provided it's\n // attached to the main document.\n // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n // `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n if (isNodeAttached(node)) {\n // this works wherever the node is: if there's at least one client rect, it's\n // somehow displayed; it also covers the CSS 'display: contents' case where the\n // node itself is hidden in place of its contents; and there's no need to search\n // up the hierarchy either\n return !node.getClientRects().length;\n }\n\n // Else, the node isn't attached to the document, which means the `getClientRects()`\n // API will __always__ return zero rects (this can happen, for example, if React\n // is used to render nodes onto a detached tree, as confirmed in this thread:\n // https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n //\n // It also means that even window.getComputedStyle(node).display will return `undefined`\n // because styles are only computed for nodes that are in the document.\n //\n // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n // somehow. Though it was never stated officially, anyone who has ever used tabbable\n // APIs on nodes in detached containers has actually implicitly used tabbable in what\n // was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n // considering __everything__ to be visible because of the innability to determine styles.\n //\n // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n // nodes as visible with the 'none' fallback.__\n if (displayCheck !== 'legacy-full') {\n return true; // hidden\n }\n // else, fallback to 'none' mode and consider the node visible\n } else if (displayCheck === 'non-zero-area') {\n // NOTE: Even though this tests that the node's client rect is non-zero to determine\n // whether it's displayed, and that a detached node will __always__ have a zero-area\n // client rect, we don't special-case for whether the node is attached or not. In\n // this mode, we do want to consider nodes that have a zero area to be hidden at all\n // times, and that includes attached or not.\n return isZeroArea(node);\n }\n\n // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n // it's visible\n return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n// unless they are in the _first_ <legend> element of the top-most disabled\n// fieldset\nconst isDisabledFromFieldset = function (node) {\n if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n let parentNode = node.parentElement;\n // check if `node` is contained in a disabled <fieldset>\n while (parentNode) {\n if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n // look for the first <legend> among the children of the disabled <fieldset>\n for (let i = 0; i < parentNode.children.length; i++) {\n const child = parentNode.children.item(i);\n // when the first <legend> (in document order) is found\n if (child.tagName === 'LEGEND') {\n // if its parent <fieldset> is not nested in another disabled <fieldset>,\n // return whether `node` is a descendant of its first <legend>\n return matches.call(parentNode, 'fieldset[disabled] *')\n ? true\n : !child.contains(node);\n }\n }\n // the disabled <fieldset> containing `node` has no <legend>\n return true;\n }\n parentNode = parentNode.parentElement;\n }\n }\n\n // else, node's tabbable/focusable state should not be affected by a fieldset's\n // enabled/disabled state\n return false;\n};\n\nconst isNodeMatchingSelectorFocusable = function (options, node) {\n if (\n node.disabled ||\n // we must do an inert look up to filter out any elements inside an inert ancestor\n // because we're limited in the type of selectors we can use in JSDom (see related\n // note related to `candidateSelectors`)\n isInert(node) ||\n isHiddenInput(node) ||\n isHidden(node, options) ||\n // For a details element with a summary, the summary element gets the focus\n isDetailsWithSummary(node) ||\n isDisabledFromFieldset(node)\n ) {\n return false;\n }\n return true;\n};\n\nconst isNodeMatchingSelectorTabbable = function (options, node) {\n if (\n isNonTabbableRadio(node) ||\n getTabIndex(node) < 0 ||\n !isNodeMatchingSelectorFocusable(options, node)\n ) {\n return false;\n }\n return true;\n};\n\nconst isValidShadowRootTabbable = function (shadowHostNode) {\n const tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n if (isNaN(tabIndex) || tabIndex >= 0) {\n return true;\n }\n // If a custom element has an explicit negative tabindex,\n // browsers will not allow tab targeting said element's children.\n return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nconst sortByOrder = function (candidates) {\n const regularTabbables = [];\n const orderedTabbables = [];\n candidates.forEach(function (item, i) {\n const isScope = !!item.scopeParent;\n const element = isScope ? item.scopeParent : item;\n const candidateTabindex = getSortOrderTabIndex(element, isScope);\n const elements = isScope ? sortByOrder(item.candidates) : element;\n if (candidateTabindex === 0) {\n isScope\n ? regularTabbables.push(...elements)\n : regularTabbables.push(element);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n item: item,\n isScope: isScope,\n content: elements,\n });\n }\n });\n\n return orderedTabbables\n .sort(sortOrderedTabbables)\n .reduce((acc, sortable) => {\n sortable.isScope\n ? acc.push(...sortable.content)\n : acc.push(sortable.content);\n return acc;\n }, [])\n .concat(regularTabbables);\n};\n\nconst tabbable = function (container, options) {\n options = options || {};\n\n let candidates;\n if (options.getShadowRoot) {\n candidates = getCandidatesIteratively(\n [container],\n options.includeContainer,\n {\n filter: isNodeMatchingSelectorTabbable.bind(null, options),\n flatten: false,\n getShadowRoot: options.getShadowRoot,\n shadowRootFilter: isValidShadowRootTabbable,\n }\n );\n } else {\n candidates = getCandidates(\n container,\n options.includeContainer,\n isNodeMatchingSelectorTabbable.bind(null, options)\n );\n }\n return sortByOrder(candidates);\n};\n\nconst focusable = function (container, options) {\n options = options || {};\n\n let candidates;\n if (options.getShadowRoot) {\n candidates = getCandidatesIteratively(\n [container],\n options.includeContainer,\n {\n filter: isNodeMatchingSelectorFocusable.bind(null, options),\n flatten: true,\n getShadowRoot: options.getShadowRoot,\n }\n );\n } else {\n candidates = getCandidates(\n container,\n options.includeContainer,\n isNodeMatchingSelectorFocusable.bind(null, options)\n );\n }\n\n return candidates;\n};\n\nconst isTabbable = function (node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, candidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorTabbable(options, node);\n};\n\nconst focusableCandidateSelector = /* #__PURE__ */ candidateSelectors\n .concat('iframe')\n .join(',');\n\nconst isFocusable = function (node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, focusableCandidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { tabbable, focusable, isTabbable, isFocusable, getTabIndex };\n", "import {\n tabbable,\n focusable,\n isFocusable,\n isTabbable,\n getTabIndex,\n} from 'tabbable';\n\nconst activeFocusTraps = {\n activateTrap(trapStack, trap) {\n if (trapStack.length > 0) {\n const activeTrap = trapStack[trapStack.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n const trapIndex = trapStack.indexOf(trap);\n if (trapIndex === -1) {\n trapStack.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapStack.splice(trapIndex, 1);\n trapStack.push(trap);\n }\n },\n\n deactivateTrap(trapStack, trap) {\n const trapIndex = trapStack.indexOf(trap);\n if (trapIndex !== -1) {\n trapStack.splice(trapIndex, 1);\n }\n\n if (trapStack.length > 0) {\n trapStack[trapStack.length - 1].unpause();\n }\n },\n};\n\nconst isSelectableInput = function (node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n};\n\nconst isEscapeEvent = function (e) {\n return e?.key === 'Escape' || e?.key === 'Esc' || e?.keyCode === 27;\n};\n\nconst isTabEvent = function (e) {\n return e?.key === 'Tab' || e?.keyCode === 9;\n};\n\n// checks for TAB by default\nconst isKeyForward = function (e) {\n return isTabEvent(e) && !e.shiftKey;\n};\n\n// checks for SHIFT+TAB by default\nconst isKeyBackward = function (e) {\n return isTabEvent(e) && e.shiftKey;\n};\n\nconst delay = function (fn) {\n return setTimeout(fn, 0);\n};\n\n// Array.find/findIndex() are not supported on IE; this replicates enough\n// of Array.findIndex() for our needs\nconst findIndex = function (arr, fn) {\n let idx = -1;\n\n arr.every(function (value, i) {\n if (fn(value)) {\n idx = i;\n return false; // break\n }\n\n return true; // next\n });\n\n return idx;\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n * the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nconst valueOrHandler = function (value, ...params) {\n return typeof value === 'function' ? value(...params) : value;\n};\n\nconst getActualTarget = function (event) {\n // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n // shadow host. However, event.target.composedPath() will be an array of\n // nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n // outer-most (the host HTML document). If we have access to composedPath(),\n // then use its first element; otherwise, fall back to event.target (and\n // this only works for an _open_ shadow DOM; otherwise,\n // composedPath()[0] === event.target always).\n return event.target.shadowRoot && typeof event.composedPath === 'function'\n ? event.composedPath()[0]\n : event.target;\n};\n\n// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this\n// current instance use the same stack if `userOptions.trapStack` isn't specified\nconst internalTrapStack = [];\n\nconst createFocusTrap = function (elements, userOptions) {\n // SSR: a live trap shouldn't be created in this type of environment so this\n // should be safe code to execute if the `document` option isn't specified\n const doc = userOptions?.document || document;\n\n const trapStack = userOptions?.trapStack || internalTrapStack;\n\n const config = {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true,\n delayInitialFocus: true,\n isKeyForward,\n isKeyBackward,\n ...userOptions,\n };\n\n const state = {\n // containers given to createFocusTrap()\n // @type {Array<HTMLElement>}\n containers: [],\n\n // list of objects identifying tabbable nodes in `containers` in the trap\n // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n // is active, but the trap should never get to a state where there isn't at least one group\n // with at least one tabbable node in it (that would lead to an error condition that would\n // result in an error being thrown)\n // @type {Array<{\n // container: HTMLElement,\n // tabbableNodes: Array<HTMLElement>, // empty if none\n // focusableNodes: Array<HTMLElement>, // empty if none\n // posTabIndexesFound: boolean,\n // firstTabbableNode: HTMLElement|undefined,\n // lastTabbableNode: HTMLElement|undefined,\n // firstDomTabbableNode: HTMLElement|undefined,\n // lastDomTabbableNode: HTMLElement|undefined,\n // nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n // }>}\n containerGroups: [], // same order/length as `containers` list\n\n // references to objects in `containerGroups`, but only those that actually have\n // tabbable nodes in them\n // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n // the same length\n tabbableGroups: [],\n\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false,\n\n // timer ID for when delayInitialFocus is true and initial focus in this trap\n // has been delayed during activation\n delayInitialFocusTimer: undefined,\n\n // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n recentNavEvent: undefined,\n };\n\n let trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n /**\n * Gets a configuration option value.\n * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n * value will be taken from this object. Otherwise, value will be taken from base configuration.\n * @param {string} optionName Name of the option whose value is sought.\n * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n * IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n */\n const getOption = (configOverrideOptions, optionName, configOptionName) => {\n return configOverrideOptions &&\n configOverrideOptions[optionName] !== undefined\n ? configOverrideOptions[optionName]\n : config[configOptionName || optionName];\n };\n\n /**\n * Finds the index of the container that contains the element.\n * @param {HTMLElement} element\n * @param {Event} [event] If available, and `element` isn't directly found in any container,\n * the event's composed path is used to see if includes any known trap containers in the\n * case where the element is inside a Shadow DOM.\n * @returns {number} Index of the container in either `state.containers` or\n * `state.containerGroups` (the order/length of these lists are the same); -1\n * if the element isn't found.\n */\n const findContainerIndex = function (element, event) {\n const composedPath =\n typeof event?.composedPath === 'function'\n ? event.composedPath()\n : undefined;\n // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n // nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n // and we still need to find the element in there\n return state.containerGroups.findIndex(\n ({ container, tabbableNodes }) =>\n container.contains(element) ||\n // fall back to explicit tabbable search which will take into consideration any\n // web components if the `tabbableOptions.getShadowRoot` option was used for\n // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n // look inside web components even if open)\n composedPath?.includes(container) ||\n tabbableNodes.find((node) => node === element)\n );\n };\n\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @returns {undefined | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `false` if the option\n * resolved to `false` (node explicitly not given); otherwise, the resolved\n * DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node.\n */\n const getNodeForOption = function (optionName, ...params) {\n let optionValue = config[optionName];\n\n if (typeof optionValue === 'function') {\n optionValue = optionValue(...params);\n }\n\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\n `\\`${optionName}\\` was specified but was not a node, or did not return a node`\n );\n }\n\n let node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue); // resolve to node, or null if fails\n if (!node) {\n throw new Error(\n `\\`${optionName}\\` as selector refers to no known node`\n );\n }\n }\n\n return node;\n };\n\n const getInitialFocusNode = function () {\n let node = getNodeForOption('initialFocus');\n\n // false explicitly indicates we want no initialFocus at all\n if (node === false) {\n return false;\n }\n\n if (node === undefined || !isFocusable(node, config.tabbableOptions)) {\n // option not specified nor focusable: use fallback options\n if (findContainerIndex(doc.activeElement) >= 0) {\n node = doc.activeElement;\n } else {\n const firstTabbableGroup = state.tabbableGroups[0];\n const firstTabbableNode =\n firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n node = firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n }\n\n if (!node) {\n throw new Error(\n 'Your focus-trap needs to have at least one focusable element'\n );\n }\n\n return node;\n };\n\n const updateTabbableNodes = function () {\n state.containerGroups = state.containers.map((container) => {\n const tabbableNodes = tabbable(container, config.tabbableOptions);\n\n // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n // are a superset of tabbable nodes since nodes with negative `tabindex` attributes\n // are focusable but not tabbable\n const focusableNodes = focusable(container, config.tabbableOptions);\n\n const firstTabbableNode =\n tabbableNodes.length > 0 ? tabbableNodes[0] : undefined;\n const lastTabbableNode =\n tabbableNodes.length > 0\n ? tabbableNodes[tabbableNodes.length - 1]\n : undefined;\n\n const firstDomTabbableNode = focusableNodes.find((node) =>\n isTabbable(node)\n );\n const lastDomTabbableNode = focusableNodes\n .slice()\n .reverse()\n .find((node) => isTabbable(node));\n\n const posTabIndexesFound = !!tabbableNodes.find(\n (node) => getTabIndex(node) > 0\n );\n\n return {\n container,\n tabbableNodes,\n focusableNodes,\n\n /** True if at least one node with positive `tabindex` was found in this container. */\n posTabIndexesFound,\n\n /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n firstTabbableNode,\n /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n lastTabbableNode,\n\n // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n // would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // because that API doesn't work with Shadow DOM as well as it should (@see\n // https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n // to address an edge case related to positive tabindex support, this seems like a much easier,\n // \"close enough most of the time\" alternative for positive tabindexes which should generally\n // be avoided anyway...\n /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n firstDomTabbableNode,\n /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n lastDomTabbableNode,\n\n /**\n * Finds the __tabbable__ node that follows the given node in the specified direction,\n * in this container, if any.\n * @param {HTMLElement} node\n * @param {boolean} [forward] True if going in forward tab order; false if going\n * in reverse.\n * @returns {HTMLElement|undefined} The next tabbable node, if any.\n */\n nextTabbableNode(node, forward = true) {\n const nodeIdx = tabbableNodes.indexOf(node);\n if (nodeIdx < 0) {\n // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex):\n // since `node` should at least have been focusable, we assume that's the case and mimic\n // what browsers do, which is set focus to the next node in __document position order__,\n // regardless of positive tabindexes, if any -- and for reasons explained in the NOTE\n // above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to\n // basic DOM order\n if (forward) {\n return focusableNodes\n .slice(focusableNodes.indexOf(node) + 1)\n .find((el) => isTabbable(el));\n }\n\n return focusableNodes\n .slice(0, focusableNodes.indexOf(node))\n .reverse()\n .find((el) => isTabbable(el));\n }\n\n return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n },\n };\n });\n\n state.tabbableGroups = state.containerGroups.filter(\n (group) => group.tabbableNodes.length > 0\n );\n\n // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n if (\n state.tabbableGroups.length <= 0 &&\n !getNodeForOption('fallbackFocus') // returning false not supported for this option\n ) {\n throw new Error(\n 'Your focus-trap must have at least one container with at least one tabbable node in it at all times'\n );\n }\n\n // NOTE: Positive tabindexes are only properly supported in single-container traps because\n // doing it across multiple containers where tabindexes could be all over the place\n // would require Tabbable to support multiple containers, would require additional\n // specialized Shadow DOM support, and would require Tabbable's multi-container support\n // to look at those containers in document position order rather than user-provided\n // order (as they are treated in Focus-trap, for legacy reasons). See discussion on\n // https://github.com/focus-trap/focus-trap/issues/375 for more details.\n if (\n state.containerGroups.find((g) => g.posTabIndexesFound) &&\n state.containerGroups.length > 1\n ) {\n throw new Error(\n \"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\"\n );\n }\n };\n\n /**\n * Gets the current activeElement. If it's a web-component and has open shadow-root\n * it will recursively search inside shadow roots for the \"true\" activeElement.\n *\n * @param {Document | ShadowRoot} el\n *\n * @returns {HTMLElement} The element that currently has the focus\n **/\n const getActiveElement = function (el) {\n const activeElement = el.activeElement;\n\n if (!activeElement) {\n return;\n }\n\n if (\n activeElement.shadowRoot &&\n activeElement.shadowRoot.activeElement !== null\n ) {\n return getActiveElement(activeElement.shadowRoot);\n }\n\n return activeElement;\n };\n\n const tryFocus = function (node) {\n if (node === false) {\n return;\n }\n\n if (node === getActiveElement(document)) {\n return;\n }\n\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus({ preventScroll: !!config.preventScroll });\n // NOTE: focus() API does not trigger focusIn event so set MRU node manually\n state.mostRecentlyFocusedNode = node;\n\n if (isSelectableInput(node)) {\n node.select();\n }\n };\n\n const getReturnFocusNode = function (previousActiveElement) {\n const node = getNodeForOption('setReturnFocus', previousActiveElement);\n return node ? node : node === false ? false : previousActiveElement;\n };\n\n /**\n * Finds the next node (in either direction) where focus should move according to a\n * keyboard focus-in event.\n * @param {Object} params\n * @param {Node} [params.target] Known target __from which__ to navigate, if any.\n * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event\n * will be used to determine the `target`). Ignored if `target` is specified.\n * @param {boolean} [params.isBackward] True if focus should move backward.\n * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be\n * determined given the current state of the trap.\n */\n const findNextNavNode = function ({ target, event, isBackward = false }) {\n target = target || getActualTarget(event);\n updateTabbableNodes();\n\n let destinationNode = null;\n\n if (state.tabbableGroups.length > 0) {\n // make sure the target is actually contained in a group\n // NOTE: the target may also be the container itself if it's focusable\n // with tabIndex='-1' and was given initial focus\n const containerIndex = findContainerIndex(target, event);\n const containerGroup =\n containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n\n if (containerIndex < 0) {\n // target not found in any group: quite possible focus has escaped the trap,\n // so bring it back into...\n if (isBackward) {\n // ...the last node in the last group\n destinationNode =\n state.tabbableGroups[state.tabbableGroups.length - 1]\n .lastTabbableNode;\n } else {\n // ...the first node in the first group\n destinationNode = state.tabbableGroups[0].firstTabbableNode;\n }\n } else if (isBackward) {\n // REVERSE\n\n // is the target the first tabbable node in a group?\n let startOfGroupIndex = findIndex(\n state.tabbableGroups,\n ({ firstTabbableNode }) => target === firstTabbableNode\n );\n\n if (\n startOfGroupIndex < 0 &&\n (containerGroup.container === target ||\n (isFocusable(target, config.tabbableOptions) &&\n !isTabbable(target, config.tabbableOptions) &&\n !containerGroup.nextTabbableNode(target, false)))\n ) {\n // an exception case where the target is either the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle shift+tab as if focus were on the container's\n // first tabbable node, and go to the last tabbable node of the LAST group\n startOfGroupIndex = containerIndex;\n }\n\n if (startOfGroupIndex >= 0) {\n // YES: then shift+tab should go to the last tabbable node in the\n // previous group (and wrap around to the last tabbable node of\n // the LAST group if it's the first tabbable node of the FIRST group)\n const destinationGroupIndex =\n startOfGroupIndex === 0\n ? state.tabbableGroups.length - 1\n : startOfGroupIndex - 1;\n\n const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n\n destinationNode =\n getTabIndex(target) >= 0\n ? destinationGroup.lastTabbableNode\n : destinationGroup.lastDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target, false);\n }\n } else {\n // FORWARD\n\n // is the target the last tabbable node in a group?\n let lastOfGroupIndex = findIndex(\n state.tabbableGroups,\n ({ lastTabbableNode }) => target === lastTabbableNode\n );\n\n if (\n lastOfGroupIndex < 0 &&\n (containerGroup.container === target ||\n (isFocusable(target, config.tabbableOptions) &&\n !isTabbable(target, config.tabbableOptions) &&\n !containerGroup.nextTabbableNode(target)))\n ) {\n // an exception case where the target is the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle tab as if focus were on the container's\n // last tabbable node, and go to the first tabbable node of the FIRST group\n lastOfGroupIndex = containerIndex;\n }\n\n if (lastOfGroupIndex >= 0) {\n // YES: then tab should go to the first tabbable node in the next\n // group (and wrap around to the first tabbable node of the FIRST\n // group if it's the last tabbable node of the LAST group)\n const destinationGroupIndex =\n lastOfGroupIndex === state.tabbableGroups.length - 1\n ? 0\n : lastOfGroupIndex + 1;\n\n const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n\n destinationNode =\n getTabIndex(target) >= 0\n ? destinationGroup.firstTabbableNode\n : destinationGroup.firstDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target);\n }\n }\n } else {\n // no groups available\n // NOTE: the fallbackFocus option does not support returning false to opt-out\n destinationNode = getNodeForOption('fallbackFocus');\n }\n\n return destinationNode;\n };\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n const checkPointerDown = function (e) {\n const target = getActualTarget(e);\n\n if (findContainerIndex(target, e) >= 0) {\n // allow the click since it ocurred inside the trap\n return;\n }\n\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n // immediately deactivate the trap\n trap.deactivate({\n // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n // which will result in the outside click setting focus to the node\n // that was clicked (and if not focusable, to \"nothing\"); by setting\n // `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n // on activation (or the configured `setReturnFocus` node), whether the\n // outside click was on a focusable node or not\n returnFocus: config.returnFocusOnDeactivate,\n });\n return;\n }\n\n // This is needed for mobile devices.\n // (If we'll only let `click` events through,\n // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n if (valueOrHandler(config.allowOutsideClick, e)) {\n // allow the click outside the trap to take place\n return;\n }\n\n // otherwise, prevent the click\n e.preventDefault();\n };\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected\n // scrolling if the node that got focused was out of view; there's nothing we can do to\n // prevent that from happening by the time we discover that focus escaped\n const checkFocusIn = function (event) {\n const target = getActualTarget(event);\n const targetContained = findContainerIndex(target, event) >= 0;\n\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (targetContained || target instanceof Document) {\n if (targetContained) {\n state.mostRecentlyFocusedNode = target;\n }\n } else {\n // escaped! pull it back in to where it just left\n event.stopImmediatePropagation();\n\n // focus will escape if the MRU node had a positive tab index and user tried to nav forward;\n // it will also escape if the MRU node had a 0 tab index and user tried to nav backward\n // toward a node with a positive tab index\n let nextNode; // next node to focus, if we find one\n let navAcrossContainers = true;\n if (state.mostRecentlyFocusedNode) {\n if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {\n // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node...\n const mruContainerIdx = findContainerIndex(\n state.mostRecentlyFocusedNode\n );\n // there MAY not be any tabbable nodes in the container if there are at least 2 containers\n // and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container\n // with at least one tabbable node in order to function, so this could be the other container\n // with nothing tabbable in it)\n const { tabbableNodes } = state.containerGroups[mruContainerIdx];\n if (tabbableNodes.length > 0) {\n // MRU tab index MAY not be found if the MRU node is focusable but not tabbable\n const mruTabIdx = tabbableNodes.findIndex(\n (node) => node === state.mostRecentlyFocusedNode\n );\n if (mruTabIdx >= 0) {\n if (config.isKeyForward(state.recentNavEvent)) {\n if (mruTabIdx + 1 < tabbableNodes.length) {\n nextNode = tabbableNodes[mruTabIdx + 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n } else {\n if (mruTabIdx - 1 >= 0) {\n nextNode = tabbableNodes[mruTabIdx - 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n }\n // else, don't find in container order without considering direction too\n }\n }\n // else, no tabbable nodes in that container (which means we must have at least one other\n // container with at least one tabbable node in it, otherwise focus-trap would've thrown\n // an error the last time updateTabbableNodes() was run): find next node among all known\n // containers\n } else {\n // check to see if there's at least one tabbable node with a positive tab index inside\n // the trap because focus seems to escape when navigating backward from a tabbable node\n // with tabindex=0 when this is the case (instead of wrapping to the tabbable node with\n // the greatest positive tab index like it should)\n if (\n !state.containerGroups.some((g) =>\n g.tabbableNodes.some((n) => getTabIndex(n) > 0)\n )\n ) {\n // no containers with tabbable nodes with positive tab indexes which means the focus\n // escaped for some other reason and we should just execute the fallback to the\n // MRU node or initial focus node, if any\n navAcrossContainers = false;\n }\n }\n } else {\n // no MRU node means we're likely in some initial condition when the trap has just\n // been activated and initial focus hasn't been given yet, in which case we should\n // fall through to trying to focus the initial focus node, which is what should\n // happen below at this point in the logic\n navAcrossContainers = false;\n }\n\n if (navAcrossContainers) {\n nextNode = findNextNavNode({\n // move FROM the MRU node, not event-related node (which will be the node that is\n // outside the trap causing the focus escape we're trying to fix)\n target: state.mostRecentlyFocusedNode,\n isBackward: config.isKeyBackward(state.recentNavEvent),\n });\n }\n\n if (nextNode) {\n tryFocus(nextNode);\n } else {\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n }\n\n state.recentNavEvent = undefined; // clear\n };\n\n // Hijack key nav events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n const checkKeyNav = function (event, isBackward = false) {\n state.recentNavEvent = event;\n\n const destinationNode = findNextNavNode({ event, isBackward });\n if (destinationNode) {\n if (isTabEvent(event)) {\n // since tab natively moves focus, we wouldn't have a destination node unless we\n // were on the edge of a container and had to move to the next/previous edge, in\n // which case we want to prevent default to keep the browser from moving focus\n // to where it normally would\n event.preventDefault();\n }\n tryFocus(destinationNode);\n }\n // else, let the browser take care of [shift+]tab and move the focus\n };\n\n const checkKey = function (event) {\n if (\n isEscapeEvent(event) &&\n valueOrHandler(config.escapeDeactivates, event) !== false\n ) {\n event.preventDefault();\n trap.deactivate();\n return;\n }\n\n if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n checkKeyNav(event, config.isKeyBackward(event));\n }\n };\n\n const checkClick = function (e) {\n const target = getActualTarget(e);\n\n if (findContainerIndex(target, e) >= 0) {\n return;\n }\n\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n return;\n }\n\n if (valueOrHandler(config.allowOutsideClick, e)) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n };\n\n //\n // EVENT LISTENERS\n //\n\n const addListeners = function () {\n if (!state.active) {\n return;\n }\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trapStack, trap);\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n state.delayInitialFocusTimer = config.delayInitialFocus\n ? delay(function () {\n tryFocus(getInitialFocusNode());\n })\n : tryFocus(getInitialFocusNode());\n\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('keydown', checkKey, {\n capture: true,\n passive: false,\n });\n\n return trap;\n };\n\n const removeListeners = function () {\n if (!state.active) {\n return;\n }\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n };\n\n //\n // MUTATION OBSERVER\n //\n\n const checkDomRemoval = function (mutations) {\n const isFocusedNodeRemoved = mutations.some(function (mutation) {\n const removedNodes = Array.from(mutation.removedNodes);\n return removedNodes.some(function (node) {\n return node === state.mostRecentlyFocusedNode;\n });\n });\n\n // If the currently focused is removed then browsers will move focus to the\n // <body> element. If this happens, try to move focus back into the trap.\n if (isFocusedNodeRemoved) {\n tryFocus(getInitialFocusNode());\n }\n };\n\n // Use MutationObserver - if supported - to detect if focused node is removed\n // from the DOM.\n const mutationObserver =\n typeof window !== 'undefined' && 'MutationObserver' in window\n ? new MutationObserver(checkDomRemoval)\n : undefined;\n\n const updateObservedNodes = function () {\n if (!mutationObserver) {\n return;\n }\n\n mutationObserver.disconnect();\n if (state.active && !state.paused) {\n state.containers.map(function (container) {\n mutationObserver.observe(container, {\n subtree: true,\n childList: true,\n });\n });\n }\n };\n\n //\n // TRAP DEFINITION\n //\n\n trap = {\n get active() {\n return state.active;\n },\n\n get paused() {\n return state.paused;\n },\n\n activate(activateOptions) {\n if (state.active) {\n return this;\n }\n\n const onActivate = getOption(activateOptions, 'onActivate');\n const onPostActivate = getOption(activateOptions, 'onPostActivate');\n const checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n\n if (!checkCanFocusTrap) {\n updateTabbableNodes();\n }\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n onActivate?.();\n\n const finishActivation = () => {\n if (checkCanFocusTrap) {\n updateTabbableNodes();\n }\n addListeners();\n updateObservedNodes();\n onPostActivate?.();\n };\n\n if (checkCanFocusTrap) {\n checkCanFocusTrap(state.containers.concat()).then(\n finishActivation,\n finishActivation\n );\n return this;\n }\n\n finishActivation();\n return this;\n },\n\n deactivate(deactivateOptions) {\n if (!state.active) {\n return this;\n }\n\n const options = {\n onDeactivate: config.onDeactivate,\n onPostDeactivate: config.onPostDeactivate,\n checkCanReturnFocus: config.checkCanReturnFocus,\n ...deactivateOptions,\n };\n\n clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n state.delayInitialFocusTimer = undefined;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n updateObservedNodes();\n\n activeFocusTraps.deactivateTrap(trapStack, trap);\n\n const onDeactivate = getOption(options, 'onDeactivate');\n const onPostDeactivate = getOption(options, 'onPostDeactivate');\n const checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n const returnFocus = getOption(\n options,\n 'returnFocus',\n 'returnFocusOnDeactivate'\n );\n\n onDeactivate?.();\n\n const finishDeactivation = () => {\n delay(() => {\n if (returnFocus) {\n tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n }\n onPostDeactivate?.();\n });\n };\n\n if (returnFocus && checkCanReturnFocus) {\n checkCanReturnFocus(\n getReturnFocusNode(state.nodeFocusedBeforeActivation)\n ).then(finishDeactivation, finishDeactivation);\n return this;\n }\n\n finishDeactivation();\n return this;\n },\n\n pause(pauseOptions) {\n if (state.paused || !state.active) {\n return this;\n }\n\n const onPause = getOption(pauseOptions, 'onPause');\n const onPostPause = getOption(pauseOptions, 'onPostPause');\n\n state.paused = true;\n onPause?.();\n\n removeListeners();\n updateObservedNodes();\n\n onPostPause?.();\n return this;\n },\n\n unpause(unpauseOptions) {\n if (!state.paused || !state.active) {\n return this;\n }\n\n const onUnpause = getOption(unpauseOptions, 'onUnpause');\n const onPostUnpause = getOption(unpauseOptions, 'onPostUnpause');\n\n state.paused = false;\n onUnpause?.();\n\n updateTabbableNodes();\n addListeners();\n updateObservedNodes();\n\n onPostUnpause?.();\n return this;\n },\n\n updateContainerElements(containerElements) {\n const elementsAsArray = [].concat(containerElements).filter(Boolean);\n\n state.containers = elementsAsArray.map((element) =>\n typeof element === 'string' ? doc.querySelector(element) : element\n );\n\n if (state.active) {\n updateTabbableNodes();\n }\n\n updateObservedNodes();\n\n return this;\n },\n };\n\n // initialize container elements\n trap.updateContainerElements(elements);\n\n return trap;\n};\n\nexport { createFocusTrap };\n", "import { Controller } from '@hotwired/stimulus'\nimport { autoUpdate, computePosition, autoPlacement, offset, arrow } from '@floating-ui/dom'\nimport * as focusTrap from 'focus-trap'\n\nexport default class extends Controller {\n static targets = ['trigger', 'body', 'arrow']\n static values = { opened: Boolean, placement: String }\n\n connect() {\n this.focusTrap = focusTrap.createFocusTrap(this.bodyTarget, {\n fallbackFocus: this.bodyTarget,\n setReturnFocus: this.triggerTarget,\n allowOutsideClick: this.#allowClickOutside.bind(this),\n onDeactivate: () => (this.openedValue = false),\n })\n }\n\n toggle() {\n this.openedValue = !this.openedValue\n }\n\n close() {\n this.openedValue = false\n }\n\n openedValueChanged(opened) {\n this.triggerTarget.setAttribute('aria-expanded', opened)\n\n if (!this.focusTrap) return\n\n if (opened) {\n this.#openBody()\n this.focusTrap.activate()\n return\n }\n\n this.#closeBody()\n this.focusTrap.deactivate()\n }\n\n placementValueChanged(_, prevPosition) {\n if (!prevPosition) return\n\n this.#computePosition()\n }\n\n #openBody() {\n this.#computePosition()\n\n this.bodyTarget.show()\n\n this.bodyTarget.classList.add('block')\n }\n\n #closeBody() {\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate()\n }\n\n this.bodyTarget.close()\n\n this.bodyTarget.addEventListener(\n 'animationend',\n () => {\n this.bodyTarget.classList.remove('block')\n },\n { once: true },\n )\n }\n\n #computePosition() {\n const middleware = [offset(8)]\n\n if (this.placementValue === 'auto') {\n middleware.push(autoPlacement())\n }\n\n if (this.hasArrowTarget) {\n middleware.push(arrow({ element: this.arrowTarget }))\n }\n\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate()\n }\n\n this.cleanupAutoUpdate = autoUpdate(this.triggerTarget, this.bodyTarget, () => {\n computePosition(this.triggerTarget, this.bodyTarget, {\n placement: this.placementValue,\n middleware,\n }).then(({ x, y, middlewareData, placement }) => {\n Object.assign(this.bodyTarget.style, {\n left: `${x}px`,\n top: `${y}px`,\n })\n\n const parsedPlacement = placement.split('-')[0]\n\n this.bodyTarget.setAttribute('data-side', parsedPlacement)\n\n if (!middlewareData.arrow) return\n\n const { x: arrowX, y: arrowY } = middlewareData.arrow\n let position = {\n left: arrowX === undefined ? '' : `${arrowX}px`,\n top: arrowY === undefined ? '' : `${arrowY}px`,\n }\n\n switch (parsedPlacement) {\n case 'bottom':\n position.top = this.#halfArrowWidth\n break\n case 'top':\n position.bottom = this.#halfArrowWidth\n break\n case 'right':\n position.left = this.#halfArrowWidth\n break\n case 'left':\n position.right = this.#halfArrowWidth\n break\n default:\n position.bottom = this.#halfArrowWidth\n }\n\n Object.assign(this.arrowTarget.style, position)\n })\n })\n }\n\n #allowClickOutside({ target }) {\n if (target === this.triggerTarget) {\n return true\n }\n\n if (getComputedStyle(target).position === 'absolute') {\n return false\n }\n\n this.openedValue = false\n return true\n }\n\n get #halfArrowWidth() {\n return `-${this.arrowTarget.offsetWidth / 2}px`\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['count']\n\n toggle({ detail: { collapsed } }) {\n if (!this.hasCountTarget) {\n return\n }\n\n if (collapsed) {\n this.countTarget.classList.add('hidden')\n } else {\n this.countTarget.classList.remove('hidden')\n }\n }\n}\n", "import { Turbo } from '@hotwired/turbo-rails'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n document.addEventListener('turbo:submit-end', this.submit.bind(this))\n }\n\n submit(event) {\n if (event.detail.success && event.detail.fetchResponse.response.redirected) {\n Turbo.visit(event.detail.fetchResponse.response.url)\n }\n }\n\n disconnect() {\n document.removeEventListener('turbo:submit-end', this.submit.bind(this))\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport TomSelect from 'tom-select'\n\nexport default class extends Controller {\n static values = {\n placeholder: String,\n polymorphic: Boolean,\n selectedType: { type: String, default: 'Person' },\n }\n\n initialize() {\n this.tomSelect = new TomSelect(this.element, {\n search: false,\n persist: false,\n highlight: false,\n addPrecedence: true,\n selectOnTab: true,\n valueField: 'id',\n labelField: 'text',\n placeholder: this.placeholderValue,\n render: {\n item: this.#renderItem.bind(this),\n option: this.#renderOption,\n no_results: null,\n },\n })\n }\n\n updateType(pluralType) {\n if (pluralType === 'families') {\n this.#type = 'Family'\n return\n }\n\n this.#type = 'Person'\n }\n\n set #type(value) {\n this.selectedTypeValue = value\n this.element.nextElementSibling.nextElementSibling.value = value\n }\n\n #renderItem(item, escape) {\n if (this.polymorphicValue) {\n this.updateType(item.type)\n }\n\n return `<span class=\"flex gap-1 items-center\">\n <img src=\"${escape(item.image)}\" class=\"employee-image !w-4 !h-4\" />\n ${escape(item.text)}\n </span>`\n }\n\n #renderOption(item, escape) {\n return `<span class=\"flex gap-2 items-center\">\n <img src=\"${escape(item.image)}\" class=\"employee-image !w-10 !h-10\" />\n ${escape(item.text)}\n </span>`\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = { hidden: { type: Boolean, default: true } }\n static targets = ['container']\n\n show() {\n this.hiddenValue = false\n }\n\n hide() {\n this.hiddenValue = true\n }\n\n toggle() {\n this.hiddenValue = !this.hiddenValue\n }\n\n hiddenValueChanged(value) {\n this.containerTargets.forEach((container) => (container.hidden = value))\n }\n}\n", "import ToggleVisibilityController from './toggle_visibility_controller'\n\nexport default class extends ToggleVisibilityController {\n static targets = ['input']\n\n populate({ params: { values } }) {\n Object.entries(values).forEach(([key, value]) => {\n const input = this.inputTargets.find((inp) => inp.name.includes(key))\n\n if (!input) return\n\n input.value = value\n })\n }\n\n clear() {\n this.inputTargets.forEach((input) => {\n input.value = null\n\n input.dispatchEvent(new Event('change'))\n })\n }\n\n hiddenValueChanged(value) {\n super.hiddenValueChanged(value)\n\n this.containerTargets.forEach((container) => {\n const inputs = [...container.querySelectorAll('input'), ...container.querySelectorAll('select')]\n\n inputs\n .filter((input) => {\n const closestController = input.closest('[data-controller*=\"hideable-form\"]')\n\n return closestController === this.element\n })\n .forEach((input) => (input.disabled = value))\n\n const tomSelects = [...container.querySelectorAll('[data-controller*=\"tom-select\"]')]\n .filter((element) => {\n const closestController = element.closest('[data-controller*=\"hideable-form\"]')\n\n return closestController === this.element\n })\n .map((element) => this.application.getControllerForElementAndIdentifier(element, 'tom-select')?.tomSelect)\n .filter((t) => t)\n\n tomSelects.forEach((select) => {\n if (value) {\n select.disable()\n } else {\n select.enable()\n }\n })\n })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport Fuse from 'fuse.js'\n\nexport default class extends Controller {\n static targets = ['item', 'field']\n\n search() {\n const value = this.fieldTarget.value\n\n if (!value) {\n this.reset()\n\n return\n }\n\n const fuse = new Fuse(this.#fuseList, { includeScore: true, keys: [{ name: 'title' }] })\n\n const results = fuse.search(value).filter((result) => result.score <= 0.5)\n\n this.itemTargets.forEach((target) => (target.hidden = true))\n\n results.forEach(({ item: { element } }) => (element.hidden = false))\n }\n\n reset() {\n this.fieldTarget.value = ''\n this.itemTargets.forEach((target) => (target.hidden = false))\n }\n\n get #fuseList() {\n return this.itemTargets.map((target) => ({\n title: target.dataset.value || target.textContent,\n element: target,\n }))\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['submit']\n\n connect() {\n this.formData = new FormData(this.element)\n }\n\n toggleSubmit() {\n if (!this.hasSubmitTarget) return\n\n const newData = new FormData(this.element)\n const oldValues = new Set(Array.from(this.formData).map((arr) => arr[1]))\n const newValues = new Set(Array.from(newData).map((arr) => arr[1]))\n\n const symmetricDifference = oldValues.symmetricDifference(newValues)\n\n this.submitTarget.hidden = symmetricDifference.size <= 0\n }\n\n reset() {\n this.submitTarget.hidden = true\n this.formData = new FormData(this.element)\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n start() {\n this.disabledInputs = Array.from(this.element.querySelectorAll('input:not([disabled])'))\n\n this.disabledInputs.forEach((input) => (input.disabled = true))\n }\n\n end() {\n this.disabledInputs?.forEach((input) => (input.disabled = false))\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport React, { Fragment } from 'preact/compat'\nimport { h, render } from 'preact'\nimport { LeadCaptureForm } from '../components/lead_capture_form'\nimport { signal } from '@preact/signals'\n\nexport default class extends Controller {\n static values = { json: Object }\n static targets = ['form', 'container', 'phoneField']\n\n jsonSignal\n\n initialize() {\n this.jsonSignal = signal(this.jsonValue)\n\n this.update()\n this.containerTarget.innerHTML = ''\n this.#render()\n }\n\n update() {\n const formData = new FormData(this.formTarget)\n const baseKey = 'lead_capture_form[lead_capture_form_fields_attributes]'\n const fieldIndices = Array.from(\n new Set(\n Array.from(formData.keys())\n .filter((key) => key.startsWith(baseKey))\n .map((key) => key.match(/-?\\d+/g)[0])\n .filter((index) => index),\n ),\n )\n\n const fieldsOrdered = fieldIndices.reduce((acc, index) => {\n const formKey = (name) => `${baseKey}[${index}][${name}]`\n const order = Number(formData.get(formKey('order')))\n const key = formData.get(formKey('key'))\n const label = formData.get(formKey('label'))\n let type = formData.get(formKey('type'))\n const required = key === 'name' || formData.getAll(formKey('required')).includes('1')\n\n if (formData.get(formKey('enter_as'))?.includes('phone')) {\n type = 'tel'\n }\n\n const destroyed = formData.getAll(formKey('_destroy')).includes('1')\n\n if (!destroyed) {\n acc[order] = { key, label, type, required }\n }\n\n return acc\n }, {})\n\n const fields = Object.keys(fieldsOrdered)\n .sort()\n .map((key) => fieldsOrdered[key])\n\n const colors = Object.fromEntries(\n ['primary_color', 'secondary_color', 'tertiary_color', 'quaternary_color', 'shadow_color'].map((color) => [\n color,\n formData.get(`lead_capture_form[lead_capture_form_theme_attributes][${color}]`),\n ]),\n )\n\n this.jsonValue = { ...this.jsonValue, fields, ...colors }\n }\n\n jsonValueChanged() {\n this.jsonSignal.value = this.jsonValue\n }\n\n #render() {\n const BoundPreview = this.Preview.bind(this)\n\n render(<BoundPreview />, this.containerTarget)\n }\n\n Preview() {\n const data = this.jsonSignal.value\n let style = `--primary-color: ${data.primary_color}; --secondary-color: ${data.secondary_color};`\n style += ` --tertiary-color: ${data.tertiary_color}; --quaternary-color: ${data.quaternary_color};`\n style += ` --shadow-color:${data.shadow_color}; --secondary-color-light: ${data.secondary_color}BF;`\n style += ` --btn-bg: var(--primary-color); --btn-hocus-bg: ${data.primary_color}E6;`\n style += ' --btn-text-color: var(--quaternary-color); --input-border-color: var(--secondary-color-light);'\n style += ' --input-border-focus-color: var(--primary-color); --toggle-bg-on: var(--primary-color);'\n style += ' --toggle-bg-off: var(--secondary-color-light); --toggle-handle-bg: var(--tertiary-color)'\n\n return (\n <div\n class=\"bg-[--tertiary-color] p-3 pointer-events-none space-y-3\"\n style={`${style}; color: var(--secondary-color) !important;`}\n >\n <LeadCaptureForm leadCaptureForm={data.fields} />\n <div class=\"flex justify-end\">\n <button type=\"button\" class=\"btn\">\n SUBMIT\n </button>\n </div>\n </div>\n )\n }\n}\n", "import React, { Fragment } from 'preact/compat'\nimport { h } from 'preact'\nimport { AddressField } from './address_field'\nimport { useError } from './landing_page'\nimport { PhoneFieldWithSms, PhoneField } from './phone_field'\nimport { Select } from './select'\nimport { useId } from 'preact/hooks'\n\nexport function LeadCaptureForm({ member = {}, leadCaptureForm }) {\n const { errors } = useError()\n const id = useId()\n\n return (\n <>\n {leadCaptureForm.map((field) => (\n <div key={field.key}>\n <label class=\"flex items-center gap-1 mb-1\" for={`${id}-${field.key}`}>\n <span\n class={`font-medium uppercase tracking-widest ${\n (field.key === 'name' || field.required) && 'required'\n }`}\n >\n {field.label}\n </span>\n {!field.required && <span class=\"text-[var(--secondary-color-light)]\">(Optional)</span>}\n </label>\n {renderField(field, member, errors, `${id}-${field.key}`)}\n </div>\n ))}\n </>\n )\n}\n\nfunction renderField(field, member, errors, id) {\n if (field.key === 'phone') {\n return (\n <PhoneFieldWithSms\n id={id}\n number={member.phone?.number}\n sendSms={member.phone?.send_sms}\n required={field.required}\n errors={errors}\n numberChange={(number) => {\n member.phone ||= {}\n member.phone.number = number\n }}\n smsChange={(sendSms) => {\n member.phone ||= {}\n member.phone.send_sms = sendSms\n }}\n />\n )\n }\n\n if (field.type === 'tel') {\n return (\n <PhoneField\n id={id}\n number={member.phone?.number}\n required={field.required}\n numberChange={(number) => {\n member[field.key] = number\n }}\n />\n )\n }\n\n if (field.key === 'address') {\n return (\n <AddressField\n id={id}\n address={member.address || {}}\n required={field.required}\n addressChange={(address) => (member.address = address)}\n />\n )\n }\n\n if (field.type === 'select') {\n return <LCFSelect id={id} field={field} member={member} />\n }\n\n return (\n <input\n id={id}\n type={field.type}\n class={`input input-border ${field.type === 'date' ? 'h-10' : ''}`}\n placeholder=\"Type here\"\n value={member[field.key] || ''}\n required={field.required}\n onInput={({ target }) => (member[field.key] = target.value)}\n />\n )\n}\n\nfunction LCFSelect({ field, id, member }) {\n return (\n <Select\n id={id}\n type={field.type}\n required={field.required}\n onInput={({ target }) => (member[field.key] = target.value)}\n >\n <option selected disabled hidden value={field.required ? '' : null}>\n Select\n </option>\n\n {field.options?.map((option) => (\n <option value={option} selected={member[field.key] === option}>\n {option}\n </option>\n ))}\n </Select>\n )\n}\n", "import React, { useEffect, useRef } from 'preact/compat'\nimport { h, Fragment } from 'preact'\n\nexport function AddressField({ address, addressChange, required, id }) {\n const controllerRef = useRef(null)\n const addressRefs = useRef({})\n\n const hiddenFields = ['street', 'city', 'state', 'zip', 'country', 'lat', 'lng']\n\n const addressChangeCallback = () => {\n const newAddress = {}\n\n newAddress.full = addressRefs.current.full?.value\n newAddress.street_2 = addressRefs.current.street_2?.value\n ;['street', 'city', 'state', 'zip', 'country', 'lat', 'lng'].forEach((name) => {\n newAddress[name] = addressRefs.current[name]?.value\n })\n\n addressChange(newAddress)\n }\n\n useEffect(() => {\n const controllerElement = controllerRef.current\n\n controllerElement?.addEventListener('address-field--component:input', addressChangeCallback)\n\n return () => {\n controllerElement?.removeEventListener('address-field--component:input', addressChangeCallback)\n }\n }, [addressChange])\n\n return (\n <div\n ref={controllerRef}\n class=\"address-field\"\n data-controller=\"address-field--component\"\n data-address-field--component-message-value=\"Please select an address from the dropdown before proceeding.\"\n >\n <div className=\"visible-fields\">\n <input\n id={id}\n type=\"text\"\n class=\"input input-border\"\n placeholder=\"Type here\"\n value={address.full}\n required={required}\n data-address-field--component-target=\"autocomplete\"\n data-action=\"address-field--component#clearHiddenFields\"\n ref={(el) => (addressRefs.current.full = el)}\n />\n <input\n type=\"text\"\n class=\"input input-border\"\n placeholder=\"(Optional) Apartment/Suite number, etc.\"\n value={address.street_2}\n ref={(el) => (addressRefs.current.street_2 = el)}\n onInput={addressChangeCallback}\n />\n </div>\n\n {hiddenFields.map((name) => (\n <input\n type=\"hidden\"\n value={address[name]}\n data-address-field--component-target={name}\n ref={(el) => (addressRefs.current[name] = el)}\n />\n ))}\n </div>\n )\n}\n", "import React from 'preact/compat'\nimport { createContext, h } from 'preact'\nimport { useContext } from 'preact/hooks'\nimport { signal } from '@preact/signals'\nimport { SignUp } from './landing_pages/sign_up'\nimport { Merchandise } from './landing_pages/merchandise'\nimport { Confirmation } from './landing_pages/confirmation'\nimport { StepTracker } from './landing_pages/step_tracker'\nimport { Cart } from './landing_pages/cart'\nimport { Agreements } from './agreements'\n\nexport const LandingPageState = createContext({\n step: signal(1),\n numberOfSteps: 3,\n members: signal([{ primary: true }]),\n leadCaptureForm: {},\n guardianLeadCaptureForm: {},\n agreements: [],\n merchandise: null,\n cart: signal(new Map()),\n errors: signal({}),\n familyCreation: false,\n theme: {},\n merchantAccount: null,\n membershipTemplates: [],\n classes: [],\n preview: false,\n})\n\nexport function useLeadCaptureForm() {\n const { leadCaptureForm, guardianLeadCaptureForm } = useContext(LandingPageState)\n\n return { leadCaptureForm, guardianLeadCaptureForm }\n}\n\nexport function useFamilyCreation() {\n const { familyCreation } = useContext(LandingPageState)\n\n return familyCreation\n}\n\nexport function useBilling() {\n const { merchantAccount, cart, members } = useContext(LandingPageState)\n\n const strictVaulting = members.value.some((member) => Boolean(member.membershipTemplate?.billing_interval))\n\n const paymentRequired = Boolean(merchantAccount) && cart.value.size > 0\n\n return { paymentRequired, merchantAccount, strictVaulting }\n}\n\nexport function useAgreements() {\n const { agreements } = useContext(LandingPageState)\n\n return agreements\n}\n\nexport function useMerchandise() {\n const { merchandise } = useContext(LandingPageState)\n\n return merchandise\n}\n\nexport function useStep() {\n const { step, numberOfSteps } = useContext(LandingPageState)\n\n const nextStep = () => {\n if (step.value < numberOfSteps) {\n step.value++\n }\n }\n\n const jumpToStep = (newStep) => {\n step.value = newStep\n }\n\n const previousStep = () => {\n if (step.value > 1) {\n step.value--\n }\n }\n\n return { step: step.value, numberOfSteps, nextStep, previousStep, jumpToStep }\n}\n\nexport function useMembers() {\n const { members } = useContext(LandingPageState)\n\n const addMember = () => {\n members.value = [...members.value, { participating: true, usePrimaryInfo: true }]\n }\n\n const ensureParticipant = () => {\n if (members.value.filter((member) => member.participating).length < 1) {\n addMember()\n }\n }\n\n return { members: members.value, addMember, ensureParticipant }\n}\n\nexport function useMembershipTemplates() {\n const { membershipTemplates } = useContext(LandingPageState)\n\n return membershipTemplates\n}\n\nexport function useClasses() {\n const { classes } = useContext(LandingPageState)\n\n const classesFor = (programId) => classes[programId.toString()]\n\n return { hasClasses: Boolean(classes), classesFor, required: classes?.required }\n}\n\nexport function useError() {\n const { errors } = useContext(LandingPageState)\n\n const setError = (value) => {\n errors.value = value\n }\n\n const clearError = (key = null) => {\n if (!key) {\n errors.value = {}\n\n return\n }\n\n delete errors.value[key]\n\n // eslint-disable-next-line no-self-assign\n errors.value = errors.value\n }\n\n return { errors: errors.value, setError, clearError }\n}\n\nexport function useTheme() {\n const { theme } = useContext(LandingPageState)\n\n return theme\n}\n\nexport function usePreview() {\n const { preview } = useContext(LandingPageState)\n\n return preview\n}\n\nfunction LandingPageCore() {\n const agreements = useAgreements()\n const merchandise = useMerchandise()\n const { step, numberOfSteps } = useStep()\n\n return (\n <div class=\"mt-6\">\n <div class=\"flex item-center gap-4 justify-between mb-4\">\n <div class=\"text-xl font-bold\">Sign Up</div>\n\n <div className=\"flex items-center gap-2\">\n <StepTracker />\n\n <Cart />\n </div>\n </div>\n\n {step === 1 && <SignUp />}\n {step === 2 && step < numberOfSteps && merchandise && <Merchandise />}\n {step === numberOfSteps - 1 && agreements && <Agreements />}\n {step === numberOfSteps && <Confirmation />}\n </div>\n )\n}\n\nexport function LandingPage({\n leadCaptureForm,\n guardianLeadCaptureForm,\n merchandise,\n theme,\n merchantAccount,\n agreements,\n membershipTemplates,\n classes,\n preview = false,\n}) {\n let numberOfSteps = 2\n\n if (merchandise) numberOfSteps += 1\n if (agreements) numberOfSteps += 1\n\n return (\n <LandingPageState.Provider\n value={{\n step: signal(1),\n numberOfSteps,\n members: signal([{ participating: true }]),\n errors: signal({}),\n leadCaptureForm,\n guardianLeadCaptureForm,\n agreements,\n merchandise,\n cart: signal(new Map()),\n familyCreation: false,\n theme,\n merchantAccount,\n membershipTemplates,\n classes,\n preview,\n }}\n >\n <LandingPageCore />\n </LandingPageState.Provider>\n )\n}\n", "import { options, Component, isValidElement } from \"preact\";\nimport { useRef, useMemo, useEffect } from \"preact/hooks\";\nimport {\n\tsignal,\n\tcomputed,\n\tbatch,\n\teffect,\n\tSignal,\n\ttype ReadonlySignal,\n\tuntracked,\n} from \"@preact/signals-core\";\nimport {\n\tVNode,\n\tOptionsTypes,\n\tHookFn,\n\tEffect,\n\tPropertyUpdater,\n\tAugmentedComponent,\n\tAugmentedElement as Element,\n} from \"./internal\";\n\nexport {\n\tsignal,\n\tcomputed,\n\tbatch,\n\teffect,\n\tSignal,\n\ttype ReadonlySignal,\n\tuntracked,\n};\n\nconst HAS_PENDING_UPDATE = 1 << 0;\nconst HAS_HOOK_STATE = 1 << 1;\nconst HAS_COMPUTEDS = 1 << 2;\n\n// Install a Preact options hook\nfunction hook<T extends OptionsTypes>(hookName: T, hookFn: HookFn<T>) {\n\t// @ts-ignore-next-line private options hooks usage\n\toptions[hookName] = hookFn.bind(null, options[hookName] || (() => {}));\n}\n\nlet currentComponent: AugmentedComponent | undefined;\nlet finishUpdate: (() => void) | undefined;\n\nfunction setCurrentUpdater(updater?: Effect) {\n\t// end tracking for the current update:\n\tif (finishUpdate) finishUpdate();\n\t// start tracking the new update:\n\tfinishUpdate = updater && updater._start();\n}\n\nfunction createUpdater(update: () => void) {\n\tlet updater!: Effect;\n\teffect(function (this: Effect) {\n\t\tupdater = this;\n\t});\n\tupdater._callback = update;\n\treturn updater;\n}\n\n/** @todo This may be needed for complex prop value detection. */\n// function isSignalValue(value: any): value is Signal {\n// \tif (typeof value !== \"object\" || value == null) return false;\n// \tif (value instanceof Signal) return true;\n// \t// @TODO: uncomment this when we land Reactive (ideally behind a brand check)\n// \t// for (let i in value) if (value[i] instanceof Signal) return true;\n// \treturn false;\n// }\n\n/**\n * A wrapper component that renders a Signal directly as a Text node.\n * @todo: in Preact 11, just decorate Signal with `type:null`\n */\nfunction SignalValue(this: AugmentedComponent, { data }: { data: Signal }) {\n\t// hasComputeds.add(this);\n\n\t// Store the props.data signal in another signal so that\n\t// passing a new signal reference re-runs the text computed:\n\tconst currentSignal = useSignal(data);\n\tcurrentSignal.value = data;\n\n\tconst s = useMemo(() => {\n\t\t// mark the parent component as having computeds so it gets optimized\n\t\tlet v = this.__v;\n\t\twhile ((v = v.__!)) {\n\t\t\tif (v.__c) {\n\t\t\t\tv.__c._updateFlags |= HAS_COMPUTEDS;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis._updater!._callback = () => {\n\t\t\tif (isValidElement(s.peek()) || this.base?.nodeType !== 3) {\n\t\t\t\tthis._updateFlags |= HAS_PENDING_UPDATE;\n\t\t\t\tthis.setState({});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t(this.base as Text).data = s.peek();\n\t\t};\n\n\t\treturn computed(() => {\n\t\t\tlet data = currentSignal.value;\n\t\t\tlet s = data.value;\n\t\t\treturn s === 0 ? 0 : s === true ? \"\" : s || \"\";\n\t\t});\n\t}, []);\n\n\treturn s.value;\n}\nSignalValue.displayName = \"_st\";\n\nObject.defineProperties(Signal.prototype, {\n\tconstructor: { configurable: true, value: undefined },\n\ttype: { configurable: true, value: SignalValue },\n\tprops: {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn { data: this };\n\t\t},\n\t},\n\t// Setting a VNode's _depth to 1 forces Preact to clone it before modifying:\n\t// https://github.com/preactjs/preact/blob/d7a433ee8463a7dc23a05111bb47de9ec729ad4d/src/diff/children.js#L77\n\t// @todo remove this for Preact 11\n\t__b: { configurable: true, value: 1 },\n});\n\n/** Inject low-level property/attribute bindings for Signals into Preact's diff */\nhook(OptionsTypes.DIFF, (old, vnode) => {\n\tif (typeof vnode.type === \"string\") {\n\t\tlet signalProps: Record<string, any> | undefined;\n\n\t\tlet props = vnode.props;\n\t\tfor (let i in props) {\n\t\t\tif (i === \"children\") continue;\n\n\t\t\tlet value = props[i];\n\t\t\tif (value instanceof Signal) {\n\t\t\t\tif (!signalProps) vnode.__np = signalProps = {};\n\t\t\t\tsignalProps[i] = value;\n\t\t\t\tprops[i] = value.peek();\n\t\t\t}\n\t\t}\n\t}\n\n\told(vnode);\n});\n\n/** Set up Updater before rendering a component */\nhook(OptionsTypes.RENDER, (old, vnode) => {\n\tsetCurrentUpdater();\n\n\tlet updater;\n\n\tlet component = vnode.__c;\n\tif (component) {\n\t\tcomponent._updateFlags &= ~HAS_PENDING_UPDATE;\n\n\t\tupdater = component._updater;\n\t\tif (updater === undefined) {\n\t\t\tcomponent._updater = updater = createUpdater(() => {\n\t\t\t\tcomponent._updateFlags |= HAS_PENDING_UPDATE;\n\t\t\t\tcomponent.setState({});\n\t\t\t});\n\t\t}\n\t}\n\n\tcurrentComponent = component;\n\tsetCurrentUpdater(updater);\n\told(vnode);\n});\n\n/** Finish current updater if a component errors */\nhook(OptionsTypes.CATCH_ERROR, (old, error, vnode, oldVNode) => {\n\tsetCurrentUpdater();\n\tcurrentComponent = undefined;\n\told(error, vnode, oldVNode);\n});\n\n/** Finish current updater after rendering any VNode */\nhook(OptionsTypes.DIFFED, (old, vnode) => {\n\tsetCurrentUpdater();\n\tcurrentComponent = undefined;\n\n\tlet dom: Element;\n\n\t// vnode._dom is undefined during string rendering,\n\t// so we use this to skip prop subscriptions during SSR.\n\tif (typeof vnode.type === \"string\" && (dom = vnode.__e as Element)) {\n\t\tlet props = vnode.__np;\n\t\tlet renderedProps = vnode.props;\n\t\tif (props) {\n\t\t\tlet updaters = dom._updaters;\n\t\t\tif (updaters) {\n\t\t\t\tfor (let prop in updaters) {\n\t\t\t\t\tlet updater = updaters[prop];\n\t\t\t\t\tif (updater !== undefined && !(prop in props)) {\n\t\t\t\t\t\tupdater._dispose();\n\t\t\t\t\t\t// @todo we could just always invoke _dispose() here\n\t\t\t\t\t\tupdaters[prop] = undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tupdaters = {};\n\t\t\t\tdom._updaters = updaters;\n\t\t\t}\n\t\t\tfor (let prop in props) {\n\t\t\t\tlet updater = updaters[prop];\n\t\t\t\tlet signal = props[prop];\n\t\t\t\tif (updater === undefined) {\n\t\t\t\t\tupdater = createPropUpdater(dom, prop, signal, renderedProps);\n\t\t\t\t\tupdaters[prop] = updater;\n\t\t\t\t} else {\n\t\t\t\t\tupdater._update(signal, renderedProps);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\told(vnode);\n});\n\nfunction createPropUpdater(\n\tdom: Element,\n\tprop: string,\n\tpropSignal: Signal,\n\tprops: Record<string, any>\n): PropertyUpdater {\n\tconst setAsProperty =\n\t\tprop in dom &&\n\t\t// SVG elements need to go through `setAttribute` because they\n\t\t// expect things like SVGAnimatedTransformList instead of strings.\n\t\t// @ts-ignore\n\t\tdom.ownerSVGElement === undefined;\n\n\tconst changeSignal = signal(propSignal);\n\treturn {\n\t\t_update: (newSignal: Signal, newProps: typeof props) => {\n\t\t\tchangeSignal.value = newSignal;\n\t\t\tprops = newProps;\n\t\t},\n\t\t_dispose: effect(() => {\n\t\t\tconst value = changeSignal.value.value;\n\t\t\t// If Preact just rendered this value, don't render it again:\n\t\t\tif (props[prop] === value) return;\n\t\t\tprops[prop] = value;\n\t\t\tif (setAsProperty) {\n\t\t\t\t// @ts-ignore-next-line silly\n\t\t\t\tdom[prop] = value;\n\t\t\t} else if (value) {\n\t\t\t\tdom.setAttribute(prop, value);\n\t\t\t} else {\n\t\t\t\tdom.removeAttribute(prop);\n\t\t\t}\n\t\t}),\n\t};\n}\n\n/** Unsubscribe from Signals when unmounting components/vnodes */\nhook(OptionsTypes.UNMOUNT, (old, vnode: VNode) => {\n\tif (typeof vnode.type === \"string\") {\n\t\tlet dom = vnode.__e as Element | undefined;\n\t\t// vnode._dom is undefined during string rendering\n\t\tif (dom) {\n\t\t\tconst updaters = dom._updaters;\n\t\t\tif (updaters) {\n\t\t\t\tdom._updaters = undefined;\n\t\t\t\tfor (let prop in updaters) {\n\t\t\t\t\tlet updater = updaters[prop];\n\t\t\t\t\tif (updater) updater._dispose();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tlet component = vnode.__c;\n\t\tif (component) {\n\t\t\tconst updater = component._updater;\n\t\t\tif (updater) {\n\t\t\t\tcomponent._updater = undefined;\n\t\t\t\tupdater._dispose();\n\t\t\t}\n\t\t}\n\t}\n\told(vnode);\n});\n\n/** Mark components that use hook state so we can skip sCU optimization. */\nhook(OptionsTypes.HOOK, (old, component, index, type) => {\n\tif (type < 3 || type === 9)\n\t\t(component as AugmentedComponent)._updateFlags |= HAS_HOOK_STATE;\n\told(component, index, type);\n});\n\n/**\n * Auto-memoize components that use Signals/Computeds.\n * Note: Does _not_ optimize components that use hook/class state.\n */\nComponent.prototype.shouldComponentUpdate = function (\n\tthis: AugmentedComponent,\n\tprops,\n\tstate\n) {\n\t// @todo: Once preactjs/preact#3671 lands, this could just use `currentUpdater`:\n\tconst updater = this._updater;\n\tconst hasSignals = updater && updater._sources !== undefined;\n\n\t// let reason;\n\t// if (!hasSignals && !hasComputeds.has(this)) {\n\t// \treason = \"no signals or computeds\";\n\t// } else if (hasPendingUpdate.has(this)) {\n\t// \treason = \"has pending update\";\n\t// } else if (hasHookState.has(this)) {\n\t// \treason = \"has hook state\";\n\t// }\n\t// if (reason) {\n\t// \tif (!this) reason += \" (`this` bug)\";\n\t// \tconsole.log(\"not optimizing\", this?.constructor?.name, \": \", reason, {\n\t// \t\tdetails: {\n\t// \t\t\thasSignals,\n\t// \t\t\thasComputeds: hasComputeds.has(this),\n\t// \t\t\thasPendingUpdate: hasPendingUpdate.has(this),\n\t// \t\t\thasHookState: hasHookState.has(this),\n\t// \t\t\tdeps: Array.from(updater._deps),\n\t// \t\t\tupdater,\n\t// \t\t},\n\t// \t});\n\t// }\n\n\t// if this component used no signals or computeds, update:\n\tif (!hasSignals && !(this._updateFlags & HAS_COMPUTEDS)) return true;\n\n\t// if there is a pending re-render triggered from Signals,\n\t// or if there is hook or class state, update:\n\tif (this._updateFlags & (HAS_PENDING_UPDATE | HAS_HOOK_STATE)) return true;\n\n\t// @ts-ignore\n\tfor (let i in state) return true;\n\n\t// if any non-Signal props changed, update:\n\tfor (let i in props) {\n\t\tif (i !== \"__source\" && props[i] !== this.props[i]) return true;\n\t}\n\tfor (let i in this.props) if (!(i in props)) return true;\n\n\t// this is a purely Signal-driven component, don't update:\n\treturn false;\n};\n\nexport function useSignal<T>(value: T): Signal<T>;\nexport function useSignal<T = undefined>(): Signal<T | undefined>;\nexport function useSignal<T>(value?: T) {\n\treturn useMemo(() => signal<T | undefined>(value), []);\n}\n\nexport function useComputed<T>(compute: () => T) {\n\tconst $compute = useRef(compute);\n\t$compute.current = compute;\n\t(currentComponent as AugmentedComponent)._updateFlags |= HAS_COMPUTEDS;\n\treturn useMemo(() => computed<T>(() => $compute.current()), []);\n}\n\nexport function useSignalEffect(cb: () => void | (() => void)) {\n\tconst callback = useRef(cb);\n\tcallback.current = cb;\n\n\tuseEffect(() => {\n\t\treturn effect(() => callback.current());\n\t}, []);\n}\n\n/**\n * @todo Determine which Reactive implementation we'll be using.\n * @internal\n */\n// export function useReactive<T extends object>(value: T): Reactive<T> {\n// \treturn useMemo(() => reactive<T>(value), []);\n// }\n\n/**\n * @internal\n * Update a Reactive's using the properties of an object or other Reactive.\n * Also works for Signals.\n * @example\n * // Update a Reactive with Object.assign()-like syntax:\n * const r = reactive({ name: \"Alice\" });\n * update(r, { name: \"Bob\" });\n * update(r, { age: 42 }); // property 'age' does not exist in type '{ name?: string }'\n * update(r, 2); // '2' has no properties in common with '{ name?: string }'\n * console.log(r.name.value); // \"Bob\"\n *\n * @example\n * // Update a Reactive with the properties of another Reactive:\n * const A = reactive({ name: \"Alice\" });\n * const B = reactive({ name: \"Bob\", age: 42 });\n * update(A, B);\n * console.log(`${A.name} is ${A.age}`); // \"Bob is 42\"\n *\n * @example\n * // Update a signal with assign()-like syntax:\n * const s = signal(42);\n * update(s, \"hi\"); // Argument type 'string' not assignable to type 'number'\n * update(s, {}); // Argument type '{}' not assignable to type 'number'\n * update(s, 43);\n * console.log(s.value); // 43\n *\n * @param obj The Reactive or Signal to be updated\n * @param update The value, Signal, object or Reactive to update `obj` to match\n * @param overwrite If `true`, any properties `obj` missing from `update` are set to `undefined`\n */\n/*\nexport function update<T extends SignalOrReactive>(\n\tobj: T,\n\tupdate: Partial<Unwrap<T>>,\n\toverwrite = false\n) {\n\tif (obj instanceof Signal) {\n\t\tobj.value = peekValue(update);\n\t} else {\n\t\tfor (let i in update) {\n\t\t\tif (i in obj) {\n\t\t\t\tobj[i].value = peekValue(update[i]);\n\t\t\t} else {\n\t\t\t\tlet sig = signal(peekValue(update[i]));\n\t\t\t\tsig[KEY] = i;\n\t\t\t\tobj[i] = sig;\n\t\t\t}\n\t\t}\n\t\tif (overwrite) {\n\t\t\tfor (let i in obj) {\n\t\t\t\tif (!(i in update)) {\n\t\t\t\t\tobj[i].value = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n*/\n", "// An named symbol/brand for detecting Signal instances even when they weren't\n// created using the same signals library version.\nconst BRAND_SYMBOL = Symbol.for(\"preact-signals\");\n\n// Flags for Computed and Effect.\nconst RUNNING = 1 << 0;\nconst NOTIFIED = 1 << 1;\nconst OUTDATED = 1 << 2;\nconst DISPOSED = 1 << 3;\nconst HAS_ERROR = 1 << 4;\nconst TRACKING = 1 << 5;\n\n// A linked list node used to track dependencies (sources) and dependents (targets).\n// Also used to remember the source's last version number that the target saw.\ntype Node = {\n\t// A source whose value the target depends on.\n\t_source: Signal;\n\t_prevSource?: Node;\n\t_nextSource?: Node;\n\n\t// A target that depends on the source and should be notified when the source changes.\n\t_target: Computed | Effect;\n\t_prevTarget?: Node;\n\t_nextTarget?: Node;\n\n\t// The version number of the source that target has last seen. We use version numbers\n\t// instead of storing the source value, because source values can take arbitrary amount\n\t// of memory, and computeds could hang on to them forever because they're lazily evaluated.\n\t// Use the special value -1 to mark potentially unused but recyclable nodes.\n\t_version: number;\n\n\t// Used to remember & roll back the source's previous `._node` value when entering &\n\t// exiting a new evaluation context.\n\t_rollbackNode?: Node;\n};\n\nfunction startBatch() {\n\tbatchDepth++;\n}\n\nfunction endBatch() {\n\tif (batchDepth > 1) {\n\t\tbatchDepth--;\n\t\treturn;\n\t}\n\n\tlet error: unknown;\n\tlet hasError = false;\n\n\twhile (batchedEffect !== undefined) {\n\t\tlet effect: Effect | undefined = batchedEffect;\n\t\tbatchedEffect = undefined;\n\n\t\tbatchIteration++;\n\n\t\twhile (effect !== undefined) {\n\t\t\tconst next: Effect | undefined = effect._nextBatchedEffect;\n\t\t\teffect._nextBatchedEffect = undefined;\n\t\t\teffect._flags &= ~NOTIFIED;\n\n\t\t\tif (!(effect._flags & DISPOSED) && needsToRecompute(effect)) {\n\t\t\t\ttry {\n\t\t\t\t\teffect._callback();\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (!hasError) {\n\t\t\t\t\t\terror = err;\n\t\t\t\t\t\thasError = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\teffect = next;\n\t\t}\n\t}\n\tbatchIteration = 0;\n\tbatchDepth--;\n\n\tif (hasError) {\n\t\tthrow error;\n\t}\n}\n\n/**\n * Combine multiple value updates into one \"commit\" at the end of the provided callback.\n *\n * Batches can be nested and changes are only flushed once the outermost batch callback\n * completes.\n *\n * Accessing a signal that has been modified within a batch will reflect its updated\n * value.\n *\n * @param fn The callback function.\n * @returns The value returned by the callback.\n */\nfunction batch<T>(fn: () => T): T {\n\tif (batchDepth > 0) {\n\t\treturn fn();\n\t}\n\t/*@__INLINE__**/ startBatch();\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tendBatch();\n\t}\n}\n\n// Currently evaluated computed or effect.\nlet evalContext: Computed | Effect | undefined = undefined;\n\n/**\n * Run a callback function that can access signal values without\n * subscribing to the signal updates.\n *\n * @param fn The callback function.\n * @returns The value returned by the callback.\n */\nfunction untracked<T>(fn: () => T): T {\n\tconst prevContext = evalContext;\n\tevalContext = undefined;\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tevalContext = prevContext;\n\t}\n}\n\n// Effects collected into a batch.\nlet batchedEffect: Effect | undefined = undefined;\nlet batchDepth = 0;\nlet batchIteration = 0;\n\n// A global version number for signals, used for fast-pathing repeated\n// computed.peek()/computed.value calls when nothing has changed globally.\nlet globalVersion = 0;\n\nfunction addDependency(signal: Signal): Node | undefined {\n\tif (evalContext === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet node = signal._node;\n\tif (node === undefined || node._target !== evalContext) {\n\t\t/**\n\t\t * `signal` is a new dependency. Create a new dependency node, and set it\n\t\t * as the tail of the current context's dependency list. e.g:\n\t\t *\n\t\t * { A <-> B }\n\t\t * \u2191 \u2191\n\t\t * tail node (new)\n\t\t * \u2193\n\t\t * { A <-> B <-> C }\n\t\t * \u2191\n\t\t * tail (evalContext._sources)\n\t\t */\n\t\tnode = {\n\t\t\t_version: 0,\n\t\t\t_source: signal,\n\t\t\t_prevSource: evalContext._sources,\n\t\t\t_nextSource: undefined,\n\t\t\t_target: evalContext,\n\t\t\t_prevTarget: undefined,\n\t\t\t_nextTarget: undefined,\n\t\t\t_rollbackNode: node,\n\t\t};\n\n\t\tif (evalContext._sources !== undefined) {\n\t\t\tevalContext._sources._nextSource = node;\n\t\t}\n\t\tevalContext._sources = node;\n\t\tsignal._node = node;\n\n\t\t// Subscribe to change notifications from this dependency if we're in an effect\n\t\t// OR evaluating a computed signal that in turn has subscribers.\n\t\tif (evalContext._flags & TRACKING) {\n\t\t\tsignal._subscribe(node);\n\t\t}\n\t\treturn node;\n\t} else if (node._version === -1) {\n\t\t// `signal` is an existing dependency from a previous evaluation. Reuse it.\n\t\tnode._version = 0;\n\n\t\t/**\n\t\t * If `node` is not already the current tail of the dependency list (i.e.\n\t\t * there is a next node in the list), then make the `node` the new tail. e.g:\n\t\t *\n\t\t * { A <-> B <-> C <-> D }\n\t\t * \u2191 \u2191\n\t\t * node \u250C\u2500\u2500\u2500 tail (evalContext._sources)\n\t\t * \u2514\u2500\u2500\u2500\u2500\u2500\u2502\u2500\u2500\u2500\u2500\u2500\u2510\n\t\t * \u2193 \u2193\n\t\t * { A <-> C <-> D <-> B }\n\t\t * \u2191\n\t\t * tail (evalContext._sources)\n\t\t */\n\t\tif (node._nextSource !== undefined) {\n\t\t\tnode._nextSource._prevSource = node._prevSource;\n\n\t\t\tif (node._prevSource !== undefined) {\n\t\t\t\tnode._prevSource._nextSource = node._nextSource;\n\t\t\t}\n\n\t\t\tnode._prevSource = evalContext._sources;\n\t\t\tnode._nextSource = undefined;\n\n\t\t\tevalContext._sources!._nextSource = node;\n\t\t\tevalContext._sources = node;\n\t\t}\n\n\t\t// We can assume that the currently evaluated effect / computed signal is already\n\t\t// subscribed to change notifications from `signal` if needed.\n\t\treturn node;\n\t}\n\treturn undefined;\n}\n\n/**\n * The base class for plain and computed signals.\n */\n// @ts-ignore: \"Cannot redeclare exported variable 'Signal'.\"\n//\n// A function with the same name is defined later, so we need to ignore TypeScript's\n// warning about a redeclared variable.\n//\n// The class is declared here, but later implemented with ES5-style prototypes.\n// This enables better control of the transpiled output size.\ndeclare class Signal<T = any> {\n\t/** @internal */\n\t_value: unknown;\n\n\t/**\n\t * @internal\n\t * Version numbers should always be >= 0, because the special value -1 is used\n\t * by Nodes to signify potentially unused but recyclable nodes.\n\t */\n\t_version: number;\n\n\t/** @internal */\n\t_node?: Node;\n\n\t/** @internal */\n\t_targets?: Node;\n\n\tconstructor(value?: T);\n\n\t/** @internal */\n\t_refresh(): boolean;\n\n\t/** @internal */\n\t_subscribe(node: Node): void;\n\n\t/** @internal */\n\t_unsubscribe(node: Node): void;\n\n\tsubscribe(fn: (value: T) => void): () => void;\n\n\tvalueOf(): T;\n\n\ttoString(): string;\n\n\ttoJSON(): T;\n\n\tpeek(): T;\n\n\tbrand: typeof BRAND_SYMBOL;\n\n\tget value(): T;\n\tset value(value: T);\n}\n\n/** @internal */\n// @ts-ignore: \"Cannot redeclare exported variable 'Signal'.\"\n//\n// A class with the same name has already been declared, so we need to ignore\n// TypeScript's warning about a redeclared variable.\n//\n// The previously declared class is implemented here with ES5-style prototypes.\n// This enables better control of the transpiled output size.\nfunction Signal(this: Signal, value?: unknown) {\n\tthis._value = value;\n\tthis._version = 0;\n\tthis._node = undefined;\n\tthis._targets = undefined;\n}\n\nSignal.prototype.brand = BRAND_SYMBOL;\n\nSignal.prototype._refresh = function () {\n\treturn true;\n};\n\nSignal.prototype._subscribe = function (node) {\n\tif (this._targets !== node && node._prevTarget === undefined) {\n\t\tnode._nextTarget = this._targets;\n\t\tif (this._targets !== undefined) {\n\t\t\tthis._targets._prevTarget = node;\n\t\t}\n\t\tthis._targets = node;\n\t}\n};\n\nSignal.prototype._unsubscribe = function (node) {\n\t// Only run the unsubscribe step if the signal has any subscribers to begin with.\n\tif (this._targets !== undefined) {\n\t\tconst prev = node._prevTarget;\n\t\tconst next = node._nextTarget;\n\t\tif (prev !== undefined) {\n\t\t\tprev._nextTarget = next;\n\t\t\tnode._prevTarget = undefined;\n\t\t}\n\t\tif (next !== undefined) {\n\t\t\tnext._prevTarget = prev;\n\t\t\tnode._nextTarget = undefined;\n\t\t}\n\t\tif (node === this._targets) {\n\t\t\tthis._targets = next;\n\t\t}\n\t}\n};\n\nSignal.prototype.subscribe = function (fn) {\n\treturn effect(() => {\n\t\tconst value = this.value;\n\n\t\tconst prevContext = evalContext;\n\t\tevalContext = undefined;\n\t\ttry {\n\t\t\tfn(value);\n\t\t} finally {\n\t\t\tevalContext = prevContext;\n\t\t}\n\t});\n};\n\nSignal.prototype.valueOf = function () {\n\treturn this.value;\n};\n\nSignal.prototype.toString = function () {\n\treturn this.value + \"\";\n};\n\nSignal.prototype.toJSON = function () {\n\treturn this.value;\n};\n\nSignal.prototype.peek = function () {\n\tconst prevContext = evalContext;\n\tevalContext = undefined;\n\ttry {\n\t\treturn this.value;\n\t} finally {\n\t\tevalContext = prevContext;\n\t}\n};\n\nObject.defineProperty(Signal.prototype, \"value\", {\n\tget(this: Signal) {\n\t\tconst node = addDependency(this);\n\t\tif (node !== undefined) {\n\t\t\tnode._version = this._version;\n\t\t}\n\t\treturn this._value;\n\t},\n\tset(this: Signal, value) {\n\t\tif (value !== this._value) {\n\t\t\tif (batchIteration > 100) {\n\t\t\t\tthrow new Error(\"Cycle detected\");\n\t\t\t}\n\n\t\t\tthis._value = value;\n\t\t\tthis._version++;\n\t\t\tglobalVersion++;\n\n\t\t\t/**@__INLINE__*/ startBatch();\n\t\t\ttry {\n\t\t\t\tfor (\n\t\t\t\t\tlet node = this._targets;\n\t\t\t\t\tnode !== undefined;\n\t\t\t\t\tnode = node._nextTarget\n\t\t\t\t) {\n\t\t\t\t\tnode._target._notify();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tendBatch();\n\t\t\t}\n\t\t}\n\t},\n});\n\n/**\n * Create a new plain signal.\n *\n * @param value The initial value for the signal.\n * @returns A new signal.\n */\nexport function signal<T>(value: T): Signal<T>;\nexport function signal<T = undefined>(): Signal<T | undefined>;\nexport function signal<T>(value?: T): Signal<T> {\n\treturn new Signal(value);\n}\n\nfunction needsToRecompute(target: Computed | Effect): boolean {\n\t// Check the dependencies for changed values. The dependency list is already\n\t// in order of use. Therefore if multiple dependencies have changed values, only\n\t// the first used dependency is re-evaluated at this point.\n\tfor (\n\t\tlet node = target._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\t// If there's a new version of the dependency before or after refreshing,\n\t\t// or the dependency has something blocking it from refreshing at all (e.g. a\n\t\t// dependency cycle), then we need to recompute.\n\t\tif (\n\t\t\tnode._source._version !== node._version ||\n\t\t\t!node._source._refresh() ||\n\t\t\tnode._source._version !== node._version\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\t// If none of the dependencies have changed values since last recompute then\n\t// there's no need to recompute.\n\treturn false;\n}\n\nfunction prepareSources(target: Computed | Effect) {\n\t/**\n\t * 1. Mark all current sources as re-usable nodes (version: -1)\n\t * 2. Set a rollback node if the current node is being used in a different context\n\t * 3. Point 'target._sources' to the tail of the doubly-linked list, e.g:\n\t *\n\t * { undefined <- A <-> B <-> C -> undefined }\n\t * \u2191 \u2191\n\t * \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\t * target._sources = A; (node is head) \u2502\n\t * \u2193 \u2502\n\t * target._sources = C; (node is tail) \u2500\u2518\n\t */\n\tfor (\n\t\tlet node = target._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tconst rollbackNode = node._source._node;\n\t\tif (rollbackNode !== undefined) {\n\t\t\tnode._rollbackNode = rollbackNode;\n\t\t}\n\t\tnode._source._node = node;\n\t\tnode._version = -1;\n\n\t\tif (node._nextSource === undefined) {\n\t\t\ttarget._sources = node;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nfunction cleanupSources(target: Computed | Effect) {\n\tlet node = target._sources;\n\tlet head = undefined;\n\n\t/**\n\t * At this point 'target._sources' points to the tail of the doubly-linked list.\n\t * It contains all existing sources + new sources in order of use.\n\t * Iterate backwards until we find the head node while dropping old dependencies.\n\t */\n\twhile (node !== undefined) {\n\t\tconst prev = node._prevSource;\n\n\t\t/**\n\t\t * The node was not re-used, unsubscribe from its change notifications and remove itself\n\t\t * from the doubly-linked list. e.g:\n\t\t *\n\t\t * { A <-> B <-> C }\n\t\t * \u2193\n\t\t * { A <-> C }\n\t\t */\n\t\tif (node._version === -1) {\n\t\t\tnode._source._unsubscribe(node);\n\n\t\t\tif (prev !== undefined) {\n\t\t\t\tprev._nextSource = node._nextSource;\n\t\t\t}\n\t\t\tif (node._nextSource !== undefined) {\n\t\t\t\tnode._nextSource._prevSource = prev;\n\t\t\t}\n\t\t} else {\n\t\t\t/**\n\t\t\t * The new head is the last node seen which wasn't removed/unsubscribed\n\t\t\t * from the doubly-linked list. e.g:\n\t\t\t *\n\t\t\t * { A <-> B <-> C }\n\t\t\t * \u2191 \u2191 \u2191\n\t\t\t * \u2502 \u2502 \u2514 head = node\n\t\t\t * \u2502 \u2514 head = node\n\t\t\t * \u2514 head = node\n\t\t\t */\n\t\t\thead = node;\n\t\t}\n\n\t\tnode._source._node = node._rollbackNode;\n\t\tif (node._rollbackNode !== undefined) {\n\t\t\tnode._rollbackNode = undefined;\n\t\t}\n\n\t\tnode = prev;\n\t}\n\n\ttarget._sources = head;\n}\n\ndeclare class Computed<T = any> extends Signal<T> {\n\t_fn: () => T;\n\t_sources?: Node;\n\t_globalVersion: number;\n\t_flags: number;\n\n\tconstructor(fn: () => T);\n\n\t_notify(): void;\n\tget value(): T;\n}\n\nfunction Computed(this: Computed, fn: () => unknown) {\n\tSignal.call(this, undefined);\n\n\tthis._fn = fn;\n\tthis._sources = undefined;\n\tthis._globalVersion = globalVersion - 1;\n\tthis._flags = OUTDATED;\n}\n\nComputed.prototype = new Signal() as Computed;\n\nComputed.prototype._refresh = function () {\n\tthis._flags &= ~NOTIFIED;\n\n\tif (this._flags & RUNNING) {\n\t\treturn false;\n\t}\n\n\t// If this computed signal has subscribed to updates from its dependencies\n\t// (TRACKING flag set) and none of them have notified about changes (OUTDATED\n\t// flag not set), then the computed value can't have changed.\n\tif ((this._flags & (OUTDATED | TRACKING)) === TRACKING) {\n\t\treturn true;\n\t}\n\tthis._flags &= ~OUTDATED;\n\n\tif (this._globalVersion === globalVersion) {\n\t\treturn true;\n\t}\n\tthis._globalVersion = globalVersion;\n\n\t// Mark this computed signal running before checking the dependencies for value\n\t// changes, so that the RUNNING flag can be used to notice cyclical dependencies.\n\tthis._flags |= RUNNING;\n\tif (this._version > 0 && !needsToRecompute(this)) {\n\t\tthis._flags &= ~RUNNING;\n\t\treturn true;\n\t}\n\n\tconst prevContext = evalContext;\n\ttry {\n\t\tprepareSources(this);\n\t\tevalContext = this;\n\t\tconst value = this._fn();\n\t\tif (\n\t\t\tthis._flags & HAS_ERROR ||\n\t\t\tthis._value !== value ||\n\t\t\tthis._version === 0\n\t\t) {\n\t\t\tthis._value = value;\n\t\t\tthis._flags &= ~HAS_ERROR;\n\t\t\tthis._version++;\n\t\t}\n\t} catch (err) {\n\t\tthis._value = err;\n\t\tthis._flags |= HAS_ERROR;\n\t\tthis._version++;\n\t}\n\tevalContext = prevContext;\n\tcleanupSources(this);\n\tthis._flags &= ~RUNNING;\n\treturn true;\n};\n\nComputed.prototype._subscribe = function (node) {\n\tif (this._targets === undefined) {\n\t\tthis._flags |= OUTDATED | TRACKING;\n\n\t\t// A computed signal subscribes lazily to its dependencies when it\n\t\t// gets its first subscriber.\n\t\tfor (\n\t\t\tlet node = this._sources;\n\t\t\tnode !== undefined;\n\t\t\tnode = node._nextSource\n\t\t) {\n\t\t\tnode._source._subscribe(node);\n\t\t}\n\t}\n\tSignal.prototype._subscribe.call(this, node);\n};\n\nComputed.prototype._unsubscribe = function (node) {\n\t// Only run the unsubscribe step if the computed signal has any subscribers.\n\tif (this._targets !== undefined) {\n\t\tSignal.prototype._unsubscribe.call(this, node);\n\n\t\t// Computed signal unsubscribes from its dependencies when it loses its last subscriber.\n\t\t// This makes it possible for unreferences subgraphs of computed signals to get garbage collected.\n\t\tif (this._targets === undefined) {\n\t\t\tthis._flags &= ~TRACKING;\n\n\t\t\tfor (\n\t\t\t\tlet node = this._sources;\n\t\t\t\tnode !== undefined;\n\t\t\t\tnode = node._nextSource\n\t\t\t) {\n\t\t\t\tnode._source._unsubscribe(node);\n\t\t\t}\n\t\t}\n\t}\n};\n\nComputed.prototype._notify = function () {\n\tif (!(this._flags & NOTIFIED)) {\n\t\tthis._flags |= OUTDATED | NOTIFIED;\n\n\t\tfor (\n\t\t\tlet node = this._targets;\n\t\t\tnode !== undefined;\n\t\t\tnode = node._nextTarget\n\t\t) {\n\t\t\tnode._target._notify();\n\t\t}\n\t}\n};\n\nObject.defineProperty(Computed.prototype, \"value\", {\n\tget(this: Computed) {\n\t\tif (this._flags & RUNNING) {\n\t\t\tthrow new Error(\"Cycle detected\");\n\t\t}\n\t\tconst node = addDependency(this);\n\t\tthis._refresh();\n\t\tif (node !== undefined) {\n\t\t\tnode._version = this._version;\n\t\t}\n\t\tif (this._flags & HAS_ERROR) {\n\t\t\tthrow this._value;\n\t\t}\n\t\treturn this._value;\n\t},\n});\n\n/**\n * An interface for read-only signals.\n */\ninterface ReadonlySignal<T = any> {\n\treadonly value: T;\n\tpeek(): T;\n\n\tsubscribe(fn: (value: T) => void): () => void;\n\tvalueOf(): T;\n\ttoString(): string;\n\ttoJSON(): T;\n\tbrand: typeof BRAND_SYMBOL;\n}\n\n/**\n * Create a new signal that is computed based on the values of other signals.\n *\n * The returned computed signal is read-only, and its value is automatically\n * updated when any signals accessed from within the callback function change.\n *\n * @param fn The effect callback.\n * @returns A new read-only signal.\n */\nfunction computed<T>(fn: () => T): ReadonlySignal<T> {\n\treturn new Computed(fn);\n}\n\nfunction cleanupEffect(effect: Effect) {\n\tconst cleanup = effect._cleanup;\n\teffect._cleanup = undefined;\n\n\tif (typeof cleanup === \"function\") {\n\t\t/*@__INLINE__**/ startBatch();\n\n\t\t// Run cleanup functions always outside of any context.\n\t\tconst prevContext = evalContext;\n\t\tevalContext = undefined;\n\t\ttry {\n\t\t\tcleanup();\n\t\t} catch (err) {\n\t\t\teffect._flags &= ~RUNNING;\n\t\t\teffect._flags |= DISPOSED;\n\t\t\tdisposeEffect(effect);\n\t\t\tthrow err;\n\t\t} finally {\n\t\t\tevalContext = prevContext;\n\t\t\tendBatch();\n\t\t}\n\t}\n}\n\nfunction disposeEffect(effect: Effect) {\n\tfor (\n\t\tlet node = effect._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tnode._source._unsubscribe(node);\n\t}\n\teffect._fn = undefined;\n\teffect._sources = undefined;\n\n\tcleanupEffect(effect);\n}\n\nfunction endEffect(this: Effect, prevContext?: Computed | Effect) {\n\tif (evalContext !== this) {\n\t\tthrow new Error(\"Out-of-order effect\");\n\t}\n\tcleanupSources(this);\n\tevalContext = prevContext;\n\n\tthis._flags &= ~RUNNING;\n\tif (this._flags & DISPOSED) {\n\t\tdisposeEffect(this);\n\t}\n\tendBatch();\n}\n\ntype EffectFn = () => void | (() => void);\n\ndeclare class Effect {\n\t_fn?: EffectFn;\n\t_cleanup?: () => void;\n\t_sources?: Node;\n\t_nextBatchedEffect?: Effect;\n\t_flags: number;\n\n\tconstructor(fn: EffectFn);\n\n\t_callback(): void;\n\t_start(): () => void;\n\t_notify(): void;\n\t_dispose(): void;\n}\n\nfunction Effect(this: Effect, fn: EffectFn) {\n\tthis._fn = fn;\n\tthis._cleanup = undefined;\n\tthis._sources = undefined;\n\tthis._nextBatchedEffect = undefined;\n\tthis._flags = TRACKING;\n}\n\nEffect.prototype._callback = function () {\n\tconst finish = this._start();\n\ttry {\n\t\tif (this._flags & DISPOSED) return;\n\t\tif (this._fn === undefined) return;\n\n\t\tconst cleanup = this._fn();\n\t\tif (typeof cleanup === \"function\") {\n\t\t\tthis._cleanup = cleanup;\n\t\t}\n\t} finally {\n\t\tfinish();\n\t}\n};\n\nEffect.prototype._start = function () {\n\tif (this._flags & RUNNING) {\n\t\tthrow new Error(\"Cycle detected\");\n\t}\n\tthis._flags |= RUNNING;\n\tthis._flags &= ~DISPOSED;\n\tcleanupEffect(this);\n\tprepareSources(this);\n\n\t/*@__INLINE__**/ startBatch();\n\tconst prevContext = evalContext;\n\tevalContext = this;\n\treturn endEffect.bind(this, prevContext);\n};\n\nEffect.prototype._notify = function () {\n\tif (!(this._flags & NOTIFIED)) {\n\t\tthis._flags |= NOTIFIED;\n\t\tthis._nextBatchedEffect = batchedEffect;\n\t\tbatchedEffect = this;\n\t}\n};\n\nEffect.prototype._dispose = function () {\n\tthis._flags |= DISPOSED;\n\n\tif (!(this._flags & RUNNING)) {\n\t\tdisposeEffect(this);\n\t}\n};\n\n/**\n * Create an effect to run arbitrary code in response to signal changes.\n *\n * An effect tracks which signals are accessed within the given callback\n * function `fn`, and re-runs the callback when those signals change.\n *\n * The callback may return a cleanup function. The cleanup function gets\n * run once, either when the callback is next called or when the effect\n * gets disposed, whichever happens first.\n *\n * @param fn The effect callback.\n * @returns A function for disposing the effect.\n */\nfunction effect(fn: EffectFn): () => void {\n\tconst effect = new Effect(fn);\n\ttry {\n\t\teffect._callback();\n\t} catch (err) {\n\t\teffect._dispose();\n\t\tthrow err;\n\t}\n\t// Return a bound function instead of a wrapper like `() => effect._dispose()`,\n\t// because bound functions seem to be just as fast and take up a lot less memory.\n\treturn effect._dispose.bind(effect);\n}\n\nexport { computed, effect, batch, untracked, Signal, ReadonlySignal };\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { LeadCaptureForm } from '../lead_capture_form'\nimport {\n useLeadCaptureForm,\n useMembers,\n useStep,\n useFamilyCreation,\n useMembershipTemplates,\n useError,\n useClasses,\n usePreview,\n} from '../landing_page'\nimport { useComputed, useSignal, useSignalEffect } from '@preact/signals'\nimport { MembershipSelection } from './membership'\nimport { ClassSelection } from './classes'\n\nexport function SignUp() {\n const membershipTemplates = useMembershipTemplates()\n const { classes } = useClasses()\n const { members, ensureParticipant } = useMembers()\n const { nextStep } = useStep()\n const { setError } = useError()\n const familyCreation = useFamilyCreation()\n const isPreview = usePreview()\n\n // When we do multiple people, we'll want to move these into a\n // per-person Context.\n const primaryMember = members[0]\n const participants = members.slice(1)\n const participating = useSignal(primaryMember.participating)\n const showParticipants = !familyCreation && !participating.value\n const membershipSelected = useSignal(!membershipTemplates)\n const classSelected = useSignal(!classes)\n\n const nextStepUnlessInvalid = (event) => {\n event.preventDefault()\n\n if (!membershipSelected.value) {\n setError({ membership: 'Select a Membership' })\n return\n }\n\n if (!isPreview && !classSelected.value) {\n setError({ class: 'Select a Class' })\n return\n }\n\n if (event.target.checkValidity()) {\n nextStep()\n }\n }\n\n useSignalEffect(() => (primaryMember.participating = participating.value), [participating])\n\n useSignalEffect(() => {\n if (!participating.value) {\n ensureParticipant()\n }\n }, [participating])\n\n return (\n <form onSubmit={nextStepUnlessInvalid}>\n <div class=\"p-3 bg-[var(--shadow-color)] space-y-3\">\n <PrimaryMember\n member={primaryMember}\n participating={participating}\n membershipSelected={membershipSelected}\n classSelected={classSelected}\n />\n\n {showParticipants &&\n participants.map((member) => (\n <ParticipantMember\n member={member}\n membershipSelected={membershipSelected}\n classSelected={classSelected}\n />\n ))}\n </div>\n <div class=\"flex justify-between items-center gap-4 mt-4 pb-4\">\n <div class=\"label required text-[var(--secondary-color)]\">required</div>\n\n <button class=\"btn\" type=\"submit\">\n NEXT\n </button>\n </div>\n </form>\n )\n}\n\nfunction PrimaryMember({ member, participating, membershipSelected, classSelected }) {\n const { leadCaptureForm, guardianLeadCaptureForm } = useLeadCaptureForm()\n\n return (\n <>\n {guardianLeadCaptureForm && (\n <div class=\"p-3 bg-[var(--tertiary-color)]\">\n <div class=\"space-y-1\">\n <div class=\"font-medium uppercase tracking-widest required\">Who are you signing up?</div>\n\n <div class=\"space-y-0.5\">\n <div class=\"flex gap-2 items-center\">\n <input\n id=\"participating\"\n type=\"radio\"\n class=\"radio radio-sm\"\n checked={participating.value}\n onChange={({ target }) => (participating.value = target.checked)}\n />\n <label for=\"participating\">Myself (18+)</label>\n </div>\n <div class=\"flex gap-2 items-center\">\n <input\n id=\"not-participating\"\n type=\"radio\"\n class=\"radio radio-sm\"\n checked={!participating.value}\n onChange={({ target }) => (participating.value = !target.checked)}\n />\n <label for=\"not-participating\">Participant under 18</label>\n </div>\n </div>\n </div>\n </div>\n )}\n\n <div class=\"p-3 bg-[var(--tertiary-color)]\">\n <div class=\"text-base font-bold\">\n {participating.value ? 'Your contact info' : 'Guardian contact info'}\n </div>\n\n <div class=\"space-y-3\">\n {guardianLeadCaptureForm ? (\n <>\n {participating.value ? (\n <ParticipantInfo\n member={member}\n leadCaptureForm={leadCaptureForm}\n membershipSelected={membershipSelected}\n classSelected={classSelected}\n />\n ) : (\n <LeadCaptureForm member={member} leadCaptureForm={guardianLeadCaptureForm} />\n )}\n </>\n ) : (\n <ParticipantInfo\n member={member}\n leadCaptureForm={leadCaptureForm}\n membershipSelected={membershipSelected}\n classSelected={classSelected}\n />\n )}\n </div>\n </div>\n </>\n )\n}\n\nfunction ParticipantMember({ member, membershipSelected, classSelected }) {\n let { leadCaptureForm, guardianLeadCaptureForm } = useLeadCaptureForm()\n\n const usePrimaryInfo = useSignal(member.usePrimaryInfo)\n\n useSignalEffect(() => (member.usePrimaryInfo = usePrimaryInfo.value), [usePrimaryInfo])\n\n if (usePrimaryInfo.value) {\n leadCaptureForm = leadCaptureForm.filter((field) => {\n if (!guardianLeadCaptureForm.map((f) => f.key).includes(field.key)) {\n return true\n }\n\n return !['phone', 'email', 'address'].includes(field.key)\n })\n }\n\n return (\n <div className=\"p-3 bg-[var(--tertiary-color)]\">\n <div class=\"text-base font-bold mb-3\">Participant info</div>\n\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-2\">\n <span class={usePrimaryInfo.value ? '' : 'text-[var(--secondary-color-light)]'}>\n Use Guardian contact info\n </span>\n <input\n type=\"checkbox\"\n class=\"toggle toggle-xs\"\n checked={usePrimaryInfo.value}\n onChange={({ target }) => (usePrimaryInfo.value = target.checked)}\n />\n </div>\n\n <ParticipantInfo\n member={member}\n leadCaptureForm={leadCaptureForm}\n membershipSelected={membershipSelected}\n classSelected={classSelected}\n />\n </div>\n </div>\n )\n}\n\nfunction ParticipantInfo({ member, leadCaptureForm, membershipSelected, classSelected }) {\n return (\n <>\n <LeadCaptureForm member={member} leadCaptureForm={leadCaptureForm} />\n\n <MembershipAndClassSelection\n member={member}\n membershipSelected={membershipSelected}\n classSelected={classSelected}\n />\n </>\n )\n}\n\nfunction MembershipAndClassSelection({ member, membershipSelected, classSelected }) {\n const membershipTemplates = useMembershipTemplates()\n const { hasClasses, classesFor, required } = useClasses()\n\n const selectedTemplate = useSignal(member.membershipTemplate)\n const selectedProgram = useSignal(member.program)\n const availableClasses = useComputed(() => {\n if (!hasClasses) return\n if (!membershipSelected.value) return\n if (!selectedTemplate.value) return\n if (!selectedProgram.value) return\n\n return classesFor(selectedProgram.value.id)\n })\n\n const current = availableClasses.value?.find(({ name }) => name === member.class?.name)\n const selectedClass = useSignal(null)\n if (current) {\n selectedClass.value = current\n }\n\n useSignalEffect(() => {\n if (required || Boolean(selectedClass.value)) {\n classSelected.value = !availableClasses.value\n return\n }\n\n classSelected.value = true\n })\n\n return (\n <>\n {membershipTemplates && (\n <MembershipSelection\n member={member}\n completed={membershipSelected}\n selectedTemplate={selectedTemplate}\n selectedProgram={selectedProgram}\n />\n )}\n {availableClasses.value && (\n <ClassSelection\n member={member}\n completed={classSelected}\n availableClasses={availableClasses}\n selectedClass={selectedClass}\n selectedProgram={selectedProgram}\n />\n )}\n </>\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useSignal, useSignalEffect } from '@preact/signals'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { useMembershipTemplates, useError } from '../landing_page'\nimport { Collapsible } from './collapsible'\nimport { Money, useCart } from './cart'\nimport { Error } from './error'\nimport { Select } from '../select'\n\nexport function MembershipSelection({ member, completed, selectedTemplate, selectedProgram }) {\n const { errors, clearError } = useError()\n const { addToCart, removeFromCart } = useCart()\n const membershipTemplates = useMembershipTemplates()\n\n const classes = 'size-2 rounded-full ring-2 ring-offset-[var(--shadow-color)] ring-offset-2'\n\n useSignalEffect(() => {\n if (selectedTemplate.value) {\n clearError('membership')\n }\n })\n\n useSignalEffect(() => {\n const mt = selectedTemplate.value\n\n if (mt && mt === member.membershipTemplate) {\n completed.value = true\n return\n }\n\n member.class = null\n\n if (mt) {\n const manyPrograms = mt.programs && mt.programs.length > 1\n member.membershipTemplate = mt\n\n if (manyPrograms) {\n completed.value = false\n member.program = null\n selectedProgram.value = null\n return\n }\n\n if (mt.programs) {\n member.program = mt.programs[0]\n selectedProgram.value = mt.programs[0]\n } else {\n member.program = null\n selectedProgram.value = null\n }\n\n completed.value = true\n\n return\n }\n\n completed.value = false\n member.membershipTemplate = null\n member.program = null\n })\n\n return (\n <>\n <div\n class={`bg-[var(--shadow-color)] border ${errors.membership ? 'border-danger-600' : 'border-transparent'}`}\n >\n <Collapsible\n defaultOpen={true}\n Trigger={\n <>\n <div class=\"flex items-center gap-2 size\">\n <div class=\"text-base font-bold\">Membership</div>\n {completed.value && (\n <div class=\"size-4 bg-[var(--tertiary-color)] rounded-full\">\n <FontAwesomeIcon icon=\"circle-check\" className=\"text-[var(--primary-color)] size-4 block\" />\n </div>\n )}\n </div>\n </>\n }\n Content={\n <div class=\"space-y-3\">\n {membershipTemplates.map((membershipTemplate) => (\n <MembershipTemplate\n member={member}\n membershipTemplate={membershipTemplate}\n onSelect={(event) => {\n if (\n event.target.tagName === 'SELECT' ||\n event.target.tagName === 'LABEL' ||\n event.target.tagName === 'OPTION'\n ) {\n return\n }\n\n if (selectedTemplate.value === membershipTemplate) {\n removeFromCart(membershipTemplate)\n selectedTemplate.value = null\n return\n }\n\n removeFromCart(selectedTemplate.value)\n addToCart(membershipTemplate)\n selectedTemplate.value = membershipTemplate\n }}\n onProgramSelect={({ target }) => {\n completed.value = true\n const program = selectedTemplate.value.programs.find((p) => p.id.toString() === target.value)\n member.class = null\n member.program = program\n selectedProgram.value = program\n }}\n selected={selectedTemplate.value === membershipTemplate}\n />\n ))}\n </div>\n }\n />\n </div>\n\n {errors.membership && <Error message=\"Select a Membership\" />}\n </>\n )\n}\n\nfunction MembershipTemplate({ member, membershipTemplate, onSelect, onProgramSelect, selected = false }) {\n const classes =\n 'block relative w-full bg-[var(--tertiary-color)] p-3 rounded text-left border-2 transition-colors'\n\n let selectedClasses = 'border-transparent hover:border-[var(--primary-color)]/75'\n\n if (selected) {\n selectedClasses = 'border-[var(--primary-color)]'\n }\n\n return (\n <button type=\"button\" onClick={onSelect} class={`${classes} ${selectedClasses}`}>\n {selected && (\n <div class=\"absolute -left-2 -top-2 bg-[var(--tertiary-color)] size-4 rounded-full\">\n <FontAwesomeIcon icon=\"circle-check\" className=\"block text-[var(--primary-color)] size-4\" />\n </div>\n )}\n\n <MembershipTemplateDetails membershipTemplate={membershipTemplate} />\n {membershipTemplate.description && <div class=\"mt-2\">{membershipTemplate.description}</div>}\n\n {membershipTemplate.programs && (\n <>\n <div class=\"my-2 w-full border-t border-[var(--shadow-color)]\"></div>\n {selected && membershipTemplate.programs.length > 1 ? (\n <ProgramSelector\n member={member}\n membershipTemplate={membershipTemplate}\n onProgramSelect={onProgramSelect}\n />\n ) : (\n <div>{membershipTemplate.programs.map((p) => p.name).join(', ')}</div>\n )}\n </>\n )}\n </button>\n )\n}\n\nfunction MembershipTemplateDetails({ membershipTemplate }) {\n return (\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex gap-x-3 items-center flex-wrap\">\n <div class=\"font-bold\">{membershipTemplate.name}</div>\n {membershipTemplate.kind === 'trial' && <div class=\"pill\">trial</div>}\n <div>{membershipTemplate.interval}</div>\n </div>\n\n <div class=\"space-y-1 text-right\">\n <div>\n {membershipTemplate.price ? (\n <div class=\"flex justify-end items-center gap-1 whitespace-nowrap\">\n <Money amount={membershipTemplate.price} />\n {membershipTemplate.billing_interval && <div>{membershipTemplate.billing_interval}</div>}\n </div>\n ) : (\n 'Free'\n )}\n </div>\n {membershipTemplate.registration_fee_price > 0 && (\n <div class=\"flex justify-end items-center gap-1 whitespace-nowrap\">\n <Money amount={membershipTemplate.registration_fee_price} />\n <div>Reg. Fee</div>\n </div>\n )}\n </div>\n </div>\n )\n}\n\nfunction ProgramSelector({ member, membershipTemplate, onProgramSelect }) {\n return (\n <div>\n <label\n for={`programs-${membershipTemplate.id}`}\n class=\"block font-medium uppercase tracking-widest required mb-1\"\n >\n program\n </label>\n <Select id={`programs-${membershipTemplate.id}`} onInput={onProgramSelect} required>\n <option selected hidden disabled value=\"\">\n Select a Program\n </option>\n {membershipTemplate.programs.map((program) => (\n <option value={program.id} selected={program.id === member.program?.id}>\n {program.name}\n </option>\n ))}\n </Select>\n </div>\n )\n}\n", "/*!\n * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && _setPrototypeOf(t, e);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _wrapRegExp() {\n _wrapRegExp = function (e, r) {\n return new BabelRegExp(e, void 0, r);\n };\n var e = RegExp.prototype,\n r = new WeakMap();\n function BabelRegExp(e, t, p) {\n var o = RegExp(e, t);\n return r.set(o, p || r.get(e)), _setPrototypeOf(o, BabelRegExp.prototype);\n }\n function buildGroups(e, t) {\n var p = r.get(t);\n return Object.keys(p).reduce(function (r, t) {\n var o = p[t];\n if (\"number\" == typeof o) r[t] = e[o];else {\n for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++;\n r[t] = e[o[i]];\n }\n return r;\n }, Object.create(null));\n }\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) {\n var t = e.exec.call(this, r);\n if (t) {\n t.groups = buildGroups(t, this);\n var p = t.indices;\n p && (p.groups = buildGroups(p, this));\n }\n return t;\n }, BabelRegExp.prototype[Symbol.replace] = function (t, p) {\n if (\"string\" == typeof p) {\n var o = r.get(this);\n return e[Symbol.replace].call(this, t, p.replace(/\\$<([^>]+)>/g, function (e, r) {\n var t = o[r];\n return \"$\" + (Array.isArray(t) ? t.join(\"$\") : t);\n }));\n }\n if (\"function\" == typeof p) {\n var i = this;\n return e[Symbol.replace].call(this, t, function () {\n var e = arguments;\n return \"object\" != typeof e[e.length - 1] && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e);\n });\n }\n return e[Symbol.replace].call(this, t, p);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nconst noop = () => {};\nlet _WINDOW = {};\nlet _DOCUMENT = {};\nlet _MUTATION_OBSERVER = null;\nlet _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\nconst {\n userAgent = ''\n} = _WINDOW.navigator || {};\nconst WINDOW = _WINDOW;\nconst DOCUMENT = _DOCUMENT;\nconst MUTATION_OBSERVER = _MUTATION_OBSERVER;\nconst PERFORMANCE = _PERFORMANCE;\nconst IS_BROWSER = !!WINDOW.document;\nconst IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nconst IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar p = /fa(s|r|l|t|d|dr|dl|dt|b|k|kd|ss|sr|sl|st|sds|sdr|sdl|sdt)?[\\-\\ ]/,\n g = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i;\nvar S = {\n classic: {\n fa: \"solid\",\n fas: \"solid\",\n \"fa-solid\": \"solid\",\n far: \"regular\",\n \"fa-regular\": \"regular\",\n fal: \"light\",\n \"fa-light\": \"light\",\n fat: \"thin\",\n \"fa-thin\": \"thin\",\n fab: \"brands\",\n \"fa-brands\": \"brands\"\n },\n duotone: {\n fa: \"solid\",\n fad: \"solid\",\n \"fa-solid\": \"solid\",\n \"fa-duotone\": \"solid\",\n fadr: \"regular\",\n \"fa-regular\": \"regular\",\n fadl: \"light\",\n \"fa-light\": \"light\",\n fadt: \"thin\",\n \"fa-thin\": \"thin\"\n },\n sharp: {\n fa: \"solid\",\n fass: \"solid\",\n \"fa-solid\": \"solid\",\n fasr: \"regular\",\n \"fa-regular\": \"regular\",\n fasl: \"light\",\n \"fa-light\": \"light\",\n fast: \"thin\",\n \"fa-thin\": \"thin\"\n },\n \"sharp-duotone\": {\n fa: \"solid\",\n fasds: \"solid\",\n \"fa-solid\": \"solid\",\n fasdr: \"regular\",\n \"fa-regular\": \"regular\",\n fasdl: \"light\",\n \"fa-light\": \"light\",\n fasdt: \"thin\",\n \"fa-thin\": \"thin\"\n }\n },\n A = {\n GROUP: \"duotone-group\",\n SWAP_OPACITY: \"swap-opacity\",\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\"\n },\n P = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\"];\nvar s = \"classic\",\n t = \"duotone\",\n r = \"sharp\",\n o = \"sharp-duotone\",\n L = [s, t, r, o];\nvar G = {\n classic: {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n duotone: {\n 900: \"fad\",\n 400: \"fadr\",\n 300: \"fadl\",\n 100: \"fadt\"\n },\n sharp: {\n 900: \"fass\",\n 400: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"sharp-duotone\": {\n 900: \"fasds\",\n 400: \"fasdr\",\n 300: \"fasdl\",\n 100: \"fasdt\"\n }\n };\nvar lt = {\n \"Font Awesome 6 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 6 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n \"Font Awesome 6 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 6 Duotone\": {\n 900: \"fad\",\n 400: \"fadr\",\n normal: \"fadr\",\n 300: \"fadl\",\n 100: \"fadt\"\n },\n \"Font Awesome 6 Sharp\": {\n 900: \"fass\",\n 400: \"fasr\",\n normal: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"Font Awesome 6 Sharp Duotone\": {\n 900: \"fasds\",\n 400: \"fasdr\",\n normal: \"fasdr\",\n 300: \"fasdl\",\n 100: \"fasdt\"\n }\n };\nvar pt = new Map([[\"classic\", {\n defaultShortPrefixId: \"fas\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\", \"brands\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }], [\"sharp\", {\n defaultShortPrefixId: \"fass\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }], [\"duotone\", {\n defaultShortPrefixId: \"fad\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }], [\"sharp-duotone\", {\n defaultShortPrefixId: \"fasds\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }]]),\n xt = {\n classic: {\n solid: \"fas\",\n regular: \"far\",\n light: \"fal\",\n thin: \"fat\",\n brands: \"fab\"\n },\n duotone: {\n solid: \"fad\",\n regular: \"fadr\",\n light: \"fadl\",\n thin: \"fadt\"\n },\n sharp: {\n solid: \"fass\",\n regular: \"fasr\",\n light: \"fasl\",\n thin: \"fast\"\n },\n \"sharp-duotone\": {\n solid: \"fasds\",\n regular: \"fasdr\",\n light: \"fasdl\",\n thin: \"fasdt\"\n }\n };\nvar Ft = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"],\n St = {\n kit: {\n fak: \"kit\",\n \"fa-kit\": \"kit\"\n },\n \"kit-duotone\": {\n fakd: \"kit-duotone\",\n \"fa-kit-duotone\": \"kit-duotone\"\n }\n },\n At = [\"kit\"];\nvar Ct = {\n kit: {\n \"fa-kit\": \"fak\"\n },\n \"kit-duotone\": {\n \"fa-kit-duotone\": \"fakd\"\n }\n};\nvar Lt = [\"fak\", \"fakd\"],\n Wt = {\n kit: {\n fak: \"fa-kit\"\n },\n \"kit-duotone\": {\n fakd: \"fa-kit-duotone\"\n }\n };\nvar Et = {\n kit: {\n kit: \"fak\"\n },\n \"kit-duotone\": {\n \"kit-duotone\": \"fakd\"\n }\n };\n\nvar t$1 = {\n GROUP: \"duotone-group\",\n SWAP_OPACITY: \"swap-opacity\",\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\"\n },\n r$1 = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\"];\nvar bt$1 = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"];\nvar Yt = {\n \"Font Awesome Kit\": {\n 400: \"fak\",\n normal: \"fak\"\n },\n \"Font Awesome Kit Duotone\": {\n 400: \"fakd\",\n normal: \"fakd\"\n }\n };\nvar po = {\n classic: {\n \"fa-brands\": \"fab\",\n \"fa-duotone\": \"fad\",\n \"fa-light\": \"fal\",\n \"fa-regular\": \"far\",\n \"fa-solid\": \"fas\",\n \"fa-thin\": \"fat\"\n },\n duotone: {\n \"fa-regular\": \"fadr\",\n \"fa-light\": \"fadl\",\n \"fa-thin\": \"fadt\"\n },\n sharp: {\n \"fa-solid\": \"fass\",\n \"fa-regular\": \"fasr\",\n \"fa-light\": \"fasl\",\n \"fa-thin\": \"fast\"\n },\n \"sharp-duotone\": {\n \"fa-solid\": \"fasds\",\n \"fa-regular\": \"fasdr\",\n \"fa-light\": \"fasdl\",\n \"fa-thin\": \"fasdt\"\n }\n },\n I$1 = {\n classic: [\"fas\", \"far\", \"fal\", \"fat\", \"fad\"],\n duotone: [\"fadr\", \"fadl\", \"fadt\"],\n sharp: [\"fass\", \"fasr\", \"fasl\", \"fast\"],\n \"sharp-duotone\": [\"fasds\", \"fasdr\", \"fasdl\", \"fasdt\"]\n },\n co = {\n classic: {\n fab: \"fa-brands\",\n fad: \"fa-duotone\",\n fal: \"fa-light\",\n far: \"fa-regular\",\n fas: \"fa-solid\",\n fat: \"fa-thin\"\n },\n duotone: {\n fadr: \"fa-regular\",\n fadl: \"fa-light\",\n fadt: \"fa-thin\"\n },\n sharp: {\n fass: \"fa-solid\",\n fasr: \"fa-regular\",\n fasl: \"fa-light\",\n fast: \"fa-thin\"\n },\n \"sharp-duotone\": {\n fasds: \"fa-solid\",\n fasdr: \"fa-regular\",\n fasdl: \"fa-light\",\n fasdt: \"fa-thin\"\n }\n },\n x = [\"fa-solid\", \"fa-regular\", \"fa-light\", \"fa-thin\", \"fa-duotone\", \"fa-brands\"],\n xo = [\"fa\", \"fas\", \"far\", \"fal\", \"fat\", \"fad\", \"fadr\", \"fadl\", \"fadt\", \"fab\", \"fass\", \"fasr\", \"fasl\", \"fast\", \"fasds\", \"fasdr\", \"fasdl\", \"fasdt\", ...r$1, ...x],\n m$1 = [\"solid\", \"regular\", \"light\", \"thin\", \"duotone\", \"brands\"],\n c$1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n F$1 = c$1.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]),\n Fo = [...Object.keys(I$1), ...m$1, \"2xs\", \"xs\", \"sm\", \"lg\", \"xl\", \"2xl\", \"beat\", \"border\", \"fade\", \"beat-fade\", \"bounce\", \"flip-both\", \"flip-horizontal\", \"flip-vertical\", \"flip\", \"fw\", \"inverse\", \"layers-counter\", \"layers-text\", \"layers\", \"li\", \"pull-left\", \"pull-right\", \"pulse\", \"rotate-180\", \"rotate-270\", \"rotate-90\", \"rotate-by\", \"shake\", \"spin-pulse\", \"spin-reverse\", \"spin\", \"stack-1x\", \"stack-2x\", \"stack\", \"ul\", t$1.GROUP, t$1.SWAP_OPACITY, t$1.PRIMARY, t$1.SECONDARY].concat(c$1.map(o => \"\".concat(o, \"x\"))).concat(F$1.map(o => \"w-\".concat(o)));\nvar ko = {\n \"Font Awesome 5 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 5 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\"\n },\n \"Font Awesome 5 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 5 Duotone\": {\n 900: \"fad\"\n }\n };\n\nconst NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nconst UNITS_IN_GRID = 16;\nconst DEFAULT_CSS_PREFIX = 'fa';\nconst DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nconst DATA_FA_I2SVG = 'data-fa-i2svg';\nconst DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nconst DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nconst DATA_PREFIX = 'data-prefix';\nconst DATA_ICON = 'data-icon';\nconst HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nconst MUTATION_APPROACH_ASYNC = 'async';\nconst TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nconst PRODUCTION = (() => {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e$$1) {\n return false;\n }\n})();\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get(target, prop) {\n return prop in target ? target[prop] : target[s];\n }\n });\n}\nconst _PREFIX_TO_STYLE = _objectSpread2({}, S);\n\n// We changed FACSSClassesToStyleId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles. But we do still need duotone in _PREFIX_TO_STYLE below, so we are manually adding\n// {'fa-duotone': 'duotone'}\n_PREFIX_TO_STYLE[s] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n 'fa-duotone': 'duotone'\n}), S[s]), St['kit']), St['kit-duotone']);\nconst PREFIX_TO_STYLE = familyProxy(_PREFIX_TO_STYLE);\nconst _STYLE_TO_PREFIX = _objectSpread2({}, xt);\n\n// We changed FAStyleIdToShortPrefixId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles. But we do still need duotone in _STYLE_TO_PREFIX below, so we are manually adding {duotone: 'fad'}\n_STYLE_TO_PREFIX[s] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n duotone: 'fad'\n}), _STYLE_TO_PREFIX[s]), Et['kit']), Et['kit-duotone']);\nconst STYLE_TO_PREFIX = familyProxy(_STYLE_TO_PREFIX);\nconst _PREFIX_TO_LONG_STYLE = _objectSpread2({}, co);\n_PREFIX_TO_LONG_STYLE[s] = _objectSpread2(_objectSpread2({}, _PREFIX_TO_LONG_STYLE[s]), Wt['kit']);\nconst PREFIX_TO_LONG_STYLE = familyProxy(_PREFIX_TO_LONG_STYLE);\nconst _LONG_STYLE_TO_PREFIX = _objectSpread2({}, po);\n_LONG_STYLE_TO_PREFIX[s] = _objectSpread2(_objectSpread2({}, _LONG_STYLE_TO_PREFIX[s]), Ct['kit']);\nconst LONG_STYLE_TO_PREFIX = familyProxy(_LONG_STYLE_TO_PREFIX);\nconst ICON_SELECTION_SYNTAX_PATTERN = p; // eslint-disable-line no-useless-escape\n\nconst LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nconst FONT_FAMILY_PATTERN = g;\nconst _FONT_WEIGHT_TO_PREFIX = _objectSpread2({}, G);\nconst FONT_WEIGHT_TO_PREFIX = familyProxy(_FONT_WEIGHT_TO_PREFIX);\nconst ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nconst DUOTONE_CLASSES = A;\nconst RESERVED_CLASSES = [...At, ...Fo];\n\nconst initial = WINDOW.FontAwesomeConfig || {};\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n if (element) {\n return element.getAttribute(attr);\n }\n}\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n const attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(_ref => {\n let [attr, key] = _ref;\n const val = coerce(getAttrConfig(attr));\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\nconst _default = {\n styleDefault: 'solid',\n familyDefault: s,\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\n// familyPrefix is deprecated but we must still support it if present\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\nconst _config = _objectSpread2(_objectSpread2({}, _default), initial);\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nconst config = {};\nObject.keys(_default).forEach(key => {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function (val) {\n _config[key] = val;\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config[key];\n }\n });\n});\n\n// familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function (val) {\n _config.cssPrefix = val;\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nconst _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n return () => {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nconst d$2 = UNITS_IN_GRID;\nconst meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n const style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n const headChildren = DOCUMENT.head.childNodes;\n let beforeChild = null;\n for (let i = headChildren.length - 1; i > -1; i--) {\n const child = headChildren[i];\n const tagName = (child.tagName || '').toUpperCase();\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nconst idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n let size = 12;\n let id = '';\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n return id;\n}\nfunction toArray(obj) {\n const array = [];\n for (let i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(i => i);\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce((acc, attributeName) => {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce((acc, styleName) => {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n let {\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer,\n inner,\n path\n };\n}\nfunction transformForCss(_ref2) {\n let {\n transform,\n width = UNITS_IN_GRID,\n height = UNITS_IN_GRID,\n startCentered = false\n } = _ref2;\n let val = '';\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d$2 - width / 2, \"em, \").concat(transform.y / d$2 - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d$2, \"em), calc(-50% + \").concat(transform.y / d$2, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d$2, \"em, \").concat(transform.y / d$2, \"em) \");\n }\n val += \"scale(\".concat(transform.size / d$2 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d$2 * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-duotone-regular: normal 400 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-duotone-light: normal 300 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-duotone-thin: normal 100 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-duotone-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n --fa-font-sharp-duotone-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n --fa-font-sharp-duotone-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n --fa-font-sharp-duotone-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-counter-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(-1 * var(--fa-li-width, 2em));\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n animation-name: fa-beat;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n animation-name: fa-bounce;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n animation-name: fa-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n animation-name: fa-beat-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n animation-name: fa-flip;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n animation-name: fa-shake;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n animation-name: fa-spin;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 2s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n animation-name: fa-spin;\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n animation-delay: -1ms;\\n animation-duration: 1ms;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n transform: scale(1);\\n }\\n 45% {\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n transform: rotate(-15deg);\\n }\\n 4% {\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n transform: rotate(18deg);\\n }\\n 16% {\\n transform: rotate(-22deg);\\n }\\n 20% {\\n transform: rotate(22deg);\\n }\\n 32% {\\n transform: rotate(-12deg);\\n }\\n 36% {\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n transform: rotate(var(--fa-rotate-angle, 0));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\";\n\nfunction css() {\n const dcp = DEFAULT_CSS_PREFIX;\n const drc = DEFAULT_REPLACEMENT_CLASS;\n const fp = config.cssPrefix;\n const rc = config.replacementClass;\n let s = baseStyles;\n if (fp !== dcp || rc !== drc) {\n const dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n const customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n const rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n return s;\n}\nlet _cssInserted = false;\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\nvar InjectCSS = {\n mixout() {\n return {\n dom: {\n css,\n insertCss: ensureCss\n }\n };\n },\n hooks() {\n return {\n beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nconst w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nconst functions = [];\nconst listener = function () {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(fn => fn());\n};\nlet loaded = false;\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n const {\n tag,\n attributes = {},\n children = []\n } = abstractNodes;\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix,\n iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nfunction ucs2decode(string) {\n const output = [];\n let counter = 0;\n const length = string.length;\n while (counter < length) {\n const value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n const extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\nfunction toHex(unicode) {\n const decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n const size = string.length;\n let first = string.charCodeAt(index);\n let second;\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce((acc, iconName) => {\n const icon = icons[iconName];\n const expanded = !!icon.icon;\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n return acc;\n }, {});\n}\nfunction defineIcons(prefix, icons) {\n let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n skipHooks = false\n } = params;\n const normalized = normalizeIcons(icons);\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nconst duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"([^\"]+)\".*path d=\"([^\"]+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]+)\".*d=\"([^\"]+)\".*path class=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nconst {\n styles,\n shims\n} = namespace;\nconst FAMILY_NAMES = Object.keys(PREFIX_TO_LONG_STYLE);\nconst PREFIXES_FOR_FAMILY = FAMILY_NAMES.reduce((acc, familyId) => {\n acc[familyId] = Object.keys(PREFIX_TO_LONG_STYLE[familyId]);\n return acc;\n}, {});\nlet _defaultUsablePrefix = null;\nlet _byUnicode = {};\nlet _byLigature = {};\nlet _byOldName = {};\nlet _byOldUnicode = {};\nlet _byAlias = {};\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction getIconName(cssPrefix, cls) {\n const parts = cls.split('-');\n const prefix = parts[0];\n const iconName = parts.slice(1).join('-');\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nconst build = () => {\n const lookup = reducer => {\n return reduce(styles, (o$$1, style, prefix) => {\n o$$1[prefix] = reduce(style, reducer, {});\n return o$$1;\n }, {});\n };\n _byUnicode = lookup((acc, icon, iconName) => {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'number';\n });\n aliases.forEach(alias => {\n acc[alias.toString(16)] = iconName;\n });\n }\n return acc;\n });\n _byLigature = lookup((acc, icon, iconName) => {\n acc[iconName] = iconName;\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'string';\n });\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n }\n return acc;\n });\n _byAlias = lookup((acc, icon, iconName) => {\n const aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n return acc;\n });\n\n // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n const hasRegular = 'far' in styles || config.autoFetchSvg;\n const shimLookups = reduce(shims, (acc, shim) => {\n const maybeNameMaybeUnicode = shim[0];\n let prefix = shim[1];\n const iconName = shim[2];\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix,\n iconName\n };\n }\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix,\n iconName\n };\n }\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(c$$1 => {\n _defaultUsablePrefix = getCanonicalPrefix(c$$1.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n const oldUnicode = _byOldUnicode[unicode];\n const newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nconst emptyCanonicalIcon = () => {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getFamilyId(values) {\n let family = s;\n const famProps = FAMILY_NAMES.reduce((acc, familyId) => {\n acc[familyId] = \"\".concat(config.cssPrefix, \"-\").concat(familyId);\n return acc;\n }, {});\n L.forEach(familyId => {\n if (values.includes(famProps[familyId]) || values.some(v$$1 => PREFIXES_FOR_FAMILY[familyId].includes(v$$1))) {\n family = familyId;\n }\n });\n return family;\n}\nfunction getCanonicalPrefix(styleOrPrefix) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n family = s\n } = params;\n const style = PREFIX_TO_STYLE[family][styleOrPrefix];\n\n // handles the exception of passing in only a family of 'duotone' with no style\n if (family === t && !styleOrPrefix) {\n return 'fad';\n }\n const prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n const defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n const result = prefix || defined || null;\n return result;\n}\nfunction moveNonFaClassesToRest(classNames) {\n let rest = [];\n let iconName = null;\n classNames.forEach(cls => {\n const result = getIconName(config.cssPrefix, cls);\n if (result) {\n iconName = result;\n } else if (cls) {\n rest.push(cls);\n }\n });\n return {\n iconName,\n rest\n };\n}\nfunction sortedUniqueValues(arr) {\n return arr.sort().filter((value, index, arr) => {\n return arr.indexOf(value) === index;\n });\n}\nfunction getCanonicalIcon(values) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n skipLookups = false\n } = params;\n let givenPrefix = null;\n const faCombinedClasses = xo.concat(bt$1);\n const faStyleOrFamilyClasses = sortedUniqueValues(values.filter(cls => faCombinedClasses.includes(cls)));\n const nonStyleOrFamilyClasses = sortedUniqueValues(values.filter(cls => !xo.includes(cls)));\n const faStyles = faStyleOrFamilyClasses.filter(cls => {\n givenPrefix = cls;\n return !P.includes(cls);\n });\n const [styleFromValues = null] = faStyles;\n const family = getFamilyId(faStyleOrFamilyClasses);\n const canonical = _objectSpread2(_objectSpread2({}, moveNonFaClassesToRest(nonStyleOrFamilyClasses)), {}, {\n prefix: getCanonicalPrefix(styleFromValues, {\n family\n })\n });\n return _objectSpread2(_objectSpread2(_objectSpread2({}, canonical), getDefaultCanonicalPrefix({\n values,\n family,\n styles,\n config,\n canonical,\n givenPrefix\n })), applyShimAndAlias(skipLookups, givenPrefix, canonical));\n}\nfunction applyShimAndAlias(skipLookups, givenPrefix, canonical) {\n let {\n prefix,\n iconName\n } = canonical;\n if (skipLookups || !prefix || !iconName) {\n return {\n prefix,\n iconName\n };\n }\n const shim = givenPrefix === 'fa' ? byOldName(iconName) : {};\n const aliasIconName = byAlias(prefix, iconName);\n iconName = shim.iconName || aliasIconName || iconName;\n prefix = shim.prefix || prefix;\n if (prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n prefix = 'fas';\n }\n return {\n prefix,\n iconName\n };\n}\nconst newCanonicalFamilies = L.filter(familyId => {\n return familyId !== s || familyId !== t;\n});\nconst newCanonicalStyles = Object.keys(co).filter(key => key !== s).map(key => Object.keys(co[key])).flat();\nfunction getDefaultCanonicalPrefix(prefixOptions) {\n const {\n values,\n family,\n canonical,\n givenPrefix = '',\n styles = {},\n config: config$$1 = {}\n } = prefixOptions;\n const isDuotoneFamily = family === t;\n const valuesHasDuotone = values.includes('fa-duotone') || values.includes('fad');\n const defaultFamilyIsDuotone = config$$1.familyDefault === 'duotone';\n const canonicalPrefixIsDuotone = canonical.prefix === 'fad' || canonical.prefix === 'fa-duotone';\n if (!isDuotoneFamily && (valuesHasDuotone || defaultFamilyIsDuotone || canonicalPrefixIsDuotone)) {\n canonical.prefix = 'fad';\n }\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n if (!canonical.prefix && newCanonicalFamilies.includes(family)) {\n const validPrefix = Object.keys(styles).find(key => newCanonicalStyles.includes(key));\n if (validPrefix || config$$1.autoFetchSvg) {\n const defaultPrefix = pt.get(family).defaultShortPrefixId;\n canonical.prefix = defaultPrefix;\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n }\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n return canonical;\n}\n\nclass Library {\n constructor() {\n this.definitions = {};\n }\n add() {\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n const additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(key => {\n this.definitions[key] = _objectSpread2(_objectSpread2({}, this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]);\n\n // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n const longPrefix = PREFIX_TO_LONG_STYLE[s][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n reset() {\n this.definitions = {};\n }\n _pullDefinitions(additions, definition) {\n const normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(key => {\n const {\n prefix,\n iconName,\n icon\n } = normalized[key];\n const aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n if (aliases.length > 0) {\n aliases.forEach(alias => {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n}\n\nlet _plugins = [];\nlet _hooks = {};\nconst providers = {};\nconst defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n let {\n mixoutsTo: obj\n } = _ref;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(k => {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n _plugins.forEach(plugin => {\n const mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(tk => {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n if (typeof mixout[tk] === 'object') {\n Object.keys(mixout[tk]).forEach(sk => {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n if (plugin.hooks) {\n const hooks = plugin.hooks();\n Object.keys(hooks).forEach(hook => {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n _hooks[hook].push(hooks[hook]);\n });\n }\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n accumulator = hookFn.apply(null, [accumulator, ...args]); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n const hook = arguments[0];\n const args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n let {\n iconName\n } = iconLookup;\n const prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nconst library = new Library();\nconst noAuto = () => {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nconst dom = {\n i2svg: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject(new Error('Operation requires a DOM of some kind.'));\n }\n },\n watch: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot\n } = params;\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n config.observeMutations = true;\n domready(() => {\n autoReplace({\n autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nconst parse = {\n icon: icon => {\n if (icon === null) {\n return null;\n }\n if (typeof icon === 'object' && icon.prefix && icon.iconName) {\n return {\n prefix: icon.prefix,\n iconName: byAlias(icon.prefix, icon.iconName) || icon.iconName\n };\n }\n if (Array.isArray(icon) && icon.length === 2) {\n const iconName = icon[1].indexOf('fa-') === 0 ? icon[1].slice(3) : icon[1];\n const prefix = getCanonicalPrefix(icon[0]);\n return {\n prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n if (typeof icon === 'string' && (icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n const canonicalIcon = getCanonicalIcon(icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n if (typeof icon === 'string') {\n const prefix = getDefaultUsablePrefix();\n return {\n prefix,\n iconName: byAlias(prefix, icon) || icon\n };\n }\n }\n};\nconst api = {\n noAuto,\n config,\n dom,\n parse,\n library,\n findIconDefinition,\n toHtml\n};\nconst autoReplace = function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot = DOCUMENT\n } = params;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function () {\n return val.abstract.map(a => toHtml(a));\n }\n });\n Object.defineProperty(val, 'node', {\n get: function () {\n if (!IS_DOM) return;\n const container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n let {\n children,\n main,\n mask,\n attributes,\n styles,\n transform\n } = _ref;\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n const {\n width,\n height\n } = main;\n const offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n return [{\n tag: 'svg',\n attributes,\n children\n }];\n}\n\nfunction asSymbol (_ref) {\n let {\n prefix,\n iconName,\n children,\n attributes,\n symbol\n } = _ref;\n const id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id\n }),\n children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n const {\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n title,\n maskId,\n titleId,\n extra,\n watchable = false\n } = params;\n const {\n width,\n height\n } = mask.found ? mask : main;\n const isUploadedIcon = Lt.includes(prefix);\n const attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(c$$1 => extra.classes.indexOf(c$$1) === -1).filter(c$$1 => c$$1 !== '' || !!c$$1).concat(extra.classes).join(' ');\n let content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n const uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n const args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix,\n iconName,\n main,\n mask,\n maskId,\n transform,\n symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n const {\n children,\n attributes\n } = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n };\n args.children = children;\n args.attributes = attributes;\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n const {\n content,\n width,\n height,\n transform,\n title,\n extra,\n watchable = false\n } = params;\n const attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n const styles = _objectSpread2({}, extra.styles);\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform,\n startCentered: true,\n width,\n height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n const styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n const {\n content,\n title,\n extra\n } = params;\n const attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n const styleString = joinStyles(extra.styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\n\nconst {\n styles: styles$1\n} = namespace;\nfunction asFoundIcon(icon) {\n const width = icon[0];\n const height = icon[1];\n const [vectorData] = icon.slice(4);\n let element = null;\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n return {\n found: true,\n width,\n height,\n icon: element\n };\n}\nconst missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\nfunction findIcon(iconName, prefix) {\n let givenPrefix = prefix;\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n return new Promise((resolve, reject) => {\n if (givenPrefix === 'fa') {\n const shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n const icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nconst noop$1 = () => {};\nconst p$2 = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nconst preamble = \"FA \\\"6.7.1\\\"\";\nconst begin = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return () => end(name);\n};\nconst end = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p$2.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\nvar perf = {\n begin,\n end\n};\n\nconst noop$2 = () => {};\nfunction isWatched(node) {\n const i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\nfunction hasPrefixAndIcon(node) {\n const prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n const icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n const mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\nfunction convertSVG(abstractObj) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n ceFn = abstractObj.tag === 'svg' ? createElementNS : createElement\n } = params;\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n const tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n const children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn\n }));\n });\n return tag;\n}\nfunction nodeAsComment(node) {\n let comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n return comment;\n}\nconst mutators = {\n replace: function (mutation) {\n const node = mutation[0];\n if (node.parentNode) {\n mutation[1].forEach(abstract => {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n let comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function (mutation) {\n const node = mutation[0];\n const abstract = mutation[1];\n\n // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n const forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n if (abstract[0].attributes.class) {\n const splitClasses = abstract[0].attributes.class.split(' ').reduce((acc, cls) => {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n const newInnerHTML = abstract.map(a => toHtml(a)).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\nfunction performOperationSync(op) {\n op();\n}\nfunction perform(mutations, callback) {\n const callbackFunction = typeof callback === 'function' ? callback : noop$2;\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n let frame = performOperationSync;\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n frame(() => {\n const mutator = getMutator();\n const mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nlet disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nlet mo$1 = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n if (!config.observeMutations) {\n return;\n }\n const {\n treeCallback = noop$2,\n nodeCallback = noop$2,\n pseudoElementsCallback = noop$2,\n observeMutationsRoot = DOCUMENT\n } = options;\n mo$1 = new MUTATION_OBSERVER(objects => {\n if (disabled) return;\n const defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(mutationRecord => {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n treeCallback(mutationRecord.target);\n }\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n const {\n prefix,\n iconName\n } = getCanonicalIcon(classArray(mutationRecord.target));\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo$1.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo$1) return;\n mo$1.disconnect();\n}\n\nfunction styleParser (node) {\n const style = node.getAttribute('style');\n let val = [];\n if (style) {\n val = style.split(';').reduce((acc, style) => {\n const styles = style.split(':');\n const prop = styles[0];\n const value = styles.slice(1);\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n return acc;\n }, {});\n }\n return val;\n}\n\nfunction classParser (node) {\n const existingPrefix = node.getAttribute('data-prefix');\n const existingIconName = node.getAttribute('data-icon');\n const innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n let val = getCanonicalIcon(classArray(node));\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n if (val.iconName && val.prefix) {\n return val;\n }\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n return val;\n}\n\nfunction attributesParser (node) {\n const extraAttributes = toArray(node.attributes).reduce((acc, attr) => {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n return acc;\n }, {});\n const title = node.getAttribute('title');\n const titleId = node.getAttribute('data-fa-title-id');\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n let parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n const {\n iconName,\n prefix,\n rest: extraClasses\n } = classParser(node);\n const extraAttributes = attributesParser(node);\n const pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n let extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nconst {\n styles: styles$2\n} = namespace;\nfunction generateMutation(node) {\n const nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\nfunction getKnownPrefixes() {\n return [...Ft, ...xo];\n}\nfunction onTree(root) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n const htmlClassList = DOCUMENT.documentElement.classList;\n const hclAdd = suffix => htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n const hclRemove = suffix => htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n const prefixes = config.autoFetchSvg ? getKnownPrefixes() : P.concat(Object.keys(styles$2));\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n const prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(p$$1 => \".\".concat(p$$1, \":not([\").concat(DATA_FA_I2SVG, \"])\"))).join(', ');\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n let candidates = [];\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e$$1) {\n // noop\n }\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n const mark = perf.begin('onTree');\n const mutations = candidates.reduce((acc, node) => {\n try {\n const mutation = generateMutation(node);\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e$$1) {\n if (!PRODUCTION) {\n if (e$$1.name === 'MissingIcon') {\n console.error(e$$1);\n }\n }\n }\n return acc;\n }, []);\n return new Promise((resolve, reject) => {\n Promise.all(mutations).then(resolvedMutations => {\n perform(resolvedMutations, () => {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(e$$1 => {\n mark();\n reject(e$$1);\n });\n });\n}\nfunction onNode(node) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(mutation => {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n let {\n mask\n } = params;\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask\n }));\n };\n}\nconst render = function (iconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n symbol = false,\n mask = null,\n maskId = null,\n title = null,\n titleId = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n if (!iconDefinition) return;\n const {\n prefix,\n iconName,\n icon\n } = iconDefinition;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), () => {\n callHooks('beforeDOMElementCreation', {\n iconDefinition,\n params\n });\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix,\n iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol,\n title,\n maskId,\n titleId,\n extra: {\n attributes,\n styles,\n classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n const {\n node = DOCUMENT,\n callback = () => {}\n } = params;\n return onTree(node, callback);\n };\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n const {\n iconName,\n title,\n titleId,\n prefix,\n transform,\n symbol,\n mask,\n maskId,\n extra\n } = nodeMeta;\n return new Promise((resolve, reject) => {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(_ref => {\n let [main, mask] = _ref;\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n maskId,\n title,\n titleId,\n extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n providers$$1.generateAbstractIcon = function (_ref2) {\n let {\n children,\n attributes,\n main,\n transform,\n styles\n } = _ref2;\n const styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n let nextChild;\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main,\n transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n children.push(nextChild || main.icon);\n return {\n children,\n attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout() {\n return {\n layer(assembler) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n classes = []\n } = params;\n return domVariants({\n type: 'layer'\n }, () => {\n callHooks('beforeDOMElementCreation', {\n assembler,\n params\n });\n let children = [];\n assembler(args => {\n Array.isArray(args) ? args.map(a => {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\"), ...classes].join(' ')\n },\n children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout() {\n return {\n counter(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'counter',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\"), ...classes]\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout() {\n return {\n text(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'text',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersTextAbstract({\n content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\"), ...classes]\n }\n });\n });\n }\n };\n },\n provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n const {\n title,\n transform,\n extra\n } = nodeMeta;\n let width = null;\n let height = null;\n if (IS_IE) {\n const computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n const boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width,\n height,\n transform,\n title,\n extra,\n watchable: true\n })]);\n };\n }\n};\n\nconst CLEAN_CONTENT_PATTERN = new RegExp('\\u{22}', 'ug');\nconst SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nconst _FONT_FAMILY_WEIGHT_TO_PREFIX = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n FontAwesome: {\n normal: 'fas',\n 400: 'fas'\n }\n}), lt), ko), Yt);\nconst FONT_FAMILY_WEIGHT_TO_PREFIX = Object.keys(_FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, key) => {\n acc[key.toLowerCase()] = _FONT_FAMILY_WEIGHT_TO_PREFIX[key];\n return acc;\n}, {});\nconst FONT_FAMILY_WEIGHT_FALLBACK = Object.keys(FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, fontFamily) => {\n const weights = FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamily];\n acc[fontFamily] = weights[900] || [...Object.entries(weights)][0][1];\n return acc;\n}, {});\nfunction hexValueFromContent(content) {\n const cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n const codePoint = codePointAt(cleaned, 0);\n const isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n const isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\nfunction getPrefix(fontFamily, fontWeight) {\n const fontFamilySanitized = fontFamily.replace(/^['\"]|['\"]$/g, '').toLowerCase();\n const fontWeightInteger = parseInt(fontWeight);\n const fontWeightSanitized = isNaN(fontWeightInteger) ? 'normal' : fontWeightInteger;\n return (FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamilySanitized] || {})[fontWeightSanitized] || FONT_FAMILY_WEIGHT_FALLBACK[fontFamilySanitized];\n}\nfunction replaceForPosition(node, position) {\n const pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise((resolve, reject) => {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n const children = toArray(node.children);\n const alreadyProcessedPseudoElement = children.filter(c$$1 => c$$1.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position)[0];\n const styles = WINDOW.getComputedStyle(node, position);\n const fontFamily = styles.getPropertyValue('font-family');\n const fontFamilyMatch = fontFamily.match(FONT_FAMILY_PATTERN);\n const fontWeight = styles.getPropertyValue('font-weight');\n const content = styles.getPropertyValue('content');\n if (alreadyProcessedPseudoElement && !fontFamilyMatch) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamilyMatch && content !== 'none' && content !== '') {\n const content = styles.getPropertyValue('content');\n let prefix = getPrefix(fontFamily, fontWeight);\n const {\n value: hexValue,\n isSecondary\n } = hexValueFromContent(content);\n const isV4 = fontFamilyMatch[0].startsWith('FontAwesome');\n let iconName = byUnicode(prefix, hexValue);\n let iconIdentifier = iconName;\n if (isV4) {\n const iconName4 = byOldUnicode(hexValue);\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n }\n\n // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n const meta = blankMeta();\n const {\n extra\n } = meta;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(main => {\n const abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main,\n mask: emptyCanonicalIcon()\n },\n prefix,\n iconName: iconIdentifier,\n extra,\n watchable: true\n }));\n const element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', 'svg');\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n element.outerHTML = abstract.map(a$$1 => toHtml(a$$1)).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise((resolve, reject) => {\n const operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n const end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(() => {\n end();\n enableObservation();\n resolve();\n }).catch(() => {\n end();\n enableObservation();\n reject();\n });\n });\n}\nvar PseudoElements = {\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides(providers) {\n providers.pseudoElements2svg = function (params) {\n const {\n node = DOCUMENT\n } = params;\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nlet _unwatched = false;\nvar MutationObserver$1 = {\n mixout() {\n return {\n dom: {\n unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks() {\n return {\n bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto() {\n disconnect();\n },\n watch(params) {\n const {\n observeMutationsRoot\n } = params;\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nconst parseTransformString = transformString => {\n let transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce((acc, n) => {\n const parts = n.toLowerCase().split('-');\n const first = parts[0];\n let rest = parts.slice(1).join('-');\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n rest = parseFloat(rest);\n if (isNaN(rest)) {\n return acc;\n }\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n case 'left':\n acc.x = acc.x - rest;\n break;\n case 'right':\n acc.x = acc.x + rest;\n break;\n case 'up':\n acc.y = acc.y - rest;\n break;\n case 'down':\n acc.y = acc.y + rest;\n break;\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout() {\n return {\n parse: {\n transform: transformString => {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const transformString = node.getAttribute('data-fa-transform');\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n return accumulator;\n }\n };\n },\n provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n let {\n main,\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n const operations = {\n outer,\n inner,\n path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nconst ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\nfunction fillBlack(abstract) {\n let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n return abstract;\n}\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\nvar Masks = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const maskData = node.getAttribute('data-fa-mask');\n const mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(i => i.trim()));\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n let {\n children,\n attributes,\n main,\n mask,\n maskId: explicitMaskId,\n transform\n } = _ref;\n const {\n width: mainWidth,\n icon: mainPath\n } = main;\n const {\n width: maskWidth,\n icon: maskPath\n } = mask;\n const trans = transformForSvg({\n transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n const maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n const maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n const maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n const maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n const maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n const clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n const maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n const defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children,\n attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides(providers) {\n let reduceMotion = false;\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n providers.missingIconAbstract = function () {\n const gChildren = [];\n const FILL = {\n fill: 'currentColor'\n };\n const ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n };\n\n // Ring\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n const OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n const dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const symbolData = node.getAttribute('data-fa-symbol');\n const symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nconst noAuto$1 = api.noAuto;\nconst config$1 = api.config;\nconst library$1 = api.library;\nconst dom$1 = api.dom;\nconst parse$1 = api.parse;\nconst findIconDefinition$1 = api.findIconDefinition;\nconst toHtml$1 = api.toHtml;\nconst icon = api.icon;\nconst layer = api.layer;\nconst text = api.text;\nconst counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n", "import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright \u00A9 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded = [\"style\"];\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var allProps = _objectSpread2(_objectSpread2({}, defaultProps), props);\n\n var iconArgs = allProps.icon,\n maskArgs = allProps.mask,\n symbol = allProps.symbol,\n className = allProps.className,\n title = allProps.title,\n titleId = allProps.titleId,\n maskId = allProps.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(allProps)), _toConsumableArray((className || '').split(' '))));\n var transform = objectWithKey('transform', typeof allProps.transform === 'string' ? parse.transform(allProps.transform) : allProps.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: ref\n };\n Object.keys(allProps).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!defaultProps.hasOwnProperty(key)) {\n extraProps[key] = allProps[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n", "export * from 'preact/compat';\r\nexport { default } from 'preact/compat';\r\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useSignal } from '@preact/signals'\n\nexport function Collapsible({ defaultOpen = false, Trigger, Content }) {\n const open = useSignal(defaultOpen)\n\n const toggle = () => (open.value = !open.value)\n\n const containerClasses = open.value ? 'h-auto border-[var(--tertiary-color)]' : 'h-0 border-transparent'\n\n return (\n <>\n <button type=\"button\" class=\"py-2 px-2.5 flex items-center justify-between w-full\" onClick={toggle}>\n {Trigger}\n\n <Chevron class={open.value ? 'size-4 rotate-180 transition-all' : 'size-4 rotate-0 transition-all'} />\n </button>\n <div\n class={`border-t ${containerClasses} transition-all ease-in-out duration-300 overflow-hidden`}\n style={{ interpolateSize: 'allow-keywords', transitionBehavior: 'allow-discrete' }}\n >\n <div class=\"p-3\">{Content}</div>\n </div>\n </>\n )\n}\n\nexport function Chevron(props) {\n const d =\n 'M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 ' +\n '0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z'\n\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" fill=\"currentColor\" {...props}>\n <path d={d} />\n </svg>\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useContext, useCallback } from 'preact/hooks'\nimport { useBilling, LandingPageState } from '../landing_page'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nexport function useCart() {\n const { cart } = useContext(LandingPageState)\n const { merchantAccount } = useBilling()\n\n const addToCart = useCallback((item) => {\n const _cart = new Map(cart.value)\n\n if (_cart.has(item)) {\n const current = _cart.get(item)\n\n const max = item.remaining || 99\n\n _cart.set(item, Math.min(current + 1, max))\n } else {\n _cart.set(item, 1)\n }\n\n cart.value = _cart\n })\n\n const removeFromCart = useCallback((item) => {\n const _cart = new Map(cart.value)\n\n if (_cart.get(item) > 1) {\n const current = _cart.get(item)\n\n _cart.set(item, current - 1)\n } else {\n _cart.delete(item)\n }\n\n cart.value = _cart\n })\n\n const setQuantity = useCallback((item, quantity) => {\n const _cart = new Map(cart.value)\n\n quantity ||= 0\n\n const max = item.remaining || 99\n\n _cart.set(item, Math.min(Math.max(quantity, 0), max))\n\n cart.value = _cart\n })\n\n const isMembership = (item) => 'registration_fee_price' in item\n\n const priceOf = (item) => {\n if (isMembership(item)) {\n return parseFloat(item.price) + (parseFloat(item.registration_fee_price) || 0)\n }\n\n return parseFloat(item.price)\n }\n\n const taxOf = (item) => {\n if (isMembership(item)) {\n return parseFloat(item.tax) + (parseFloat(item.registration_fee_tax) || 0)\n }\n\n return parseFloat(item.tax)\n }\n\n const subtotal = () => {\n const entries = Array.from(cart.value.entries())\n\n return bankersRound(entries.reduce((acc, [item, quantity]) => acc + quantity * priceOf(item), 0))\n }\n const tax = () => {\n const entries = Array.from(cart.value.entries())\n\n return bankersRound(entries.reduce((acc, [item, quantity]) => acc + quantity * taxOf(item), 0))\n }\n const serviceFee = () => {\n if (!merchantAccount) return 0\n if (!merchantAccount.serviceFeePercentage) return 0\n\n return bankersRound((subtotal() + tax()) * merchantAccount.serviceFeePercentage)\n }\n const total = () => subtotal() + tax() + serviceFee()\n\n return {\n cart: cart.value,\n addToCart,\n removeFromCart,\n setQuantity,\n total,\n subtotal,\n tax,\n serviceFee,\n priceOf,\n isMembership,\n }\n}\n\nexport function Cart() {\n const { cart } = useCart()\n const entries = Array.from(cart.entries())\n const total = entries.reduce((acc, [_, quantity]) => acc + quantity, 0)\n\n const iconClasses =\n 'absolute top-[-6px] left-1/2 px-[0.5em] py-[0.125em] leading-none bg-danger-600 text-white rounded-full ' +\n 'flex justify-center items-center text-[0.875em]'\n let buttonClasses = 'relative flex items-center size-5'\n\n const dialogClasses =\n 'm-0 absolute bg-[var(--tertiary-color)] text-[var(--secondary-color)] p-3 z-50 shadow-lg outline-none ' +\n '[&[open]]:animate-in animate-out [&[open]]:fade-in-0 fade-out-0 [&[open]]:zoom-in-95 zoom-out-95 min-w-64 ' +\n 'max-w-xs'\n\n return (\n <div class=\"pl-2\">\n <div data-controller=\"popover\" data-popover-placement-value=\"bottom-end\">\n <button class={buttonClasses} type=\"button\" data-action=\"popover#toggle\" data-popover-target=\"trigger\">\n {total > 0 ? (\n <>\n <CartIcon class=\"text-[var(--primary-color)] fa-fw\" />\n <span class={iconClasses}>{total}</span>\n </>\n ) : (\n <CartIcon class=\"text-basic-700 fa-fw\" />\n )}\n </button>\n <dialog data-popover-target=\"body\" class={dialogClasses}>\n <div class=\"font-bold mb-3\">Cart</div>\n {total > 0 ? (\n <CartDisplay detailed={false} />\n ) : (\n <div class=\"text-[var(--secondary-color-light)]\">Your cart is empty</div>\n )}\n </dialog>\n </div>\n </div>\n )\n}\n\nexport function CartDisplay({ detailed }) {\n const { cart, priceOf, isMembership, total, subtotal, tax, serviceFee } = useCart()\n const entries = Array.from(cart.entries())\n\n return (\n <div class=\"space-y-3\">\n {entries.map(([item, quantity]) => (\n <>\n <div>\n <div class=\"flex justify-between items-center gap-4 mb-1\">\n <div class={detailed ? null : 'truncate'}>{item.name}</div>\n {priceOf(item) > 0 ? (\n <div class=\"font-bold\">\n <Money amount={priceOf(item) * quantity} />\n </div>\n ) : (\n <div>Free</div>\n )}\n </div>\n <div class=\"flex justify-between items-center gap-4\">\n {!isMembership(item) && <ItemEditor item={item} />}\n\n {quantity > 1 && (\n <div class=\"flex items-center gap-1\">\n <Money amount={priceOf(item)} />\n <span>/ ea</span>\n </div>\n )}\n </div>\n </div>\n\n <hr class=\"border-secondary\" />\n </>\n ))}\n\n <div className=\"flex items-center justify-end gap-3\">\n <div class=\"uppercase font-medium tracking-wider\">Subtotal:</div>\n <div class=\"font-semibold w-[4.5rem]\">\n <Money amount={subtotal()} class=\"text-end\" />\n </div>\n </div>\n\n {detailed && (\n <>\n <div className=\"flex items-center justify-end gap-3\">\n <div class=\"uppercase font-medium tracking-wider\">Tax:</div>\n <div class=\"font-semibold w-[4.5rem]\">\n <Money amount={tax()} class=\"text-end\" />\n </div>\n </div>\n\n {serviceFee() > 0 && (\n <div className=\"flex items-center justify-end gap-3\">\n <div class=\"uppercase font-medium tracking-wider\">Service Fee:</div>\n <div class=\"font-semibold w-[4.5rem]\">\n <Money amount={serviceFee()} class=\"text-end\" />\n </div>\n </div>\n )}\n\n <hr class=\"border-secondary\" />\n\n <div className=\"flex items-center justify-end gap-3\">\n <div class=\"uppercase font-medium tracking-wider\">Total Due:</div>\n <div class=\"font-semibold w-[4.5rem]\">\n <Money amount={total()} class=\"text-end\" />\n </div>\n </div>\n </>\n )}\n </div>\n )\n}\n\nfunction bankersRound(num) {\n const multiplier = 10 ** 2\n const x = num * multiplier\n const roundedX = Math.round(x)\n const fraction = Math.abs(x - roundedX)\n\n if (fraction === 0.5) {\n return (roundedX % 2 === 0 ? roundedX : roundedX - 1) / multiplier\n }\n\n return roundedX / multiplier\n}\n\nexport function Money({ amount, ...props }) {\n const formatted = new Intl.NumberFormat(undefined, {\n style: 'currency',\n currency: document.body.dataset.currency,\n currencySign: 'standard',\n }).format(amount)\n\n return <div {...props}>{formatted}</div>\n}\n\nexport function ItemEditor({ item }) {\n const { cart, addToCart, removeFromCart, setQuantity } = useCart()\n const quantity = cart.get(item)\n\n const inputClasses =\n 'no-spinner appearance-none bg-[var(--shadow-color)] text-center border-b-2 border-transparent ' +\n 'focus:outline-none focus:border-[var(--primary-color)]'\n\n return (\n <div class=\"rounded-full bg-[var(--shadow-color)] flex justify-between items-center w-24\">\n <button\n class=\"pl-3 py-1.5 flex-1 grid [&>*]:col-start-1 [&>*]:row-start-1\"\n type=\"button\"\n onClick={() => removeFromCart(item)}\n >\n {quantity > 1 ? (\n <FontAwesomeIcon icon=\"square-minus\" className={`size-5 text-[var(--secondary-color-light)]`} />\n ) : (\n <div class={`flex items-center justify-center size-5`}>\n <FontAwesomeIcon icon=\"trash\" className={`size-4 text-[var(--secondary-color-light)]`} />\n </div>\n )}\n </button>\n\n <input\n type=\"number\"\n value={quantity}\n class={inputClasses}\n onInput={({ target }) => {\n const newQuantity = Number(target.value)\n\n setQuantity(item, newQuantity)\n }}\n onBlur={({ target }) => {\n let newQuantity = Number(target.value)\n\n if (newQuantity < 1) {\n newQuantity = 1\n }\n\n setQuantity(item, newQuantity)\n }}\n style={`width: calc(${quantity?.toString()?.length || 1}ch + 1rem)`}\n />\n\n <button\n class=\"flex justify-end flex-1 pr-3 py-1.5 disabled:opacity-65 disabled:cursor-not-allowed\"\n type=\"button\"\n disabled={item.remaining && cart.get(item) >= item.remaining}\n onClick={() => addToCart(item)}\n >\n <FontAwesomeIcon icon=\"square-plus\" className=\"size-5 text-[var(--secondary-color-light)]\" />\n </button>\n </div>\n )\n}\n\nfunction CartIcon(props) {\n const path =\n 'M0 24C0 10.7 10.7 0 24 0L69.5 0c22 0 41.5 12.8 50.6 32l411 0c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 ' +\n '31.4-37 53.3-69.5 53.3l-288.5 0 5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5L488 336c13.3 0 24 10.7 24 ' +\n '24s-10.7 24-24 24l-288.3 0c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5L24 48C10.7 48 0 ' +\n '37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z'\n\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\" fill=\"currentColor\" {...props}>\n <path d={path} />\n </svg>\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nexport function Error({ message }) {\n return (\n <>\n {message && (\n <div class=\"flex gap-2 items-center\">\n <ExclamationTriangle class=\"size-4 text-danger-600 block\" />\n <div>{message}</div>\n </div>\n )}\n </>\n )\n}\n\nfunction ExclamationTriangle(props) {\n const d =\n 'M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 ' +\n '480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 ' +\n '32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 ' +\n '224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z'\n\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" fill=\"currentColor\" {...props}>\n <path d={d} />\n </svg>\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\n\nexport function Select({ children, ...props }) {\n const chevronClasses =\n \"absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none after:content-[''] after:absolute \" +\n 'after:border-[4px] after:border-t-current after:border-x-transparent after:border-b-0 w-2 h-1'\n\n return (\n <div class=\"relative\">\n <select class=\"input input-border appearance-none cursor-pointer [&>*]:bg-[var(--shadow-color)]\" {...props}>\n {children}\n </select>\n <div class={chevronClasses}></div>\n </div>\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useClasses, useError, usePreview } from '../landing_page'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Chevron, Collapsible } from './collapsible'\nimport { useSignal, useSignalEffect } from '@preact/signals'\nimport { getCsrfToken } from '../../helpers/fetch_helper'\nimport { Error } from './error'\nimport { Select } from '../select'\n\nexport function ClassSelection({ member, completed, availableClasses, selectedClass, selectedProgram }) {\n const classes = 'size-2 rounded-full ring-2 ring-offset-[var(--shadow-color)] ring-offset-2'\n\n const { required } = useClasses()\n\n const { errors } = useError()\n\n defaultComplete(member, errors, completed)\n\n const onClassSelected = ({ target }) => {\n if (target.value) {\n selectedClass.value = availableClasses.value.find((c) => c.id.toString() === target.value)\n } else {\n selectedClass.value = null\n member.class = null\n }\n }\n\n return (\n <>\n <div class={`bg-[var(--shadow-color)] border ${errors.class ? 'border-danger-600' : 'border-transparent'}`}>\n <Collapsible\n defaultOpen={true}\n Trigger={\n <>\n <div class=\"flex items-center gap-2 size\">\n <div>\n <span class=\"text-base font-bold\">Class</span>\n {!required && (\n <span class=\"text-sm text-[var(--secondary-color-light)] font-semibold ml-1\">(Optional)</span>\n )}\n </div>\n {completed.value && (\n <div class=\"size-4 bg-[var(--tertiary-color)] rounded-full\">\n <FontAwesomeIcon icon=\"circle-check\" className=\"text-[var(--primary-color)] size-4 block\" />\n </div>\n )}\n </div>\n </>\n }\n Content={\n <div class=\"p-3 bg-[var(--tertiary-color)] space-y-3\">\n <div>\n <label class={`block font-medium uppercase tracking-widest mb-1 ${required ? 'required' : ''}`}>\n Select a class\n </label>\n <Select onChange={onClassSelected} required={required}>\n <option selected={!selectedClass.value} hidden value=\"\">\n Select a class\n </option>\n {!required && <option value=\"\">None</option>}\n\n {availableClasses.value.map(({ id, name }) => (\n <option value={id} selected={id === selectedClass.value?.id}>\n {name}\n </option>\n ))}\n </Select>\n </div>\n\n <div class=\"border-t border-[var(--secondary-color-light)]\"></div>\n\n <TimeSelector\n member={member}\n selectedProgram={selectedProgram}\n selectedClass={selectedClass}\n completed={completed}\n />\n </div>\n }\n />\n </div>\n\n {errors.class && <Error message={errors.class} />}\n </>\n )\n}\n\nlet controller\n\n// eslint-disable-next-line complexity\nfunction TimeSelector({ member, selectedProgram, selectedClass, completed }) {\n const classTimes = useSignal({})\n const loadingClasses = useSignal(false)\n const isPreview = usePreview()\n const selectedEvent = useSignal(member.class)\n\n const fetchTimes = async (from) => {\n if (isPreview) return\n if (controller) return\n\n const timeout = setTimeout(() => (loadingClasses.value = true), 200)\n\n controller = new AbortController()\n\n const path = window.location.href.replace(\n '/submission/new',\n `/programs/${selectedProgram.peek().id}/classes/${selectedClass.peek().id}?from=${from}`,\n )\n const options = {\n method: 'GET',\n headers: {\n 'X-CSRF-Token': getCsrfToken(),\n 'Content-Type': 'application/json',\n },\n signal: controller.signal,\n }\n\n const response = await fetch(path, options).finally(() => {\n clearTimeout(timeout)\n loadingClasses.value = false\n controller = null\n })\n\n if (response.ok) {\n classTimes.value = await response.json()\n }\n }\n\n if (selectedEvent.value && !classTimes.value) {\n fetchTimes(selectedClass.value.start)\n }\n\n useSignalEffect(async () => {\n if (!selectedClass.value) {\n classTimes.value = {}\n return\n }\n\n if (controller) {\n controller.abort()\n controller = null\n }\n\n await fetchTimes(classTimes.peek()?.prev)\n })\n\n const next = async () => {\n await fetchTimes(classTimes.peek().next)\n }\n\n const prev = async () => {\n await fetchTimes(classTimes.peek().prev)\n }\n\n return (\n <div>\n <div class=\"flex items-center justify-between\">\n <div class=\"size-4\">\n {classTimes.value.prev && (\n <button type=\"button\" onClick={() => prev()}>\n <Chevron class=\"rotate-90 text-[var(--primary-color)] size-4\" />\n </button>\n )}\n </div>\n <div class=\"relative\">\n {classTimes.value.prev ? (\n <>\n <span>{formatMonthDay(classTimes.value.startTime)}</span>\n <span> - </span>\n <span>{formatMonthDay(classTimes.value.endTime)}</span>\n </>\n ) : (\n <>\n <span class=\"font-bold\">This</span>\n <span> week</span>\n </>\n )}\n\n <div class=\"absolute -right-6 top-px size-4\">{loadingClasses.value && <Loader />}</div>\n </div>\n <div class=\"size-4\">\n {classTimes.value.next && (\n <button type=\"button\" onClick={() => next()}>\n <Chevron class=\"-rotate-90 text-[var(--primary-color)] size-4\" />\n </button>\n )}\n </div>\n </div>\n {classTimes.value.schedule ? (\n <div class=\"space-y-2 pt-3\">\n <WeeklySchedule\n member={member}\n schedule={classTimes.value.schedule}\n selectedClass={selectedClass}\n selectedEvent={selectedEvent}\n completed={completed}\n />\n </div>\n ) : (\n <div class=\"rounded bg-[var(--shadow-color)] py-2 px-3 flex items-center justify-center mt-3\">\n {isPreview ? (\n <div>Class selection unavailable in preview</div>\n ) : (\n <div>Select a class to see time slots</div>\n )}\n </div>\n )}\n </div>\n )\n}\n\nfunction defaultComplete(member, errors, completed) {\n if (member.class && !errors.class) {\n completed.value = true\n return\n }\n}\n\nfunction Loader() {\n return <FontAwesomeIcon icon=\"fa-duotone fa-spinner-third\" className=\"animate-spin size-4\" />\n}\n\nfunction WeeklySchedule({ member, schedule, completed, selectedEvent }) {\n const { clearError } = useError()\n\n const byDayOfWeek = schedule.reduce((acc, event) => {\n const start = new Date(event.start)\n const dayOfWeek = start.toLocaleDateString('en-US', { weekday: 'long' })\n const monthDay = start.toLocaleDateString('en-US', { month: 'short', day: 'numeric' })\n const key = `${dayOfWeek}, ${monthDay}`\n\n acc[key] ||= []\n acc[key].push(event)\n\n return acc\n }, {})\n\n const organized = Object.fromEntries(\n Object.entries(byDayOfWeek).map(([day, events]) => [\n day,\n events.sort((a, b) => new Date(a.start) - new Date(b.start)),\n ]),\n )\n\n const classes = 'block w-full rounded bg-[var(--tertiary-color)] p-1 flex items-center justify-center border-2'\n\n const eventIsSelected = (event) => {\n if (!selectedEvent.value) return false\n\n const selected = selectedEvent.value\n\n // javascript moment\n return JSON.stringify(selected) === JSON.stringify(event)\n }\n\n const selectedClasses = 'border-[var(--primary-color)] relative'\n\n return (\n <>\n {Object.entries(organized).map(([key, events]) => (\n <div key={key} class=\"rounded bg-[var(--shadow-color)] p-3 space-y-2\">\n <div>{key}</div>\n {events.map((event) => (\n <>\n {event.selectable ? (\n <button\n type=\"button\"\n key={event}\n class={`${classes} ${eventIsSelected(event) ? selectedClasses : 'border-transparent'}`}\n onClick={() => {\n if (eventIsSelected(event)) {\n member.class = null\n selectedEvent.value = null\n completed.value = false\n return\n }\n\n clearError('class')\n member.class = event\n selectedEvent.value = event\n completed.value = true\n }}\n >\n {eventIsSelected(event) && (\n <div class=\"absolute -left-2 -top-2 bg-[var(--tertiary-color)] size-4 rounded-full\">\n <FontAwesomeIcon icon=\"circle-check\" className=\"block text-[var(--primary-color)] size-4\" />\n </div>\n )}\n\n <div>\n <span>{formatTime(event.start)}</span>\n <span> - </span>\n <span>{formatTime(event.end)}</span>\n </div>\n </button>\n ) : (\n <div key={event} class={`${classes} border-transparent cursor-not-allowed opacity-50`}>\n <div>\n <span>{formatTime(event.start)}</span>\n <span> - </span>\n <span>{formatTime(event.end)}</span>\n {event.tooLate && (\n <>\n <span> \u2013 </span>\n <span class=\"font-semibold\">Class full</span>\n </>\n )}\n </div>\n </div>\n )}\n </>\n ))}\n </div>\n ))}\n </>\n )\n}\n\nfunction formatMonthDay(time) {\n const date = new Date(time)\n\n return date.toLocaleDateString('en-US', { month: 'long', day: 'numeric' })\n}\n\nfunction formatTime(time) {\n const date = new Date(time)\n\n return date\n .toLocaleTimeString('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n })\n .toLowerCase()\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useMerchandise, useStep } from '../landing_page'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { ItemEditor, Money, useCart } from './cart'\n\nexport function Merchandise() {\n const { nextStep, previousStep } = useStep()\n const merchandise = useMerchandise()\n\n const outOfStockClasses = 'flex items-center gap-2 text-[var(--secondary-color-light)] cursor-not-allowed pr-4'\n const itemClasses = 'py-3 mx-3 flex gap-3 justify-between last:border-none border-b border-[var(--shadow-color)]'\n\n return (\n <form\n onSubmit={(event) => {\n event.preventDefault()\n\n nextStep()\n }}\n >\n <div class=\"p-3 bg-[var(--shadow-color)]\">\n <div class=\"p-3 bg-[var(--tertiary-color)] space-y-3\">\n {Object.entries(merchandise).map(([category, items]) => (\n <div class=\"border-x border-b border-[var(--shadow-color)]\">\n <button\n type=\"button\"\n class=\"bg-[var(--shadow-color)] flex w-full py-2 px-2.5 uppercase font-medium tracking-wider\"\n >\n {category}\n </button>\n\n {items.map((item) => (\n <div class={itemClasses}>\n <div className=\"flex flex-col gap-2\">\n <div>{item.name}</div>\n\n <Money amount={item.price} />\n </div>\n\n {!item.deliverable || (item.remaining && item.remaining > 0) ? (\n <Add item={item} />\n ) : (\n <div class={outOfStockClasses}>\n <span>Out of Stock</span>\n <FontAwesomeIcon icon={['far', 'circle-xmark']} className=\"size-4\" />\n </div>\n )}\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n <div class=\"flex justify-end items-center gap-1 mt-4 pb-4\">\n <button class=\"btn btn-back\" type=\"button\" onClick={previousStep}>\n BACK\n </button>\n <button class=\"btn\" type=\"submit\">\n NEXT\n </button>\n </div>\n </form>\n )\n}\n\nfunction Add({ item }) {\n const { cart, addToCart } = useCart()\n\n const animationClasses =\n 'opacity-100 hidden:opacity-0 transition-discrete transition-all starting:opacity-0 duration-250 ease-in-out'\n\n return (\n <div class=\"flex items-center\">\n <div class=\"grid items-center justify-items-end h-12 [&>*]:col-start-1 [&>*]:row-start-1\">\n <div class={animationClasses} hidden={!cart.has(item)}>\n <ItemEditor item={item} />\n </div>\n\n <button\n class={`active:scale-95 pl-4 py-2 pr-4 ${animationClasses}`}\n onClick={() => addToCart(item)}\n type=\"button\"\n hidden={cart.has(item)}\n >\n <FontAwesomeIcon icon=\"circle-plus\" className=\"text-[var(--primary-color)] size-4\" />\n </button>\n </div>\n </div>\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useSubmit } from './submission'\nimport { useBilling, usePreview } from '../landing_page'\nimport { GenericConfirmation } from './confirmation/generic'\nimport { BasysConfirmation } from './confirmation/basys'\nimport { StripeConfirmation } from './confirmation/stripe'\nimport { UsaEpayConfirmation } from './confirmation/usa_epay'\nimport { useCart } from './cart'\nimport { useSignal } from '@preact/signals'\n\nexport function Confirmation() {\n const { paymentRequired } = useBilling()\n const { total } = useCart()\n const isPreview = usePreview()\n\n return <>{!isPreview && paymentRequired && total() > 0 ? <BillingConfirmation /> : <NoBillingConfirmation />}</>\n}\n\nfunction BillingConfirmation() {\n const { merchantAccount } = useBilling()\n\n return (\n <>\n {merchantAccount.type === 'basys' && <BasysConfirmation />}\n {merchantAccount.type === 'stripe' && <StripeConfirmation />}\n {merchantAccount.type === 'usa_epay' && <UsaEpayConfirmation />}\n </>\n )\n}\n\nfunction NoBillingConfirmation() {\n const { submit } = useSubmit()\n const submitDisabled = useSignal(false)\n\n return (\n <GenericConfirmation\n submitDisabled={submitDisabled.value}\n onSubmit={async (event) => {\n event.preventDefault()\n submitDisabled.value = true\n await submit()\n submitDisabled.value = false\n }}\n />\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { Members } from './members'\nimport { Cart } from './cart'\nimport { useStep, useError, usePreview } from '../../landing_page'\nimport { Payment } from './payment'\nimport { Error } from '../error'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nexport function GenericConfirmation({ submitDisabled = false, onSubmit, PaymentElement = null }) {\n const { errors, clearError } = useError()\n const { previousStep } = useStep()\n const isPreview = usePreview()\n const submitText = PaymentElement ? 'Finish & Pay' : 'Finish'\n const widthClass = PaymentElement ? 'w-32' : 'w-20'\n\n return (\n <form onSubmit={onSubmit}>\n <div class=\"p-3 bg-[var(--shadow-color)] space-y-3\">\n <Members />\n <Cart />\n\n {Boolean(PaymentElement) && <Payment PaymentElement={PaymentElement} />}\n {Boolean(errors.generic) && <Error message={errors.generic} />}\n </div>\n\n <div class=\"flex justify-end items-center gap-1 mt-4 pb-4\">\n <button\n class=\"btn btn-back\"\n onClick={() => {\n clearError('generic')\n previousStep()\n }}\n type=\"button\"\n disabled={submitDisabled}\n >\n BACK\n </button>\n\n <button class={`btn ${widthClass}`} type=\"submit\" disabled={isPreview || submitDisabled}>\n {submitDisabled ? (\n <FontAwesomeIcon icon=\"fa-duotone fa-spinner-third\" className=\"animate-spin size-4\" />\n ) : (\n <span>{submitText}</span>\n )}\n </button>\n </div>\n </form>\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { useMembers, useStep, useLeadCaptureForm } from '../../landing_page'\nimport { cleanMember } from '../submission'\n\nexport function Members() {\n const { members } = useMembers()\n\n return (\n <>\n {members\n .filter((member) => Boolean(member.name))\n .map((member) => (\n <Member member={cleanMemberForDisplay(member)} />\n ))}\n </>\n )\n}\n\nfunction Member({ member }) {\n const { jumpToStep } = useStep()\n\n return (\n <div class=\"p-3 bg-[var(--tertiary-color)]\">\n <div class=\"border-b flex justify-between pb-2\">\n <div class=\"text-base font-bold\">{member.name}</div>\n <button class=\"flex items-center gap-2\" type=\"button\" onClick={() => jumpToStep(1)}>\n <FontAwesomeIcon icon=\"pencil\" className=\"text-[var(--primary-color)]\" />\n <div class=\"uppercase font-medium tracking-wide\">edit</div>\n </button>\n </div>\n\n <div class=\"space-y-2 pt-2\">\n {Object.keys(member)\n .filter((k) => k !== 'name' && k !== 'primary')\n .map((key) => (\n <div class=\"flex items-center gap-4\">\n <div class=\"uppercase font-medium tracking-wide\">{lookupFieldLabel(member, key)}:</div>\n <div>{displayMemberInfo(member, key)}</div>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nfunction lookupFieldLabel(member, key) {\n if (key === 'membershipTemplate') return 'Membership'\n if (key === 'class') return 'Class'\n\n const { leadCaptureForm, guardianLeadCaptureForm } = useLeadCaptureForm()\n const matchKey = (field) => field.key === key\n const lcfHit = leadCaptureForm.find(matchKey)\n const glcfHit = guardianLeadCaptureForm?.find(matchKey)\n\n if (!member.participating && glcfHit) {\n return glcfHit.label\n }\n\n return lcfHit.label\n}\n\nfunction cleanMemberForDisplay(member) {\n const cleaned = cleanMember(member)\n\n if (member.participating && member.membershipTemplate) {\n cleaned.membershipTemplate = member.membershipTemplate\n }\n\n if (member.participating && member.class) {\n cleaned.class = member.class\n }\n\n return cleaned\n}\n\nfunction displayMemberInfo(member, key) {\n if (key === 'address' && member.address?.full) {\n return member.address.full\n }\n\n if (key === 'phone' && member.phone?.number) {\n return member.phone.number\n }\n\n if (key === 'birthday') {\n // Javascript parses 1999-03-19 wrong\n // but 1999/03/19 right...\n const value = member.birthday.replace(/-/g, '/')\n\n return new Date(value).toLocaleDateString()\n }\n\n if (key === 'membershipTemplate') {\n return (\n <div class=\"flex items-center gap-2 flex-wrap\">\n <div>{member.membershipTemplate.name}</div>\n <div class=\"text-[var(--secondary-color-light)]\">\u2013</div>\n <div>{member.membershipTemplate.interval}</div>\n </div>\n )\n }\n\n if (key === 'class') {\n return (\n <div class=\"flex items-center gap-2 flex-wrap\">\n <div>{member.class.name}</div>\n <div class=\"text-[var(--secondary-color-light)]\">\u2013</div>\n <div>\n <span>{formatDate(member.class.start)} </span>\n <span>{formatTime(member.class.start)}</span>\n <span> - </span>\n <span>{formatTime(member.class.end)}</span>\n </div>\n </div>\n )\n }\n\n return member[key].toString()\n}\n\nfunction formatDate(time) {\n const date = new Date(time)\n return date.toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n })\n}\n\nfunction formatTime(time) {\n const date = new Date(time)\n\n return date\n .toLocaleTimeString('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n })\n .toLowerCase()\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { CartDisplay, useCart } from '../cart'\n\nexport function Cart() {\n const { cart } = useCart()\n\n return (\n <>\n {cart.size > 0 && (\n <div class=\"p-3 bg-[var(--tertiary-color)]\">\n <div class=\"text-base font-bold\">Cart</div>\n\n <CartDisplay detailed={true} />\n </div>\n )}\n </>\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useBilling } from '../../landing_page'\n\nexport function Payment({ PaymentElement }) {\n const { paymentRequired } = useBilling()\n\n return (\n <>\n {paymentRequired && (\n <div class=\"p-3 bg-[var(--tertiary-color)]\">\n <div class=\"text-base font-bold\">Card Details</div>\n {PaymentElement}\n </div>\n )}\n </>\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useRef } from 'preact/hooks'\nimport { GenericConfirmation } from './generic'\nimport { useSubmit } from '../submission'\nimport { useBasysTokenizer } from '../tokenizers/basys'\nimport { useTheme, useBilling } from '../../landing_page'\nimport { useSignal } from '@preact/signals'\nimport { Error } from '../error'\n\nexport function BasysConfirmation() {\n const theme = useTheme()\n const { merchantAccount, strictVaulting } = useBilling()\n const { submit: defaultSubmit } = useSubmit()\n const paymentElementRef = useRef(null)\n\n const zip = useSignal(null)\n const label = useSignal(null)\n const save = useSignal(true)\n const errorText = useSignal(null)\n\n const disabled = useSignal(true)\n const tokenizer = useBasysTokenizer(\n paymentElementRef,\n theme,\n merchantAccount,\n async (token) => {\n disabled.value = true\n\n const success = await defaultSubmit({\n billing: { label, save, source: token, billing_address: { zip_code: zip } },\n })\n\n if (!success) {\n disabled.value = false\n }\n },\n () => {\n disabled.value = false\n },\n (error) => {\n disabled.value = false\n errorText.value = error\n },\n )\n\n const submit = (event) => {\n disabled.value = true\n event.preventDefault()\n\n tokenizer.submit()\n }\n\n return (\n <GenericConfirmation\n submitDisabled={disabled.value}\n onSubmit={submit}\n PaymentElement={\n <div class=\"mt-2\">\n <div class=\" grid grid-cols-[1fr_7em]\">\n <div ref={paymentElementRef}></div>\n <div class=\"pl-[5px]\">\n <input\n class=\"input input-border text-base placeholder:text-[#b8b8b8] placeholder:opacity-100\"\n type=\"text\"\n placeholder=\"ZIP\"\n maxlength=\"10\"\n required\n onInput={({ target }) => (zip.value = target.value)}\n />\n </div>\n </div>\n {save.value && (\n <div>\n <input\n class=\"input input-border text-base placeholder:text-[#b8b8b8] placeholder:opacity-100\"\n type=\"text\"\n placeholder=\"LABEL (OPTIONAL)\"\n onInput={({ target }) => (label.value = target.value)}\n />\n </div>\n )}\n <div class=\"mt-1\">\n <Error message={errorText.value} />\n </div>\n <div class=\"mt-1 text-[var(--secondary-color-light)]\">\n {strictVaulting ? (\n <>Card details will be saved to your profile.</>\n ) : (\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n class=\"checkbox checkbox-primary checkbox-sm\"\n onChange={({ target }) => (save.value = target.checked)}\n id=\"save-for-later\"\n checked={save.value}\n />\n\n <label for=\"save-for-later\">Save for Later</label>\n </div>\n )}\n </div>\n </div>\n }\n />\n )\n}\n", "import { useEffect } from 'preact/hooks'\n\nlet currentTokenizer\n\nconst tokenizerProxy = {\n submit() {\n if (!currentTokenizer) return\n\n currentTokenizer.submit()\n },\n}\n\nexport function useBasysTokenizer(ref, theme, merchantAccount, onSubmit, onLoad, onError) {\n useEffect(() => {\n if (!ref.current) return\n\n currentTokenizer = buildBasysTokenizer(ref, theme, merchantAccount, onSubmit, onLoad, onError)\n\n return () => (currentTokenizer = null)\n }, [ref])\n\n return tokenizerProxy\n}\n\nfunction buildBasysTokenizer(ref, theme, merchantAccount, onSubmit, onLoad, onError) {\n if (!ref.current) return\n\n return new window.Tokenizer({\n apikey: merchantAccount.publicKey,\n container: ref.current,\n submission: (response) => {\n switch (response.status) {\n case 'success':\n onSubmit(response.token)\n\n break\n case 'error':\n onError(response.msg)\n\n break\n case 'validation':\n onError('Invalid card information')\n\n break\n default:\n break\n }\n },\n onLoad,\n settings: {\n payment: { placeholderCreditCard: 'CARD NUMBER' },\n styles: {\n '.payment input': {\n height: '44px',\n border: `solid 2px ${theme.secondary_color}BF`,\n 'border-radius': '5px',\n 'background-color': 'transparent',\n color: `${theme.secondary_color}`,\n 'line-height': '36px',\n 'font-family': '\"Hind Vadodara\", sans-serif',\n 'font-size': '16px',\n 'text-transform': 'uppercase',\n },\n '.payment input.invalid': { border: `solid 2px #d9433e` },\n },\n },\n })\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { Elements, CardElement, useStripe, useElements } from '@stripe/react-stripe-js'\nimport { useBilling, useTheme } from '../../landing_page'\nimport { useCart } from '../cart'\nimport { GenericConfirmation } from './generic'\nimport { useSignal } from '@preact/signals'\nimport { post } from '../../../helpers/fetch_helper'\nimport { useSubmit } from '../submission'\nimport { Error } from '../error'\n\nlet globalStripe\n\nexport function StripeConfirmation() {\n const { merchantAccount } = useBilling()\n const { total } = useCart()\n\n globalStripe ||= window.Stripe(merchantAccount.publicKey, { stripeAccount: merchantAccount.account })\n\n return (\n <Elements\n stripe={globalStripe}\n options={{\n mode: 'payment',\n amount: Math.floor(total()),\n currency: document.body.dataset.currency.toLowerCase(),\n }}\n >\n <Confirmation />\n </Elements>\n )\n}\n\nfunction Confirmation() {\n const stripe = useStripe()\n const elements = useElements()\n\n const { cart, isMembership } = useCart()\n const { strictVaulting } = useBilling()\n const { submit: defaultSubmit } = useSubmit()\n\n const save = useSignal(true)\n const errorText = useSignal(null)\n const disabled = useSignal(!stripe)\n\n const submit = async (event) => {\n event.preventDefault()\n\n if (!stripe || !elements) return\n\n disabled.value = true\n\n const body = {}\n\n cart.forEach((quantity, item) => {\n if (isMembership(item)) {\n body.membership = item.id\n } else {\n body.items ||= []\n\n body.items.push({\n id: item.id,\n quantity,\n })\n }\n })\n\n const response = await post(window.location.href.replace('/submission/new', '/payment_intents'), body)\n const { client_secret: clientSecret } = await response.json()\n\n const { error, paymentIntent } = await stripe.confirmCardPayment(clientSecret, {\n payment_method: { card: elements.getElement(CardElement) },\n setup_future_usage: 'off_session',\n })\n\n if (error) {\n errorText.value = error.message\n disabled.value = false\n return\n }\n\n const success = await defaultSubmit({\n billing: { save, label: null, source: paymentIntent.id },\n })\n\n if (!success) {\n disabled.value = false\n }\n }\n\n return (\n <GenericConfirmation\n submitDisabled={disabled.value}\n onSubmit={submit}\n PaymentElement={\n <div class=\"mt-2\">\n <StripePaymentElement errorText={errorText} />\n <div class=\"mt-1\">\n <Error message={errorText.value} />\n </div>\n <div class=\"mt-1 text-[var(--secondary-color-light)]\">\n {strictVaulting ? (\n <>Card details will be saved to your profile.</>\n ) : (\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n class=\"checkbox checkbox-primary checkbox-sm\"\n onChange={({ target }) => (save.value = target.checked)}\n id=\"save-for-later\"\n checked={save.value}\n />\n\n <label for=\"save-for-later\">Save for Later</label>\n </div>\n )}\n </div>\n </div>\n }\n />\n )\n}\n\nfunction StripePaymentElement({ errorText }) {\n const theme = useTheme()\n\n return (\n <CardElement\n onChange={(event) => {\n if (event.error) {\n errorText.value = event.error.message\n } else {\n errorText.value = null\n }\n }}\n options={{\n style: {\n base: {\n iconColor: theme.primary_color,\n color: theme.secondary_color,\n lineHeight: '32px',\n fontFamily: '\"Hind Vadodara\", sans-serif',\n fontSize: '16px',\n textTransform: 'uppercase',\n\n '::placeholder': { color: `${theme.secondary_color}BF` },\n },\n invalid: {\n iconColor: '#d9433e',\n color: '#d9433e',\n },\n },\n }}\n />\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useRef } from 'preact/hooks'\nimport { GenericConfirmation } from './generic'\nimport { useSubmit } from '../submission'\nimport { useUsaEpayTokenizer } from '../tokenizers/usa_epay'\nimport { useTheme, useBilling } from '../../landing_page'\nimport { useSignal } from '@preact/signals'\nimport { Error } from '../error'\n\nexport function UsaEpayConfirmation() {\n const theme = useTheme()\n const { merchantAccount, strictVaulting } = useBilling()\n const { submit: defaultSubmit } = useSubmit()\n const paymentElementRef = useRef(null)\n\n const zip = useSignal(null)\n const label = useSignal(null)\n const save = useSignal(true)\n const errorText = useSignal(null)\n\n const disabled = useSignal(true)\n const tokenizer = useUsaEpayTokenizer(\n paymentElementRef,\n theme,\n merchantAccount,\n async (token) => {\n const success = await defaultSubmit({\n billing: { save, label, source: token, billing_address: { zip_code: zip } },\n })\n\n if (!success) {\n disabled.value = false\n }\n },\n () => {\n disabled.value = false\n },\n (error) => {\n const message = error.message.replace('informtion', 'information')\n\n disabled.value = false\n errorText.value = message\n },\n )\n\n const submit = (event) => {\n disabled.value = true\n event.preventDefault()\n\n tokenizer.submit()\n }\n\n return (\n <GenericConfirmation\n submitDisabled={disabled.value}\n onSubmit={submit}\n PaymentElement={\n <div class=\"mt-2\">\n <div class=\" grid gap-2 grid-cols-[1fr_7em]\">\n <div ref={paymentElementRef} id=\"usa-epay-payment-element\" class=\"h-11\"></div>\n <input\n class=\"input input-border text-base placeholder:text-[#b8b8b8] placeholder:opacity-100\"\n type=\"text\"\n placeholder=\"ZIP\"\n maxlength=\"10\"\n required\n onInput={({ target }) => (zip.value = target.value)}\n />\n </div>\n {save.value && (\n <div class=\"pt-2\">\n <input\n class=\"input input-border text-base placeholder:text-[#b8b8b8] placeholder:opacity-100\"\n type=\"text\"\n placeholder=\"LABEL (OPTIONAL)\"\n onInput={({ target }) => (label.value = target.value)}\n />\n </div>\n )}\n <div class=\"mt-1\">\n <Error message={errorText.value} />\n </div>\n <div class=\"mt-1 text-[var(--secondary-color-light)]\">\n {strictVaulting ? (\n <>Card details will be saved to your profile.</>\n ) : (\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n class=\"checkbox checkbox-primary checkbox-sm\"\n onChange={({ target }) => (save.value = target.checked)}\n id=\"save-for-later\"\n checked={save.value}\n />\n\n <label for=\"save-for-later\">Save for Later</label>\n </div>\n )}\n </div>\n </div>\n }\n />\n )\n}\n", "import { useEffect } from 'preact/hooks'\n\nlet currentTokenizer\n\nconst tokenizerProxy = {\n submit() {\n if (!currentTokenizer) return\n\n const client = currentTokenizer.client\n const paymentCard = currentTokenizer.paymentCard\n\n paymentCard.addEventListener('error', (message) => currentTokenizer.onError({ message }), { once: true })\n\n client\n .getPaymentKey(paymentCard)\n .then((result) => {\n if (result.error) {\n currentTokenizer.onError(result.error)\n return\n }\n\n currentTokenizer.onSubmit(result)\n })\n .catch(() => {})\n },\n}\n\nexport function useUsaEpayTokenizer(ref, theme, merchantAccount, onSubmit, onLoad, onError) {\n useEffect(() => {\n if (!ref.current) return\n\n currentTokenizer = buildUsaEpayTokenizer(ref, theme, merchantAccount, onSubmit, onLoad, onError)\n\n return () => (currentTokenizer = null)\n }, [ref])\n\n return tokenizerProxy\n}\n\nfunction buildUsaEpayTokenizer(ref, theme, merchantAccount, onSubmit, onLoad, onError) {\n if (!ref.current) return\n\n const client = new window.usaepay.Client(merchantAccount.publicKey)\n const paymentCard = client.createPaymentCardEntry()\n const style = {\n base: {\n backgroundColor: 'transparent',\n color: theme.secondary_color,\n lineHeight: '36px',\n fontFamily: '\"Hind Vadodara\", sans-serif',\n fontSize: '16px',\n textTransform: 'uppercase',\n height: '44px',\n border: `solid 2px ${theme.secondary_color}BF !important`,\n borderRadius: '5px !important',\n padding: '20px 10px !important',\n minWidth: '90px',\n },\n // eslint-disable-next-line max-len\n '{}\\n.payjs-input-icon { display: none; } #payjs-container { height: 44px, display: flex; gap: 0.5rem; } #payjs-cnum { flex: 1 } @media (max-width: 767px) { #payjs-cvv { width: 4em; min-width: 0px !important; } #payjs-exp { width: 4em; } }':\n '',\n invalid: { color: '#d9433e' },\n }\n\n paymentCard.generateHTML(style)\n paymentCard.addHTML(ref.current.id)\n\n onLoad()\n\n return { client, paymentCard, onSubmit, onError }\n}\n", "import React, { Fragment } from 'preact/compat'\nimport { h } from 'preact'\nimport { useStep } from '../landing_page'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nexport function StepTracker() {\n const { step, numberOfSteps } = useStep()\n\n const steps = Array.from(Array(numberOfSteps).keys()).map((i) => i + 1)\n\n return (\n <div class=\"flex items-center\">\n {steps.map((s) => (\n <>\n <Step displaying={s} current={step} />\n\n {s < numberOfSteps && (\n <div\n class={s < step ? 'bg-[var(--primary-color)] h-1 w-2' : 'bg-[var(--secondary-color-light)] h-1 w-2'}\n ></div>\n )}\n </>\n ))}\n </div>\n )\n}\n\nfunction Step({ displaying, current }) {\n const classes = 'size-2 rounded-full ring-2 ring-offset-[var(--tertiary-color)] ring-offset-2'\n\n const isFinished = displaying < current\n const isCurrent = displaying === current\n const isNext = displaying > current\n\n return (\n <>\n {isFinished && <FontAwesomeIcon icon=\"circle-check\" className=\"text-[var(--primary-color)] size-4\" />}\n {isCurrent && (\n <div class=\"size-4 bg-[var(--tertiary-color)] rounded-full flex items-center justify-center\">\n <div class={`${classes} bg-[var(--primary-color)] ring-[var(--primary-color)]`}></div>\n </div>\n )}\n {isNext && (\n <div class=\"size-4 bg-[var(--tertiary-color)] rounded-full flex items-center justify-center\">\n <div class={`${classes} bg-[var(--tertiary-color)] ring-[var(--secondary-color-light)]`}></div>\n </div>\n )}\n </>\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useAgreements, useStep, useMembers } from './landing_page'\nimport { useEffect, useRef, useState } from 'preact/hooks'\n\nexport function Agreements() {\n const { members } = useMembers()\n const { nextStep, previousStep } = useStep()\n const agreements = useAgreements()\n let action =\n 'signature:reset->agreement-signatures#jumpTo signature:completed->agreement-signatures#updateCount ' +\n 'signature:reset->agreement-signatures#updateCount'\n\n const controllerRef = useRef(null)\n\n const [controller, setController] = useState(null)\n\n useEffect(() => {\n if (!controllerRef.current) {\n setController(null)\n return\n }\n\n const cont = window.Stimulus.getControllerForElementAndIdentifier(\n controllerRef.current,\n 'agreement-signatures',\n )\n\n setController(cont)\n }, [controllerRef])\n\n useEffect(() => {\n const tokens = members[0].agreementTokens\n\n if (!tokens) return\n\n document.querySelectorAll('[data-token]').forEach((element) => {\n const token = element.getAttribute('data-token')\n element.value = tokens[token]\n })\n })\n\n // TODO: So to get things to populate right we'll wanna effectively make `submit`\n // handle _both_ going forward and backward I think. Seems doable?\n const submit = (event) => {\n event.preventDefault()\n\n if (!controller) return\n\n const isBack = event.submitter.value\n\n if (!isBack && !controller.completed) {\n controller.scrollToCurrent()\n controller.flashValidity()\n return\n }\n\n const formData = new FormData(event.target)\n const signatures = formData.getAll('signatures[]')\n members[0].signatures = signatures\n const tokens = {}\n event.target.querySelectorAll('[data-token]').forEach((element) => {\n const token = element.getAttribute('data-token')\n tokens[token] = element.value\n })\n members[0].agreementTokens = tokens\n\n if (isBack) {\n previousStep()\n return\n }\n\n nextStep()\n }\n\n return (\n <form onSubmit={submit}>\n {agreements.map((agreement) => (\n <div\n class=\"relative\"\n data-controller=\"agreement-signatures\"\n data-agreement-signatures-signature-outlet=\".signature\"\n data-agreement-signatures-checkbox-signature-outlet=\".checkbox-signature\"\n data-action={action}\n ref={controllerRef}\n >\n <div class=\"p-3 bg-[var(--shadow-color)]\">\n <div class=\"p-3 bg-[var(--tertiary-color)] space-y-3\">\n <div>\n <h4 class=\"text-center mb-4\">{agreement.name}</h4>\n <div\n class=\"fr-view\"\n dangerouslySetInnerHTML={{ __html: agreement.sanitized_agreement_content }}\n style={{ color: 'var(--secondary-color) !important' }}\n ></div>\n </div>\n </div>\n </div>\n <div class=\"w-full flex justify-between items-center\">\n <div class=\"flex m-3 gap-1\">\n <div data-agreement-signatures-target=\"count\">0</div>\n <div>of</div>\n <div>{agreement.count}</div>\n <div data-agreement-signatures-target=\"count\">signatures completed</div>\n </div>\n <div class=\"flex m-3 gap-1\">\n <button class=\"btn btn-back\" type=\"submit\" value=\"true\" formnovalidate>\n BACK\n </button>\n <button class=\"btn\" type=\"submit\">\n NEXT\n </button>\n </div>\n </div>\n </div>\n ))}\n </form>\n )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Error } from './landing_pages/error'\n\nexport function PhoneFieldWithSms({ number, sendSms, numberChange, smsChange, required, errors, id }) {\n const errorPresent = errors['contact_info.primary_phone_number.number']\n\n return (\n <>\n <div class=\" flex items-center gap-3\">\n <div\n class=\"phone-input-field\"\n data-controller=\"phone-field--component\"\n data-phone-field--component-name-value=\"phone\"\n >\n <input\n id={id}\n type=\"tel\"\n class={`input input-border !w-40 ${errorPresent && 'input-danger'}`}\n placeholder=\"201-555-0123\"\n required={required}\n data-phone-field--component-target=\"input\"\n value={number}\n onInput={({ target }) => setTimeout(() => numberChange(target.nextElementSibling.value))}\n onBlur={({ target }) => numberChange(target.nextElementSibling.value)}\n data-action=\"phone-field--component#setHiddenInput\"\n />\n </div>\n\n <div class=\"flex items-center gap-2\">\n <span>SMS OPT-IN</span>\n <input\n type=\"checkbox\"\n class=\"toggle toggle-xs toggle-primary\"\n checked={sendSms}\n onInput={({ target }) => smsChange(target.checked)}\n />\n </div>\n </div>\n\n {errorPresent && <Error message=\"The number you've entered is invalid. Please try again.\" />}\n\n <div class=\"p-3 mt-1 text-xs text-[var(--secondary-color-light)] bg-[var(--shadow-color)]\">\n By opting in to SMS, the person agrees to receive announcements and billing alerts from{' '}\n {document.body.dataset.schoolName}. Standard messaging rates may apply. Messaging cadence may vary. Reply\n STOP to opt out.\n </div>\n </>\n )\n}\n\nexport function PhoneField({ number, numberChange, required, id }) {\n return (\n <div\n class=\"phone-input-field\"\n data-controller=\"phone-field--component\"\n data-phone-field--component-name-value=\"phone\"\n >\n <input\n id={id}\n type=\"tel\"\n class={`input input-border !w-40`}\n placeholder=\"201-555-0123\"\n required={required}\n data-phone-field--component-target=\"input\"\n value={number}\n autocomplete=\"off\"\n onInput={({ target }) => setTimeout(() => numberChange(target.nextElementSibling.value))}\n onBlur={({ target }) => numberChange(target.nextElementSibling.value)}\n data-action=\"phone-field--component#setHiddenInput\"\n />\n </div>\n )\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\n\nexport default class extends Controller {\n static targets = ['label', 'toggle']\n static values = { url: String }\n\n refreshFrame({ target: { form } }) {\n const params = new URLSearchParams(new FormData(form))\n params.delete('utf8')\n params.delete('authenticity_token')\n const src = `${this.urlValue}?${params.toString()}`\n\n Turbo.visit(src, { frame: 'ranks_programs' })\n }\n\n handleQueue(event) {\n if (!this.haslabelTarget) return\n\n const selectedOption = event.target.options[event.target.selectedIndex]\n const queueable = JSON.parse(selectedOption.dataset.queueValue)\n if (queueable) {\n this.labelTarget.classList.remove('hidden')\n this.toggleTarget.classList.remove('hidden')\n this.toggleTarget.disabled = false\n } else {\n this.labelTarget.classList.add('hidden')\n this.toggleTarget.classList.add('hidden')\n this.toggleTarget.disabled = true\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['modulesNav']\n static outlets = ['form-sortable']\n\n formSortableOutletConnected(outlet) {\n outlet.syncNav = (event) => {\n if (event.oldIndex === event.newIndex) return\n\n const travelingIndex = event.oldIndex - 1\n const putBeforeIndex = event.oldIndex < event.newIndex ? event.newIndex : event.newIndex - 1\n\n this.modulesNavTarget.querySelectorAll('div').forEach((breakpoint) => breakpoint.remove())\n this.modulesNavTarget.insertBefore(\n this.modulesNavTarget.children[travelingIndex],\n this.modulesNavTarget.children[putBeforeIndex],\n )\n\n Array.from(this.modulesNavTarget.children).forEach((tab, index) => {\n tab.insertAdjacentHTML('beforebegin', `<div class=\"h-0 breakpoint-${index}\"></div>`)\n })\n }\n }\n\n toggleHidden({ target }) {\n if (target.tagName === 'path') target = target.parentElement\n\n target.classList.toggle('pr-px')\n target.classList.toggle('fa-eye')\n target.classList.toggle('fa-eye-slash')\n const listItem = target.closest('li')\n listItem.classList.toggle('opacity-50')\n\n const input = listItem.querySelector('input')\n const sectionName = input.id.split('-')[1]\n const isHidden = input.value === ''\n input.value = isHidden ? sectionName : ''\n\n if (input.id.startsWith('modules_settings')) {\n this.modulesNavTarget.querySelector(`#${sectionName}-nav`).classList.toggle('opacity-50')\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = { original: String, syncTo: { type: String, default: 'main' }, syncAs: String }\n static targets = ['input', 'value', 'display', 'reset']\n\n update(syncValue = true) {\n requestAnimationFrame(() => {\n const value = this.inputTarget.value.toUpperCase()\n\n if (value === this.originalValue) {\n this.resetTarget.classList.add('invisible')\n } else {\n this.resetTarget.classList.remove('invisible')\n }\n\n if (syncValue) this.valueTarget.value = value\n\n this.displayTarget.style.backgroundColor = value\n\n this.#trySync()\n })\n }\n\n set({ target }) {\n const realValue = this.#massageIntoHex(target.value)\n\n if (/^#(?:[0-9a-fA-F]{3}){1,2}$/.test(realValue)) {\n this.inputTarget.value = realValue\n\n this.update(false)\n }\n }\n\n setValueField() {\n this.valueTarget.value = this.inputTarget.value.toUpperCase()\n }\n\n reset() {\n this.inputTarget.value = this.originalValue\n\n this.update()\n\n this.inputTarget.dispatchEvent(new Event('input'))\n this.valueTarget.value = this.originalValue\n\n this.#trySync()\n }\n\n #trySync() {\n if (!this.hasSyncAsValue) return\n\n const syncElement = document.querySelector(this.syncToValue)\n\n syncElement.style.setProperty(this.syncAsValue, this.inputTarget.value)\n }\n\n #massageIntoHex(value) {\n if (!value) return ''\n\n let hex = value.trim()\n\n if (!hex.startsWith('#')) {\n hex = `#${hex}`\n }\n\n const validChars = hex\n .substring(1)\n .split('')\n .filter((char) => /[0-9A-Fa-f]/.test(char))\n .join('')\n\n if (validChars.length === 0) return ''\n\n if (validChars.length === 3) {\n const r = validChars[0]\n const g = validChars[1]\n const b = validChars[2]\n\n return `#${r}${r}${g}${g}${b}${b}`\n }\n\n return `#${validChars}`\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['container']\n\n update({ params: { key } }) {\n this.containerTargets.forEach((container) => {\n if (key === container.id) {\n container.hidden = false\n container.querySelectorAll('input').forEach((input) => (input.disabled = false))\n } else {\n container.hidden = true\n container.querySelectorAll('input').forEach((input) => (input.disabled = true))\n }\n })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['container']\n\n connect() {\n this.original ||= this.containerTargets.map((container) => container.hidden)\n }\n\n swap() {\n this.containerTargets.forEach((container) => (container.hidden = !container.hidden))\n }\n\n swapFromOriginal() {\n const current = this.containerTargets.map((container) => container.hidden)\n\n if (current.every((value, index) => value === this.original[index])) {\n this.swap()\n }\n }\n\n swapToOriginal() {\n const current = this.containerTargets.map((container) => container.hidden)\n\n if (!current.every((value, index) => value === this.original[index])) {\n this.swap()\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['input', 'section', 'requiredIcon', 'requiredField']\n\n connect() {\n document.addEventListener('submit', this.submit.bind(this))\n }\n\n disconnect() {\n document.removeEventListener('submit', this.submit.bind(this))\n }\n\n submit(event) {\n if (this.requiredFieldTargets.length === 0 || this.requiredFieldTargets.every((item) => item.disabled)) return\n\n const anyChecked = this.requiredFieldTargets.some((item) => item.checked)\n if (anyChecked) {\n this.sectionTarget.classList.remove('border-2', 'border-danger-600', 'rounded-md')\n this.requiredIconTarget.setAttribute('hidden', 'hidden')\n this.requiredIconTarget.parentElement.classList.add('text-basic-700')\n this.requiredIconTarget.parentElement.classList.remove('text-primary-600')\n } else {\n this.sectionTarget.classList.add('border-2', 'border-danger-600', 'rounded-md')\n this.element.scrollIntoView({ behavior: 'smooth' })\n this.requiredIconTarget.removeAttribute('hidden')\n this.requiredIconTarget.parentElement.classList.remove('text-basic-700')\n this.requiredIconTarget.parentElement.classList.add('text-primary-600')\n event.preventDefault()\n }\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['input']\n\n toggle({ target }) {\n if (!this.hasInputTarget || this.inputTarget === target) return\n\n this.inputTarget.checked = !this.inputTarget.checked\n\n this.#emitChange()\n }\n\n check({ target }) {\n if (!this.hasInputTarget || this.inputTarget === target) return\n\n this.inputTarget.checked = true\n\n this.#emitChange()\n }\n\n uncheck({ target }) {\n if (!this.hasInputTarget || this.inputTarget === target) return\n\n this.inputTarget.checked = false\n\n this.#emitChange()\n }\n\n #emitChange() {\n this.inputTarget.dispatchEvent(new Event('input'), { bubbles: true })\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['parent', 'child']\n\n syncParent() {\n this.parentTarget.checked = this.childTargets.every((child) => child.checked)\n }\n\n syncChildren() {\n this.childTargets.forEach((child) => (child.checked = this.parentTarget.checked))\n }\n\n check() {\n this.parentTarget.checked = true\n this.childTargets.forEach((child) => (child.checked = true))\n }\n\n uncheck() {\n this.parentTarget.checked = false\n this.childTargets.forEach((child) => (child.checked = false))\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = { provider: String, submitBtnId: String }\n\n // eslint-disable-next-line complexity\n submit(event) {\n this.disableSubmit()\n if (this.sourceElement) {\n if (this.weHaveAToken) {\n return true\n }\n event.preventDefault()\n\n this.formatPhoneNumber()\n this.handleSubmit()\n } else {\n event.preventDefault()\n\n this.formatPhoneNumber()\n const form = document.querySelector('form#new-account-form')\n form.requestSubmit()\n }\n }\n\n //\n // private\n //\n\n handleSubmit() {\n this.setPaymentToken(this.sourceIsToken, this.sourceElement)\n }\n\n formatPhoneNumber() {\n const ownerPhone = document.querySelector('#owner-phone')\n const ownerFullPhone = document.querySelector('input[name=\"owner-full-phone\"]')\n const ownerTelInput = window.intlTelInputGlobals.getInstance(ownerPhone)\n ownerFullPhone.value = ownerTelInput.getNumber()\n\n const adminPhone = document.querySelector('#admin-phone')\n const adminFullPhone = document.querySelector('input[name=\"admin-full-phone\"]')\n const adminTelInput = window.intlTelInputGlobals.getInstance(adminPhone)\n adminFullPhone.value = adminTelInput.getNumber()\n }\n\n setPaymentToken(sourceIsToken, sourceElement) {\n this.billingProviderController.setPaymentToken(sourceIsToken, sourceElement).then((success) => {\n if (success) {\n // Need to find the form, horray....\n const form = document.querySelector('form#new-account-form')\n form.requestSubmit()\n } else {\n // eslint-disable-next-line no-console\n console.log('tokenizer: tokenization failed')\n this.enableSubmit()\n }\n })\n }\n\n disableSubmit() {\n this.element.disabled = true\n }\n\n enableSubmit() {\n this.element.disabled = false\n }\n\n get sourceTypeElement() {\n return document.querySelector('#vault_payment_information_source_type')\n }\n\n get sourceElement() {\n return document.querySelector('#vault_payment_information_source')\n }\n\n get billingProviderController() {\n let controllerName = this.providerValue\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase()\n return this.application.getControllerForElementAndIdentifier(this.element, controllerName)\n }\n\n get sourceIsToken() {\n return this.sourceTypeElement.value === 'token'\n }\n\n get weHaveAToken() {\n return this.sourceIsToken && this.sourceElement.value\n }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = { hidden: { type: Boolean, default: true } }\n static targets = ['input', 'program', 'container']\n\n syncProgram({ target }) {\n if (!this.hasProgramTarget) return\n\n const membershipTemplateInput = target\n .closest('[data-membership-template]')\n .querySelector('input[type=checkbox]')\n const membershipPrograms = this.inputTargets.filter(\n (mp) => mp.value === target.value && !mp.hidden && mp !== target,\n )\n let program = this.programTargets.find((pt) => pt.id === target.value)\n\n if ((membershipTemplateInput.checked && target.checked) || membershipPrograms.some((mp) => mp.checked)) {\n program.classList.remove('hidden')\n } else {\n program.classList.add('hidden')\n }\n }\n\n // eslint-disable-next-line complexity\n syncPrograms({ target }) {\n if (!this.hasProgramTarget) return\n\n const programInputs = target\n .closest('[data-membership-template]')\n .querySelector('[data-program-container]')\n .querySelectorAll('input[type=checkbox]')\n const membershipTemplateInput = target\n .closest('[data-membership-template]')\n .querySelector('input[type=checkbox]')\n\n if (programInputs.length === 1) return\n\n for (const programInput of programInputs) {\n if (programInput.value === 'on' || programInput.type === 'hidden') continue\n\n const membershipPrograms = this.inputTargets.filter(\n (mp) => mp.value === programInput.value && !mp.hidden && programInput !== mp,\n )\n let program = this.programTargets.find((pt) => pt.id === programInput.value)\n\n if (\n (membershipTemplateInput.checked && programInput.checked) ||\n membershipPrograms.some((mp) => mp.checked)\n ) {\n program.classList.remove('hidden')\n } else {\n program.classList.add('hidden')\n }\n }\n }\n\n toggle() {\n this.hiddenValue = !this.hiddenValue\n }\n\n hiddenValueChanged(value) {\n this.containerTargets.forEach((container) => {\n container.hidden = value\n const programContainer = container.querySelector('#membership-templates-container')\n const inputs = [...programContainer.querySelectorAll('input')]\n inputs.forEach((input) => (input.disabled = value))\n })\n }\n}\n", "// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from './application'\n\nimport ApplicationController from './application_controller'\napplication.register('application', ApplicationController)\n\nimport ClickOutsideController from './click_outside_controller.js'\napplication.register('click-outside', ClickOutsideController)\n\nimport ConfirmationSubmitController from './confirmation_submit_controller.js'\napplication.register('confirmation-submit', ConfirmationSubmitController)\n\nimport DashboardModuleController from './dashboard_module_controller.js'\napplication.register('dashboard-module', DashboardModuleController)\n\nimport DropSortableController from './drop_sortable_controller.js'\napplication.register('drop-sortable', DropSortableController)\n\nimport DropzoneController from './dropzone_controller.js'\napplication.register('dropzone', DropzoneController)\n\nimport Embedded__LpNavigationController from './embedded/lp_navigation_controller.js'\napplication.register('lp-navigation', Embedded__LpNavigationController)\n\nimport Embedded__LpPaymentController from './embedded/lp_payment_controller.js'\napplication.register('lp-payment', Embedded__LpPaymentController)\n\nimport Embedded__LpSchedulerController from './embedded/lp_scheduler_controller.js'\napplication.register('lp-scheduler', Embedded__LpSchedulerController)\n\nimport Embedded__ProgramSignupController from './embedded/program_signup_controller.js'\napplication.register('program-signup', Embedded__ProgramSignupController)\n\nimport Embedded__PublicController from './embedded/public_controller.js'\napplication.register('public', Embedded__PublicController)\n\nimport Schools__RecentActivityFilterController from './schools/recent_activity_filter_controller.js'\napplication.register('recent-activity-filter', Schools__RecentActivityFilterController)\n\nimport FocusController from './focus_controller.js'\napplication.register('focus', FocusController)\n\nimport FormSortableController from './form_sortable_controller.js'\napplication.register('form-sortable', FormSortableController)\n\nimport IconLoadingController from './icon_loading_controller.js'\napplication.register('icon-loading', IconLoadingController)\n\nimport ImaskController from './imask_controller.js'\napplication.register('imask', ImaskController)\n\nimport InlineEditController from './inline_edit_controller'\napplication.register('inline-edit', InlineEditController)\n\nimport ModalController from './modal_controller.js'\napplication.register('modal', ModalController)\n\nimport PreferencesController from './preferences_controller.js'\napplication.register('preferences', PreferencesController)\n\nimport RadioBtnController from './radio_btn_controller.js'\napplication.register('radio-btn', RadioBtnController)\n\nimport RadioBtnGroupController from './radio_btn_group_controller.js'\napplication.register('radio-btn-group', RadioBtnGroupController)\n\nimport Schools__ClassEventsController from './schools/class_events_controller.js'\napplication.register('class-events', Schools__ClassEventsController)\n\nimport Schools__ClassRegistrationsController from './schools/class_registrations_controller.js'\napplication.register('class-registrations', Schools__ClassRegistrationsController)\n\nimport Schools__EventTypeTogglerController from './schools/event_type_toggler_controller.js'\napplication.register('event-type-toggler', Schools__EventTypeTogglerController)\n\nimport Schools__HovercardController from './schools/hovercard_controller.js'\napplication.register('hovercard', Schools__HovercardController)\n\nimport Schools__MembershipTemplatesController from './schools/membership_templates_controller.js'\napplication.register('membership-templates', Schools__MembershipTemplatesController)\n\nimport Schools__MiniCalendarController from './schools/mini_calendar_controller.js'\napplication.register('mini-calendar', Schools__MiniCalendarController)\n\nimport Schools__PaginationController from './schools/pagination_controller.js'\napplication.register('pagination', Schools__PaginationController)\n\nimport Schools__PrettyCheckboxController from './schools/pretty_checkbox_controller.js'\napplication.register('pretty-checkbox', Schools__PrettyCheckboxController)\n\nimport Schools__ProgramsController from './schools/programs_controller.js'\napplication.register('programs', Schools__ProgramsController)\n\nimport Schools__RanksController from './schools/ranks_controller.js'\napplication.register('ranks', Schools__RanksController)\n\nimport Schools__RecurringClassesController from './schools/recurring_classes_controller.js'\napplication.register('recurring-classes', Schools__RecurringClassesController)\n\nimport Schools__StudentsFilterController from './schools/students_filter_controller.js'\napplication.register('students-filter', Schools__StudentsFilterController)\n\nimport Select2Controller from './select2_controller.js'\napplication.register('select2', Select2Controller)\n\nimport TimeFieldController from '../../components/time_field/component'\napplication.register('time-field', TimeFieldController)\n\nimport ToggleClassController from './toggle_class_controller.js'\napplication.register('toggle-class', ToggleClassController)\n\nimport ProgramsAndRanksStepController from './schools/signups/programs_and_ranks_step_controller.js'\napplication.register('programs-and-ranks-step', ProgramsAndRanksStepController)\n\nimport CalculateMembershipTotalsController from './schools/signups/calculate_membership_totals_controller.js'\napplication.register('calculate-membership-totals', CalculateMembershipTotalsController)\n\nimport ToggleDisableController from './toggle_disable_controller.js'\napplication.register('toggle-disable', ToggleDisableController)\n\nimport ToggleFormSubmitController from './toggle_form_submit_controller.js'\napplication.register('toggle-form-submit', ToggleFormSubmitController)\n\nimport TomSelectController from './tom_select_controller.js'\napplication.register('tom-select', TomSelectController)\n\nimport TooltipController from './tooltip_controller.js'\napplication.register('tooltip', TooltipController)\n\nimport UrlFieldController from './url_field_controller.js'\napplication.register('url-field', UrlFieldController)\n\nimport ReplaceOnChangeController from './replace_on_change_controller'\napplication.register('replace-on-change', ReplaceOnChangeController)\n\nimport PaymentFormController from './payment_form_controller.js'\napplication.register('payment-form', PaymentFormController)\n\nimport LazyImageController from './lazy_image_controller.js'\napplication.register('lazy-image', LazyImageController)\n\nimport PwaControllerController from './pwa_controller.js'\napplication.register('pwa', PwaControllerController)\n\nimport BeaconController from './beacon_controller.js'\napplication.register('beacon', BeaconController)\n\nimport Flatpickr from './flatpickr_controller'\napplication.register('flatpickr', Flatpickr)\n\nimport Carousel from 'stimulus-carousel'\napplication.register('carousel', Carousel)\n\nimport Components__Sidebar__ComponentController from '../../components/sidebar/component_controller.js'\napplication.register('sidebar--component', Components__Sidebar__ComponentController)\n\nimport Components__Collapse__ComponentController from '../../components/collapse/component_controller.js'\napplication.register('collapse--component', Components__Collapse__ComponentController)\n\nimport Components__Dropdown__ComponentController from '../../components/dropdown/component_controller.js'\napplication.register('dropdown--component', Components__Dropdown__ComponentController)\n\nimport Components__Tray__ComponentController from '../../components/tray/component_controller.js'\napplication.register('tray', Components__Tray__ComponentController)\n\nimport Components__Address_Field__ComponentController from '../../components/address_field/component_controller.js'\napplication.register('address-field--component', Components__Address_Field__ComponentController)\n\nimport Components__EditableLogo_ComponentController from '../../components/editable_logo/component_controller.js'\napplication.register('editable-logo--component', Components__EditableLogo_ComponentController)\n\nimport Components__PMs__ComponentController from '../../components/payment_methods/component_controller.js'\napplication.register('payment-methods--component', Components__PMs__ComponentController)\n\nimport Components__Tokenizer__ComponentController from '../../components/tokenizer/component_controller.js'\napplication.register('tokenizer--component', Components__Tokenizer__ComponentController)\n\nimport Components__Stripe_Form__ComponentController from '../../components/stripe_form/component_controller.js'\napplication.register('stripe-form--component', Components__Stripe_Form__ComponentController)\n\nimport Components__Basys_Form_ComponentController from '../../components/basys_form/component_controller.js'\napplication.register('basys-form--component', Components__Basys_Form_ComponentController)\n\nimport Components__Usa_Epay_Form_ComponentController from '../../components/usa_epay_form/component_controller.js'\napplication.register('usa-epay-form--component', Components__Usa_Epay_Form_ComponentController)\n\nimport Password_Field__ComponentController from '../../components/password_field/component_controller.js'\napplication.register('password-field--component', Password_Field__ComponentController)\n\nimport Components_Phone_Field__ComponentController from '../../components/phone_field/component_controller.js'\napplication.register('phone-field--component', Components_Phone_Field__ComponentController)\n\nimport Components_Confirmable_Button_Controller from '../../components/confirmable_button/component_controller.js'\napplication.register('confirmable-button--component', Components_Confirmable_Button_Controller)\n\nimport Components__Gauge_Controller from '../../components/gauge/component_controller.js'\napplication.register('gauge--component', Components__Gauge_Controller)\n\nimport Searchable_Person_Field from '../../components/searchable_person_field/component_controller.js'\napplication.register('searchable-person-field', Searchable_Person_Field)\n\nimport Components__PreferrableCollapse from '../../components/preferrable_collapse/component_controller.js'\napplication.register('preferrable-collapse--component', Components__PreferrableCollapse)\n\nimport Components__ModalController from '../../components/modal/component_controller.js'\napplication.register('modal--component', Components__ModalController)\n\nimport Components__ModalFormController from '../../components/modal_form/component_controller.js'\napplication.register('modal-form--component', Components__ModalFormController)\n\nimport Components__WizardModalController from '../../components/wizard_modal/component_controller'\napplication.register('wizard-modal--component', Components__WizardModalController)\n\nimport Components__CountableTextField from '../../components/countable_text_field/component_controller'\napplication.register('countable-text-field--component', Components__CountableTextField)\n\nimport Components__ExpandableTextDisplay from '../../components/expandable_text_display/component_controller'\napplication.register('expandable-text-display--component', Components__ExpandableTextDisplay)\n\nimport Components__Filter from '../../components/filter/component_controller'\napplication.register('filter--component', Components__Filter)\n\nimport Components__DidYouKnow from '../../components/did_you_know/component_controller'\napplication.register('didyouknow--component', Components__DidYouKnow)\n\nimport StudentView__SchedulerController from './student_view/scheduler_controller'\napplication.register('scheduler', StudentView__SchedulerController)\n\nimport Schools__StudentController from './schools/student_controller'\napplication.register('student', Schools__StudentController)\n\nimport ScrollToController from './scroll_to_controller'\napplication.register('scroll-to', ScrollToController)\n\nimport ToggleableInputController from './toggleable_input_controller'\napplication.register('toggleable-input', ToggleableInputController)\n\nimport ToggleableFrameController from './toggleable_frame_controller'\napplication.register('toggleable-frame', ToggleableFrameController)\n\nimport CopyableInputController from './copyable_input_controller'\napplication.register('copyable-input', CopyableInputController)\n\nimport TurboPaginationController from './turbo_pagination_controller'\napplication.register('turbo-pagination', TurboPaginationController)\n\nimport Schools__ProspectController from './schools/prospect_controller'\napplication.register('prospect', Schools__ProspectController)\n\nimport Duplicate_Fieldset_Controller from './duplicate_fieldset_controller'\napplication.register('duplicate-fieldset', Duplicate_Fieldset_Controller)\n\nimport AutoSortController from './auto_sort_controller'\napplication.register('auto-sort', AutoSortController)\n\nimport Components__TextEditorController from '../../components/text_editor/component_controller'\napplication.register('text-editor--component', Components__TextEditorController)\n\nimport AddOnSelectController from './add_on_select_controller'\napplication.register('add-on-select', AddOnSelectController)\n\nimport Components__TransitionButtonController from '../../components/transition_button/component_controller'\napplication.register('transition-button--component', Components__TransitionButtonController)\n\nimport Components__AutoSortListController from '../../components/auto_sort_list/component_controller'\napplication.register('auto-sort-list--component', Components__AutoSortListController)\n\nimport Components__MoneyFieldController from '../../components/money_field/component_controller'\napplication.register('money-field--component', Components__MoneyFieldController)\n\nimport Components__PercentageFieldController from '../../components/percentage_field/component_controller'\napplication.register('percentage-field--component', Components__PercentageFieldController)\n\nimport Components__IntegerFieldController from '../../components/integer_field/component_controller'\napplication.register('integer-field--component', Components__IntegerFieldController)\n\nimport RequireFieldCheckboxController from './required_field_checkbox_controller'\napplication.register('required-field-checkbox', RequireFieldCheckboxController)\n\nimport ToggleSelectController from './toggle_select_controller'\napplication.register('toggle-select', ToggleSelectController)\n\nimport LineItemCalculateController from './line_item_calculate_controller'\napplication.register('line-item-calculate', LineItemCalculateController)\n\nimport CalculateInvoiceTotalsController from './calculate_invoice_totals_controller'\napplication.register('calculate-invoice-totals', CalculateInvoiceTotalsController)\n\nimport CalculateInvoiceDueDateController from './calculate_invoice_due_date_controller'\napplication.register('calculate-invoice-due-date', CalculateInvoiceDueDateController)\n\nimport ChangeDueController from './change_due_controller'\napplication.register('change-due', ChangeDueController)\n\nimport TurboStreamController from './turbo_stream_controller'\napplication.register('turbo-stream', TurboStreamController)\n\nimport PaymentProcessingController from './payment_processing_controller'\napplication.register('payment-processing', PaymentProcessingController)\n\nimport StripeController from './stripe_controller'\napplication.register('stripe', StripeController)\n\nimport BasysController from './basys_controller'\napplication.register('basys', BasysController)\n\nimport UsaEpayController from './usa_epay_controller'\napplication.register('usa-epay', UsaEpayController)\n\nimport PrintController from './print_controller'\napplication.register('print', PrintController)\n\nimport MoneyDistributorController from './money_distributor_controller'\napplication.register('money-distributor', MoneyDistributorController)\n\nimport MoneyController from './money_controller'\napplication.register('money', MoneyController)\n\nimport RemoveLineItemController from './remove_line_item_controller'\napplication.register('remove-line-item', RemoveLineItemController)\n\nimport RecurringBillingsController from './recurring_billings_controller'\napplication.register('recurring-billings', RecurringBillingsController)\n\nimport Components__ImageCropperController from '../../components/image_cropper/component_controller'\napplication.register('cropper', Components__ImageCropperController)\n\nimport QuickActionProgress from './quick_action_progress_controller'\napplication.register('quick-action-progress', QuickActionProgress)\n\nimport StateTransitionsController from './state_transitions_controller'\napplication.register('state-transitions', StateTransitionsController)\n\nimport RemoveNoticeController from './remove_notice_controller'\napplication.register('remove-notice', RemoveNoticeController)\n\nimport FilterableListController from '../../components/filterable_list/component_controller'\napplication.register('filterable-list', FilterableListController)\n\nimport FilterableListSorterController from '../../components/filterable_list/sorter/component_controller'\napplication.register('filterable-list--sorter', FilterableListSorterController)\n\nimport FilterableListSearchController from '../../components/filterable_list/search/component_controller'\napplication.register('filterable-list--search', FilterableListSearchController)\n\nimport FilterableListActionController from '../../components/filterable_list/action/component_controller'\napplication.register('filterable-list--action', FilterableListActionController)\n\nimport FilterableListBannerController from '../../components/filterable_list/selection_banner/component_controller'\napplication.register('filterable-list--banner', FilterableListBannerController)\n\nimport AttendancesController from './attendances_controller'\napplication.register('attendances', AttendancesController)\n\nimport ShareAndSignAgreementController from './share_and_sign_agreement_controller'\napplication.register('share-and-sign-agreement', ShareAndSignAgreementController)\n\nimport AdobePDFViewerController from '../../components/pdf_viewer/component_controller'\napplication.register('pdf-viewer', AdobePDFViewerController)\n\nimport WysiwygController from '../../components/wysiwyg/component_controller'\napplication.register('wysiwyg', WysiwygController)\n\nimport AgreementPreviewController from './agreement_preview_controller'\napplication.register('agreement-preview', AgreementPreviewController)\n\nimport TrialMembershipFormController from './trial_membership_form_controller'\napplication.register('trial-membership-form', TrialMembershipFormController)\n\nimport SignupMembershipController from './signup_membership_controller'\napplication.register('signup-membership', SignupMembershipController)\n\nimport Components__FilterSectionController from '../../components/filter_section/component_controller'\napplication.register('filter-section', Components__FilterSectionController)\n\nimport Components__FilterGroupController from '../../components/filter_section/group/component_controller'\napplication.register('filter-group', Components__FilterGroupController)\n\nimport Component__FilterSectionFilterController from '../../components/filter_section/filter/component_controller'\napplication.register('filter-section-filter', Component__FilterSectionFilterController)\n\nimport RecurringBillingsIndexController from './recurring_billings_index_controller'\napplication.register('recurring-billings-index', RecurringBillingsIndexController)\n\nimport EditMembershipController from './edit_membership_controller'\napplication.register('edit-membership', EditMembershipController)\n\nimport BackdatedPaymentsController from './backdated_payments_controller'\napplication.register('backdated-payments', BackdatedPaymentsController)\n\nimport ReactivateMembershipController from './reactivate_membership_controller'\napplication.register('reactivate-membership', ReactivateMembershipController)\n\nimport FormController from './form_controller'\napplication.register('form', FormController)\n\nimport PaymentMethodSelectorController from '../../components/payment_method_selector/component_controller'\napplication.register('payment-method-selector', PaymentMethodSelectorController)\n\nimport AdjustInvoiceBalanceController from './adjust_invoice_balance_controller'\napplication.register('adjust-invoice-balance', AdjustInvoiceBalanceController)\n\nimport RecurringBillingDurationController from './reecurring_billing_duration_controller'\napplication.register('recurring-billing-duration', RecurringBillingDurationController)\n\nimport MembershipAttendanceController from './membership_attendance_controller'\napplication.register('membership-attendance', MembershipAttendanceController)\n\nimport NewStudentController from './new_student_controller'\napplication.register('new-student', NewStudentController)\n\nimport UniversalSearchFieldController from '../../components/universal_search_field/component_controller'\napplication.register('universal-search-field', UniversalSearchFieldController)\n\nimport ClassesDetailsController from './classes_details_controller'\napplication.register('classes-details', ClassesDetailsController)\n\nimport PromotionsController from './promotions_controller'\napplication.register('promotions', PromotionsController)\n\nimport PromotionsProgressController from './promotions_progress_controller'\napplication.register('promotions-progress', PromotionsProgressController)\n\nimport QuickslinksController from './quicklinks_controller'\napplication.register('quicklinks', QuickslinksController)\n\nimport NewAttendanceController from './new_attendance_controller'\napplication.register('new-attendance', NewAttendanceController)\n\nimport EditPersonAttendancesController from './edit_person_attendances_controller'\napplication.register('edit-person-attendances', EditPersonAttendancesController)\n\nimport FileFieldController from '../../components/file_field/component_controller'\napplication.register('file-field', FileFieldController)\n\nimport NewFamilyMemberController from './new_family_member_controller'\napplication.register('new-family-member', NewFamilyMemberController)\n\nimport PersonHoverCardController from './person_hovercard_controller.js'\napplication.register('person-hovercard', PersonHoverCardController)\n\nimport ModulesNavController from './schools/modules_nav_controller'\napplication.register('modules-nav', ModulesNavController)\n\nimport AccountsController from './accounts_controller.js'\napplication.register('accounts', AccountsController)\n\nimport FamilyManagementInvitesSendModalController from './family_management_invites_send_modal_controller'\napplication.register('family-management-invites-send-modal', FamilyManagementInvitesSendModalController)\n\nimport PopoverControler from '../../components/popover/component_controller'\napplication.register('popover', PopoverControler)\n\nimport ExpandableListDisplay from '../../components/expandable_list_display/component_controller.js'\napplication.register('expandable-list-display', ExpandableListDisplay)\n\nimport TurboFormSubmitRedirect from './schools/turbo_form_submit_redirect_controller'\napplication.register('turbo-form-submit-redirect', TurboFormSubmitRedirect)\n\nimport ProfileField from '../../components/profile_field/component_controller.js'\napplication.register('profile-field', ProfileField)\n\nimport ToggleVisibility from './toggle_visibility_controller.js'\napplication.register('toggle-visibility', ToggleVisibility)\n\nimport HideableForm from './hideable_form_controller.js'\napplication.register('hideable-form', HideableForm)\n\nimport SearchableList from './searchable_list.js'\napplication.register('searchable-list', SearchableList)\n\nimport ToggleSaveVisibility from './toggle_save_visibility_controller.js'\napplication.register('toggle-save-visibility', ToggleSaveVisibility)\n\nimport SafeSubmit from './safe_submit_controller.js'\napplication.register('safe-submit', SafeSubmit)\n\nimport LcfPreview from './lcf_preview_controller.jsx'\napplication.register('lcf-preview', LcfPreview)\n\nimport NewPromotionController from './new_promotion_controller'\napplication.register('new-promotion', NewPromotionController)\n\nimport ProfileSetting from './schools/profile_setting_controller'\napplication.register('profile-setting', ProfileSetting)\n\nimport ColorField from '../../components/color_field/component_controller'\napplication.register('color-field', ColorField)\n\nimport KeyedVisibility from './keyed_visibility_controller.js'\napplication.register('keyed-visibility', KeyedVisibility)\n\nimport SwapVisiblity from './swap_visibility_controller.js'\napplication.register('swap-visibility', SwapVisiblity)\n\nimport RequiredCheckboxGroup from './required_checkbox_group_controller'\napplication.register('required-checkbox-group', RequiredCheckboxGroup)\n\nimport MarkChecked from './mark_checked_controller'\napplication.register('mark-checked', MarkChecked)\n\nimport SyncCheckboxes from './sync_checkboxes_controller'\napplication.register('sync-checkboxes', SyncCheckboxes)\n\nimport AccountRegistrationsController from './account_registrations_controller'\napplication.register('account-registrations', AccountRegistrationsController)\n\nimport LandingPagePrograms from './landing_page_programs_controller'\napplication.register('landing-page-programs', LandingPagePrograms)\n", "import './cable.js'\nimport './accounts.js'\nimport './calendar.js'\nimport './layout.js'\nimport './user_sessions.js'\nimport './support.js'\n\nimport './school'\nimport './channels'\nimport './billing'\n", "import jstz from 'jstz'\n\n// Rewrite this functionality in app/javascript/controllers/accounts_controller.js when we redo the open page stuff\n$(document).on('turbo:load', function () {\n 'use strict'\n\n // Handle grabbing the user's timezone and adding to a hidden form field\n if ($(\"[name='timezone']\").length) $(\"[name='timezone']\").val(jstz.determine().name())\n\n // Handle allowing only lowercase alphanumeric characters for subdomain\n $(\"[name='subdomain']\").keypress(function (e) {\n const regex = /^([a-z]|[0-9])+$/\n const str = String.fromCharCode(e.charCode ? e.charCode : e.which)\n const validCharacter = e.charCode === 0 || regex.test(str)\n if (!validCharacter) e.preventDefault()\n return validCharacter\n })\n\n function adminIsOwner() {\n return document.getElementById('admin-same-as-owner').checked\n }\n\n function capitalize(input) {\n return input.charAt(0).toUpperCase() + input.slice(1)\n }\n\n function luhn(num) {\n const number = num.replace(/\\D/g, '')\n const numArray = number\n .split('')\n .reverse()\n .map((n) => parseInt(n))\n const checksum = numArray.shift()\n\n const sum = numArray.reduce((acc, n, i) => {\n if (i % 2 === 0) {\n n *= 2\n if (n > 9) n -= 9\n }\n return acc + n\n }, checksum)\n\n return sum % 10 === 0\n }\n\n function creditCardTypeFromNumber(num) {\n const quickCards = {\n master: /^5[1-5]/,\n visa: /^4/,\n american_express: /^3[47]/,\n discover: /^(6011|65|64[4-9]|622)/,\n }\n\n const fullCards = {\n master:\n /^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/,\n visa: /^4[0-9]{6,}$/,\n american_express: /^3[47][0-9]{5,}$/,\n discover: /^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,\n }\n\n let parsedNum = num.replace(/[^\\d]/g, '')\n\n const quickType = Object.keys(quickCards).find((type) => quickCards[type].test(parsedNum))\n const fullType = Object.keys(fullCards).find((type) => fullCards[type].test(parsedNum))\n\n return [quickType, fullType]\n }\n\n function camelCase(input) {\n return input.toLowerCase().replace(/-(.)/g, function (match, group1) {\n return group1.toUpperCase()\n })\n }\n\n function isFormFieldValidationImmediate(field) {\n const customvalidationMethod = `is${capitalize(camelCase(field.attr('name')))}FormFieldValidationImmediate`\n if (typeof window[customvalidationMethod] === 'function') return window[customvalidationMethod](field)\n return true\n }\n\n function isFormFieldValid(field) {\n const customvalidationMethod = `is${capitalize(camelCase(field.attr('name')))}FormFieldValid`\n if (typeof window[customvalidationMethod] === 'function') return window[customvalidationMethod](field)\n if (field.attr('name') === 'admin-phone' && adminIsOwner()) return true\n if (field.attr('name') === 'vault[payment_information][billing_address][address2]') return true\n return $.trim(field.val()) !== ''\n }\n\n function markActiveFormSectionIncomplete() {\n $('#footer .btn-next').attr('disabled', true)\n $('#footer .btn-submit').attr('disabled', true)\n }\n\n function markActiveFormSectionComplete() {\n $('#footer .content span.active span.full-text .form-section-complete-icon').removeClass('hidden')\n $('#footer .btn-next').attr('disabled', false)\n $('#footer .btn-submit:visible').attr('disabled', false)\n }\n\n function isActiveFormSectionValid() {\n let isValid = true\n $('.form-puzzle-piece.active')\n .find('input:not(.hidden), select')\n .each(function () {\n if (!isFormFieldValid($(this))) {\n isValid = false\n return false\n }\n return true\n })\n return isValid\n }\n\n $('#new-account-form input, #new-account-form select').on('focusout', function () {\n if ($(this).val() && isFormFieldValidationImmediate($(this)) && !isFormFieldValid($(this))) {\n $(this).addClass('input-danger')\n }\n })\n\n // Handle allowing user to move to next section, assuming current section is all valid\n $('#new-account-form input').on('input', function () {\n if (isFormFieldValidationImmediate($(this)) && isFormFieldValid($(this))) $(this).removeClass('input-danger')\n\n if (isActiveFormSectionValid()) return markActiveFormSectionComplete()\n markActiveFormSectionIncomplete()\n return $('#footer .content span.active span.full-text .form-section-complete-icon').addClass('hidden')\n })\n\n // Handle allowing user to move to next section, assuming current section is all valid\n $('#new-account-form select').change(function () {\n if (isFormFieldValidationImmediate($(this)) && isFormFieldValid($(this))) $(this).removeClass('input-danger')\n\n if (isActiveFormSectionValid()) return markActiveFormSectionComplete()\n markActiveFormSectionIncomplete()\n return $('#footer .content span.active span.full-text .form-section-complete-icon').addClass('hidden')\n })\n\n function focusFirstFormField(container) {\n return container.find('input').first().focus()\n }\n\n // Handle going to the next section of the form\n $('#footer .btn-next').click(function () {\n const puzzle = $('.form-puzzle')\n const activePiece = puzzle.find('.form-puzzle-piece.active')\n const nextPiece = activePiece.next()\n markActiveFormSectionIncomplete()\n activePiece.fadeOut('fast', function () {\n activePiece.removeClass('active')\n return nextPiece.fadeIn('slow', function () {\n nextPiece.addClass('active')\n focusFirstFormField(nextPiece)\n if (isActiveFormSectionValid()) return markActiveFormSectionComplete()\n\n return true\n })\n })\n const backButton = $('#footer .btn-back')\n backButton.attr('disabled', false)\n const footerContent = $('#footer .content')\n const activeFooterItem = footerContent.find('span.active')\n activeFooterItem.removeClass('active')\n const nextFooterItem = activeFooterItem.next().next()\n nextFooterItem.addClass('active')\n if (!nextPiece.next().hasClass('form-puzzle-piece')) {\n $(this).attr('disabled', true)\n $(this).hide()\n const submitButton = $('#footer .btn-submit')\n submitButton.show()\n }\n })\n\n // Handle going back to the previous form section\n $('#footer .btn-back').click(function () {\n const puzzle = $('.form-puzzle')\n const activePiece = puzzle.find('.form-puzzle-piece.active')\n const prevPiece = activePiece.prev()\n activePiece.fadeOut('fast', function () {\n activePiece.removeClass('active')\n return prevPiece.fadeIn('slow', function () {\n prevPiece.addClass('active')\n return focusFirstFormField(prevPiece)\n })\n })\n const footerContent = $('#footer .content')\n const activeFooterItem = footerContent.find('span.active')\n activeFooterItem.removeClass('active')\n const prevFooterItem = activeFooterItem.prev().prev()\n prevFooterItem.addClass('active')\n const submitButton = $('#footer .btn-submit')\n submitButton.hide()\n const nextButton = $('#footer .btn-next')\n nextButton.attr('disabled', false)\n nextButton.show()\n if (!prevPiece.prev().hasClass('form-puzzle-piece')) {\n $(this).attr('disabled', true)\n nextButton.attr('disabled', false)\n }\n })\n\n window.isOwnerNameFormFieldValid = function (field) {\n return $.trim(field.val()).length >= 2\n }\n\n window.isAdminNameFormFieldValid = function (field) {\n if (adminIsOwner()) return true\n return $.trim(field.val()).length >= 2\n }\n\n window.isOwnerFullPhoneFormFieldValid = function () {\n return true\n }\n\n window.isAdminFullPhoneFormFieldValid = function () {\n return true\n }\n\n window.isSchoolNameFormFieldValid = function (field) {\n return $.trim(field.val()).length >= 2\n }\n\n window.isOwnerEmailFormFieldValid = function (field) {\n const regex = /^([a-zA-Z0-9_.+-])+@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+$/\n return regex.test(field.val())\n }\n\n window.isAdminEmailFormFieldValid = function (field) {\n if (adminIsOwner()) return true\n const regex = /^([a-zA-Z0-9_.+-])+@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+$/\n return regex.test(field.val())\n }\n\n var accountCreationSubdomainCheck = null\n window.isSubdomainFormFieldValid = function (field) {\n const regex = /^([a-z]|[0-9]){2,}$/\n const parent = field.closest('.subdomain-fields')\n if (regex.test(field.val())) {\n parent.find('.form-field-start').addClass('hidden')\n parent.find('.spinner').removeClass('hidden')\n const before = field.val()\n setTimeout(function () {\n if (before === field.val()) {\n if (accountCreationSubdomainCheck) accountCreationSubdomainCheck.abort()\n\n accountCreationSubdomainCheck = $.ajax({\n url: field.data('path'),\n type: 'GET',\n data: {\n subdomain: field.val(),\n strict: true,\n },\n dataType: 'json',\n success(data) {\n parent.find('.form-field-start').addClass('hidden')\n if (data.length > 0) {\n parent.find('.not-available').removeClass('hidden')\n $(field).addClass('input-danger')\n markActiveFormSectionIncomplete()\n $('#footer .content span.active span.full-text .form-section-complete-icon').addClass('hidden')\n } else {\n parent.find('.available').removeClass('hidden')\n $(field).removeClass('input-danger')\n markActiveFormSectionComplete()\n }\n },\n error() {\n parent.find('.form-field-start').addClass('hidden')\n parent.find('.server-error').removeClass('hidden')\n markActiveFormSectionIncomplete()\n $('#footer .content span.active span.full-text .form-section-complete-icon').addClass('hidden')\n },\n })\n return accountCreationSubdomainCheck\n }\n\n return true\n }),\n 500\n } else {\n parent.find('.form-field-start').addClass('hidden')\n }\n\n // Note: The asynchronous call to check the backend will determine this field's validity\n return false\n }\n\n window.isUsernameFormFieldValid = function (field) {\n return $.trim(field.val()).length >= 4\n }\n\n window.isBillingNameFormFieldValid = function (field) {\n const regex = /^[A-z]{2,} .*[A-z]{2,}$/\n return regex.test(field.val())\n }\n\n window.isBillingNumberFormFieldValid = function (field) {\n const [quickType, fullType] = creditCardTypeFromNumber(field.val())\n\n if (quickType) {\n $('.credit-card-type').addClass('hidden')\n $(`.credit-card-type.${quickType}`).removeClass('hidden')\n } else {\n $('.credit-card-type').addClass('hidden')\n }\n\n if (fullType) {\n $(\"[name='billing-credit-card-type']\").val(fullType)\n } else {\n $(\"[name='billing-credit-card-type']\").val('')\n return false\n }\n\n if (!luhn(field.val())) return false\n\n return true\n }\n\n window.isPasswordFormFieldValid = function (field) {\n if ($.trim(field.val()).length < 4) return false\n\n return $(\"[name='password-confirmation']\").val() === field.val()\n }\n\n window.isPasswordConfirmationFormFieldValid = function (field) {\n if ($.trim(field.val()).length < 4) return false\n\n return $(\"[name='password']\").val() === field.val()\n }\n\n window.isSubdomainFormFieldValidationImmediate = function () {\n return false\n }\n\n window.isPasswordFormFieldValidationImmediate = function () {\n return false\n }\n\n // Handles marking the first section complete if already filled out after form submission errors\n if (isActiveFormSectionValid()) return markActiveFormSectionComplete()\n\n return true\n})\n", "/* global FullCalendar */\n/* global initializeAdditionalInfoModalContent */\n/* global Turbo */\n/* global isMobile */\n/* global initializeTooltips */\n/* global loadLazyPartial */\n/* global moment */\n/* global buildListViewElement */\n/* global buildEventContent */\n\nimport { getCookie, setCookie } from '../../javascript/helpers/cookies'\n\nfunction activateClipboard() {\n const schoolButton = document.querySelector('.calendar-sync-copy-school')\n if (schoolButton !== null) {\n schoolButton.addEventListener('click', () => {\n const inputField = document.querySelector('#sync-url-school')\n inputField.select()\n navigator.clipboard.writeText(inputField.value)\n })\n }\n\n const personalButton = document.querySelector('.calendar-sync-copy-personal')\n if (personalButton !== null) {\n personalButton.addEventListener('click', () => {\n const inputField = document.querySelector('#sync-url-personal')\n inputField.select()\n navigator.clipboard.writeText(inputField.value)\n })\n }\n}\n\nlet calendar\n// TODO: This whole thing is a mess. We should really uh.. fix it.\n// Correction, this is an actual nightmare.\n$(document).on('turbo:load', function () {\n 'use strict'\n\n $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name=\"csrf-token\"]').attr('content') } })\n\n function updateDate(info) {\n const updatedStartDate = new Date(info.event.startStr)\n const updatedEndDate = new Date(info.event.endStr)\n const moduloDistanceStartDate = updatedStartDate.getMinutes() % 15\n const moduloDistanceEndDate = updatedEndDate.getMinutes() % 15\n\n if (moduloDistanceStartDate <= 8) {\n updatedStartDate.setMinutes(updatedStartDate.getMinutes() - moduloDistanceStartDate)\n } else {\n updatedStartDate.setMinutes(updatedStartDate.getMinutes() + (15 - moduloDistanceStartDate))\n }\n\n if (moduloDistanceEndDate <= 8) {\n updatedEndDate.setMinutes(updatedEndDate.getMinutes() - moduloDistanceEndDate)\n } else {\n updatedEndDate.setMinutes(updatedEndDate.getMinutes() + (15 - moduloDistanceEndDate))\n }\n\n const eventType = info.event.id.split('_')[0]\n const eventId = info.event.id.split('_')[1]\n\n function updatedData() {\n if (eventType === 'class') {\n let data = {\n old_event_date: info.oldEvent._def.extendedProps.object_type.start_time.slice(0, 10),\n id: eventId,\n class_event: {\n name: info.event._def.title,\n date: moment(updatedStartDate).format('YYYY-MM-DD'),\n start_am_pm: moment(updatedStartDate).format('A'),\n end_am_pm: moment(updatedEndDate).format('A'),\n start_time: moment(updatedStartDate).format('h:mm'),\n end_time: moment(updatedEndDate).format('h:mm'),\n object_type: info.event._def.extendedProps.object_type.event.object_type,\n type: eventType,\n },\n }\n return data\n }\n let data = {\n start_date: updatedStartDate.toISOString(),\n end_date: updatedEndDate,\n type: eventType,\n id: eventId,\n person_type: info.event.extendedProps.dataPath.split('/')[1],\n person_id: info.event.extendedProps.dataPath.split('/')[2],\n }\n return data\n }\n\n function updatePath() {\n if (eventType === 'class') {\n let class_id = info.event._def.publicId.replace(/\\D/g, '')\n let updatedPath = `schools/calendar/class_events/${class_id}/update/?`\n return updatedPath\n }\n let updatedPath = 'school/calendar/update_date'\n return updatedPath\n }\n\n if (eventType === 'class') {\n document.dispatchEvent(\n new CustomEvent('confirmation-modal:open', {\n detail: { data: updatedData(), path: updatePath(), info: info.el, calendar },\n }),\n )\n }\n }\n\n function closePopoverWithOutsideClick() {\n $(document).mouseup(function (e) {\n var tooltip = $('.fullcalendar-tooltip')\n if (!tooltip.is(e.target) && tooltip.has(e.target).length === 0) tooltip.remove()\n })\n }\n\n function centerPosition() {\n return '55%; top: 50%; transform: translate(-50%, -50%); position: fixed;\">'\n }\n\n function dynamicPositionPopover(jsEvent) {\n if (isMobile()) return centerPosition()\n let left = jsEvent.pageX\n const top = jsEvent.pageY\n\n // The width of the popup can vary but its usually at least 320 pixels wide\n if (left > window.innerWidth - 320) {\n left = window.innerWidth - 320\n }\n\n return `${left}px; top: ${top}px;\" >`\n }\n\n function dynamicPositionScrollablePopover(currentMousePos) {\n if (isMobile()) return centerPosition()\n return `${currentMousePos.x - 20}px; top: ${currentMousePos.y - 250}px;\" position: absolute;\" >`\n }\n\n function editEvent(path, fullCalendar) {\n var $updateEventModal = $('#update-event')\n var $globalAlerts = $('#global-alerts')\n\n $updateEventModal.html('<div class=\"spinner spinner-grow center\" />')\n $updateEventModal.modal('show')\n\n $.get(path, () => {})\n .done(function (data) {\n $updateEventModal.html(data)\n initializeAdditionalInfoModalContent()\n\n $updateEventModal.modal()\n $updateEventModal.find('#description').focus()\n $updateEventModal.find('form').on('ajax:complete', function (e) {\n if (e.originalEvent.detail[0].status === 200) {\n fullCalendar.refetchEvents()\n $updateEventModal.modal('hide')\n } else if (e.originalEvent.detail[0].status === 403) {\n const errors = $('#update-event .modal-body .errors')\n errors.text(e.originalEvent.detail[0].responseText)\n } else {\n $globalAlerts.append(e.originalEvent.detail[0].responseText)\n $updateEventModal.modal('hide')\n }\n })\n })\n .fail(function (response) {\n $globalAlerts.append(response.responseText)\n })\n }\n\n const CustomViewConfig = {\n classNames: ['custom-list-view'],\n\n content(props) {\n const segs = FullCalendar.sliceEvents(props)\n if (calendar.shouldReloadView === true) {\n calendar.shouldReloadView = false\n\n // just shove the html that is currently there.. there again I guess\n return { domNodes: [document.querySelector('.fc-customListView')] }\n }\n\n return { domNodes: [buildListViewElement(segs, calendar)] }\n },\n visibleRange(currentDate) {\n const start = new Date(currentDate.valueOf())\n const end = new Date(currentDate.valueOf())\n end.setDate(end.getDate() + 7)\n\n return { start, end }\n },\n dayCount: 7,\n }\n\n const customListView = FullCalendar.createPlugin({\n views: {\n customList: CustomViewConfig,\n },\n })\n\n if ($('#calendar').length) {\n var currentMousePos = {\n x: -1,\n y: -1,\n }\n $(document).mousemove(function (event) {\n currentMousePos.x = event.pageX\n currentMousePos.y = event.pageY\n })\n\n var closeDiv = \"<div class='close-container'> <i class='close-more fa fa-times'></i></div>\"\n var toolTipDiv =\n \"<div class='fullcalendar-tooltip'\" +\n 'id=\"fullcalendar-tooltip-scrollable\"' +\n 'style=\"position: absolute; z-index: 999; left: '\n\n closePopoverWithOutsideClick()\n\n calendar = new FullCalendar.Calendar(document.getElementById('calendar'), {\n locale: $('html')[0].lang,\n now: $('#calendar').data('now'),\n timeZone: $('body').data('timezone'),\n headerToolbar: false,\n initialView: getCookie('preferred_calendar_view') || 'timeGridWeek',\n themeSystem: 'bootstrap',\n nowIndicator: true,\n expandRows: true,\n dayMaxEvents: 3,\n navLinks: true,\n height: 'fit-content',\n snapDuration: '00:15:00',\n plugins: [customListView],\n navLinkDayClick(date) {\n if (moment.utc(date).format('YYYY-MM-DD') !== moment().format('YYYY-MM-DD')) {\n activateTodayButton()\n }\n\n this.changeView('timeGridDay', date)\n const startDate = calendar.view.currentStart\n\n $('.fc-toolbar-title').text(\n startDate.toLocaleDateString(undefined, {\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n timeZone: 'UTC',\n }),\n )\n\n $('#mini-calendar-panel').removeClass('hidden')\n },\n moreLinkClick(info) {\n $('.fullcalendar-tooltip').remove()\n var eventsMarkup = info.allSegs\n .map(function (e) {\n return e.event.extendedProps.details\n })\n .slice(3)\n .join('')\n\n $('body').append(\n `${toolTipDiv + dynamicPositionScrollablePopover(currentMousePos) + closeDiv + eventsMarkup}</div>`,\n )\n initializeTooltips($('#fullcalendar-tooltip-scrollable'))\n },\n datesSet(info) {\n const button = $(`.fc-${info.view.type}-button`)\n $(button)\n .parent()\n .siblings('li')\n .each(function () {\n $(this).find('.active').removeClass('active')\n })\n $(button).addClass('active')\n $('.fc-header-toolbar .dropdown-btn .btn-text').text(button.first().text())\n },\n eventContent(info) {\n let content = buildEventContent(info)\n return { domNodes: [content] }\n },\n events: {\n url: $('#calendar').data('events'),\n method: 'GET',\n extraParams() {\n return {\n calendars: $('#calendar-options:visible input:checked')\n .map(function () {\n return this.id\n })\n .get()\n .join(';'),\n programs: $('#program-options:visible input:checked')\n .map(function () {\n return this.id\n })\n .get()\n .join(';'),\n }\n },\n failure(data) {\n $('#global-alerts').append(data.xhr.responseText)\n },\n },\n eventClick(info) {\n $('.fullcalendar-tooltip').remove()\n const id = info.event.id\n const details = info.event.extendedProps.details\n\n $('body')\n .append(\n `<div class='fullcalendar-tooltip tooltip-hover' 'id=\"fullcalendar-tooltip\" data-id='\n ${id}' style=\"position: absolute; z-index: 999; left: ${dynamicPositionPopover(\n info.jsEvent,\n )}${closeDiv}${details}</div>`,\n )\n .fadeIn('fast')\n initializeTooltips($('#fullcalendar-tooltip'))\n },\n eventDragStart(info) {\n if (info.event.id.includes('class')) {\n info.el.dataset.controller = 'confirmation-submit'\n info.el.dataset.action = 'mouseup->confirmation-submit#showEditConfirmation'\n info.el.dataset.title = 'Save Changes'\n info.el.dataset.confirmText = 'Save'\n info.el.dataset.denyText = 'Cancel'\n info.el.dataset.message =\n 'Are you sure you would like to save these changes? These changes will only affect this event.'\n }\n $('.fullcalendar-tooltip').remove()\n },\n eventDrop(info) {\n updateDate(info)\n },\n eventResize(info) {\n updateDate(info)\n },\n })\n updateCalendarDate()\n $(window).resize(function () {\n updateCalendarDate()\n })\n\n calendar.render()\n }\n\n function updateCalendarDate(options = {}) {\n if (options.date) {\n calendar.gotoDate(new Date(options.date))\n }\n\n const startDate = calendar.view.currentStart\n const endDate = calendar.view.activeEnd\n const shouldShowYear = !window.matchMedia('(min-width: 992px) and (max-width: 1200px)').matches\n\n switch (calendar.view.type) {\n case 'dayGridMonth':\n $('.fc-toolbar-title').text(\n startDate.toLocaleDateString(undefined, { month: 'long', year: 'numeric', timeZone: 'UTC' }),\n )\n break\n case 'timeGridDay':\n $('.fc-toolbar-title').text(\n startDate.toLocaleDateString(undefined, {\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n timeZone: 'UTC',\n }),\n )\n break\n case 'customList':\n case 'timeGridWeek':\n // FCs activeEnd (and currentEnd) include the day after the range\n endDate.setDate(endDate.getDate() - 1)\n\n if (shouldShowYear) {\n $('.fc-toolbar-title').text(`\n ${startDate.toLocaleDateString(undefined, {\n month: 'short',\n year: 'numeric',\n day: 'numeric',\n timeZone: 'UTC',\n })}\n -\n ${endDate.toLocaleDateString(undefined, {\n month: 'short',\n year: 'numeric',\n day: 'numeric',\n timeZone: 'UTC',\n })}\n `)\n } else {\n $('.fc-toolbar-title').text(`\n ${startDate.toLocaleDateString(undefined, {\n month: 'short',\n day: 'numeric',\n timeZone: 'UTC',\n })}\n -\n ${endDate.toLocaleDateString(undefined, {\n month: 'short',\n day: 'numeric',\n timeZone: 'UTC',\n })}\n `)\n }\n break\n default:\n break\n }\n }\n\n $(document).on('turbo:submit-end', function (event) {\n if (event.detail.success && event.detail.formSubmission.formElement.action.includes('/calendar')) {\n if (calendar) {\n // Hacky way to refresh the Upcoming Schedule\n const trayFrame = document.getElementById('upcoming-tray')\n const frame = document.getElementById('upcoming')\n const { src } = frame\n frame.src = null\n frame.src = src\n trayFrame.src = null\n trayFrame.src = src\n\n calendar.refetchEvents()\n }\n\n const selectors = ['.lazy-load#students-calendar', '.lazy-load#prospects-calendar']\n for (const selector of selectors) {\n const $target = $(`${selector}`)\n if ($target.length) {\n const path = $target.data().path\n loadLazyPartial(path, $target, true, false)\n }\n }\n }\n })\n\n function activateTodayButton() {\n $('.fc-today-button').removeAttr('disabled')\n }\n\n $(document).on('calendar:updateCalendarDate', function (event) {\n const date = event.detail.date\n\n updateCalendarDate({ date })\n activateTodayButton()\n })\n\n $('.fc-prev-button').click(function () {\n if (calendar.view.type === 'customList') {\n const newDate = new Date(calendar.view.currentStart)\n newDate.setDate(newDate.getDate() - 7)\n updateCalendarDate({ date: newDate })\n } else {\n calendar.prev()\n updateCalendarDate()\n }\n\n activateTodayButton()\n })\n\n $('.fc-next-button').click(function () {\n if (calendar.view.type === 'customList') {\n const newDate = new Date(calendar.view.currentStart)\n newDate.setDate(newDate.getDate() + 7)\n updateCalendarDate({ date: newDate })\n } else {\n calendar.next()\n updateCalendarDate()\n }\n\n activateTodayButton()\n })\n\n $('.fc-today-button').click(function () {\n calendar.today()\n updateCalendarDate({ date: new Date() })\n $(this).attr('disabled', 'disabled')\n })\n\n $('.fc-dayGridMonth-button').click(function () {\n $(this)\n .parent()\n .siblings('li')\n .each(function () {\n $(this).find('.active').removeClass('active')\n })\n $(this).addClass('active')\n calendar.changeView('dayGridMonth')\n $('#mini-calendar-panel').addClass('hidden')\n updateCalendarDate()\n setCookie('preferred_calendar_view', 'dayGridMonth')\n })\n\n $('.fc-timeGridWeek-button').click(function () {\n $(this)\n .parent()\n .siblings('li')\n .each(function () {\n $(this).find('.active').removeClass('active')\n })\n $(this).addClass('active')\n calendar.changeView('timeGridWeek')\n $('#mini-calendar-panel').removeClass('hidden')\n updateCalendarDate()\n setCookie('preferred_calendar_view', 'timeGridWeek')\n })\n\n $('.fc-timeGridDay-button').click(function () {\n $(this)\n .parent()\n .siblings('li')\n .each(function () {\n $(this).find('.active').removeClass('active')\n })\n $(this).addClass('active')\n calendar.changeView('timeGridDay')\n $('#mini-calendar-panel').removeClass('hidden')\n updateCalendarDate()\n setCookie('preferred_calendar_view', 'timeGridDay')\n })\n\n $('.fc-customList-button').click(function () {\n $(this)\n .parent()\n .siblings('li')\n .each(function () {\n $(this).find('.active').removeClass('active')\n })\n $(this).addClass('active')\n calendar.changeView('customList')\n $('#mini-calendar-panel').removeClass('hidden')\n updateCalendarDate()\n setCookie('preferred_calendar_view', 'customList')\n })\n\n $('.fc-syncButton-button').click(function () {\n $('#calendar-sync-modal').modal('show')\n })\n\n $('#calendar-options input').change(function () {\n if (this.id === 'classes-calendar-option') {\n for (const checkbox of [...document.querySelectorAll('#program-options input')]) {\n checkbox.disabled = !this.checked\n checkbox.checked = this.checked\n }\n }\n\n calendar.refetchEvents()\n })\n\n $('#program-options input').change(function () {\n calendar.refetchEvents()\n })\n\n $('#sidebar-container').on('voltage:sidebar:collapsed voltage:sidebar:expanded', function () {\n if (calendar) calendar.updateSize()\n })\n\n $('body').on('click', '.close-more', function () {\n $('.fullcalendar-tooltip').remove()\n })\n\n $('body').on('click', '.edit-link', function () {\n editEvent($(this).data().editPath, calendar)\n $('.fullcalendar-tooltip').remove()\n })\n\n $('.new-event').on('click', function () {\n var $newEventModal = $('#new-event')\n var $globalAlerts = $('#global-alerts')\n var path = $(this).data().path\n\n $newEventModal.html('<div class=\"spinner spinner-grow center\" />')\n $newEventModal.modal('show')\n\n $.get(path)\n .done(function (data) {\n $newEventModal.html(data)\n initializeAdditionalInfoModalContent()\n\n $newEventModal.modal()\n $newEventModal.find('#description').focus()\n $newEventModal.find('form').on('ajax:complete', function (e) {\n if (e.originalEvent.detail[0].status === 200) {\n $newEventModal.modal('hide')\n Turbo.visit(window.location.toString())\n } else {\n $globalAlerts.append(e.originalEvent.detail[0].responseText)\n $newEventModal.modal('hide')\n }\n })\n })\n .fail(function (response) {\n $globalAlerts.append(response.responseText)\n })\n })\n\n activateClipboard()\n})\n", "/* eslint-env jquery */\n/* global Turbo */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n $('form#user-login-form').submit(function () {\n Turbo.cache.clear()\n })\n})\n", "/* eslint-env jquery */\n\nfunction closeModalAndAlertForSuccess(e, modal) {\n 'use strict'\n var xhr = e.detail[2]\n $(modal).modal('toggle')\n $('person-form form').trigger('reset')\n $('#global-alerts').html(xhr.responseText)\n}\n\nfunction alertForFailure(e) {\n 'use strict'\n var xhr = e.detail[2]\n $('#global-alerts').html(xhr.responseText)\n}\n\ndocument.addEventListener('turbo:load', function () {\n 'use strict'\n var modal = '#new-profile'\n $(modal).on('ajax:success', function (e) {\n closeModalAndAlertForSuccess(e, modal)\n })\n $(modal).on('ajax:error', function (e) {\n alertForFailure(e)\n })\n})\n", "/* eslint-env jquery */\n$(document).on('hidden.bs.modal', '#new-profile', function () {\n $('input[name=profile_type]').removeAttr('checked')\n $('.form-group.form-field.email').removeClass('hidden')\n $('.phone-toggle-container').removeClass('hidden')\n})\n\n$(document).on('click', '.add-new-profile', function () {\n $('#sidebar-container').removeClass('active')\n})\n\n$(document).on('mouseenter', '.add-new-profile', function () {\n $('.add-new-profile').addClass('active')\n})\n\n$(document).on('mouseleave', '.add-new-profile', function () {\n $('.add-new-profile').removeClass('active')\n $('#enable-sms').bootstrapToggle('off')\n})\n\nfunction openModalFromHash(hash) {\n 'use strict'\n\n $(hash).on('shown.bs.modal', function () {\n $('#new-profile-name').focus()\n $(`${hash} form`).trigger('reset')\n })\n}\n\n;['turbo:load', 'hashchange'].forEach(function (e) {\n 'use strict'\n\n window.addEventListener(e, function () {\n openModalFromHash('#new-profile')\n })\n})\n\n$(document).on('turbo:load', function () {\n 'use strict'\n newProfileToggleBehavior()\n})\n\nfunction newProfileToggleBehavior() {\n 'use strict'\n\n $('body').on('click', '.new-profile-prospect', function () {\n newProfileToggle().prospect()\n })\n\n $('body').on('click', '.new-profile-student', function () {\n newProfileToggle().student()\n })\n\n $('body').on('click', '.new-profile-family', function () {\n newProfileToggle().family()\n })\n}\n\nfunction newProfileToggle() {\n 'use strict'\n\n var behavior = {\n prospect() {\n $('.form-group.form-field.email').removeClass('hidden')\n $('.phone-toggle-container').removeClass('hidden')\n },\n student() {\n $('.form-group.form-field.email').removeClass('hidden')\n $('.phone-toggle-container').removeClass('hidden')\n },\n family() {\n $('.form-group.form-field.email').addClass('hidden')\n $('.phone-toggle-container').addClass('hidden')\n },\n }\n\n return behavior\n}\n", "/* global loadLazyPartial */\n\nfunction bindClickableDays() {\n 'use strict'\n\n var binds = [\n '#prospects-calendar .simple-calendar .selectable-day',\n '#students-calendar .simple-calendar .selectable-day',\n '.dashboard-calendar .simple-calendar .selectable-day',\n ]\n $(binds.join(', ')).on('click', function (e) {\n e.preventDefault()\n\n var $this = $(this)\n var $target = $(this).closest('.lazy-load')\n var path = $this.data('path')\n\n loadLazyPartial(path, $target)\n })\n}\n\nfunction bindMonthTransitions() {\n 'use strict'\n\n var binds = [\n '#prospects-calendar .simple-calendar a.next-view',\n '#prospects-calendar .simple-calendar a.previous-view',\n '#students-calendar .simple-calendar a.next-view',\n '#students-calendar .simple-calendar a.previous-view',\n '.dashboard-calendar .simple-calendar a.next-view',\n '.dashboard-calendar .simple-calendar a.previous-view',\n ]\n $(binds.join(', ')).on('click', function (e) {\n e.preventDefault()\n\n var $this = $(this)\n var $target = $(this).closest('.lazy-load')\n var path = $this.data('path')\n\n loadLazyPartial(path, $target, true, false)\n })\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n bindClickableDays()\n bindMonthTransitions()\n\n $('.lazy-load#prospects-calendar, .lazy-load#students-calendar, .lazy-load.dashboard-calendar').on(\n 'lazy-load:complete',\n function () {\n bindClickableDays()\n bindMonthTransitions()\n },\n )\n})\n", "/* global initializeDropdownTabs */\n/* global initializeCounters */\n/* global initializeTooltips */\n/* global loadLazyPartial */\n/* global initializeWidgetCollapseExpand */\n\nfunction collapseExpandWidgetIfUserHasNoPreference(userPreferenceSelector) {\n 'use strict'\n\n var windowWidth = 768\n\n if (!$(userPreferenceSelector).hasClass('user-preference')) {\n if (window.innerWidth <= windowWidth) $(userPreferenceSelector).removeClass('in')\n else $(userPreferenceSelector).addClass('in')\n }\n}\n\nfunction collapseExpandVitalsWidgetIfUserHasNoPreference() {\n collapseExpandWidgetIfUserHasNoPreference('#vitals-stat-widgets')\n}\n\nfunction updateVitalsWidgetDisplayPreference(path, isDisplayed) {\n 'use strict'\n\n $.ajax({\n type: 'PUT',\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', $(\"meta[name='csrf-token']\").attr('content'))\n },\n url: path,\n data: { session: { isVitalsWidgetDisplayed: isDisplayed } },\n })\n\n $('#vitals-stat-widgets').addClass('user-preference')\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n collapseExpandVitalsWidgetIfUserHasNoPreference()\n\n $('.lazy-load.dashboard-vitals').on('lazy-load:complete', function () {\n collapseExpandVitalsWidgetIfUserHasNoPreference()\n\n initializeDropdownTabs($(this))\n initializeCounters($(this))\n\n $('.lazy-load.dashboard-vitals .dropdown-tabs .dropdown-tabs-menu li a').on(\n 'voltage:dropdown-tabs:selected',\n function () {\n var $this = $(this)\n var $target = $(this).closest('.lazy-load')\n var path = $this.data('path')\n\n loadLazyPartial(path, $target)\n },\n )\n\n $('#vitals-stat-widgets').on('hidden.bs.collapse', function () {\n var $this = $(this)\n var path = $this.data('path')\n $('#vitals-toggler').addClass('fa-chevron-down')\n $('#vitals-toggler').removeClass('fa-chevron-up')\n\n updateVitalsWidgetDisplayPreference(path, false)\n })\n\n $('#vitals-stat-widgets').on('shown.bs.collapse', function () {\n var $this = $(this)\n var path = $this.data('path')\n\n $('#vitals-toggler').addClass('fa-chevron-up')\n $('#vitals-toggler').removeClass('fa-chevron-down')\n\n updateVitalsWidgetDisplayPreference(path, true)\n })\n\n $(window).on('resize', function () {\n collapseExpandVitalsWidgetIfUserHasNoPreference()\n })\n })\n\n $('.lazy-load.dashboard-recent-activity').on('lazy-load:complete', function () {\n initializeTooltips($(this))\n\n var $collapsiblePanel = $(this).find('section.panel.panel-default .panel-body')\n initializeWidgetCollapseExpand($collapsiblePanel)\n })\n\n $('.lazy-load.dashboard-calendar').on('lazy-load:complete', function () {\n var $collapsiblePanel = $(this).find('section.panel.panel-default .panel-body')\n initializeWidgetCollapseExpand($collapsiblePanel)\n })\n\n $('.lazy-load.dashboard-birthdays').on('lazy-load:complete', function () {\n const $collapsiblePanel = $(this).find('section.panel.panel-default .panel-body')\n initializeWidgetCollapseExpand($collapsiblePanel)\n initializeCollapsibleDropdowns()\n })\n})\n\n$(document).on('turbo:before-cache', () => {\n $('[data-toggle=\"tooltip\"]').tooltip('hide')\n $('select.select2.select2-hidden-accessible').select2('destroy')\n})\n\nfunction initializeCollapsibleDropdown($dropdownName) {\n 'use strict'\n $dropdownName.find('.birthday').on('show.bs.collapse', function (e) {\n e.stopPropagation()\n $dropdownName.removeClass('collapsed')\n $dropdownName.find('.target-icon').toggleClass('chevron-rotate')\n })\n\n $dropdownName.find('.birthday').on('hidden.bs.collapse', function (e) {\n e.stopPropagation()\n $dropdownName.addClass('collapsed')\n $dropdownName.find('.target-icon').toggleClass('chevron-rotate')\n })\n}\n\nfunction initializeCollapsibleDropdowns() {\n 'use strict'\n const dropdownNames = ['first-month', 'next-month', 'month-after-next']\n for (const dropdownName of dropdownNames) {\n initializeCollapsibleDropdown($(`#${dropdownName}`))\n }\n}\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n var fixableHeader = $('.fixable-header')[0]\n\n if (fixableHeader) {\n var fixableHeaderAltitude = $('.fixable-header').offset().top\n var fixableHeaderHeight = $('.fixable-header').outerHeight(true)\n var fixableHeaderBuffer = $('.fixable-header-buffer')[0]\n fixableHeaderBuffer.style.height = `${fixableHeaderHeight}px`\n\n /// Pins the header to the top of the screen on scroll\n document.addEventListener('scroll', function () {\n 'use strict'\n var distanceFromTop = Math.abs(document.body.getBoundingClientRect().top)\n\n var desiredWidth = `${$(fixableHeader).parent().width()}px`\n var desiredClass = 'fixable-header-fixed'\n\n if ($(fixableHeader)[0] !== undefined) {\n if (distanceFromTop >= fixableHeaderAltitude) {\n fixableHeader.classList.add(desiredClass)\n fixableHeader.style.width = desiredWidth\n if (fixableHeaderBuffer) fixableHeaderBuffer.style.display = 'inherit'\n } else {\n fixableHeader.classList.remove(desiredClass)\n fixableHeader.style.width = '100%'\n if (fixableHeaderBuffer) fixableHeaderBuffer.style.display = 'none'\n }\n }\n })\n }\n})\n", "$(document).on('turbo:load', function () {\n 'use strict'\n\n $('#overlay .hide-notification').on('click', function () {\n var $this = $(this)\n\n $this.closest('#overlay').fadeOut(function () {\n var $reminder = $('.reminder-message-container')\n $reminder.hide()\n $reminder.removeClass('hidden')\n $reminder.fadeIn()\n })\n\n var path = $this.data('path')\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n $.ajax({\n type: 'PUT',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n })\n })\n\n $(document).mousemove(function () {\n var alertsToHide = $('#global-alerts').find('.alert.alert-fade')\n alertsToHide.removeClass('alert-fade')\n alertsToHide.addClass('alert-fading')\n\n setTimeout(function () {\n alertsToHide.fadeOut('slow')\n }, 5000)\n })\n})\n", "/* eslint-env jquery */\n/* global loadLazyPartial */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n var $$$schoolSearchResponse = null\n $('#search').on('keyup', function (e) {\n if (e.key !== 'Tab') {\n var query = $(this).val()\n\n var $this = $(this)\n var $target = $('#search-results')\n var path = `${$this.data('path')}?query=${query}`\n\n var before = $this.val()\n setTimeout(function () {\n if (before === $this.val()) {\n if ($$$schoolSearchResponse !== null) $$$schoolSearchResponse.abort()\n\n $$$schoolSearchResponse = loadLazyPartial(path, $target, true, false)\n }\n }, 300)\n }\n })\n\n function toggleSearch() {\n if ($(window).width() < 768) {\n $('#profile-dropdown .dropdown').toggleClass('hidden')\n $('.search-active').toggleClass('w-0 w-full')\n $('#profile-dropdown').toggleClass('w-fit w-full z-[1002] z-[1003]')\n }\n $('#search-button').toggleClass('hidden')\n $('#search-container').toggleClass('hidden')\n }\n\n $('#profile-dropdown').click(function (e) {\n const clickedOnSearchIcon =\n e.target.id === 'search-button' ||\n (e.target.tagName === 'path' && e.target.getAttribute('d').startsWith('M416'))\n\n if (clickedOnSearchIcon) {\n toggleSearch()\n $('#search').focus()\n }\n })\n\n $('#search-close').click(function () {\n $('#search').val('')\n toggleSearch()\n })\n\n $('#search').on('focus', function () {\n $('#search-results').removeClass('hidden')\n })\n\n $('#search').on('focusout', function () {\n if ($(this).val() === '') {\n $('#search-results').addClass('hidden')\n }\n })\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n $('nav.navbar-utility .navbar-nav .dropdown-menu .toggle-theme').on('click', function (event) {\n event.stopPropagation()\n $('#sidebar-container #nav-sidebar .nav-sidebar-icon').toggleClass('active')\n $('.modal-body .item-icon img').toggleClass('active')\n })\n})\n", "/* eslint-env jquery */\n/* global initializeDropdownTabs */\n/* global enableApplyToPreviewButton */\n/* global handleProspectCreationToggle */\n/* global initializeEmbedCodeModal */\n/* eslint no-use-before-define: 0 */\n\nfunction handleLCFNewFieldCreationSubmission(element, lastOrder) {\n 'use strict'\n\n var $createBtn = $(element)\n var $customFieldTarget = $createBtn.closest('.custom-form-field-creator-wrapper')\n var nameValue = $customFieldTarget.find('input').val()\n if (nameValue.trim().length > 0) {\n var path = $createBtn.data('path')\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n $.ajax({\n type: 'POST',\n url: path,\n data: { name: nameValue },\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(data) {\n if (data.status === 200) {\n $customFieldTarget.html(data.responseText)\n initializeLeadCaptureFormFields($customFieldTarget.find('.selected-form-field'))\n $customFieldTarget\n .find('.selected-form-field')\n .find('.selected-form-field-orderness input')\n .val(lastOrder + 1)\n enableApplyToPreviewButton()\n\n var collection = $customFieldTarget.parent().children()\n collection.find('.selected-form-field-orderness .move-field-down').removeClass('disabled')\n collection.find('.selected-form-field-orderness .move-field-up').removeClass('disabled')\n collection.first().find('.selected-form-field-orderness .move-field-up').addClass('disabled')\n collection.last().find('.selected-form-field-orderness .move-field-down').addClass('disabled')\n\n $customFieldTarget.find('.selected-form-field').unwrap()\n } else {\n $('#global-alerts').append(data.responseText)\n }\n },\n })\n }\n}\n\nfunction updateLeadCaptureFormStatus(container, path, button) {\n 'use strict'\n\n button.attr('disabled', true)\n\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n $.ajax({\n type: 'PUT',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(data) {\n if (data.status === 200) {\n container.fadeOut('fast', function () {\n container.html(data.responseText)\n initializeDropdownTabs(container)\n initializeLeadCaptureFormStatusDropdowns(container)\n\n container.fadeIn('fast')\n })\n } else {\n $('#global-alerts').append(data.responseText)\n }\n },\n })\n}\n\nfunction initializeLeadCaptureFormStatusDropdowns(parent) {\n 'use strict'\n\n $(parent)\n .find('.lead-capture-form-container .dropdown-tabs .dropdown-tabs-menu li a')\n .on('voltage:dropdown-tabs:selected', function () {\n var $this = $(this)\n var $target = $this.closest('.lead-capture-form-wrapper')\n var path = $this.data('path')\n var $parentButton = $this.closest('.dropdown-tabs').find('button')\n\n return updateLeadCaptureFormStatus($target, path, $parentButton)\n })\n}\n\nfunction initializeLeadCaptureFormFields(parent) {\n 'use strict'\n\n $(parent)\n .find('.selected-form-field-requireness')\n .on('click', function () {\n if (!$(this).find('.always-required').length) {\n var $actualFormField = $(this).find('input')\n $actualFormField.attr('checked', !$actualFormField.attr('checked')).trigger('change')\n\n $(this).find('.is-required').toggleClass('active')\n $(this).find('.not-required').toggleClass('active')\n\n enableApplyToPreviewButton()\n handleProspectCreationToggle()\n }\n })\n\n $(parent)\n .find('.selected-form-field-orderness .move-field-up')\n .on('click', function () {\n if (!$(this).hasClass('disabled')) {\n var $widget = $(this).closest('.selected-form-field')\n var $sibling = $widget.prev()\n\n var $parent = $(this).closest('.selected-form-field-orderness')\n var $hiddenFormField = $($parent.find(\"input[type='Number']\")[0])\n var hiddenFormFieldValue = parseInt($hiddenFormField.val())\n\n var $hiddenFormFieldDos = $($sibling.find(\".selected-form-field-orderness input[type='Number']\")[0])\n var hiddenFormFieldDosValue = parseInt($hiddenFormFieldDos.val())\n\n $widget.find(\".selected-form-field-orderness input[type='Number']\").val(hiddenFormFieldDosValue)\n $sibling.find(\".selected-form-field-orderness input[type='Number']\").val(hiddenFormFieldValue)\n\n $sibling.before($widget)\n $widget.addClass('blink')\n setTimeout(function () {\n $widget.removeClass('blink')\n }, 2000)\n\n var collection = $widget.parent().children()\n collection.find('.selected-form-field-orderness .move-field-down').removeClass('disabled')\n collection.find('.selected-form-field-orderness .move-field-up').removeClass('disabled')\n collection.first().find('.selected-form-field-orderness .move-field-up').addClass('disabled')\n collection.last().find('.selected-form-field-orderness .move-field-down').addClass('disabled')\n\n enableApplyToPreviewButton()\n }\n })\n\n $(parent)\n .find('.selected-form-field-orderness .move-field-down')\n .on('click', function () {\n if (!$(this).hasClass('disabled')) {\n var $widget = $(this).closest('.selected-form-field')\n var $sibling = $widget.next()\n\n var $parent = $(this).closest('.selected-form-field-orderness')\n var $hiddenFormField = $($parent.find(\"input[type='Number']\")[0])\n var hiddenFormFieldValue = parseInt($hiddenFormField.val())\n\n var $hiddenFormFieldDos = $($sibling.find(\".selected-form-field-orderness input[type='Number']\")[0])\n var hiddenFormFieldDosValue = parseInt($hiddenFormFieldDos.val())\n\n $widget.find(\".selected-form-field-orderness input[type='Number']\").val(hiddenFormFieldDosValue)\n $sibling.find(\".selected-form-field-orderness input[type='Number']\").val(hiddenFormFieldValue)\n\n $widget.before($sibling)\n $widget.addClass('blink')\n setTimeout(function () {\n $widget.removeClass('blink')\n }, 2000)\n\n var collection = $widget.parent().children()\n collection.find('.selected-form-field-orderness .move-field-down').removeClass('disabled')\n collection.find('.selected-form-field-orderness .move-field-up').removeClass('disabled')\n collection.first().find('.selected-form-field-orderness .move-field-up').addClass('disabled')\n collection.last().find('.selected-form-field-orderness .move-field-down').addClass('disabled')\n\n enableApplyToPreviewButton()\n }\n })\n\n $(parent)\n .find('.deselect-form-field')\n .click(function () {\n var $selectedFormField = $(this).closest('.selected-form-field')\n var $keyField = $selectedFormField.find('.selected-form-field-label input')\n\n $selectedFormField.remove()\n var splittedString = $keyField.attr('name').split('[')\n if (splittedString.length > 1) {\n var key = splittedString[1].split(']')[0]\n $('.form-field-options').find(`.form-option-${key}`).removeClass('disabled')\n enableApplyToPreviewButton()\n handleProspectCreationToggle()\n }\n })\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n $('.lazy-load#lead-capture-forms').on('lazy-load:complete', function () {\n initializeDropdownTabs($(this))\n initializeLeadCaptureFormStatusDropdowns($(this))\n initializeEmbedCodeModal()\n })\n\n initializeLeadCaptureFormStatusDropdowns($(this))\n initializeEmbedCodeModal()\n initializeLeadCaptureFormFields($('#additional-sidebar'))\n\n $('.form-option').on('click', function () {\n if (!$(this).hasClass('disabled')) {\n var $this = $(this)\n var $target = $('#lead-capture-form > .content')\n if (!$this.hasClass('custom-field-option')) $this.addClass('disabled')\n\n var lastOrder = parseInt(\n $('#additional-sidebar')\n .find('.selected-form-field')\n .last()\n .find('.selected-form-field-orderness input')\n .val(),\n )\n\n var path = $this.data('path')\n $.ajax({\n type: 'GET',\n url: path,\n complete(data) {\n if (data.status === 200) {\n $target.append(data.responseText)\n initializeLeadCaptureFormFields($('#additional-sidebar').find('.selected-form-field').last())\n var $lastField = $('#additional-sidebar').find('.selected-form-field').last()\n $lastField.find('.selected-form-field-orderness input').val(lastOrder + 1)\n if ($this.hasClass('custom-field-option')) {\n $lastField.find('input').focus()\n\n $lastField.find('input').on('keydown', function (e) {\n if (e.keyCode === 13) {\n e.preventDefault()\n handleLCFNewFieldCreationSubmission($lastField.find('.btn.create-field-btn'), lastOrder)\n }\n })\n\n $lastField.find('.btn.create-field-btn').on('click', function () {\n handleLCFNewFieldCreationSubmission($(this), lastOrder)\n })\n } else {\n enableApplyToPreviewButton()\n }\n\n $lastField[0].scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n inline: 'nearest',\n })\n } else {\n $('#global-alerts').append(data.responseText)\n $this.removeClass('disabled')\n }\n },\n })\n }\n })\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n $('body').on('click', '#add-new-agreement', function () {\n $('#new-agreement-nav-warning').modal('toggle')\n })\n\n $('body').on('click', '.go-to-new-agreement', function () {\n window.open(window.location.origin + $(this).data().path, '_blank')\n })\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n $('body').on('click', '.go-to-new-trial-membership', function () {\n window.open(window.location.origin + $(this).data().path, '_blank')\n })\n\n $('body').on('click', '#manage-program-signups', function () {\n $('#manage-program-signups-nav-warning').modal('toggle')\n })\n\n $('body').on('click', '.go-to-program-signups', function () {\n window.open(window.location.origin + $(this).data().path, '_blank')\n })\n})\n", "$(document).on('turbo:load', function () {\n 'use strict'\n\n let $confirmationEmailToggle = $('#confirmation-email-toggle')\n\n $confirmationEmailToggle.bootstrapToggle('destroy')\n $confirmationEmailToggle.bootstrapToggle()\n $confirmationEmailToggle.bootstrapToggle('enable')\n\n $confirmationEmailToggle.change(function () {\n if (this.checked) {\n $('.confirmation-email-container').removeClass('hidden')\n } else {\n $('.confirmation-email-container').addClass('hidden')\n }\n })\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n let $quickConnectToggle = $('#quick-connect-toggle')\n\n $quickConnectToggle.bootstrapToggle('destroy')\n $quickConnectToggle.bootstrapToggle()\n $quickConnectToggle.bootstrapToggle('enable')\n\n if ($quickConnectToggle.prop('checked') === false) $('.sms-selector-container').addClass('hidden')\n\n // Display \"You need a Required Phone#\" message when no require phone# (or when on Landing Page)\n let $phoneNumberRequiredField = $('[name=\"fields[phone][required]\"]').parent()\n if (!$phoneNumberRequiredField.length) {\n $quickConnectToggle.parent().addClass('disabled')\n $('.quick-connect-container .phone-number-needed').removeClass('hidden')\n }\n\n // initial check for lcf qc enable-able\n if ($('.selected-module .lead-capture-form-item input:checked').data('canEnableQuickConnect')) {\n $quickConnectToggle.parent().removeClass('disabled')\n $('.quick-connect-container .phone-number-needed').addClass('hidden')\n }\n\n // Enable toggling when QC-able LCF selected\n $('.lead-capture-form-item label').on('click', function (e) {\n if ($(e.target).parent().find('input').data('canEnableQuickConnect')) {\n $quickConnectToggle.parent().removeClass('disabled')\n $('.quick-connect-container .phone-number-needed').addClass('hidden')\n } else {\n $quickConnectToggle.parent().addClass('disabled')\n $quickConnectToggle.bootstrapToggle('off')\n $('.quick-connect-container .phone-number-needed').removeClass('hidden')\n }\n })\n\n // Enable toggling when phone selected on LCF edit\n $('li.form-option-phone').on('click', function () {\n $quickConnectToggle.parent().removeClass('disabled')\n $('.quick-connect-container .phone-number-needed').addClass('hidden')\n })\n\n // Toggle off when phone number set to not required\n $('input[value=phone]')\n .parents('.other-fields')\n .find('.selected-form-field-requireness .btn')\n .on('click', function (e) {\n if ($(e.target).parents('.btn').find('.is-required.active')) {\n $quickConnectToggle.bootstrapToggle('off')\n $('.quick-connect-container .phone-number-needed').removeClass('hidden')\n } else {\n $quickConnectToggle.parent().removeClass('disabled')\n $('.quick-connect-container .phone-number-needed').addClass('hidden')\n }\n })\n\n $quickConnectToggle.change(function () {\n if (this.checked) {\n $('.sms-selector-container').removeClass('hidden')\n\n $phoneNumberRequiredField.find('input').prop('checked', true)\n $phoneNumberRequiredField.find('.is-required').toggleClass('active')\n $phoneNumberRequiredField.find('.not-required').toggleClass('active')\n $('.quick-connect-container .set-phone-number-required').removeClass('hidden')\n } else {\n $('.sms-selector-container').addClass('hidden')\n $('.quick-connect-container .set-phone-number-required').addClass('hidden')\n }\n })\n\n let $quickConnectEmailToggle = $('#quick-connect-email-toggle')\n\n $quickConnectEmailToggle.bootstrapToggle('destroy')\n $quickConnectEmailToggle.bootstrapToggle()\n $quickConnectEmailToggle.bootstrapToggle('enable')\n\n $quickConnectEmailToggle.change(function () {\n if (this.checked) {\n $('.email-selector-container .form-fields').show()\n $('.email-selector-container').removeClass('hidden')\n } else {\n $('.email-selector-container').addClass('hidden')\n }\n })\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n let $redirectIframeToggle = $('#redirect-within-iframe')\n\n $redirectIframeToggle.bootstrapToggle('destroy')\n $redirectIframeToggle.bootstrapToggle()\n $redirectIframeToggle.bootstrapToggle('enable')\n\n $('#redirect-url').on('keyup', function () {\n let form = document.querySelector('#landing-page-form')\n var hasInvalidURL =\n !$('#redirect-url')[0].checkValidity() || ($('#redirect-url').val() === '' && $('#redirect-toggle').checked)\n\n if (hasInvalidURL) {\n $('.redirect-url-container').addClass('input-danger')\n $('.redirect-feedback').removeClass('hidden')\n form.querySelector('button[type=\"submit\"]').disabled = true\n } else {\n $('.redirect-url-container').removeClass('input-danger')\n $('.redirect-feedback').addClass('hidden')\n form.querySelector('button[type=\"submit\"]').disabled = false\n }\n })\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n $('.visible').on('click', function () {\n $(this).find('span').toggleClass('hidden')\n\n const $hiddenFormField = $(this).find(\"input[type='Checkbox']\")[0]\n $hiddenFormField.checked = !$hiddenFormField.checked\n })\n})\n", "/* global loadLazyPartial */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n $('body').on('click', '.comments_filter_by_staff', function (event) {\n event.preventDefault()\n\n var $target = $('#comments')\n var path = $(this).data().path\n\n loadLazyPartial(path, $target)\n })\n})\n", "function profilePhotoUploader() {\n 'use strict'\n\n $('.uploadable-photo').on('click', function () {\n $('.uploadable-photo-input').trigger('click')\n })\n\n function putFile(e) {\n var file = null\n\n var dt = e.dataTransfer || (e.originalEvent && e.originalEvent.dataTransfer)\n var fileList = e.target.files || (dt && dt.files)\n\n for (var i = 0; i < fileList.length; i++) {\n if (fileList[i].type.match(/^image\\//)) {\n file = fileList[i]\n break\n }\n }\n\n var formData = new FormData()\n formData.append('photo', file)\n\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n $.ajax({\n url: $('.uploadable-photo-container').data().path,\n enctype: 'multipart/form-data',\n method: 'PUT',\n data: formData,\n processData: false,\n contentType: false,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n }).done((data) => {\n $('.profile-photo-container').html(data)\n profilePhotoUploader()\n\n const cw = $('.profile-photo').width()\n $('.profile-photo').css({ height: `${cw}px` })\n\n $(window).resize(() => {\n const width = $('.profile-photo').width()\n $('.profile-photo').css({ height: `${width}px` })\n })\n })\n }\n\n $('.uploadable-photo-input').on('change', function (e) {\n putFile(e)\n })\n\n $('.uploadable-photo').on('drop', function (e) {\n e.stopPropagation()\n e.preventDefault()\n\n putFile(e)\n })\n\n $('.uploadable-photo-container').on('dragover', function (e) {\n e.stopPropagation()\n e.preventDefault()\n\n e.dataTransfer.dropEffect = 'copy'\n })\n\n $('.uploadable-photo-container').on('dragenter', function (e) {\n e.stopPropagation()\n e.preventDefault()\n })\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n profilePhotoUploader()\n})\n", "/* global Turbo */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n //\n // Set sidebar items to expanded or collapsed based on preferences\n //\n $('.profile-sidebar-content .sidebar-header').each(function () {\n var preferences = $('.profile-sidebar-content').data()\n var section_name = this.id.substring(8) // chop off the 'sidebar_'\n\n if (preferences[section_name] !== 'expanded') toggleSidebarSection($(this))\n\n $(this).on('click', function () {\n toggleSidebarSection($(this))\n\n section_name = this.id.substring(8) // chop off the 'sidebar_'\n var pref_update = {}\n if (preferences[section_name] === 'expanded') pref_update[section_name] = 'collapsed'\n else pref_update[section_name] = 'expanded'\n\n updateProfileSidebarPreferences(pref_update)\n })\n })\n\n function updateProfileSidebarPreferences(preferences) {\n var path = '/preferences/'\n $.ajax({\n type: 'PUT',\n url: path,\n data: {\n key: 'profile_sidebar',\n preferences,\n },\n complete(data) {\n if (data.status === 200) Turbo.cache.clear()\n else $('#global-alerts').append(data.responseText)\n },\n })\n }\n\n function toggleSidebarSection($this) {\n var section = $this.closest('.section')\n var content = section.find('.section-content')\n content.toggle('hidden')\n\n var chevron = $this.find('.pull-right')\n if (chevron.css('transform') === 'none') chevron.css({ transform: 'rotate(180deg)' })\n else chevron.css({ transform: 'none' })\n }\n\n // Handle expand/collapse of entire sidebar in mobile/tablet\n $(\n '#student-profile .toggle-profile-sidebar-content, \\\n #prospect-profile .toggle-profile-sidebar-content',\n ).on('click', function () {\n var section = $(this).parent().find('.profile-sidebar-content')\n section.toggle('hidden')\n\n var icon = $(this).find('i')\n if (icon.css('transform') === 'none') icon.css({ transform: 'rotate(180deg)' })\n else icon.css({ transform: 'none' })\n })\n\n // If we resize and vacate tablet/mobile, we need to clear\n // display: none that may have been added from above toggling\n $(window).on('resize', function () {\n var tabletSize = 993\n var sidebar = $('.profile-sidebar-content')[0]\n if (sidebar !== undefined && window.innerWidth >= tabletSize && sidebar.style.display != null) {\n sidebar.style.display = null\n }\n })\n})\n", "/* global loadLazyPartial */\n/* global addPDFPreview */\n/* global intlTelInput */\n\nfunction agreementToggle() {\n 'use strict'\n\n var behavior = {\n template() {\n toggleButton('.template-agreement')\n\n $('.choose-template').removeClass('text-muted')\n $('.template-select-box').removeClass('hidden')\n $('.agreement-template').removeClass('hidden')\n $('.dummy-select-box').addClass('hidden')\n\n $('.agreement-editor').addClass('hidden')\n $('.new-upload-pdf').addClass('hidden')\n $('.new-agreement-editor').addClass('hidden')\n $('#add-new-agreement').data().mode = 'template'\n },\n custom() {\n toggleButton('.custom-agreement')\n\n $('.choose-template').removeClass('text-muted')\n $('.template-select-box').removeClass('hidden')\n $('.dummy-select-box').addClass('hidden')\n\n $('.agreement-template').addClass('hidden')\n $('.agreement-editor').removeClass('hidden')\n $('.new-upload-pdf').addClass('hidden')\n $('.new-agreement-editor').addClass('hidden')\n $('#add-new-agreement').data().mode = 'custom'\n },\n newTemplate() {\n toggleButton('.new-template-agreement')\n\n $('.choose-template').addClass('text-muted')\n $('.template-select-box').addClass('hidden')\n $('.dummy-select-box').removeClass('hidden')\n $('.dummy-select-box').addClass('disabled')\n\n $('.agreement-template').addClass('hidden')\n $('.agreement-editor').addClass('hidden')\n $('.new-upload-pdf').removeClass('hidden')\n $('.new-agreement-editor').removeClass('hidden')\n $('#add-new-agreement').data().mode = 'newTemplate'\n\n let dropzoneComp = document.querySelector('.dropzone.dropzone-default').dropzone\n if (dropzoneComp) {\n dropzoneComp.removeAllFiles()\n }\n },\n }\n\n function toggleButton(button) {\n var buttons = ['.template-agreement', '.custom-agreement', '.new-template-agreement']\n var disabledButtons = buttons.filter(function (item) {\n return item !== button\n })\n disabledButtons.forEach(function (btn) {\n $(btn).removeClass('btn-primary')\n $(btn).addClass('btn-default-alt')\n })\n\n $(button).addClass('btn-primary')\n $(button).removeClass('btn-default-alt')\n }\n\n return behavior\n}\n\nfunction agreementToggleBehavior() {\n 'use strict'\n\n $('body').on('click', '.template-agreement', function () {\n agreementToggle().template()\n })\n\n $('body').on('click', '.custom-agreement', function () {\n agreementToggle().custom()\n })\n\n $('body').on('click', '.new-template-agreement', function () {\n agreementToggle().newTemplate()\n })\n}\n\nfunction selectAgreementBehavior() {\n 'use strict'\n\n var behavior = {\n loadTemplate(templateText) {\n $('.template-text').empty()\n $('.template-text').html(templateText)\n },\n loadTrix(templateText) {\n var trix = $('.agreement-trix')[0]\n trix.setAttribute('contenteditable', true)\n $('#agreement-text').val('')\n trix.editor.loadHTML('')\n trix.editor.loadHTML(templateText)\n },\n }\n\n return behavior\n}\n\n// I should feel bad for this function tbh\nfunction initializeShareAndSign(modal, response) {\n 'use strict'\n const shareUrl = response.share_url\n modal.querySelector('a.sign-here').href = shareUrl\n\n const emailBtn = modal.querySelector('.open-email')\n const smsBtn = modal.querySelector('.open-sms')\n const emailDiv = modal.querySelector('.email')\n const smsDiv = modal.querySelector('.sms')\n const sms_field = modal.querySelector('.sms input')\n const email_field = modal.querySelector('.email input')\n\n const smsIntlInput = intlTelInput(sms_field, {\n utilsScript: '/assets/intl-tel-input/utils.js',\n formatOnDisplay: true,\n separateDialCode: true,\n initialCountry: document.body.dataset.countryCode || 'us',\n })\n\n modal.querySelector('a.sign-here')\n $(modal)\n .find('a.sign-here')\n .on('click', function () {\n emailBtn.classList.remove('active')\n smsBtn.classList.remove('active')\n emailDiv.classList.add('hidden')\n smsDiv.classList.add('hidden')\n })\n\n $(modal)\n .find('.open-sms')\n .on('click', function () {\n emailBtn.classList.remove('active')\n smsBtn.classList.add('active')\n emailDiv.classList.add('hidden')\n smsDiv.classList.remove('hidden')\n email_field.required = false\n sms_field.required = true\n })\n\n $(modal)\n .find('.open-email')\n .on('click', function () {\n emailBtn.classList.add('active')\n smsBtn.classList.remove('active')\n emailDiv.classList.remove('hidden')\n smsDiv.classList.add('hidden')\n email_field.required = true\n sms_field.required = false\n })\n\n $(modal).on('hidden.bs.modal', function () {\n $('#save-agreement').attr('disabled', false)\n })\n\n const agreementId = response.agreement_id\n const sendSelectors = ['button.send-email', 'button.send-sms']\n\n for (const selector of sendSelectors) {\n modal.querySelector(selector).addEventListener('click', () => {\n const option = selector.split('-')[1]\n\n if (option === 'email') {\n email_field.reportValidity()\n if (!email_field.checkValidity()) return\n }\n\n let sms_value = ''\n if (option === 'sms' && !sms_field.value) {\n sms_field.reportValidity()\n if (!sms_field.checkValidity()) return\n } else {\n sms_value = smsIntlInput.getNumber()\n }\n\n $.post(\n `/agreements/${agreementId}/share`,\n {\n type: option,\n email: email_field.value,\n sms: sms_value,\n share_url: shareUrl,\n },\n function () {\n $(modal).modal('hide')\n if (option === 'email') {\n const $email_modal = $('#email-confirmation')\n $email_modal.modal('show')\n $email_modal.on('hidden.bs.modal', function () {\n loadLazyPartial($('.module#agreements').data().path, $('.module#agreements'))\n $('#save-agreement').attr('disabled', false)\n })\n } else if (option === 'sms') {\n const $sms_modal = $('#sms-confirmation')\n $sms_modal.modal('show')\n $sms_modal.on('hidden.bs.modal', function () {\n loadLazyPartial($('.module#agreements').data().path, $('.module#agreements'))\n $('#save-agreement').attr('disabled', false)\n })\n }\n },\n )\n })\n }\n}\n\nfunction saveAndShareBehavior() {\n 'use strict'\n $('body').on('click', '#save-agreement', function () {\n if ($(this).attr('disabled')) return\n\n $(this).attr('disabled', true)\n var templateText = $('#agreement-preview .agreement-content-container').html()\n\n var selectedTemplate = $('#select-agreements option:selected').data().templateId\n var signatureType = $('#select-agreements option:selected').data().signatureType\n const personId = document.querySelector('#add-new-agreement').dataset.personId\n const personType = document.querySelector('#add-new-agreement').dataset.personType\n\n if (personId) {\n var data = {\n template_id: selectedTemplate,\n content: templateText,\n signature_type: signatureType,\n }\n\n $.post(`/${personType}/${personId}/agreements`, data, function (response) {\n $('#preview-agreement-go-back').addClass('hidden')\n $('#close-agreement-modal').removeClass('hidden')\n\n $('#agreement-preview').modal('hide')\n\n const shareModal = document.getElementById('share-and-sign-agreement')\n $(shareModal).modal('show')\n initializeShareAndSign(shareModal, response)\n })\n }\n })\n}\n\nfunction goBackBehavior() {\n 'use strict'\n\n $('body').on('click', '#preview-agreement-go-back', function () {\n $('#agreement-preview').modal('hide')\n $('#add-new-agreement').modal('show')\n })\n}\n\nfunction templateSelectBehavior() {\n 'use strict'\n\n $(document).on('shown.bs.modal', '#add-new-agreement', function () {\n $('#dummy-select-agreements').select2({\n placeholder: $('#dummy-select-agreements').data().placeholder,\n theme: 'bootstrap',\n width: '100%',\n })\n $('#select-agreements').select2({\n placeholder: $('#select-agreements').data().placeholder,\n theme: 'bootstrap',\n width: '100%',\n })\n })\n\n $('body').on('change', '#select-agreements', function () {\n var templateText = $(this).val()\n\n selectAgreementBehavior().loadTemplate(templateText)\n selectAgreementBehavior().loadTrix(templateText)\n\n $('.select-template-text').addClass('hidden')\n $('.preview-agreement')[0].disabled = false\n })\n\n $('body').on('click', '.preview-agreement', function () {\n $('#agreement-preview').modal('show')\n $('#agreement-preview #save-agreement')[0].disabled = true\n $('#agreement-preview .agreement-content-container').html(agreementPreviewLoading())\n var templateId = $('#select-agreements option:selected').data().templateId\n var studentId = $('#add-new-agreement').data().studentId\n var previewPath = $(this).data().path\n var csrfToken = $('meta[name=\"csrf-token\"]').attr('content')\n\n var override_tokens = {}\n $('.override-tokens .form-fields input').each(function () {\n if (this.value !== '') override_tokens[this.id] = this.value\n })\n\n var data = {\n template_id: templateId,\n student_id: studentId,\n override_tokens,\n }\n\n if ($('#add-new-agreement').data().mode === 'custom') {\n let trix = $('.agreement-trix')[0]\n data.content = trix.value\n } else if ($('#add-new-agreement').data().mode === 'newTemplate') {\n let trix = $('.new-agreement-trix')[0]\n data.content = trix.value\n } else if ($('#add-new-agreement').data().mode === 'template') {\n data.content = $('.template-text').html()\n }\n\n $.ajax({\n type: 'POST',\n url: previewPath,\n data,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', csrfToken)\n },\n complete(_data) {\n if (_data.status === 200) {\n $('#agreement-preview .agreement-content-container').html(_data.responseText)\n $('#agreement-preview #save-agreement')[0].disabled = false\n } else {\n $('#global-alerts').append(_data.responseText)\n return false\n }\n return false\n },\n })\n })\n}\n\nfunction agreementPreviewLoading() {\n return `\n <div class=\"flex justify-center\">\n <i class='fa fa-spinner fa-2x fa-spin'></i>\n </div>\n `\n}\n\nfunction cancelClickBehavior() {\n $('body').on('click', '#cancel-agreement', function () {\n $('#select-agreements').val(null).trigger('change')\n\n var trix = $('.agreement-trix')[0]\n $('#agreement-text').val('')\n trix.editor.loadHTML('')\n\n agreementToggle().template()\n })\n}\n\nfunction agreementClickBehavior() {\n 'use strict'\n\n $('body').on('click', '.show-agreement', function () {\n $('#agreement-show').modal('show')\n var path = $(this).data().path\n var title = $(this).data().title\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n $.ajax({\n type: 'GET',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n complete(data) {\n if (data.status === 200) {\n $('#agreement-show h5.modal-title').text(title)\n $('#agreement-show .agreement-content-container').html(data.responseJSON.content)\n\n const pdfViewer = document.querySelector('#agreement-pdf-viewer')\n if (pdfViewer) {\n addPDFPreview(pdfViewer)\n }\n const form = document.querySelector('#send-agreement-form')\n if (data.responseJSON.share_url) {\n $('.share-agreement').removeClass('hidden')\n const shareModal = document.getElementById('share-and-sign-agreement')\n initializeShareAndSign(shareModal, data.responseJSON)\n\n $('.share-agreement').on('click', function () {\n $('#agreement-show').modal('hide')\n $(shareModal).modal('show')\n })\n $('.send-agreement').addClass('hidden')\n form.action = null\n } else {\n form.action = `/agreements/email_agreements/${data.responseJSON.agreement_id}`\n $('.share-agreement').addClass('hidden')\n $('.send-agreement').removeClass('hidden')\n\n document.addEventListener(\n 'turbo:submit-end',\n () => {\n $('#agreement-send').removeClass('open in')\n $('#agreement-send').modal('hide')\n },\n { once: true },\n )\n }\n } else {\n $('#global-alerts').append(data.responseText)\n return false\n }\n return false\n },\n })\n })\n}\n\nfunction toggleTokenOverrideChevron(e) {\n $(e.target).prev('.override-token-header').find('i').toggleClass('fa-chevron-down fa-chevron-up')\n}\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n agreementClickBehavior()\n agreementToggleBehavior()\n templateSelectBehavior()\n goBackBehavior()\n saveAndShareBehavior()\n cancelClickBehavior()\n\n $(document).on('hidden.bs.collapse', toggleTokenOverrideChevron)\n $(document).on('shown.bs.collapse', toggleTokenOverrideChevron)\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n $('body').on('click', '.history-metadata-container .fa-plus', function () {\n $(this).hide()\n $(this).parent().find('.fa-minus').show()\n $(this).parent().find('.history-metadata-details').slideDown('fast')\n })\n\n $('body').on('click', '.history-metadata-container .fa-minus', function () {\n $(this).hide()\n $(this).parent().find('.fa-plus').show()\n $(this).parent().find('.history-metadata-details').slideUp('fast')\n $(this).parent().find('.history-metadata-details + .history-metadata-details').show()\n })\n\n $('body').on('click', '.view-more-metadata-details', function (e) {\n e.preventDefault()\n $(this).parent().parent().find('.history-event').removeClass('hidden')\n $(this).hide()\n })\n})\n", "$(document).on('shown.bs.modal', '#ata-submission-modal', function () {\n $('#queue-for-submission').on('click', function () {\n var promoId = $('#ata-submission-modal').data('promotionId')\n var studentId = $('#ata-submission-modal').data('studentId')\n\n jQuery.ajax({\n type: 'PUT',\n url: `/students/${studentId}/promotions/${promoId}`,\n data: { promotion: { queued: true } },\n success() {\n $('#ata-submission-modal').modal('hide')\n $('#ata-submission-success').modal('show')\n },\n })\n })\n})\n", "/* global loadLazyPartial */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n function initializeSelect2() {\n $('#select-program').select2({\n placeholder: $('#select-program').data().placeholder,\n theme: 'bootstrap',\n })\n\n $('#select-rank').select2({\n placeholder: $('#select-rank').data().placeholder,\n theme: 'bootstrap',\n })\n }\n\n function initializeProgramRows($row) {\n $($row).on('click', function (e) {\n e.preventDefault()\n $(this).toggleClass('removed')\n var hidden_field = $(this).find('.program_row_val')\n hidden_field.prop('disabled', function (i, v) {\n return !v\n })\n\n var icon = $(this).find('i')\n if (icon.css('transform') === 'none') {\n icon.css({\n transform: 'rotate(45deg)',\n transition: '.25s',\n })\n } else {\n icon.css({ transform: 'none' })\n }\n\n $('.subtext').removeClass('hidden')\n })\n }\n\n function loadRanksForProgram(selectedProgram) {\n var ranks = selectedProgram.data().ranks\n ranks = $.map(ranks, (id_name) => ({\n id: id_name[0],\n text: id_name[1],\n }))\n\n $('#select-rank').empty().select2({\n data: ranks,\n theme: 'bootstrap',\n })\n }\n\n function createElementFromSelections() {\n var program_id = $('#select-program').val()\n var program_name = $('#select-program option:selected').text()\n var rank_id = $('#select-rank').val()\n var rank_name = $('#select-rank option:selected').text()\n\n var belt_html = getBeltHtml(program_id, rank_id)\n var div = `\n <div class=\"program-row row\">\n <div class=\"col-xs-9\">\n <input type=\"hidden\" name=\"program_rank_ids[${program_id}]\" value=\"${rank_id}\">\n ${belt_html}\n <span>\n ${rank_name}, ${program_name}\n </span>\n </div>\n <div class=\"col-xs-3 pull-right remove-program\">\n <i class=\"fas fa-times\"></i>\n </div>\n </div>\n `\n $('.current-programs').append(div)\n $(`#select-program option[value='${program_id}']`).remove()\n }\n\n function getBeltHtml(program_id, rank_id) {\n var path = `/programs/${program_id}/ranks/${rank_id}/belt_image`\n var token = $('meta[name=\"csrf-token\"]').attr('content')\n var html\n $.ajax({\n type: 'GET',\n url: path,\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', token)\n },\n async: false,\n complete(data) {\n if (data.status === 200) html = data.responseText\n else return false\n },\n })\n return html\n }\n\n $('#student .lazy-load#programs-and-ranks').on('lazy-load:complete', function () {\n initializeSelect2()\n $.each($('.program-row'), function (_idx, row) {\n initializeProgramRows(row)\n })\n })\n\n $(document).on('shown.bs.modal', '#manage-programs-modal', function () {\n $('#select-program').removeAttr('required')\n $('#select-rank').removeAttr('required')\n\n $('#select-program').on('change', function () {\n var selectedProgram = $('#select-program option:selected')\n loadRanksForProgram(selectedProgram)\n\n $('.add-program-btn').removeAttr('disabled')\n })\n\n $('.add-program-btn').on('click', function () {\n if ($(this).attr('disabled')) return false\n\n $('.subtext').removeClass('hidden')\n\n createElementFromSelections()\n\n // clear selections\n $('#select-program').val(null).trigger('change')\n $('#select-rank.select2-hidden-accessible').select2('destroy').empty()\n initializeSelect2()\n // initialize add/remove for new row\n initializeProgramRows($('.program-row:last-child')[0])\n // re-disable add button\n $('.add-program-btn').attr('disabled', true)\n })\n\n $('#manage-programs-modal')\n .find('form')\n .on('ajax:complete', function (e) {\n var $modal = $('#manage-programs-modal')\n var $globalAlerts = $('#global-alerts')\n if (e.originalEvent.detail[0].status === 200) {\n $modal.modal('hide')\n var $target = $(this).closest('.lazy-load')\n var path = $target.data().path\n loadLazyPartial(path, $target, true, true)\n $('#programs-saved').modal('show')\n } else {\n $globalAlerts.append(e.originalEvent.detail[0].responseText)\n $modal.modal('hide')\n }\n })\n\n var closeBtns = $('#manage-programs-modal').find('[data-dismiss=modal]')\n $.each(closeBtns, function (i, btn) {\n $(btn).on('click', function () {\n $('#program-cancel').modal('show')\n })\n })\n })\n})\n\n$(document).on('shown.bs.modal', '#program-cancel', function () {\n $('#dont-cancel-programs').on('click', function () {\n $('#program-cancel').modal('hide')\n $('#manage-programs-modal').modal('show')\n })\n\n $('#confirm-cancel-programs').on('click', function () {\n // if we refresh the partial, it'll reset the manage modal\n $('#program-cancel').modal('hide')\n var $target = $(this).closest('.lazy-load')\n var path = $target.data().path\n loadLazyPartial(path, $target, true, true)\n })\n})\n", "/* global App */\n/* global initializeAttendanceLogProgramSelector */\n/* global handleAttendanceModuleContextSwitching */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n var schoolId = $('body.school').data('school-id')\n var userId = $('body.school').data('user-id')\n var isStudentsView = $('body').hasClass('students')\n var isStudentProfileView = $('body').hasClass('person-profile') && $('div[id=student]').length > 0\n const shouldSet =\n schoolId && userId && (isStudentsView || isStudentProfileView) && !App.attendances_delete_notifications\n\n if (shouldSet) {\n App.attendances_delete_notifications = App.cable.subscriptions.create(\n {\n channel: 'AttendancesDeleteNotificationsChannel',\n schoolId,\n },\n {\n connected() {\n // Called when the subscription is ready for use on the server\n },\n\n disconnected() {\n // Called when the subscription has been terminated by the server\n },\n\n received(data) {\n // Called when there's incoming data on the websocket for this channel\n\n if (validId(data.user_id)) {\n if (data.updated_partial) {\n var $attendanceLogItems = $('.student-attendance-log-items')\n if ($attendanceLogItems.length) {\n var $attendanceLogItemsParent = $attendanceLogItems.parent()\n $attendanceLogItemsParent.html(data.updated_partial)\n\n initializeAttendanceLogProgramSelector(data.selected_program_id)\n handleAttendanceModuleContextSwitching()\n }\n }\n if (!data.error) {\n var bulkCheckbox = $('input#select-all')\n bulkCheckbox.prop('checked', false)\n bulkCheckbox.parent().find('.spinner.spinner-grow').remove()\n bulkCheckbox.show()\n }\n if (data.message) {\n if (data.notification_class) $(`.alert.${data.notification_class}`).hide()\n\n $('#global-alerts').append(data.message)\n }\n }\n },\n },\n )\n }\n function validId(id) {\n return id === undefined || (id > 0 && id === userId) || (id < 0 && Math.abs(id) !== userId)\n }\n})\n", "/* global App */\n/* global loadLazyPartial */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n var schoolId = $('body.school').data('school-id')\n var userId = $('body.school').data('user-id')\n var isStudentProfileView = $('body').hasClass('person-profile') && $('div[id=student]').length > 0\n var isProspectProfileView = $('body').hasClass('person-profile') && $('div[id=prospect]').length > 0\n var onProfileView = isStudentProfileView || isProspectProfileView\n const shouldSet = schoolId && userId && onProfileView && !App.person_comment_delete_notifications\n\n if (shouldSet) {\n App.person_comment_delete_notifications = App.cable.subscriptions.create(\n {\n channel: 'PersonCommentDeleteNotificationsChannel',\n schoolId,\n },\n {\n connected() {\n // Called when the subscription is ready for use on the server\n },\n\n disconnected() {\n // Called when the subscription has been terminated by the server\n },\n\n received(data) {\n // Called when there's incoming data on the websocket for this channel\n\n if (validId(data.user_id)) {\n if (data.reload) {\n var $commentsModule = $('#comments')\n if ($commentsModule.length) {\n var $this = $('#comments')\n var path = $this.data('path')\n\n loadLazyPartial(path, $this)\n }\n }\n\n if (data.message) {\n if (data.notification_class) $(`.alert.${data.notification_class}`).hide()\n\n $('#global-alerts').append(data.message)\n }\n }\n },\n },\n )\n }\n function validId(id) {\n return id === undefined || (id > 0 && id === userId) || (id < 0 && Math.abs(id) !== userId)\n }\n})\n", "/* eslint-env jquery */\n\n/* global App */\n/* eslint-disable camelcase */\n/* global initializeTooltips */\n/* global initializeDropdownTabs */\n/* global initializeProspectLeadStateDropdowns */\n/* global initializeSelectAllCheckboxes */\n/* global initializeTrialMembershipScheduling */\n/* global initializeProspectNoting */\n/* global initializeAssignedToFields */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n var schoolId = $('body.school').data('school-id')\n var userId = $('body.school').data('user-id')\n var isProspectsView = $('body').hasClass('prospects')\n const shouldSet = schoolId && userId && isProspectsView && !App.prospects_bulk_edit_notifications\n\n if (shouldSet) {\n App.prospects_bulk_edit_notifications = App.cable.subscriptions.create(\n {\n channel: 'ProspectsBulkEditNotificationsChannel',\n schoolId,\n },\n {\n connected() {\n // Called when the subscription is ready for use on the server\n },\n\n disconnected() {\n // Called when the subscription has been terminated by the server\n },\n\n received(data) {\n // Called when there's incoming data on the websocket for this channel\n\n if (validId(data.user_id)) {\n if (data.prospect_id && data.updated_partial) {\n var $prospectContainer = $(`.prospect-wrapper.prospect-${data.prospect_id}-container`)\n if ($prospectContainer.length) {\n $prospectContainer.html(data.updated_partial)\n\n initializeTooltips($prospectContainer)\n initializeDropdownTabs($prospectContainer)\n initializeProspectLeadStateDropdowns($prospectContainer)\n initializeSelectAllCheckboxes(\n $prospectContainer.find(\"input.select-all-item[type='checkbox']\"),\n false,\n )\n initializeAssignedToFields($prospectContainer)\n initializeTrialMembershipScheduling($prospectContainer)\n initializeProspectNoting($prospectContainer)\n }\n }\n if (!data.error) {\n var bulkCheckbox = $('input#select-all')\n bulkCheckbox.prop('checked', false)\n bulkCheckbox.parent().find('.spinner.spinner-grow').remove()\n bulkCheckbox.show()\n }\n if (data.message) {\n if (data.notification_class) $(`.alert.${data.notification_class}`).hide()\n\n $('#global-alerts').append(data.message)\n }\n }\n },\n },\n )\n }\n function validId(id) {\n return id === undefined || (id > 0 && id === userId) || (id < 0 && Math.abs(id) !== userId)\n }\n})\n/* eslint-enable camelcase */\n", "/* eslint-env jquery */\n\n/* global App */\n/* eslint-disable camelcase */\n/* global initializeTooltips */\n/* global initializeDropdownTabs */\n/* global initializeSelectAllCheckboxes */\n/* global initializeStudentStatusDropdowns */\n/* global initializeStudentAttendanceLog */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n const schoolId = $('body.school').data('school-id')\n const userId = $('body.school').data('user-id')\n const isStudentsView = $('body').hasClass('students')\n const shouldSet = schoolId && userId && isStudentsView && !App.student_restore_notifications\n\n if (shouldSet) {\n App.student_rprospectestore_notifications = App.cable.subscriptions.create(\n {\n channel: 'StudentRestoreNotificationsChannel',\n schoolId,\n },\n {\n connected() {\n // Called when the subscription is ready for use on the server\n },\n\n disconnected() {\n // Called when the subscription has been terminated by the server\n },\n\n received(data) {\n // Called when there's incoming data on the websocket for this channel\n\n if (validId(data.user_id)) {\n if (data.student_id && data.updated_partial) {\n var $studentContainer = $(`.student-wrapper.student-${data.student_id}-container`)\n if ($studentContainer.length) {\n $studentContainer.html(data.updated_partial)\n\n initializeTooltips($studentContainer)\n initializeDropdownTabs($studentContainer)\n initializeStudentStatusDropdowns($studentContainer)\n initializeSelectAllCheckboxes(\n $studentContainer.find(\"input.select-all-item[type='checkbox']\"),\n false,\n )\n initializeStudentAttendanceLog($studentContainer)\n }\n }\n if (data.message) {\n if (data.notification_class !== undefined) $(`.alert.${data.notification_class}`).hide()\n\n $('#global-alerts').append(data.message)\n }\n }\n },\n },\n )\n }\n function validId(id) {\n return id === undefined || (id > 0 && id === userId) || (id < 0 && Math.abs(id) !== userId)\n }\n})\n/* eslint-enable camelcase */\n", "/* eslint-env jquery */\n\n/* global App */\n/* eslint-disable camelcase */\n/* global initializeTooltips */\n/* global initializeDropdownTabs */\n/* global initializeSelectAllCheckboxes */\n/* global initializeStudentStatusDropdowns */\n/* global initializeStudentAttendanceLog */\n\n$(document).on('turbo:load', function () {\n 'use strict'\n\n var schoolId = $('body.school').data('school-id')\n var userId = $('body.school').data('user-id')\n var isStudentsView = $('body').hasClass('students')\n const shouldSet = schoolId && userId && isStudentsView && !App.students_bulk_edit_notifications\n\n if (shouldSet) {\n App.students_bulk_edit_notifications = App.cable.subscriptions.create(\n {\n channel: 'StudentsBulkEditNotificationsChannel',\n schoolId,\n },\n {\n connected() {\n // Called when the subscription is ready for use on the server\n },\n\n disconnected() {\n // Called when the subscription has been terminated by the server\n },\n\n received(data) {\n // Called when there's incoming data on the websocket for this channel\n\n if (validId(data.user_id)) {\n if (data.student_id && data.updated_partial) {\n var $studentContainer = $(`.student-wrapper.student-${data.student_id}-container`)\n if ($studentContainer.length) {\n $studentContainer.html(data.updated_partial)\n\n initializeTooltips($studentContainer)\n initializeDropdownTabs($studentContainer)\n initializeStudentStatusDropdowns($studentContainer)\n initializeSelectAllCheckboxes(\n $studentContainer.find(\"input.select-all-item[type='checkbox']\"),\n false,\n )\n initializeStudentAttendanceLog($studentContainer)\n }\n }\n if (!data.error) {\n var bulkCheckbox = $('input#select-all')\n bulkCheckbox.prop('checked', false)\n bulkCheckbox.parent().find('.spinner.spinner-grow').remove()\n bulkCheckbox.show()\n }\n if (data.message) {\n if (data.notification_class !== undefined) $(`.alert.${data.notification_class}`).hide()\n\n $('#global-alerts').append(data.message)\n }\n }\n },\n },\n )\n }\n function validId(id) {\n return id === undefined || (id > 0 && id === userId) || (id < 0 && Math.abs(id) !== userId)\n }\n})\n/* eslint-enable camelcase */\n", "/* global Pallette */\n/* global Rails */\n/* global showLoadingIndicator */\n/* global hideLoadingIndicator */\n/* eslint-disable camelcase */\n/* eslint-disable new-cap */\n/* global Tokenizer */\n\n$(document).ready(basysOnLoad)\n$(document).on('lazy-load:complete', basysOnLoad)\n\nfunction basysOnLoad() {\n 'use strict'\n\n if ($('#basys-card-element').length) {\n // NOTE: Clear it out in case we're re-initializing it\n $('#basys-card-element').html('')\n\n var secondaryColor = Pallette.black\n if ($('#credit-card-token').data('colors-secondary-color').length) {\n secondaryColor = $('#credit-card-token').data('colors-secondary-color')\n }\n\n var tertiaryColor = Pallette.white\n if ($('#credit-card-token').data('colors-tertiary-color').length) {\n tertiaryColor = $('#credit-card-token').data('colors-tertiary-color')\n }\n\n var invalidColor = Pallette.red\n if ($('#credit-card-token').data('colors-secondary-color').length) {\n invalidColor = $('#credit-card-token').data('colors-secondary-color')\n }\n\n var BASYS_PUBLIC_KEY = $('#basys-account-token').data('public-key')\n\n let FORM = $('#basys-card-element').closest('form')[0]\n var $basysSubmitButton = $('button[data-disable-with]')\n var BASYS_FORM_SUBMIT_DISABLE_WITH_VALUE = $basysSubmitButton.data('disable-with')\n var BASYS_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE = $basysSubmitButton.html()\n var BASYS_CHARGE_FORM_READY_FOR_SUBMISSION = false\n $basysSubmitButton.removeAttr('data-disable-with')\n\n var tokenizer = new Tokenizer({\n apikey: BASYS_PUBLIC_KEY,\n container: document.querySelector('#basys-card-element'),\n submission(resp) {\n $('#basys-card-element').removeClass('invalid')\n switch (resp.status) {\n case 'success':\n $('#credit-card-token').val(resp.token)\n BASYS_CHARGE_FORM_READY_FOR_SUBMISSION = true\n Rails.fire(FORM, 'submit')\n break\n case 'error':\n if ($('#basys-card-element').closest('.hidden').length) {\n BASYS_CHARGE_FORM_READY_FOR_SUBMISSION = true\n Rails.fire(FORM, 'submit')\n } else {\n $('#basys-card-errors').html(resp.msg)\n $basysSubmitButton.attr('disabled', false)\n $basysSubmitButton.html(BASYS_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n hideLoadingIndicator()\n }\n break\n case 'validation':\n if ($('#basys-card-element').closest('.hidden').length) {\n BASYS_CHARGE_FORM_READY_FOR_SUBMISSION = true\n Rails.fire(FORM, 'submit')\n } else {\n $('#basys-card-errors').html('Invalid card information')\n $basysSubmitButton.attr('disabled', false)\n $basysSubmitButton.html(BASYS_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n hideLoadingIndicator()\n }\n break\n // skip default case\n }\n },\n settings: {\n payment: { placeholderCreditCard: 'CARD NUMBER' },\n styles: {\n '.payment input': {\n border: 'none',\n 'border-bottom': `solid 2px ${Pallette.secondaryDark}`,\n 'border-radius': '0',\n\n 'padding-top': '20px',\n 'padding-bottom': '20px',\n\n 'background-color': tertiaryColor,\n color: secondaryColor,\n 'line-height': '36px',\n 'font-family': '\"Hind Vadodara\", sans-serif',\n 'font-size': '19px',\n 'text-transform': 'uppercase',\n },\n\n '.payment .cc input': {\n 'padding-top': '20px',\n 'padding-bottom': '20px',\n },\n\n '.payment input.invalid': { 'border-bottom': `solid 2px ${invalidColor}` },\n },\n },\n })\n\n $('#basys-card-element')\n .closest('form')\n .on('submit', function () {\n $basysSubmitButton.attr('disabled', true)\n $basysSubmitButton.html(BASYS_FORM_SUBMIT_DISABLE_WITH_VALUE)\n showLoadingIndicator()\n return true\n })\n\n setTimeout(function () {\n $('#basys-card-element')\n .closest('form')\n .on('submit', function (event) {\n if (BASYS_CHARGE_FORM_READY_FOR_SUBMISSION) return true\n\n if (event.isDefaultPrevented()) {\n $basysSubmitButton.attr('disabled', false)\n $basysSubmitButton.html(BASYS_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n hideLoadingIndicator()\n\n return false\n }\n\n event.preventDefault()\n tokenizer.submit()\n return false\n })\n }, 500)\n }\n}\n", "/* global Pallette */\n/* global Rails */\n/* global Stripe */\n/* global showLoadingIndicator */\n/* global hideLoadingIndicator */\n/* eslint-disable camelcase */\n/* eslint-disable new-cap */\n\n$(document).ready(stripeOnLoad)\n$(document).on('lazy-load:complete', stripeOnLoad)\n\nfunction stripeOnLoad() {\n 'use strict'\n\n if ($('#stripe-card-element').length) {\n let FORM = $('#stripe-card-element').closest('form')[0]\n var STRIPE_PUBLIC_KEY = $('#stripe-account-token').data('public-key')\n var STRIPE_ACCOUNT_TOKEN = $('#stripe-account-token').data('account')\n\n var secondaryColor = Pallette.black\n if ($('#credit-card-token').data('colors-secondary-color').length) {\n secondaryColor = $('#credit-card-token').data('colors-secondary-color')\n }\n\n var tertiaryColor = Pallette.white\n if ($('#credit-card-token').data('colors-tertiary-color').length) {\n tertiaryColor = $('#credit-card-token').data('colors-tertiary-color')\n }\n\n var invalidColor = Pallette.red\n if ($('#credit-card-token').data('colors-secondary-color').length) {\n invalidColor = $('#credit-card-token').data('colors-secondary-color')\n }\n\n var stripe = Stripe(STRIPE_PUBLIC_KEY, { stripeAccount: STRIPE_ACCOUNT_TOKEN })\n var elements = stripe.elements()\n var card = elements.create('card', {\n iconStyle: 'solid',\n style: {\n base: {\n iconColor: secondaryColor,\n backgroundColor: tertiaryColor,\n color: secondaryColor,\n lineHeight: '36px',\n fontFamily: '\"Hind Vadodara\", sans-serif',\n fontSize: '19px',\n textTransform: 'uppercase',\n\n '::placeholder': { color: '#aeaeab' },\n },\n invalid: {\n iconColor: invalidColor,\n color: invalidColor,\n },\n },\n })\n card.mount('#stripe-card-element')\n\n card.addEventListener('change', function (event) {\n var displayError = document.getElementById('stripe-card-errors')\n if (event.error) displayError.textContent = event.error.message\n else displayError.textContent = ''\n })\n\n document.querySelector('#stripe-card-element').addEventListener('clear:stripe', () => {\n card.clear()\n })\n\n var $stripeSubmitButton = $('button[data-disable-with]')\n var STRIPE_FORM_SUBMIT_DISABLE_WITH_VALUE = $stripeSubmitButton.data('disable-with')\n var STRIPE_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE = $stripeSubmitButton.html()\n var STRIPE_CHARGE_FORM_READY_FOR_SUBMISSION = false\n $stripeSubmitButton.removeAttr('data-disable-with')\n $('#stripe-card-element')\n .closest('form')\n .on('submit', function () {\n if ($('#stripe-card-element').closest('.hidden').length) {\n return true\n }\n\n if ($('.StripeElement--empty').length) {\n $('.StripeElement--empty').addClass('StripeElement--invalid')\n return false\n }\n\n $stripeSubmitButton.attr('disabled', true)\n $stripeSubmitButton.html(STRIPE_FORM_SUBMIT_DISABLE_WITH_VALUE)\n\n showLoadingIndicator()\n\n return true\n })\n\n // NOTE: Second stage of stripe specific concerns needs to bind after all other binds to this form submit\n setTimeout(function () {\n $('#stripe-card-element')\n .closest('form')\n .on('submit', function (event) {\n if (STRIPE_CHARGE_FORM_READY_FOR_SUBMISSION) return true\n\n if (event.isDefaultPrevented()) {\n $stripeSubmitButton.attr('disabled', false)\n $stripeSubmitButton.html(STRIPE_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n hideLoadingIndicator()\n\n return false\n }\n\n event.preventDefault()\n\n if ($('#stripe-card-element').closest('.hidden').length) {\n STRIPE_CHARGE_FORM_READY_FOR_SUBMISSION = true\n Rails.fire(FORM, 'submit')\n\n return false\n }\n\n if ($('.StripeElement--empty').length || $('.StripeElement--invalid').length) {\n $stripeSubmitButton.attr('disabled', false)\n $stripeSubmitButton.html(STRIPE_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n hideLoadingIndicator()\n\n return false\n }\n\n $('input#credit-card-token').val('payment-intent-only')\n var $form = $(this)\n $.ajax({\n type: $form.attr('method'),\n url: $form.attr('action'),\n beforeSend(xhr) {\n xhr.setRequestHeader('X-CSRF-Token', $(\"meta[name='csrf-token']\").attr('content'))\n },\n data: $form.serialize(),\n complete(data) {\n if (data.status === 200) {\n // NOTE: This is kinda hacky, but a 200 response should be handled by\n // landing_pages/new.js.haml or create.js.haml depending on what happened\n } else if (data.status === 402) {\n stripe\n .confirmCardPayment(data.responseJSON.errors.messages.payment_intent_client_secret, {\n payment_method: { card },\n setup_future_usage: 'off_session',\n })\n .then(function (result) {\n if (result.error) {\n var errorElement = document.getElementById('stripe-card-errors')\n errorElement.textContent = result.error.message\n $stripeSubmitButton.attr('disabled', false)\n $stripeSubmitButton.html(STRIPE_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n hideLoadingIndicator()\n } else {\n $('input#credit-card-token').val(result.paymentIntent.id)\n\n STRIPE_CHARGE_FORM_READY_FOR_SUBMISSION = true\n Rails.fire(FORM, 'submit')\n }\n })\n } else {\n $('#global-alerts').append(data.responseText)\n }\n },\n })\n\n return false\n })\n }, 500)\n }\n}\n", "/* global Pallette */\n/* global Rails */\n/* global showLoadingIndicator */\n/* global hideLoadingIndicator */\n/* global usaepay */\n\n$(document).ready(ePayOnLoad)\n$(document).on('lazy-load:complete', ePayOnLoad)\n\nfunction ePayOnLoad() {\n 'use strict'\n\n if ($('#usa-epay-card-element').length) {\n let FORM = $('#usa-epay-card-element').closest('form')[0]\n var USA_EPAY_PUBLIC_TOKEN = $('#usa-epay-public-token').data('public-token')\n var $usaEpaySubmitButton = $('button[data-disable-with]')\n var USA_EPAY_FORM_SUBMIT_DISABLE_WITH_VALUE = $usaEpaySubmitButton.data('disable-with')\n var USA_EPAY_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE = $usaEpaySubmitButton.html()\n var USA_EPAY_CHARGE_FORM_READY_FOR_SUBMISSION = false\n $usaEpaySubmitButton.removeAttr('data-disable-with')\n\n if (USA_EPAY_PUBLIC_TOKEN === undefined) throw new Error('No public_token found.')\n\n var secondaryColor = Pallette.black\n if ($('#credit-card-token').data('colors-secondary-color').length) {\n secondaryColor = $('#credit-card-token').data('colors-secondary-color')\n }\n\n var tertiaryColor = Pallette.white\n if ($('#credit-card-token').data('colors-tertiary-color').length) {\n tertiaryColor = $('#credit-card-token').data('colors-tertiary-color')\n }\n\n var invalidColor = Pallette.red\n if ($('#credit-card-token').data('colors-secondary-color').length) {\n invalidColor = $('#credit-card-token').data('colors-secondary-color')\n }\n\n var client = new usaepay.Client(USA_EPAY_PUBLIC_TOKEN)\n var paymentCard = client.createPaymentCardEntry()\n var style = {\n base: {\n backgroundColor: tertiaryColor,\n color: secondaryColor,\n lineHeight: '36px',\n fontFamily: '\"Hind Vadodara\", sans-serif',\n fontSize: '16px',\n textTransform: 'uppercase',\n height: '36px',\n },\n '{}\\n@media (max-width: 767px) { #payjs-cvv { width: 3em; } #payjs-exp { width: 4em; } }': '',\n invalid: { color: invalidColor },\n }\n paymentCard.generateHTML(style)\n\n if ($('#usa-epay-card-element').html() === '') {\n paymentCard.addHTML('usa-epay-card-element')\n }\n\n paymentCard.addEventListener('error', function (errorMessage) {\n if ($('#usa-epay-card-element').closest('.hidden').length) {\n USA_EPAY_CHARGE_FORM_READY_FOR_SUBMISSION = true\n } else {\n var baseErrorContainer = document.getElementById('base-card-errors')\n baseErrorContainer.textContent = ''\n var errorContainer = document.getElementById('usa-epay-card-errors')\n errorContainer.textContent = errorMessage\n $usaEpaySubmitButton.attr('disabled', false)\n $usaEpaySubmitButton.html(USA_EPAY_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n hideLoadingIndicator()\n }\n })\n\n document.querySelector('#usa-epay-card-element').addEventListener('clear:usaepay', () => {\n this.innerHTML = ''\n paymentCard.addHTML('usa-epay-card-element')\n })\n\n $('#usa-epay-card-element')\n .closest('form')\n .on('submit', function () {\n $usaEpaySubmitButton.attr('disabled', true)\n $usaEpaySubmitButton.html(USA_EPAY_FORM_SUBMIT_DISABLE_WITH_VALUE)\n showLoadingIndicator()\n\n return true\n })\n\n setTimeout(function () {\n $('#usa-epay-card-element')\n .closest('form')\n .on('submit', function (event) {\n if (USA_EPAY_CHARGE_FORM_READY_FOR_SUBMISSION) return true\n\n if (event.isDefaultPrevented()) {\n $usaEpaySubmitButton.attr('disabled', false)\n $usaEpaySubmitButton.html(USA_EPAY_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n hideLoadingIndicator()\n\n return false\n }\n\n event.preventDefault()\n\n client\n .getPaymentKey(paymentCard)\n .then(function (result) {\n $('input#credit-card-token').val(result)\n USA_EPAY_CHARGE_FORM_READY_FOR_SUBMISSION = true\n Rails.fire(FORM, 'submit')\n })\n .catch(function () {\n if ($('#usa-epay-card-element').closest('.hidden').length) {\n USA_EPAY_CHARGE_FORM_READY_FOR_SUBMISSION = true\n Rails.fire(FORM, 'submit')\n } else {\n $usaEpaySubmitButton.attr('disabled', false)\n $usaEpaySubmitButton.html(USA_EPAY_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n hideLoadingIndicator()\n }\n })\n\n return false\n })\n }, 500)\n }\n}\n", "export function escape(unsafe) {\n return encodeURI(unsafe)\n}\n", "import { Turbo } from '@hotwired/turbo-rails'\nimport { escape } from '../../javascript/helpers/html_helper'\n\n// TODO: This could use a hefty refactor, it's getting a bit out of hand\n// Basically all of the stuff should just be set on the trigger honestly\nexport function setupConfirmations() {\n Turbo.setConfirmMethod((message, element) => {\n const confirmationModal = document.querySelector('#confirmation-modal')\n const tooltips = document.querySelectorAll('.tooltip')\n const modalBody = confirmationModal.querySelector('.modal-body')\n const trigger = document.querySelector(`[data-turbo-confirm=\"${escape(message)}\"]`)\n const titleOverride = trigger?.dataset.turboConfirmTitle\n const title = titleOverride || element.dataset.turboConfirmTitle\n const acceptText = element.dataset.turboConfirmAccept\n const cancelText = element.dataset.turboConfirmDeny\n const acceptStyle = element.dataset.turboConfirmAcceptStyle\n const acceptData = JSON.parse(trigger?.dataset.turboConfirmAcceptData || '{}')\n const denyData = JSON.parse(trigger?.dataset.turboConfirmDenyData || '{}')\n const denyStyle = element.dataset.turboConfirmDenyStyle\n const thingToDelete = element.dataset.turboConfirmDelete\n const thingToDeleteElement = modalBody.querySelector('.thing-to-delete')\n\n for (const tooltip of [...tooltips]) {\n tooltip.remove()\n }\n\n setModalSize(confirmationModal, element.dataset.turboConfirmSize)\n\n modalBody.querySelector('.message').innerHTML = message\n\n toggleThingToDelete(thingToDelete, thingToDeleteElement)\n\n setModalText(confirmationModal, title, acceptText, cancelText)\n setModalAttributes(confirmationModal, acceptStyle, denyStyle, acceptData, denyData)\n\n confirmationModal.classList.add('open')\n\n return new Promise((resolve) => {\n confirmationModal.addEventListener('modal:hidden', ({ detail }) => {\n resolve(detail.finished)\n })\n })\n })\n}\n\nfunction toggleThingToDelete(thingToDelete, thingToDeleteElement) {\n if (thingToDelete) {\n thingToDeleteElement.classList.remove('hidden')\n thingToDeleteElement.innerHTML = thingToDelete\n } else {\n thingToDeleteElement.innerHTML = ''\n thingToDeleteElement.classList.add('hidden')\n }\n}\n\nfunction setModalText(confirmationModal, title, acceptText, cancelText) {\n if (title) confirmationModal.querySelector('.modal-title').innerText = title\n if (acceptText) confirmationModal.querySelector('#confirmation-modal-accept').innerText = acceptText\n if (cancelText) confirmationModal.querySelector('#confirmation-modal-deny').innerText = cancelText\n}\n\nfunction setModalAttributes(confirmationModal, acceptStyle, denyStyle, acceptData, denyData) {\n const acceptButton = confirmationModal.querySelector('#confirmation-modal-accept')\n const denyButton = confirmationModal.querySelector('#confirmation-modal-deny')\n\n if (acceptStyle) {\n acceptButton.classList.remove(...acceptButton.classList)\n acceptButton.classList.add('btn')\n acceptButton.classList.add(`btn-${acceptStyle}`)\n }\n if (denyStyle) {\n denyButton.classList.remove(...denyButton.classList)\n denyButton.classList.add('btn')\n denyButton.classList.add(`btn-${denyStyle}`)\n }\n\n acceptButton.dataset.action = 'click->modal--component#confirm'\n denyButton.dataset.action = 'click->modal--component#hide'\n\n for (const [key, value] of Object.entries(acceptData)) {\n if (key === 'action') {\n acceptButton.dataset.action += ` ${value}`\n } else {\n acceptButton.setAttribute(`data-${key.replace(/_/g, '-')}`, value)\n }\n }\n\n for (const [key, value] of Object.entries(denyData)) {\n if (key === 'action') {\n denyButton.dataset.action += ` ${value}`\n } else {\n denyButton.setAttribute(`data-${key.replace(/_/g, '-')}`, value)\n }\n }\n}\n\nfunction setModalSize(confirmationModal, size) {\n confirmationModal.querySelector('.modal-dialog').classList.add(`modal-${size}`)\n}\n", "import { PatchError, _deepClone, isInteger, unescapePathComponent, hasUndefined } from './helpers.mjs';\nexport var JsonPatchError = PatchError;\nexport var deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n add: function (obj, key, document) {\n obj[key] = this.value;\n return { newDocument: document };\n },\n remove: function (obj, key, document) {\n var removed = obj[key];\n delete obj[key];\n return { newDocument: document, removed: removed };\n },\n replace: function (obj, key, document) {\n var removed = obj[key];\n obj[key] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: function (obj, key, document) {\n /* in case move target overwrites an existing value,\n return the removed value, this can be taxing performance-wise,\n and is potentially unneeded */\n var removed = getValueByPointer(document, this.path);\n if (removed) {\n removed = _deepClone(removed);\n }\n var originalValue = applyOperation(document, { op: \"remove\", path: this.from }).removed;\n applyOperation(document, { op: \"add\", path: this.path, value: originalValue });\n return { newDocument: document, removed: removed };\n },\n copy: function (obj, key, document) {\n var valueToCopy = getValueByPointer(document, this.from);\n // enforce copy by value so further operations don't affect source (see issue #177)\n applyOperation(document, { op: \"add\", path: this.path, value: _deepClone(valueToCopy) });\n return { newDocument: document };\n },\n test: function (obj, key, document) {\n return { newDocument: document, test: _areEquals(obj[key], this.value) };\n },\n _get: function (obj, key, document) {\n this.value = obj[key];\n return { newDocument: document };\n }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n add: function (arr, i, document) {\n if (isInteger(i)) {\n arr.splice(i, 0, this.value);\n }\n else { // array props\n arr[i] = this.value;\n }\n // this may be needed when using '-' in an array\n return { newDocument: document, index: i };\n },\n remove: function (arr, i, document) {\n var removedList = arr.splice(i, 1);\n return { newDocument: document, removed: removedList[0] };\n },\n replace: function (arr, i, document) {\n var removed = arr[i];\n arr[i] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: objOps.move,\n copy: objOps.copy,\n test: objOps.test,\n _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nexport function getValueByPointer(document, pointer) {\n if (pointer == '') {\n return document;\n }\n var getOriginalDestination = { op: \"_get\", path: pointer };\n applyOperation(document, getOriginalDestination);\n return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nexport function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n if (validateOperation === void 0) { validateOperation = false; }\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (index === void 0) { index = 0; }\n if (validateOperation) {\n if (typeof validateOperation == 'function') {\n validateOperation(operation, 0, document, operation.path);\n }\n else {\n validator(operation, 0);\n }\n }\n /* ROOT OPERATIONS */\n if (operation.path === \"\") {\n var returnValue = { newDocument: document };\n if (operation.op === 'add') {\n returnValue.newDocument = operation.value;\n return returnValue;\n }\n else if (operation.op === 'replace') {\n returnValue.newDocument = operation.value;\n returnValue.removed = document; //document we removed\n return returnValue;\n }\n else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root\n returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n if (operation.op === 'move') { // report removed item\n returnValue.removed = document;\n }\n return returnValue;\n }\n else if (operation.op === 'test') {\n returnValue.test = _areEquals(document, operation.value);\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n returnValue.newDocument = document;\n return returnValue;\n }\n else if (operation.op === 'remove') { // a remove on root\n returnValue.removed = document;\n returnValue.newDocument = null;\n return returnValue;\n }\n else if (operation.op === '_get') {\n operation.value = document;\n return returnValue;\n }\n else { /* bad operation */\n if (validateOperation) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else {\n return returnValue;\n }\n }\n } /* END ROOT OPERATIONS */\n else {\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var path = operation.path || \"\";\n var keys = path.split('/');\n var obj = document;\n var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n var len = keys.length;\n var existingPathFragment = undefined;\n var key = void 0;\n var validateFunction = void 0;\n if (typeof validateOperation == 'function') {\n validateFunction = validateOperation;\n }\n else {\n validateFunction = validator;\n }\n while (true) {\n key = keys[t];\n if (key && key.indexOf('~') != -1) {\n key = unescapePathComponent(key);\n }\n if (banPrototypeModifications &&\n (key == '__proto__' ||\n (key == 'prototype' && t > 0 && keys[t - 1] == 'constructor'))) {\n throw new TypeError('JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n }\n if (validateOperation) {\n if (existingPathFragment === undefined) {\n if (obj[key] === undefined) {\n existingPathFragment = keys.slice(0, t).join('/');\n }\n else if (t == len - 1) {\n existingPathFragment = operation.path;\n }\n if (existingPathFragment !== undefined) {\n validateFunction(operation, 0, document, existingPathFragment);\n }\n }\n }\n t++;\n if (Array.isArray(obj)) {\n if (key === '-') {\n key = obj.length;\n }\n else {\n if (validateOperation && !isInteger(key)) {\n throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n } // only parse key when it's an integer for `arr.prop` to work\n else if (isInteger(key)) {\n key = ~~key;\n }\n }\n if (t >= len) {\n if (validateOperation && operation.op === \"add\" && key > obj.length) {\n throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n }\n var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n else {\n if (t >= len) {\n var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n obj = obj[key];\n // If we have more keys in the path, but the next value isn't a non-null object,\n // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nexport function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (validateOperation) {\n if (!Array.isArray(patch)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n }\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var results = new Array(patch.length);\n for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n document = results[i].newDocument; // in case root was replaced\n }\n results.newDocument = document;\n return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nexport function applyReducer(document, operation, index) {\n var operationResult = applyOperation(document, operation);\n if (operationResult.test === false) { // failed test\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nexport function validator(operation, index, document, existingPathFragment) {\n if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n }\n else if (!objOps[operation.op]) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else if (typeof operation.path !== 'string') {\n throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n // paths that aren't empty string should start with \"/\"\n throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n }\n else if (document) {\n if (operation.op == \"add\") {\n var pathLen = operation.path.split(\"/\").length;\n var existingPathLen = existingPathFragment.split(\"/\").length;\n if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n }\n }\n else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n if (operation.path !== existingPathFragment) {\n throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n else if (operation.op === 'move' || operation.op === 'copy') {\n var existingValue = { op: \"_get\", path: operation.from, value: undefined };\n var error = validate([existingValue], document);\n if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nexport function validate(sequence, document, externalValidator) {\n try {\n if (!Array.isArray(sequence)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n if (document) {\n //clone document and sequence so that we can safely try applying operations\n applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n }\n else {\n externalValidator = externalValidator || validator;\n for (var i = 0; i < sequence.length; i++) {\n externalValidator(sequence[i], i, document, undefined);\n }\n }\n }\n catch (e) {\n if (e instanceof JsonPatchError) {\n return e;\n }\n else {\n throw e;\n }\n }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nexport function _areEquals(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!_areEquals(a[i], b[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!b.hasOwnProperty(keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!_areEquals(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a !== a && b !== b;\n}\n;\n", "/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2022 Joachim Wester\n * MIT licensed\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n if (Array.isArray(obj)) {\n var keys_1 = new Array(obj.length);\n for (var k = 0; k < keys_1.length; k++) {\n keys_1[k] = \"\" + k;\n }\n return keys_1;\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var i in obj) {\n if (hasOwnProperty(obj, i)) {\n keys.push(i);\n }\n }\n return keys;\n}\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param {any} obj value to clone\n* @return {any} cloned obj\n*/\nexport function _deepClone(obj) {\n switch (typeof obj) {\n case \"object\":\n return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n case \"undefined\":\n return null; //this is how JSON.stringify behaves for array items\n default:\n return obj; //no need to clone primitives\n }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str) {\n var i = 0;\n var len = str.length;\n var charCode;\n while (i < len) {\n charCode = str.charCodeAt(i);\n if (charCode >= 48 && charCode <= 57) {\n i++;\n continue;\n }\n return false;\n }\n return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nexport function escapePathComponent(path) {\n if (path.indexOf('/') === -1 && path.indexOf('~') === -1)\n return path;\n return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path) {\n return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexport function _getPathRecursive(root, obj) {\n var found;\n for (var key in root) {\n if (hasOwnProperty(root, key)) {\n if (root[key] === obj) {\n return escapePathComponent(key) + '/';\n }\n else if (typeof root[key] === 'object') {\n found = _getPathRecursive(root[key], obj);\n if (found != '') {\n return escapePathComponent(key) + '/' + found;\n }\n }\n }\n }\n return '';\n}\nexport function getPath(root, obj) {\n if (root === obj) {\n return '/';\n }\n var path = _getPathRecursive(root, obj);\n if (path === '') {\n throw new Error(\"Object not found in root\");\n }\n return \"/\" + path;\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nexport function hasUndefined(obj) {\n if (obj === undefined) {\n return true;\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {\n if (hasUndefined(obj[i_1])) {\n return true;\n }\n }\n }\n else if (typeof obj === \"object\") {\n var objKeys = _objectKeys(obj);\n var objKeysLength = objKeys.length;\n for (var i = 0; i < objKeysLength; i++) {\n if (hasUndefined(obj[objKeys[i]])) {\n return true;\n }\n }\n }\n }\n return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n var messageParts = [message];\n for (var key in args) {\n var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n if (typeof value !== 'undefined') {\n messageParts.push(key + \": \" + value);\n }\n }\n return messageParts.join('\\n');\n}\nvar PatchError = /** @class */ (function (_super) {\n __extends(PatchError, _super);\n function PatchError(message, name, index, operation, tree) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;\n _this.name = name;\n _this.index = index;\n _this.operation = operation;\n _this.tree = tree;\n Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });\n return _this;\n }\n return PatchError;\n}(Error));\nexport { PatchError };\n", "/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2021 Joachim Wester\n * MIT license\n */\nimport { _deepClone, _objectKeys, escapePathComponent, hasOwnProperty } from './helpers.mjs';\nimport { applyPatch } from './core.mjs';\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */ (function () {\n function Mirror(obj) {\n this.observers = new Map();\n this.obj = obj;\n }\n return Mirror;\n}());\nvar ObserverInfo = /** @class */ (function () {\n function ObserverInfo(callback, observer) {\n this.callback = callback;\n this.observer = observer;\n }\n return ObserverInfo;\n}());\nfunction getMirror(obj) {\n return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nexport function unobserve(root, observer) {\n observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nexport function observe(obj, callback) {\n var patches = [];\n var observer;\n var mirror = getMirror(obj);\n if (!mirror) {\n mirror = new Mirror(obj);\n beforeDict.set(obj, mirror);\n }\n else {\n var observerInfo = getObserverFromMirror(mirror, callback);\n observer = observerInfo && observerInfo.observer;\n }\n if (observer) {\n return observer;\n }\n observer = {};\n mirror.value = _deepClone(obj);\n if (callback) {\n observer.callback = callback;\n observer.next = null;\n var dirtyCheck = function () {\n generate(observer);\n };\n var fastCheck = function () {\n clearTimeout(observer.next);\n observer.next = setTimeout(dirtyCheck);\n };\n if (typeof window !== 'undefined') { //not Node\n window.addEventListener('mouseup', fastCheck);\n window.addEventListener('keyup', fastCheck);\n window.addEventListener('mousedown', fastCheck);\n window.addEventListener('keydown', fastCheck);\n window.addEventListener('change', fastCheck);\n }\n }\n observer.patches = patches;\n observer.object = obj;\n observer.unobserve = function () {\n generate(observer);\n clearTimeout(observer.next);\n removeObserverFromMirror(mirror, observer);\n if (typeof window !== 'undefined') {\n window.removeEventListener('mouseup', fastCheck);\n window.removeEventListener('keyup', fastCheck);\n window.removeEventListener('mousedown', fastCheck);\n window.removeEventListener('keydown', fastCheck);\n window.removeEventListener('change', fastCheck);\n }\n };\n mirror.observers.set(callback, new ObserverInfo(callback, observer));\n return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nexport function generate(observer, invertible) {\n if (invertible === void 0) { invertible = false; }\n var mirror = beforeDict.get(observer.object);\n _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n if (observer.patches.length) {\n applyPatch(mirror.value, observer.patches);\n }\n var temp = observer.patches;\n if (temp.length > 0) {\n observer.patches = [];\n if (observer.callback) {\n observer.callback(temp);\n }\n }\n return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n if (obj === mirror) {\n return;\n }\n if (typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n var newKeys = _objectKeys(obj);\n var oldKeys = _objectKeys(mirror);\n var changed = false;\n var deleted = false;\n //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n for (var t = oldKeys.length - 1; t >= 0; t--) {\n var key = oldKeys[t];\n var oldVal = mirror[key];\n if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n var newVal = obj[key];\n if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n }\n else {\n if (oldVal !== newVal) {\n changed = true;\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"replace\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(newVal) });\n }\n }\n }\n else if (Array.isArray(mirror) === Array.isArray(obj)) {\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"remove\", path: path + \"/\" + escapePathComponent(key) });\n deleted = true; // property has been deleted\n }\n else {\n if (invertible) {\n patches.push({ op: \"test\", path: path, value: mirror });\n }\n patches.push({ op: \"replace\", path: path, value: obj });\n changed = true;\n }\n }\n if (!deleted && newKeys.length == oldKeys.length) {\n return;\n }\n for (var t = 0; t < newKeys.length; t++) {\n var key = newKeys[t];\n if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n patches.push({ op: \"add\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(obj[key]) });\n }\n }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nexport function compare(tree1, tree2, invertible) {\n if (invertible === void 0) { invertible = false; }\n var patches = [];\n _generate(tree1, tree2, patches, '', invertible);\n return patches;\n}\n", "export * from './module/core.mjs';\nexport * from './module/duplex.mjs';\nexport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\n\n/**\n * Default export for backwards compat\n */\n\nimport * as core from './module/core.mjs';\nimport * as duplex from './module/duplex.mjs';\nimport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\nexport default Object.assign({}, core, duplex, {\n JsonPatchError,\n deepClone,\n escapePathComponent,\n unescapePathComponent\n});", "import { extend } from 'vega-util';\nexport * from 'vega-util';\nimport { transforms } from 'vega-dataflow';\nexport { Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, changeset, definition, ingest, isTuple, transform, transforms, tupleid } from 'vega-dataflow';\nimport * as tx from 'vega-transforms';\nimport * as vtx from 'vega-view-transforms';\nimport * as encode from 'vega-encode';\nimport * as geo from 'vega-geo';\nimport * as force from 'vega-force';\nimport * as tree from 'vega-hierarchy';\nimport * as label from 'vega-label';\nimport * as reg from 'vega-regression';\nimport * as voronoi from 'vega-voronoi';\nimport * as wordcloud from 'vega-wordcloud';\nimport * as xf from 'vega-crossfilter';\nexport * from 'vega-statistics';\nexport * from 'vega-time';\nexport * from 'vega-loader';\nexport * from 'vega-scenegraph';\nexport { interpolate, interpolateColors, interpolateRange, quantizeInterpolator, scale, scheme } from 'vega-scale';\nexport { projection } from 'vega-projection';\nexport { View } from 'vega-view';\nexport { defaultLocale, numberFormatDefaultLocale as formatLocale, locale, resetDefaultLocale, timeFormatDefaultLocale as timeFormatLocale } from 'vega-format';\nexport { expressionFunction } from 'vega-functions';\nexport { parse } from 'vega-parser';\nexport { context as runtimeContext } from 'vega-runtime';\nexport { codegenExpression, parseExpression } from 'vega-expression';\nexport { parseSelector } from 'vega-event-selector';\n\nvar version = \"5.26.1\";\n\n// -- Transforms -----\n\nextend(transforms, tx, vtx, encode, geo, force, label, tree, reg, voronoi, wordcloud, xf);\n\nexport { version };\n", "function accessor (fn, fields, name) {\n fn.fields = fields || [];\n fn.fname = name;\n return fn;\n}\nfunction accessorName(fn) {\n return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n return path.length === 1 ? get1(path[0]) : getN(path);\n}\nconst get1 = field => function (obj) {\n return obj[field];\n};\nconst getN = path => {\n const len = path.length;\n return function (obj) {\n for (let i = 0; i < len; ++i) {\n obj = obj[path[i]];\n }\n return obj;\n };\n};\n\nfunction error (message) {\n throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n const path = [],\n n = p.length;\n let q = null,\n b = 0,\n s = '',\n i,\n j,\n c;\n p = p + '';\n function push() {\n path.push(s + p.substring(i, j));\n s = '';\n i = j + 1;\n }\n for (i = j = 0; j < n; ++j) {\n c = p[j];\n if (c === '\\\\') {\n s += p.substring(i, j++);\n i = j;\n } else if (c === q) {\n push();\n q = null;\n b = -1;\n } else if (q) {\n continue;\n } else if (i === b && c === '\"') {\n i = j + 1;\n q = c;\n } else if (i === b && c === \"'\") {\n i = j + 1;\n q = c;\n } else if (c === '.' && !b) {\n if (j > i) {\n push();\n } else {\n i = j + 1;\n }\n } else if (c === '[') {\n if (j > i) push();\n b = i = j + 1;\n } else if (c === ']') {\n if (!b) error('Access path missing open bracket: ' + p);\n if (b > 0) push();\n b = 0;\n i = j + 1;\n }\n }\n if (b) error('Access path missing closing bracket: ' + p);\n if (q) error('Access path missing closing quote: ' + p);\n if (j > i) {\n j++;\n push();\n }\n return path;\n}\n\nfunction field (field, name, opt) {\n const path = splitAccessPath(field);\n field = path.length === 1 ? path[0] : field;\n return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n const args = [level].concat([].slice.call(input));\n console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method) {\n let handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : log$1;\n let level = _ || None;\n return {\n level(_) {\n if (arguments.length) {\n level = +_;\n return this;\n } else {\n return level;\n }\n },\n error() {\n if (level >= Error$1) handler(method || 'error', 'ERROR', arguments);\n return this;\n },\n warn() {\n if (level >= Warn) handler(method || 'warn', 'WARN', arguments);\n return this;\n },\n info() {\n if (level >= Info) handler(method || 'log', 'INFO', arguments);\n return this;\n },\n debug() {\n if (level >= Debug) handler(method || 'log', 'DEBUG', arguments);\n return this;\n }\n };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\nfunction mergeConfig() {\n for (var _len = arguments.length, configs = new Array(_len), _key = 0; _key < _len; _key++) {\n configs[_key] = arguments[_key];\n }\n return configs.reduce((out, source) => {\n for (const key in source) {\n if (key === 'signals') {\n // for signals, we merge the signals arrays\n // source signals take precedence over\n // existing signals with the same name\n out.signals = mergeNamed(out.signals, source.signals);\n } else {\n // otherwise, merge objects subject to recursion constraints\n // for legend block, recurse for the layout entry only\n // for style block, recurse for all properties\n // otherwise, no recursion: objects overwrite, no merging\n const r = key === 'legend' ? {\n layout: 1\n } : key === 'style' ? true : null;\n writeConfig(out, key, source[key], r);\n }\n }\n return out;\n }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n if (!isLegalKey(key)) return;\n let k, o;\n if (isObject(value) && !isArray(value)) {\n o = isObject(output[key]) ? output[key] : output[key] = {};\n for (k in value) {\n if (recurse && (recurse === true || recurse[k])) {\n writeConfig(o, k, value[k]);\n } else if (isLegalKey(k)) {\n o[k] = value[k];\n }\n }\n } else {\n output[key] = value;\n }\n}\nfunction mergeNamed(a, b) {\n if (a == null) return b;\n const map = {},\n out = [];\n function add(_) {\n if (!map[_.name]) {\n map[_.name] = 1;\n out.push(_);\n }\n }\n b.forEach(add);\n a.forEach(add);\n return out;\n}\n\nfunction peek (array) {\n return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\nconst log = sign => x => Math.log(sign * x);\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\nfunction pan(domain, delta, lift, ground) {\n const d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n dd = (d1 - d0) * delta;\n return [ground(d0 - dd), ground(d1 - dd)];\n}\nfunction panLinear(domain, delta) {\n return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n var sign = Math.sign(domain[0]);\n return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n return pan(domain, delta, symlog(constant), symexp(constant));\n}\nfunction zoom(domain, anchor, scale, lift, ground) {\n const d0 = lift(domain[0]),\n d1 = lift(peek(domain)),\n da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\nfunction zoomLinear(domain, anchor, scale) {\n return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n const sign = Math.sign(domain[0]);\n return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n let lo = range[0],\n hi = range[1],\n span;\n if (hi < lo) {\n span = hi;\n hi = lo;\n lo = span;\n }\n span = hi - lo;\n return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n opt = opt || {};\n orders = array(orders) || [];\n const ord = [],\n get = [],\n fmap = {},\n gen = opt.comparator || comparator;\n array(fields).forEach((f, i) => {\n if (f == null) return;\n ord.push(orders[i] === DESCENDING ? -1 : 1);\n get.push(f = isFunction(f) ? f : field(f, null, opt));\n (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n });\n return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\nconst compare1 = (field, order) => function (a, b) {\n return ascending(field(a), field(b)) * order;\n};\nconst compareN = (fields, orders, n) => {\n orders.push(0); // pad zero for convenient lookup\n return function (a, b) {\n let f,\n c = 0,\n i = -1;\n while (c === 0 && ++i < n) {\n f = fields[i];\n c = ascending(f(a), f(b));\n }\n return c * orders[i];\n };\n};\n\nfunction constant (_) {\n return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n let tid;\n return e => {\n if (tid) clearTimeout(tid);\n tid = setTimeout(() => (handler(e), tid = null), delay);\n };\n}\n\nfunction extend (_) {\n for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n x = arguments[i];\n for (k in x) {\n _[k] = x[k];\n }\n }\n return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n let i = 0,\n n,\n v,\n min,\n max;\n if (array && (n = array.length)) {\n if (f == null) {\n // find first valid value\n for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n min = max = v;\n\n // visit all other values\n for (; i < n; ++i) {\n v = array[i];\n // skip null/undefined; NaN will fail all comparisons\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n } else {\n // find first valid value\n for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n min = max = v;\n\n // visit all other values\n for (; i < n; ++i) {\n v = f(array[i]);\n // skip null/undefined; NaN will fail all comparisons\n if (v != null) {\n if (v < min) min = v;\n if (v > max) max = v;\n }\n }\n }\n }\n return [min, max];\n}\n\nfunction extentIndex (array, f) {\n const n = array.length;\n let i = -1,\n a,\n b,\n c,\n u,\n v;\n if (f == null) {\n while (++i < n) {\n b = array[i];\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n if (i === n) return [-1, -1];\n u = v = i;\n while (++i < n) {\n b = array[i];\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n } else {\n while (++i < n) {\n b = f(array[i], i, array);\n if (b != null && b >= b) {\n a = c = b;\n break;\n }\n }\n if (i === n) return [-1, -1];\n u = v = i;\n while (++i < n) {\n b = f(array[i], i, array);\n if (b != null) {\n if (a > b) {\n a = b;\n u = i;\n }\n if (c < b) {\n c = b;\n v = i;\n }\n }\n }\n }\n return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n let obj = {},\n test;\n function has$1(key) {\n return has(obj, key) && obj[key] !== NULL;\n }\n const map = {\n size: 0,\n empty: 0,\n object: obj,\n has: has$1,\n get(key) {\n return has$1(key) ? obj[key] : undefined;\n },\n set(key, value) {\n if (!has$1(key)) {\n ++map.size;\n if (obj[key] === NULL) --map.empty;\n }\n obj[key] = value;\n return this;\n },\n delete(key) {\n if (has$1(key)) {\n --map.size;\n ++map.empty;\n obj[key] = NULL;\n }\n return this;\n },\n clear() {\n map.size = map.empty = 0;\n map.object = obj = {};\n },\n test(_) {\n if (arguments.length) {\n test = _;\n return map;\n } else {\n return test;\n }\n },\n clean() {\n const next = {};\n let size = 0;\n for (const key in obj) {\n const value = obj[key];\n if (value !== NULL && (!test || !test(value))) {\n next[key] = value;\n ++size;\n }\n }\n map.size = size;\n map.empty = 0;\n map.object = obj = next;\n }\n };\n if (input) Object.keys(input).forEach(key => {\n map.set(key, input[key]);\n });\n return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n if (!threshold && threshold !== 0) return center;\n const t = +threshold;\n let a = range[0],\n b = peek(range),\n l;\n\n // swap endpoints if range is reversed\n if (b < a) {\n l = a;\n a = b;\n b = l;\n }\n\n // compare value to endpoints\n l = Math.abs(value - a);\n const r = Math.abs(b - value);\n\n // adjust if value is within threshold distance of endpoint\n return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n const proto = child.prototype = Object.create(parent.prototype);\n Object.defineProperty(proto, 'constructor', {\n value: child,\n writable: true,\n enumerable: true,\n configurable: true\n });\n return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n let r0 = range[0],\n r1 = range[range.length - 1],\n t;\n if (r0 > r1) {\n t = r0;\n r0 = r1;\n r1 = t;\n }\n left = left === undefined || left;\n right = right === undefined || right;\n return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n if (fields) {\n fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n }\n const len = fields && fields.length,\n gen = opt && opt.get || getter,\n map = f => gen(flat ? [f] : splitAccessPath(f));\n let fn;\n if (!len) {\n fn = function () {\n return '';\n };\n } else if (len === 1) {\n const get = map(fields[0]);\n fn = function (_) {\n return '' + get(_);\n };\n } else {\n const get = fields.map(map);\n fn = function (_) {\n let s = '' + get[0](_),\n i = 0;\n while (++i < len) s += '|' + get[i](_);\n return s;\n };\n }\n return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n const lo = array[0],\n hi = peek(array),\n f = +frac;\n return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000;\n\n// adapted from https://github.com/dominictarr/hashlru/ (MIT License)\nfunction lruCache (maxsize) {\n maxsize = +maxsize || DEFAULT_MAX_SIZE;\n let curr, prev, size;\n const clear = () => {\n curr = {};\n prev = {};\n size = 0;\n };\n const update = (key, value) => {\n if (++size > maxsize) {\n prev = curr;\n curr = {};\n size = 1;\n }\n return curr[key] = value;\n };\n clear();\n return {\n clear,\n has: key => has(curr, key) || has(prev, key),\n get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n };\n}\n\nfunction merge (compare, array0, array1, output) {\n const n0 = array0.length,\n n1 = array1.length;\n if (!n1) return array0;\n if (!n0) return array1;\n const merged = output || new array0.constructor(n0 + n1);\n let i0 = 0,\n i1 = 0,\n i = 0;\n for (; i0 < n0 && i1 < n1; ++i) {\n merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n }\n for (; i0 < n0; ++i0, ++i) {\n merged[i] = array0[i0];\n }\n for (; i1 < n1; ++i1, ++i) {\n merged[i] = array1[i1];\n }\n return merged;\n}\n\nfunction repeat (str, reps) {\n let s = '';\n while (--reps >= 0) s += str;\n return s;\n}\n\nfunction pad (str, length, padchar, align) {\n const c = padchar || ' ',\n s = str + '',\n n = length - s.length;\n return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\nfunction span (array) {\n return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ?\n // Output valid JSON and JS source strings.\n // See http://timelessrepo.com/json-isnt-a-javascript-subset\n JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\nfunction toDate (_, parser) {\n parser = parser || defaultParser;\n return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n const s = {},\n n = _.length;\n for (let i = 0; i < n; ++i) s[_[i]] = true;\n return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n const e = ellipsis != null ? ellipsis : '\\u2026',\n s = str + '',\n n = s.length,\n l = Math.max(0, length - e.length);\n return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n if (array) {\n if (filter) {\n const n = array.length;\n for (let i = 0; i < n; ++i) {\n const t = filter(array[i]);\n if (t) visitor(t, i, array);\n }\n } else {\n array.forEach(visitor);\n }\n }\n}\n\nexport { Debug, Error$1 as Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, has as hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, $ as stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog };\n", "var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n", "export default function(x) {\n return x;\n}\n", "import identity from \"./identity.js\";\n\nexport default function(transform) {\n if (transform == null) return identity;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(input, i) {\n if (!i) x0 = y0 = 0;\n var j = 2, n = input.length, output = new Array(n);\n output[0] = (x0 += input[0]) * kx + dx;\n output[1] = (y0 += input[1]) * ky + dy;\n while (j < n) output[j] = input[j], ++j;\n return output;\n };\n}\n", "export default function(array, n) {\n var t, j = array.length, i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n", "import reverse from \"./reverse.js\";\nimport transform from \"./transform.js\";\n\nexport default function(topology, o) {\n if (typeof o === \"string\") o = topology.objects[o];\n return o.type === \"GeometryCollection\"\n ? {type: \"FeatureCollection\", features: o.geometries.map(function(o) { return feature(topology, o); })}\n : feature(topology, o);\n}\n\nfunction feature(topology, o) {\n var id = o.id,\n bbox = o.bbox,\n properties = o.properties == null ? {} : o.properties,\n geometry = object(topology, o);\n return id == null && bbox == null ? {type: \"Feature\", properties: properties, geometry: geometry}\n : bbox == null ? {type: \"Feature\", id: id, properties: properties, geometry: geometry}\n : {type: \"Feature\", id: id, bbox: bbox, properties: properties, geometry: geometry};\n}\n\nexport function object(topology, o) {\n var transformPoint = transform(topology.transform),\n arcs = topology.arcs;\n\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n points.push(transformPoint(a[k], k));\n }\n if (i < 0) reverse(points, n);\n }\n\n function point(p) {\n return transformPoint(p);\n }\n\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n return points;\n }\n\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n return points;\n }\n\n function polygon(arcs) {\n return arcs.map(ring);\n }\n\n function geometry(o) {\n var type = o.type, coordinates;\n switch (type) {\n case \"GeometryCollection\": return {type: type, geometries: o.geometries.map(geometry)};\n case \"Point\": coordinates = point(o.coordinates); break;\n case \"MultiPoint\": coordinates = o.coordinates.map(point); break;\n case \"LineString\": coordinates = line(o.arcs); break;\n case \"MultiLineString\": coordinates = o.arcs.map(line); break;\n case \"Polygon\": coordinates = polygon(o.arcs); break;\n case \"MultiPolygon\": coordinates = o.arcs.map(polygon); break;\n default: return null;\n }\n return {type: type, coordinates: coordinates};\n }\n\n return geometry(o);\n}\n", "export default function(topology, arcs) {\n var stitchedArcs = {},\n fragmentByStart = {},\n fragmentByEnd = {},\n fragments = [],\n emptyIndex = -1;\n\n // Stitch empty arcs first, since they may be subsumed by other arcs.\n arcs.forEach(function(i, j) {\n var arc = topology.arcs[i < 0 ? ~i : i], t;\n if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n }\n });\n\n arcs.forEach(function(i) {\n var e = ends(i),\n start = e[0],\n end = e[1],\n f, g;\n\n if (f = fragmentByEnd[start]) {\n delete fragmentByEnd[f.end];\n f.push(i);\n f.end = end;\n if (g = fragmentByStart[end]) {\n delete fragmentByStart[g.start];\n var fg = g === f ? f : f.concat(g);\n fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else if (f = fragmentByStart[end]) {\n delete fragmentByStart[f.start];\n f.unshift(i);\n f.start = start;\n if (g = fragmentByEnd[start]) {\n delete fragmentByEnd[g.end];\n var gf = g === f ? f : g.concat(f);\n fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else {\n f = [i];\n fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n }\n });\n\n function ends(i) {\n var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n else p1 = arc[arc.length - 1];\n return i < 0 ? [p1, p0] : [p0, p1];\n }\n\n function flush(fragmentByEnd, fragmentByStart) {\n for (var k in fragmentByEnd) {\n var f = fragmentByEnd[k];\n delete fragmentByStart[f.start];\n delete f.start;\n delete f.end;\n f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n fragments.push(f);\n }\n }\n\n flush(fragmentByEnd, fragmentByStart);\n flush(fragmentByStart, fragmentByEnd);\n arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n return fragments;\n}\n", "import {object} from \"./feature.js\";\nimport stitch from \"./stitch.js\";\n\nexport default function(topology) {\n return object(topology, meshArcs.apply(this, arguments));\n}\n\nexport function meshArcs(topology, object, filter) {\n var arcs, i, n;\n if (arguments.length > 1) arcs = extractArcs(topology, object, filter);\n else for (i = 0, arcs = new Array(n = topology.arcs.length); i < n; ++i) arcs[i] = i;\n return {type: \"MultiLineString\", arcs: stitch(topology, arcs)};\n}\n\nfunction extractArcs(topology, object, filter) {\n var arcs = [],\n geomsByArc = [],\n geom;\n\n function extract0(i) {\n var j = i < 0 ? ~i : i;\n (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n }\n\n function extract1(arcs) {\n arcs.forEach(extract0);\n }\n\n function extract2(arcs) {\n arcs.forEach(extract1);\n }\n\n function extract3(arcs) {\n arcs.forEach(extract2);\n }\n\n function geometry(o) {\n switch (geom = o, o.type) {\n case \"GeometryCollection\": o.geometries.forEach(geometry); break;\n case \"LineString\": extract1(o.arcs); break;\n case \"MultiLineString\": case \"Polygon\": extract2(o.arcs); break;\n case \"MultiPolygon\": extract3(o.arcs); break;\n }\n }\n\n geometry(object);\n\n geomsByArc.forEach(filter == null\n ? function(geoms) { arcs.push(geoms[0].i); }\n : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n\n return arcs;\n}\n", "export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n", "import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can\u2019t do this\n // for a comparator (except for specific, known comparators) because we can\u2019t\n // tell if the comparator is symmetric, and an asymmetric comparator can\u2019t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n", "export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n", "import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n", "export default function variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\n", "import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n const v = variance(values, valueof);\n return v ? Math.sqrt(v) : v;\n}\n", "// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n", "export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n", "export default function permute(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n", "import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n", "const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n", "export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n", "export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n", "import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n", "import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n", "export default function mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n", "import quantile, {quantileIndex} from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n return quantile(values, 0.5, valueof);\n}\n\nexport function medianIndex(values, valueof) {\n return quantileIndex(values, 0.5, valueof);\n}\n", "function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n", "export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n", "export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n", "import {InternSet} from \"internmap\";\n\nexport default function intersection(values, ...others) {\n values = new InternSet(values);\n others = others.map(set);\n out: for (const value of values) {\n for (const other of others) {\n if (!other.has(value)) {\n values.delete(value);\n continue out;\n }\n }\n }\n return values;\n}\n\nfunction set(values) {\n return values instanceof InternSet ? values : new InternSet(values);\n}\n", "import {InternSet} from \"internmap\";\n\nexport default function union(...others) {\n const set = new InternSet();\n for (const other of others) {\n for (const o of other) {\n set.add(o);\n }\n }\n return set;\n}\n", "export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n", "export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n", "export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n", "// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n", "// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n", "import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n", "export default function(x) {\n return x;\n}\n", "import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\u00B5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"\u2212\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer \u201Cvalue\u201D part that can be\n // grouped, and fractional or exponential \u201Csuffix\u201D part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n", "const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n", "import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n", "import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n", "import { array, error, hasOwnProperty, extend, peek, toSet, constant, zero, one, span } from 'vega-util';\nimport { timeDay, timeWeek, utcDay, utcWeek, timeYear, timeMonth, timeHour, timeMinute, timeSecond, timeMillisecond, utcYear, utcMonth, utcHour, utcMinute, utcSecond, utcMillisecond } from 'd3-time';\nimport { bisector, tickStep } from 'd3-array';\n\nconst YEAR = 'year';\nconst QUARTER = 'quarter';\nconst MONTH = 'month';\nconst WEEK = 'week';\nconst DATE = 'date';\nconst DAY = 'day';\nconst DAYOFYEAR = 'dayofyear';\nconst HOURS = 'hours';\nconst MINUTES = 'minutes';\nconst SECONDS = 'seconds';\nconst MILLISECONDS = 'milliseconds';\nconst TIME_UNITS = [YEAR, QUARTER, MONTH, WEEK, DATE, DAY, DAYOFYEAR, HOURS, MINUTES, SECONDS, MILLISECONDS];\nconst UNITS = TIME_UNITS.reduce((o, u, i) => (o[u] = 1 + i, o), {});\nfunction timeUnits(units) {\n const u = array(units).slice(),\n m = {};\n\n // check validity\n if (!u.length) error('Missing time unit.');\n u.forEach(unit => {\n if (hasOwnProperty(UNITS, unit)) {\n m[unit] = 1;\n } else {\n error(`Invalid time unit: ${unit}.`);\n }\n });\n const numTypes = (m[WEEK] || m[DAY] ? 1 : 0) + (m[QUARTER] || m[MONTH] || m[DATE] ? 1 : 0) + (m[DAYOFYEAR] ? 1 : 0);\n if (numTypes > 1) {\n error(`Incompatible time units: ${units}`);\n }\n\n // ensure proper sort order\n u.sort((a, b) => UNITS[a] - UNITS[b]);\n return u;\n}\nconst defaultSpecifiers = {\n [YEAR]: '%Y ',\n [QUARTER]: 'Q%q ',\n [MONTH]: '%b ',\n [DATE]: '%d ',\n [WEEK]: 'W%U ',\n [DAY]: '%a ',\n [DAYOFYEAR]: '%j ',\n [HOURS]: '%H:00',\n [MINUTES]: '00:%M',\n [SECONDS]: ':%S',\n [MILLISECONDS]: '.%L',\n [`${YEAR}-${MONTH}`]: '%Y-%m ',\n [`${YEAR}-${MONTH}-${DATE}`]: '%Y-%m-%d ',\n [`${HOURS}-${MINUTES}`]: '%H:%M'\n};\nfunction timeUnitSpecifier(units, specifiers) {\n const s = extend({}, defaultSpecifiers, specifiers),\n u = timeUnits(units),\n n = u.length;\n let fmt = '',\n start = 0,\n end,\n key;\n for (start = 0; start < n;) {\n for (end = u.length; end > start; --end) {\n key = u.slice(start, end).join('-');\n if (s[key] != null) {\n fmt += s[key];\n start = end;\n break;\n }\n }\n }\n return fmt.trim();\n}\n\nconst t0 = new Date();\nfunction localYear(y) {\n t0.setFullYear(y);\n t0.setMonth(0);\n t0.setDate(1);\n t0.setHours(0, 0, 0, 0);\n return t0;\n}\nfunction dayofyear(d) {\n return localDayOfYear(new Date(d));\n}\nfunction week(d) {\n return localWeekNum(new Date(d));\n}\nfunction localDayOfYear(d) {\n return timeDay.count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localWeekNum(d) {\n return timeWeek.count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localFirst(y) {\n return localYear(y).getDay();\n}\nfunction localDate(y, m, d, H, M, S, L) {\n if (0 <= y && y < 100) {\n const date = new Date(-1, m, d, H, M, S, L);\n date.setFullYear(y);\n return date;\n }\n return new Date(y, m, d, H, M, S, L);\n}\nfunction utcdayofyear(d) {\n return utcDayOfYear(new Date(d));\n}\nfunction utcweek(d) {\n return utcWeekNum(new Date(d));\n}\nfunction utcDayOfYear(d) {\n const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n return utcDay.count(y - 1, d);\n}\nfunction utcWeekNum(d) {\n const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n return utcWeek.count(y - 1, d);\n}\nfunction utcFirst(y) {\n t0.setTime(Date.UTC(y, 0, 1));\n return t0.getUTCDay();\n}\nfunction utcDate(y, m, d, H, M, S, L) {\n if (0 <= y && y < 100) {\n const date = new Date(Date.UTC(-1, m, d, H, M, S, L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(y, m, d, H, M, S, L));\n}\n\nfunction floor(units, step, get, inv, newDate) {\n const s = step || 1,\n b = peek(units),\n _ = (unit, p, key) => {\n key = key || unit;\n return getUnit(get[key], inv[key], unit === b && s, p);\n };\n const t = new Date(),\n u = toSet(units),\n y = u[YEAR] ? _(YEAR) : constant(2012),\n m = u[MONTH] ? _(MONTH) : u[QUARTER] ? _(QUARTER) : zero,\n d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY) : u[WEEK] ? _(WEEK, 1) : u[DAY] ? _(DAY, 1) : u[DATE] ? _(DATE, 1) : u[DAYOFYEAR] ? _(DAYOFYEAR, 1) : one,\n H = u[HOURS] ? _(HOURS) : zero,\n M = u[MINUTES] ? _(MINUTES) : zero,\n S = u[SECONDS] ? _(SECONDS) : zero,\n L = u[MILLISECONDS] ? _(MILLISECONDS) : zero;\n return function (v) {\n t.setTime(+v);\n const year = y(t);\n return newDate(year, m(t), d(t, year), H(t), M(t), S(t), L(t));\n };\n}\nfunction getUnit(f, inv, step, phase) {\n const u = step <= 1 ? f : phase ? (d, y) => phase + step * Math.floor((f(d, y) - phase) / step) : (d, y) => step * Math.floor(f(d, y) / step);\n return inv ? (d, y) => inv(u(d, y), y) : u;\n}\n\n// returns the day of the year based on week number, day of week,\n// and the day of the week for the first day of the year\nfunction weekday(week, day, firstDay) {\n return day + week * 7 - (firstDay + 6) % 7;\n}\n\n// -- LOCAL TIME --\n\nconst localGet = {\n [YEAR]: d => d.getFullYear(),\n [QUARTER]: d => Math.floor(d.getMonth() / 3),\n [MONTH]: d => d.getMonth(),\n [DATE]: d => d.getDate(),\n [HOURS]: d => d.getHours(),\n [MINUTES]: d => d.getMinutes(),\n [SECONDS]: d => d.getSeconds(),\n [MILLISECONDS]: d => d.getMilliseconds(),\n [DAYOFYEAR]: d => localDayOfYear(d),\n [WEEK]: d => localWeekNum(d),\n [WEEK + DAY]: (d, y) => weekday(localWeekNum(d), d.getDay(), localFirst(y)),\n [DAY]: (d, y) => weekday(1, d.getDay(), localFirst(y))\n};\nconst localInv = {\n [QUARTER]: q => 3 * q,\n [WEEK]: (w, y) => weekday(w, 0, localFirst(y))\n};\nfunction timeFloor(units, step) {\n return floor(units, step || 1, localGet, localInv, localDate);\n}\n\n// -- UTC TIME --\n\nconst utcGet = {\n [YEAR]: d => d.getUTCFullYear(),\n [QUARTER]: d => Math.floor(d.getUTCMonth() / 3),\n [MONTH]: d => d.getUTCMonth(),\n [DATE]: d => d.getUTCDate(),\n [HOURS]: d => d.getUTCHours(),\n [MINUTES]: d => d.getUTCMinutes(),\n [SECONDS]: d => d.getUTCSeconds(),\n [MILLISECONDS]: d => d.getUTCMilliseconds(),\n [DAYOFYEAR]: d => utcDayOfYear(d),\n [WEEK]: d => utcWeekNum(d),\n [DAY]: (d, y) => weekday(1, d.getUTCDay(), utcFirst(y)),\n [WEEK + DAY]: (d, y) => weekday(utcWeekNum(d), d.getUTCDay(), utcFirst(y))\n};\nconst utcInv = {\n [QUARTER]: q => 3 * q,\n [WEEK]: (w, y) => weekday(w, 0, utcFirst(y))\n};\nfunction utcFloor(units, step) {\n return floor(units, step || 1, utcGet, utcInv, utcDate);\n}\n\nconst timeIntervals = {\n [YEAR]: timeYear,\n [QUARTER]: timeMonth.every(3),\n [MONTH]: timeMonth,\n [WEEK]: timeWeek,\n [DATE]: timeDay,\n [DAY]: timeDay,\n [DAYOFYEAR]: timeDay,\n [HOURS]: timeHour,\n [MINUTES]: timeMinute,\n [SECONDS]: timeSecond,\n [MILLISECONDS]: timeMillisecond\n};\nconst utcIntervals = {\n [YEAR]: utcYear,\n [QUARTER]: utcMonth.every(3),\n [MONTH]: utcMonth,\n [WEEK]: utcWeek,\n [DATE]: utcDay,\n [DAY]: utcDay,\n [DAYOFYEAR]: utcDay,\n [HOURS]: utcHour,\n [MINUTES]: utcMinute,\n [SECONDS]: utcSecond,\n [MILLISECONDS]: utcMillisecond\n};\nfunction timeInterval(unit) {\n return timeIntervals[unit];\n}\nfunction utcInterval(unit) {\n return utcIntervals[unit];\n}\nfunction offset(ival, date, step) {\n return ival ? ival.offset(date, step) : undefined;\n}\nfunction timeOffset(unit, date, step) {\n return offset(timeInterval(unit), date, step);\n}\nfunction utcOffset(unit, date, step) {\n return offset(utcInterval(unit), date, step);\n}\nfunction sequence(ival, start, stop, step) {\n return ival ? ival.range(start, stop, step) : undefined;\n}\nfunction timeSequence(unit, start, stop, step) {\n return sequence(timeInterval(unit), start, stop, step);\n}\nfunction utcSequence(unit, start, stop, step) {\n return sequence(utcInterval(unit), start, stop, step);\n}\n\nconst durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\nconst Milli = [YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS],\n Seconds = Milli.slice(0, -1),\n Minutes = Seconds.slice(0, -1),\n Hours = Minutes.slice(0, -1),\n Day = Hours.slice(0, -1),\n Week = [YEAR, WEEK],\n Month = [YEAR, MONTH],\n Year = [YEAR];\nconst intervals = [[Seconds, 1, durationSecond], [Seconds, 5, 5 * durationSecond], [Seconds, 15, 15 * durationSecond], [Seconds, 30, 30 * durationSecond], [Minutes, 1, durationMinute], [Minutes, 5, 5 * durationMinute], [Minutes, 15, 15 * durationMinute], [Minutes, 30, 30 * durationMinute], [Hours, 1, durationHour], [Hours, 3, 3 * durationHour], [Hours, 6, 6 * durationHour], [Hours, 12, 12 * durationHour], [Day, 1, durationDay], [Week, 1, durationWeek], [Month, 1, durationMonth], [Month, 3, 3 * durationMonth], [Year, 1, durationYear]];\nfunction bin (opt) {\n const ext = opt.extent,\n max = opt.maxbins || 40,\n target = Math.abs(span(ext)) / max;\n let i = bisector(i => i[2]).right(intervals, target),\n units,\n step;\n if (i === intervals.length) {\n units = Year, step = tickStep(ext[0] / durationYear, ext[1] / durationYear, max);\n } else if (i) {\n i = intervals[target / intervals[i - 1][2] < intervals[i][2] / target ? i - 1 : i];\n units = i[0];\n step = i[1];\n } else {\n units = Milli;\n step = Math.max(tickStep(ext[0], ext[1], max), 1);\n }\n return {\n units,\n step\n };\n}\n\nexport { DATE, DAY, DAYOFYEAR, HOURS, MILLISECONDS, MINUTES, MONTH, QUARTER, SECONDS, TIME_UNITS, WEEK, YEAR, dayofyear, bin as timeBin, timeFloor, timeInterval, timeOffset, timeSequence, timeUnitSpecifier, timeUnits, utcFloor, utcInterval, utcOffset, utcSequence, utcdayofyear, utcweek, week };\n", "import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n", "import { tickStep } from 'd3-array';\nimport { formatSpecifier, precisionFixed, precisionRound, precisionPrefix, format, formatPrefix, formatLocale } from 'd3-format';\nimport { SECONDS, MINUTES, HOURS, DATE, WEEK, MONTH, QUARTER, YEAR, MILLISECONDS, DAY, timeInterval, utcInterval } from 'vega-time';\nimport { isString, isObject, error, extend } from 'vega-util';\nimport { timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale as timeFormatLocale$1 } from 'd3-time-format';\n\nfunction memoize (method) {\n const cache = {};\n return spec => cache[spec] || (cache[spec] = method(spec));\n}\n\nfunction trimZeroes(numberFormat, decimalChar) {\n return x => {\n const str = numberFormat(x),\n dec = str.indexOf(decimalChar);\n if (dec < 0) return str;\n let idx = rightmostDigit(str, dec);\n const end = idx < str.length ? str.slice(idx) : '';\n while (--idx > dec) if (str[idx] !== '0') {\n ++idx;\n break;\n }\n return str.slice(0, idx) + end;\n };\n}\nfunction rightmostDigit(str, dec) {\n let i = str.lastIndexOf('e'),\n c;\n if (i > 0) return i;\n for (i = str.length; --i > dec;) {\n c = str.charCodeAt(i);\n if (c >= 48 && c <= 57) return i + 1; // is digit\n }\n}\n\nfunction numberLocale(locale) {\n const format = memoize(locale.format),\n formatPrefix = locale.formatPrefix;\n return {\n format,\n formatPrefix,\n formatFloat(spec) {\n const s = formatSpecifier(spec || ',');\n if (s.precision == null) {\n s.precision = 12;\n switch (s.type) {\n case '%':\n s.precision -= 2;\n break;\n case 'e':\n s.precision -= 1;\n break;\n }\n return trimZeroes(format(s),\n // number format\n format('.1f')(1)[1] // decimal point character\n );\n } else {\n return format(s);\n }\n },\n formatSpan(start, stop, count, specifier) {\n specifier = formatSpecifier(specifier == null ? ',f' : specifier);\n const step = tickStep(start, stop, count),\n value = Math.max(Math.abs(start), Math.abs(stop));\n let precision;\n if (specifier.precision == null) {\n switch (specifier.type) {\n case 's':\n {\n if (!isNaN(precision = precisionPrefix(step, value))) {\n specifier.precision = precision;\n }\n return formatPrefix(specifier, value);\n }\n case '':\n case 'e':\n case 'g':\n case 'p':\n case 'r':\n {\n if (!isNaN(precision = precisionRound(step, value))) {\n specifier.precision = precision - (specifier.type === 'e');\n }\n break;\n }\n case 'f':\n case '%':\n {\n if (!isNaN(precision = precisionFixed(step))) {\n specifier.precision = precision - (specifier.type === '%') * 2;\n }\n break;\n }\n }\n }\n return format(specifier);\n }\n };\n}\nlet defaultNumberLocale;\nresetNumberFormatDefaultLocale();\nfunction resetNumberFormatDefaultLocale() {\n return defaultNumberLocale = numberLocale({\n format: format,\n formatPrefix: formatPrefix\n });\n}\nfunction numberFormatLocale(definition) {\n return numberLocale(formatLocale(definition));\n}\nfunction numberFormatDefaultLocale(definition) {\n return arguments.length ? defaultNumberLocale = numberFormatLocale(definition) : defaultNumberLocale;\n}\n\nfunction timeMultiFormat(format, interval, spec) {\n spec = spec || {};\n if (!isObject(spec)) {\n error(`Invalid time multi-format specifier: ${spec}`);\n }\n const second = interval(SECONDS),\n minute = interval(MINUTES),\n hour = interval(HOURS),\n day = interval(DATE),\n week = interval(WEEK),\n month = interval(MONTH),\n quarter = interval(QUARTER),\n year = interval(YEAR),\n L = format(spec[MILLISECONDS] || '.%L'),\n S = format(spec[SECONDS] || ':%S'),\n M = format(spec[MINUTES] || '%I:%M'),\n H = format(spec[HOURS] || '%I %p'),\n d = format(spec[DATE] || spec[DAY] || '%a %d'),\n w = format(spec[WEEK] || '%b %d'),\n m = format(spec[MONTH] || '%B'),\n q = format(spec[QUARTER] || '%B'),\n y = format(spec[YEAR] || '%Y');\n return date => (second(date) < date ? L : minute(date) < date ? S : hour(date) < date ? M : day(date) < date ? H : month(date) < date ? week(date) < date ? d : w : year(date) < date ? quarter(date) < date ? m : q : y)(date);\n}\nfunction timeLocale(locale) {\n const timeFormat = memoize(locale.format),\n utcFormat = memoize(locale.utcFormat);\n return {\n timeFormat: spec => isString(spec) ? timeFormat(spec) : timeMultiFormat(timeFormat, timeInterval, spec),\n utcFormat: spec => isString(spec) ? utcFormat(spec) : timeMultiFormat(utcFormat, utcInterval, spec),\n timeParse: memoize(locale.parse),\n utcParse: memoize(locale.utcParse)\n };\n}\nlet defaultTimeLocale;\nresetTimeFormatDefaultLocale();\nfunction resetTimeFormatDefaultLocale() {\n return defaultTimeLocale = timeLocale({\n format: timeFormat,\n parse: timeParse,\n utcFormat: utcFormat,\n utcParse: utcParse\n });\n}\nfunction timeFormatLocale(definition) {\n return timeLocale(timeFormatLocale$1(definition));\n}\nfunction timeFormatDefaultLocale(definition) {\n return arguments.length ? defaultTimeLocale = timeFormatLocale(definition) : defaultTimeLocale;\n}\n\nconst createLocale = (number, time) => extend({}, number, time);\nfunction locale(numberSpec, timeSpec) {\n const number = numberSpec ? numberFormatLocale(numberSpec) : numberFormatDefaultLocale();\n const time = timeSpec ? timeFormatLocale(timeSpec) : timeFormatDefaultLocale();\n return createLocale(number, time);\n}\nfunction defaultLocale(numberSpec, timeSpec) {\n const args = arguments.length;\n if (args && args !== 2) {\n error('defaultLocale expects either zero or two arguments.');\n }\n return args ? createLocale(numberFormatDefaultLocale(numberSpec), timeFormatDefaultLocale(timeSpec)) : createLocale(numberFormatDefaultLocale(), timeFormatDefaultLocale());\n}\nfunction resetDefaultLocale() {\n resetNumberFormatDefaultLocale();\n resetTimeFormatDefaultLocale();\n return defaultLocale();\n}\n\nexport { defaultLocale, locale, numberFormatDefaultLocale, numberFormatLocale, resetDefaultLocale, resetNumberFormatDefaultLocale, resetTimeFormatDefaultLocale, timeFormatDefaultLocale, timeFormatLocale };\n", "import { extend, error, stringValue, isFunction, toBoolean, toNumber, toDate, toString, identity, field, isObject, isArray, isIterable, hasOwnProperty } from 'vega-util';\nimport { dsvFormat } from 'd3-dsv';\nimport { feature, mesh } from 'topojson-client';\nimport { timeFormatDefaultLocale } from 'vega-format';\n\n// Matches absolute URLs with optional protocol\n// https://... file://... //...\nconst protocol_re = /^(data:|([A-Za-z]+:)?\\/\\/)/;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nconst allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nconst whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n// Special treatment in node.js for the file: protocol\nconst fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n * If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n * If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n * param {object} [options] - Optional default loading options to use.\n * return {object} - A new loader instance.\n */\nfunction loaderFactory (fetch, fs) {\n return options => ({\n options: options || {},\n sanitize: sanitize,\n load: load,\n fileAccess: !!fs,\n file: fileLoader(fs),\n http: httpLoader(fetch)\n });\n}\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n * override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nasync function load(uri, options) {\n const opt = await this.sanitize(uri, options),\n url = opt.href;\n return opt.localFile ? this.file(url) : this.http(url, options);\n}\n\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n * sanitized uri data, or rejects it the input uri is deemed invalid.\n * The properties of the resolved object are assumed to be\n * valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n * provided by the 'href' property of the returned object.\n */\nasync function sanitize(uri, options) {\n options = extend({}, this.options, options);\n const fileAccess = this.fileAccess,\n result = {\n href: null\n };\n let isFile, loadFile, base;\n const isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n if (uri == null || typeof uri !== 'string' || !isAllowed) {\n error('Sanitize failure, invalid URI: ' + stringValue(uri));\n }\n const hasProtocol = protocol_re.test(uri);\n\n // if relative url (no protocol/host), prepend baseURL\n if ((base = options.baseURL) && !hasProtocol) {\n // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n if (!uri.startsWith('/') && !base.endsWith('/')) {\n uri = '/' + uri;\n }\n uri = base + uri;\n }\n\n // should we load from file system?\n loadFile = (isFile = uri.startsWith(fileProtocol)) || options.mode === 'file' || options.mode !== 'http' && !hasProtocol && fileAccess;\n if (isFile) {\n // strip file protocol\n uri = uri.slice(fileProtocol.length);\n } else if (uri.startsWith('//')) {\n if (options.defaultProtocol === 'file') {\n // if is file, strip protocol and set loadFile flag\n uri = uri.slice(2);\n loadFile = true;\n } else {\n // if relative protocol (starts with '//'), prepend default protocol\n uri = (options.defaultProtocol || 'http') + ':' + uri;\n }\n }\n\n // set non-enumerable mode flag to indicate local file load\n Object.defineProperty(result, 'localFile', {\n value: !!loadFile\n });\n\n // set uri\n result.href = uri;\n\n // set default result target, if specified\n if (options.target) {\n result.target = options.target + '';\n }\n\n // set default result rel, if specified (#1542)\n if (options.rel) {\n result.rel = options.rel + '';\n }\n\n // provide control over cross-origin image handling (#2238)\n // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n if (options.context === 'image' && options.crossOrigin) {\n result.crossOrigin = options.crossOrigin + '';\n }\n\n // return\n return result;\n}\n\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n * param {string} filename - The file system path to load.\n * param {string} filename - The file system path to load.\n * return {Promise} A promise that resolves to the file contents.\n */\nfunction fileLoader(fs) {\n return fs ? filename => new Promise((accept, reject) => {\n fs.readFile(filename, (error, data) => {\n if (error) reject(error);else accept(data);\n });\n }) : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nasync function fileReject() {\n error('No file system access.');\n}\n\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n * param {string} url - The url to request.\n * param {object} options - An options hash.\n * return {Promise} - A promise that resolves to the file contents.\n */\nfunction httpLoader(fetch) {\n return fetch ? async function (url, options) {\n const opt = extend({}, this.options.http, options),\n type = options && options.response,\n response = await fetch(url, opt);\n return !response.ok ? error(response.status + '' + response.statusText) : isFunction(response[type]) ? response[type]() : response.text();\n } : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nasync function httpReject() {\n error('No HTTP fetch method available.');\n}\n\nconst isValid = _ => _ != null && _ === _;\nconst isBoolean = _ => _ === 'true' || _ === 'false' || _ === true || _ === false;\nconst isDate = _ => !Number.isNaN(Date.parse(_));\nconst isNumber = _ => !Number.isNaN(+_) && !(_ instanceof Date);\nconst isInteger = _ => isNumber(_) && Number.isInteger(+_);\nconst typeParsers = {\n boolean: toBoolean,\n integer: toNumber,\n number: toNumber,\n date: toDate,\n string: toString,\n unknown: identity\n};\nconst typeTests = [isBoolean, isInteger, isNumber, isDate];\nconst typeList = ['boolean', 'integer', 'number', 'date'];\nfunction inferType(values, field) {\n if (!values || !values.length) return 'unknown';\n const n = values.length,\n m = typeTests.length,\n a = typeTests.map((_, i) => i + 1);\n for (let i = 0, t = 0, j, value; i < n; ++i) {\n value = field ? values[i][field] : values[i];\n for (j = 0; j < m; ++j) {\n if (a[j] && isValid(value) && !typeTests[j](value)) {\n a[j] = 0;\n ++t;\n if (t === typeTests.length) return 'string';\n }\n }\n }\n return typeList[a.reduce((u, v) => u === 0 ? v : u, 0) - 1];\n}\nfunction inferTypes(data, fields) {\n return fields.reduce((types, field) => {\n types[field] = inferType(data, field);\n return types;\n }, {});\n}\n\nfunction delimitedFormat(delimiter) {\n const parse = function (data, format) {\n const delim = {\n delimiter: delimiter\n };\n return dsv(data, format ? extend(format, delim) : delim);\n };\n parse.responseType = 'text';\n return parse;\n}\nfunction dsv(data, format) {\n if (format.header) {\n data = format.header.map(stringValue).join(format.delimiter) + '\\n' + data;\n }\n return dsvFormat(format.delimiter).parse(data + '');\n}\ndsv.responseType = 'text';\n\nfunction isBuffer(_) {\n return typeof Buffer === 'function' && isFunction(Buffer.isBuffer) ? Buffer.isBuffer(_) : false;\n}\nfunction json(data, format) {\n const prop = format && format.property ? field(format.property) : identity;\n return isObject(data) && !isBuffer(data) ? parseJSON(prop(data), format) : prop(JSON.parse(data));\n}\njson.responseType = 'json';\nfunction parseJSON(data, format) {\n if (!isArray(data) && isIterable(data)) {\n data = [...data];\n }\n return format && format.copy ? JSON.parse(JSON.stringify(data)) : data;\n}\n\nconst filters = {\n interior: (a, b) => a !== b,\n exterior: (a, b) => a === b\n};\nfunction topojson(data, format) {\n let method, object, property, filter;\n data = json(data, format);\n if (format && format.feature) {\n method = feature;\n property = format.feature;\n } else if (format && format.mesh) {\n method = mesh;\n property = format.mesh;\n filter = filters[format.filter];\n } else {\n error('Missing TopoJSON feature or mesh parameter.');\n }\n object = (object = data.objects[property]) ? method(data, object, filter) : error('Invalid TopoJSON object: ' + property);\n return object && object.features || [object];\n}\ntopojson.responseType = 'json';\n\nconst format = {\n dsv: dsv,\n csv: delimitedFormat(','),\n tsv: delimitedFormat('\\t'),\n json: json,\n topojson: topojson\n};\nfunction formats(name, reader) {\n if (arguments.length > 1) {\n format[name] = reader;\n return this;\n } else {\n return hasOwnProperty(format, name) ? format[name] : null;\n }\n}\nfunction responseType(type) {\n const f = formats(type);\n return f && f.responseType || 'text';\n}\n\nfunction read (data, schema, timeParser, utcParser) {\n schema = schema || {};\n const reader = formats(schema.type || 'json');\n if (!reader) error('Unknown data format type: ' + schema.type);\n data = reader(data, schema);\n if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n if (hasOwnProperty(data, 'columns')) delete data.columns;\n return data;\n}\nfunction parse(data, types, timeParser, utcParser) {\n if (!data.length) return; // early exit for empty data\n\n const locale = timeFormatDefaultLocale();\n timeParser = timeParser || locale.timeParse;\n utcParser = utcParser || locale.utcParse;\n let fields = data.columns || Object.keys(data[0]),\n datum,\n field,\n i,\n j,\n n,\n m;\n if (types === 'auto') types = inferTypes(data, fields);\n fields = Object.keys(types);\n const parsers = fields.map(field => {\n const type = types[field];\n let parts, pattern;\n if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n parts = type.split(/:(.+)?/, 2); // split on first :\n pattern = parts[1];\n if (pattern[0] === '\\'' && pattern[pattern.length - 1] === '\\'' || pattern[0] === '\"' && pattern[pattern.length - 1] === '\"') {\n pattern = pattern.slice(1, -1);\n }\n const parse = parts[0] === 'utc' ? utcParser : timeParser;\n return parse(pattern);\n }\n if (!typeParsers[type]) {\n throw Error('Illegal format pattern: ' + field + ':' + type);\n }\n return typeParsers[type];\n });\n for (i = 0, n = data.length, m = fields.length; i < n; ++i) {\n datum = data[i];\n for (j = 0; j < m; ++j) {\n field = fields[j];\n datum[field] = parsers[j](datum[field]);\n }\n }\n}\n\nconst loader = loaderFactory(typeof fetch !== 'undefined' && fetch,\n// use built-in fetch API\nnull // no file system access\n);\n\nexport { format, formats, inferType, inferTypes, loader, read, responseType, typeParsers };\n", "import { identity, array, isFunction, constant, isArray, id, error, truthy, debounce, extend, visitArray, inherits, logger, Error, hasOwnProperty } from 'vega-util';\nimport { read, responseType, loader } from 'vega-loader';\nimport { defaultLocale } from 'vega-format';\n\nfunction UniqueList(idFunc) {\n const $ = idFunc || identity,\n list = [],\n ids = {};\n list.add = _ => {\n const id = $(_);\n if (!ids[id]) {\n ids[id] = 1;\n list.push(_);\n }\n return list;\n };\n list.remove = _ => {\n const id = $(_);\n if (ids[id]) {\n ids[id] = 0;\n const idx = list.indexOf(_);\n if (idx >= 0) list.splice(idx, 1);\n }\n return list;\n };\n return list;\n}\n\n/**\n * Invoke and await a potentially async callback function. If\n * an error occurs, trap it and route to Dataflow.error.\n * @param {Dataflow} df - The dataflow instance\n * @param {function} callback - A callback function to invoke\n * and then await. The dataflow will be passed as the single\n * argument to the function.\n */\nasync function asyncCallback (df, callback) {\n try {\n await callback(df);\n } catch (err) {\n df.error(err);\n }\n}\n\nconst TUPLE_ID_KEY = Symbol('vega_id');\nlet TUPLE_ID = 1;\n\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\nfunction isTuple(t) {\n return !!(t && tupleid(t));\n}\n\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\nfunction tupleid(t) {\n return t[TUPLE_ID_KEY];\n}\n\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\nfunction setid(t, id) {\n t[TUPLE_ID_KEY] = id;\n return t;\n}\n\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\nfunction ingest$1(datum) {\n const t = datum === Object(datum) ? datum : {\n data: datum\n };\n return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\nfunction derive(t) {\n return rederive(t, ingest$1({}));\n}\n\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\nfunction rederive(t, d) {\n for (const k in t) d[k] = t[k];\n return d;\n}\n\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\nfunction replace(t, d) {\n return setid(d, tupleid(t));\n}\n\n/**\n * Generate an augmented comparator function that provides stable\n * sorting by tuple id when the given comparator produces ties.\n * @param {function} cmp - The comparator to augment.\n * @param {function} [f] - Optional tuple accessor function.\n * @return {function} An augmented comparator function.\n */\nfunction stableCompare(cmp, f) {\n return !cmp ? null : f ? (a, b) => cmp(a, b) || tupleid(f(a)) - tupleid(f(b)) : (a, b) => cmp(a, b) || tupleid(a) - tupleid(b);\n}\n\nfunction isChangeSet(v) {\n return v && v.constructor === changeset;\n}\nfunction changeset() {\n const add = [],\n // insert tuples\n rem = [],\n // remove tuples\n mod = [],\n // modify tuples\n remp = [],\n // remove by predicate\n modp = []; // modify by predicate\n let clean = null,\n reflow = false;\n return {\n constructor: changeset,\n insert(t) {\n const d = array(t),\n n = d.length;\n for (let i = 0; i < n; ++i) add.push(d[i]);\n return this;\n },\n remove(t) {\n const a = isFunction(t) ? remp : rem,\n d = array(t),\n n = d.length;\n for (let i = 0; i < n; ++i) a.push(d[i]);\n return this;\n },\n modify(t, field, value) {\n const m = {\n field: field,\n value: constant(value)\n };\n if (isFunction(t)) {\n m.filter = t;\n modp.push(m);\n } else {\n m.tuple = t;\n mod.push(m);\n }\n return this;\n },\n encode(t, set) {\n if (isFunction(t)) modp.push({\n filter: t,\n field: set\n });else mod.push({\n tuple: t,\n field: set\n });\n return this;\n },\n clean(value) {\n clean = value;\n return this;\n },\n reflow() {\n reflow = true;\n return this;\n },\n pulse(pulse, tuples) {\n const cur = {},\n out = {};\n let i, n, m, f, t, id;\n\n // build lookup table of current tuples\n for (i = 0, n = tuples.length; i < n; ++i) {\n cur[tupleid(tuples[i])] = 1;\n }\n\n // process individual tuples to remove\n for (i = 0, n = rem.length; i < n; ++i) {\n t = rem[i];\n cur[tupleid(t)] = -1;\n }\n\n // process predicate-based removals\n for (i = 0, n = remp.length; i < n; ++i) {\n f = remp[i];\n tuples.forEach(t => {\n if (f(t)) cur[tupleid(t)] = -1;\n });\n }\n\n // process all add tuples\n for (i = 0, n = add.length; i < n; ++i) {\n t = add[i];\n id = tupleid(t);\n if (cur[id]) {\n // tuple already resides in dataset\n // if flagged for both add and remove, cancel\n cur[id] = 1;\n } else {\n // tuple does not reside in dataset, add\n pulse.add.push(ingest$1(add[i]));\n }\n }\n\n // populate pulse rem list\n for (i = 0, n = tuples.length; i < n; ++i) {\n t = tuples[i];\n if (cur[tupleid(t)] < 0) pulse.rem.push(t);\n }\n\n // modify helper method\n function modify(t, f, v) {\n if (v) {\n t[f] = v(t);\n } else {\n pulse.encode = f;\n }\n if (!reflow) out[tupleid(t)] = t;\n }\n\n // process individual tuples to modify\n for (i = 0, n = mod.length; i < n; ++i) {\n m = mod[i];\n t = m.tuple;\n f = m.field;\n id = cur[tupleid(t)];\n if (id > 0) {\n modify(t, f, m.value);\n pulse.modifies(f);\n }\n }\n\n // process predicate-based modifications\n for (i = 0, n = modp.length; i < n; ++i) {\n m = modp[i];\n f = m.filter;\n tuples.forEach(t => {\n if (f(t) && cur[tupleid(t)] > 0) {\n modify(t, m.field, m.value);\n }\n });\n pulse.modifies(m.field);\n }\n\n // upon reflow request, populate mod with all non-removed tuples\n // otherwise, populate mod with modified tuples only\n if (reflow) {\n pulse.mod = rem.length || remp.length ? tuples.filter(t => cur[tupleid(t)] > 0) : tuples.slice();\n } else {\n for (id in out) pulse.mod.push(out[id]);\n }\n\n // set pulse garbage collection request\n if (clean || clean == null && (rem.length || remp.length)) {\n pulse.clean(true);\n }\n return pulse;\n }\n };\n}\n\nconst CACHE = '_:mod:_';\n\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\nfunction Parameters() {\n Object.defineProperty(this, CACHE, {\n writable: true,\n value: {}\n });\n}\nParameters.prototype = {\n /**\n * Set a parameter value. If the parameter value changes, the parameter\n * will be recorded as modified.\n * @param {string} name - The parameter name.\n * @param {number} index - The index into an array-value parameter. Ignored if\n * the argument is undefined, null or less than zero.\n * @param {*} value - The parameter value to set.\n * @param {boolean} [force=false] - If true, records the parameter as modified\n * even if the value is unchanged.\n * @return {Parameters} - This parameter object.\n */\n set(name, index, value, force) {\n const o = this,\n v = o[name],\n mod = o[CACHE];\n if (index != null && index >= 0) {\n if (v[index] !== value || force) {\n v[index] = value;\n mod[index + ':' + name] = -1;\n mod[name] = -1;\n }\n } else if (v !== value || force) {\n o[name] = value;\n mod[name] = isArray(value) ? 1 + value.length : -1;\n }\n return o;\n },\n /**\n * Tests if one or more parameters has been modified. If invoked with no\n * arguments, returns true if any parameter value has changed. If the first\n * argument is array, returns trues if any parameter name in the array has\n * changed. Otherwise, tests if the given name and optional array index has\n * changed.\n * @param {string} name - The parameter name to test.\n * @param {number} [index=undefined] - The parameter array index to test.\n * @return {boolean} - Returns true if a queried parameter was modified.\n */\n modified(name, index) {\n const mod = this[CACHE];\n if (!arguments.length) {\n for (const k in mod) {\n if (mod[k]) return true;\n }\n return false;\n } else if (isArray(name)) {\n for (let k = 0; k < name.length; ++k) {\n if (mod[name[k]]) return true;\n }\n return false;\n }\n return index != null && index >= 0 ? index + 1 < mod[name] || !!mod[index + ':' + name] : !!mod[name];\n },\n /**\n * Clears the modification records. After calling this method,\n * all parameters are considered unmodified.\n */\n clear() {\n this[CACHE] = {};\n return this;\n }\n};\n\nlet OP_ID = 0;\nconst PULSE = 'pulse',\n NO_PARAMS = new Parameters();\n\n// Boolean Flags\nconst SKIP$1 = 1,\n MODIFIED = 2;\n\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n * evaluation of this operator, the update function will be invoked and the\n * return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @see parameters\n */\nfunction Operator(init, update, params, react) {\n this.id = ++OP_ID;\n this.value = init;\n this.stamp = -1;\n this.rank = -1;\n this.qrank = -1;\n this.flags = 0;\n if (update) {\n this._update = update;\n }\n if (params) this.parameters(params, react);\n}\nfunction flag(bit) {\n return function (state) {\n const f = this.flags;\n if (arguments.length === 0) return !!(f & bit);\n this.flags = state ? f | bit : f & ~bit;\n return this;\n };\n}\nOperator.prototype = {\n /**\n * Returns a list of target operators dependent on this operator.\n * If this list does not exist, it is created and then returned.\n * @return {UniqueList}\n */\n targets() {\n return this._targets || (this._targets = UniqueList(id));\n },\n /**\n * Sets the value of this operator.\n * @param {*} value - the value to set.\n * @return {Number} Returns 1 if the operator value has changed\n * according to strict equality, returns 0 otherwise.\n */\n set(value) {\n if (this.value !== value) {\n this.value = value;\n return 1;\n } else {\n return 0;\n }\n },\n /**\n * Indicates that operator evaluation should be skipped on the next pulse.\n * This operator will still propagate incoming pulses, but its update function\n * will not be invoked. The skip flag is reset after every pulse, so calling\n * this method will affect processing of the next pulse only.\n */\n skip: flag(SKIP$1),\n /**\n * Indicates that this operator's value has been modified on its most recent\n * pulse. Normally modification is checked via strict equality; however, in\n * some cases it is more efficient to update the internal state of an object.\n * In those cases, the modified flag can be used to trigger propagation. Once\n * set, the modification flag persists across pulses until unset. The flag can\n * be used with the last timestamp to test if a modification is recent.\n */\n modified: flag(MODIFIED),\n /**\n * Sets the parameters for this operator. The parameter values are analyzed for\n * operator instances. If found, this operator will be added as a dependency\n * of the parameterizing operator. Operator values are dynamically marshalled\n * from each operator parameter prior to evaluation. If a parameter value is\n * an array, the array will also be searched for Operator instances. However,\n * the search does not recurse into sub-arrays or object properties.\n * @param {object} params - A hash of operator parameters.\n * @param {boolean} [react=true] - A flag indicating if this operator should\n * automatically update (react) when parameter values change. In other words,\n * this flag determines if the operator registers itself as a listener on\n * any upstream operators included in the parameters.\n * @param {boolean} [initonly=false] - A flag indicating if this operator\n * should calculate an update only upon its initial evaluation, then\n * deregister dependencies and suppress all future update invocations.\n * @return {Operator[]} - An array of upstream dependencies.\n */\n parameters(params, react, initonly) {\n react = react !== false;\n const argval = this._argval = this._argval || new Parameters(),\n argops = this._argops = this._argops || [],\n deps = [];\n let name, value, n, i;\n const add = (name, index, value) => {\n if (value instanceof Operator) {\n if (value !== this) {\n if (react) value.targets().add(this);\n deps.push(value);\n }\n argops.push({\n op: value,\n name: name,\n index: index\n });\n } else {\n argval.set(name, index, value);\n }\n };\n for (name in params) {\n value = params[name];\n if (name === PULSE) {\n array(value).forEach(op => {\n if (!(op instanceof Operator)) {\n error('Pulse parameters must be operator instances.');\n } else if (op !== this) {\n op.targets().add(this);\n deps.push(op);\n }\n });\n this.source = value;\n } else if (isArray(value)) {\n argval.set(name, -1, Array(n = value.length));\n for (i = 0; i < n; ++i) add(name, i, value[i]);\n } else {\n add(name, -1, value);\n }\n }\n this.marshall().clear(); // initialize values\n if (initonly) argops.initonly = true;\n return deps;\n },\n /**\n * Internal method for marshalling parameter values.\n * Visits each operator dependency to pull the latest value.\n * @return {Parameters} A Parameters object to pass to the update function.\n */\n marshall(stamp) {\n const argval = this._argval || NO_PARAMS,\n argops = this._argops;\n let item, i, op, mod;\n if (argops) {\n const n = argops.length;\n for (i = 0; i < n; ++i) {\n item = argops[i];\n op = item.op;\n mod = op.modified() && op.stamp === stamp;\n argval.set(item.name, item.index, op.value, mod);\n }\n if (argops.initonly) {\n for (i = 0; i < n; ++i) {\n item = argops[i];\n item.op.targets().remove(this);\n }\n this._argops = null;\n this._update = null;\n }\n }\n return argval;\n },\n /**\n * Detach this operator from the dataflow.\n * Unregisters listeners on upstream dependencies.\n */\n detach() {\n const argops = this._argops;\n let i, n, item, op;\n if (argops) {\n for (i = 0, n = argops.length; i < n; ++i) {\n item = argops[i];\n op = item.op;\n if (op._targets) {\n op._targets.remove(this);\n }\n }\n }\n\n // remove references to the source and pulse object,\n // if present, to prevent memory leaks of old data.\n this.pulse = null;\n this.source = null;\n },\n /**\n * Delegate method to perform operator processing.\n * Subclasses can override this method to perform custom processing.\n * By default, it marshalls parameters and calls the update function\n * if that function is defined. If the update function does not\n * change the operator value then StopPropagation is returned.\n * If no update function is defined, this method does nothing.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return The output pulse or StopPropagation. A falsy return value\n * (including undefined) will let the input pulse pass through.\n */\n evaluate(pulse) {\n const update = this._update;\n if (update) {\n const params = this.marshall(pulse.stamp),\n v = update.call(this, params, pulse);\n params.clear();\n if (v !== this.value) {\n this.value = v;\n } else if (!this.modified()) {\n return pulse.StopPropagation;\n }\n }\n },\n /**\n * Run this operator for the current pulse. If this operator has already\n * been run at (or after) the pulse timestamp, returns StopPropagation.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\n run(pulse) {\n if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n let rv;\n if (this.skip()) {\n this.skip(false);\n rv = 0;\n } else {\n rv = this.evaluate(pulse);\n }\n return this.pulse = rv || pulse;\n }\n};\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n * the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n * listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\nfunction add (init, update, params, react) {\n let shift = 1,\n op;\n if (init instanceof Operator) {\n op = init;\n } else if (init && init.prototype instanceof Operator) {\n op = new init();\n } else if (isFunction(init)) {\n op = new Operator(null, init);\n } else {\n shift = 0;\n op = new Operator(init, update);\n }\n this.rank(op);\n if (shift) {\n react = params;\n params = update;\n }\n if (params) this.connect(op, op.parameters(params, react));\n this.touch(op);\n return op;\n}\n\n/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array<Operator>} - The source operators that should propagate\n * to the target operator.\n */\nfunction connect (target, sources) {\n const targetRank = target.rank,\n n = sources.length;\n for (let i = 0; i < n; ++i) {\n if (targetRank < sources[i].rank) {\n this.rerank(target);\n return;\n }\n }\n}\n\nlet STREAM_ID = 0;\n\n/**\n * Models an event stream.\n * @constructor\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n * Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n * new event values.\n * @param {function(Object)} [receive] - Event callback function to invoke\n * upon receipt of a new event. Use to override standard event processing.\n */\nfunction EventStream(filter, apply, receive) {\n this.id = ++STREAM_ID;\n this.value = null;\n if (receive) this.receive = receive;\n if (filter) this._filter = filter;\n if (apply) this._apply = apply;\n}\n\n/**\n * Creates a new event stream instance with the provided\n * (optional) filter, apply and receive functions.\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n * Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n * new event values.\n * @see EventStream\n */\nfunction stream(filter, apply, receive) {\n return new EventStream(filter, apply, receive);\n}\nEventStream.prototype = {\n _filter: truthy,\n _apply: identity,\n targets() {\n return this._targets || (this._targets = UniqueList(id));\n },\n consume(_) {\n if (!arguments.length) return !!this._consume;\n this._consume = !!_;\n return this;\n },\n receive(evt) {\n if (this._filter(evt)) {\n const val = this.value = this._apply(evt),\n trg = this._targets,\n n = trg ? trg.length : 0;\n for (let i = 0; i < n; ++i) trg[i].receive(val);\n if (this._consume) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n }\n },\n filter(filter) {\n const s = stream(filter);\n this.targets().add(s);\n return s;\n },\n apply(apply) {\n const s = stream(null, apply);\n this.targets().add(s);\n return s;\n },\n merge() {\n const s = stream();\n this.targets().add(s);\n for (let i = 0, n = arguments.length; i < n; ++i) {\n arguments[i].targets().add(s);\n }\n return s;\n },\n throttle(pause) {\n let t = -1;\n return this.filter(() => {\n const now = Date.now();\n if (now - t > pause) {\n t = now;\n return 1;\n } else {\n return 0;\n }\n });\n },\n debounce(delay) {\n const s = stream();\n this.targets().add(stream(null, null, debounce(delay, e => {\n const df = e.dataflow;\n s.receive(e);\n if (df && df.run) df.run();\n })));\n return s;\n },\n between(a, b) {\n let active = false;\n a.targets().add(stream(null, null, () => active = true));\n b.targets().add(stream(null, null, () => active = false));\n return this.filter(() => active);\n },\n detach() {\n // ensures compatibility with operators (#2753)\n // remove references to other streams and filter functions that may\n // be bound to subcontexts that need to be garbage collected.\n this._filter = truthy;\n this._targets = null;\n }\n};\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n * support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n * If provided, this function will be invoked and the result will be\n * used as the downstream event value.\n * @return {EventStream}\n */\nfunction events (source, type, filter, apply) {\n const df = this,\n s = stream(filter, apply),\n send = function (e) {\n e.dataflow = df;\n try {\n s.receive(e);\n } catch (error) {\n df.error(error);\n } finally {\n df.run();\n }\n };\n let sources;\n if (typeof source === 'string' && typeof document !== 'undefined') {\n sources = document.querySelectorAll(source);\n } else {\n sources = array(source);\n }\n const n = sources.length;\n for (let i = 0; i < n; ++i) {\n sources[i].addEventListener(type, send);\n }\n return s;\n}\n\nfunction parse(data, format) {\n const locale = this.locale();\n return read(data, format, locale.timeParse, locale.utcParse);\n}\n\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n * typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n * be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\nfunction ingest(target, data, format) {\n data = this.parse(data, format);\n return this.pulse(target, this.changeset().insert(data));\n}\n\n/**\n * Request data from an external source, parse it, and return a Promise.\n * @param {string} url - The URL from which to load the data. This string\n * is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n * loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n * The resolved object contains the following properties:\n * - data: an array of parsed data (or null upon error)\n * - status: a code for success (0), load fail (-1), or parse fail (-2)\n */\nasync function request(url, format) {\n const df = this;\n let status = 0,\n data;\n try {\n data = await df.loader().load(url, {\n context: 'dataflow',\n response: responseType(format && format.type)\n });\n try {\n data = df.parse(data, format);\n } catch (err) {\n status = -2;\n df.warn('Data ingestion failed', url, err);\n }\n } catch (err) {\n status = -1;\n df.warn('Loading failed', url, err);\n }\n return {\n data,\n status\n };\n}\nasync function preload(target, url, format) {\n const df = this,\n pending = df._pending || loadPending(df);\n pending.requests += 1;\n const res = await df.request(url, format);\n df.pulse(target, df.changeset().remove(truthy).insert(res.data || []));\n pending.done();\n return res;\n}\nfunction loadPending(df) {\n let accept;\n const pending = new Promise(a => accept = a);\n pending.requests = 0;\n pending.done = () => {\n if (--pending.requests === 0) {\n df._pending = null;\n accept(df);\n }\n };\n return df._pending = pending;\n}\n\nconst SKIP = {\n skip: true\n};\n\n/**\n * Perform operator updates in response to events. Applies an\n * update function to compute a new operator value. If the update function\n * returns a {@link ChangeSet}, the operator will be pulsed with those tuple\n * changes. Otherwise, the operator value will be updated to the return value.\n * @param {EventStream|Operator} source - The event source to react to.\n * This argument can be either an EventStream or an Operator.\n * @param {Operator|function(object):Operator} target - The operator to update.\n * This argument can either be an Operator instance or (if the source\n * argument is an EventStream), a function that accepts an event object as\n * input and returns an Operator to target.\n * @param {function(Parameters,Event): *} [update] - Optional update function\n * to compute the new operator value, or a literal value to set. Update\n * functions expect to receive a parameter object and event as arguments.\n * This function can either return a new operator value or (if the source\n * argument is an EventStream) a {@link ChangeSet} instance to pulse\n * the target operator with tuple changes.\n * @param {object} [params] - The update function parameters.\n * @param {object} [options] - Additional options hash. If not overridden,\n * updated operators will be skipped by default.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @return {Dataflow}\n */\nfunction on (source, target, update, params, options) {\n const fn = source instanceof Operator ? onOperator : onStream;\n fn(this, source, target, update, params, options);\n return this;\n}\nfunction onStream(df, stream, target, update, params, options) {\n const opt = extend({}, options, SKIP);\n let func, op;\n if (!isFunction(target)) target = constant(target);\n if (update === undefined) {\n func = e => df.touch(target(e));\n } else if (isFunction(update)) {\n op = new Operator(null, update, params, false);\n func = e => {\n op.evaluate(e);\n const t = target(e),\n v = op.value;\n isChangeSet(v) ? df.pulse(t, v, options) : df.update(t, v, opt);\n };\n } else {\n func = e => df.update(target(e), update, opt);\n }\n stream.apply(func);\n}\nfunction onOperator(df, source, target, update, params, options) {\n if (update === undefined) {\n source.targets().add(target);\n } else {\n const opt = options || {},\n op = new Operator(null, updater(target, update), params, false);\n op.modified(opt.force);\n op.rank = source.rank; // immediately follow source\n source.targets().add(op); // add dependency\n\n if (target) {\n op.skip(true); // skip first invocation\n op.value = target.value; // initialize value\n op.targets().add(target); // chain dependencies\n df.connect(target, [op]); // rerank as needed, #1672\n }\n }\n}\n\nfunction updater(target, update) {\n update = isFunction(update) ? update : constant(update);\n return target ? function (_, pulse) {\n const value = update(_, pulse);\n if (!target.skip()) {\n target.skip(value !== this.value).value = value;\n }\n return value;\n } : update;\n}\n\n/**\n * Assigns a rank to an operator. Ranks are assigned in increasing order\n * by incrementing an internal rank counter.\n * @param {Operator} op - The operator to assign a rank.\n */\nfunction rank(op) {\n op.rank = ++this._rank;\n}\n\n/**\n * Re-ranks an operator and all downstream target dependencies. This\n * is necessary when upstream dependencies of higher rank are added to\n * a target operator.\n * @param {Operator} op - The operator to re-rank.\n */\nfunction rerank(op) {\n const queue = [op];\n let cur, list, i;\n while (queue.length) {\n this.rank(cur = queue.pop());\n if (list = cur._targets) {\n for (i = list.length; --i >= 0;) {\n queue.push(cur = list[i]);\n if (cur === op) error('Cycle detected in dataflow graph.');\n }\n }\n }\n}\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\nconst StopPropagation = {};\n\n// Pulse visit type flags\nconst ADD = 1 << 0,\n REM = 1 << 1,\n MOD = 1 << 2,\n ADD_REM = ADD | REM,\n ADD_MOD = ADD | MOD,\n ALL = ADD | REM | MOD,\n REFLOW = 1 << 3,\n SOURCE = 1 << 4,\n NO_SOURCE = 1 << 5,\n NO_FIELDS = 1 << 6;\n\n/**\n * A Pulse enables inter-operator communication during a run of the\n * dataflow graph. In addition to the current timestamp, a pulse may also\n * contain a change-set of added, removed or modified data tuples, as well as\n * a pointer to a full backing data source. Tuple change sets may not\n * be fully materialized; for example, to prevent needless array creation\n * a change set may include larger arrays and corresponding filter functions.\n * The pulse provides a {@link visit} method to enable proper and efficient\n * iteration over requested data tuples.\n *\n * In addition, each pulse can track modification flags for data tuple fields.\n * Responsible transform operators should call the {@link modifies} method to\n * indicate changes to data fields. The {@link modified} method enables\n * querying of this modification state.\n *\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The current propagation timestamp.\n * @param {string} [encode] - An optional encoding set name, which is then\n * accessible as Pulse.encode. Operators can respond to (or ignore) this\n * setting as appropriate. This parameter can be used in conjunction with\n * the Encode transform in the vega-encode module.\n */\nfunction Pulse(dataflow, stamp, encode) {\n this.dataflow = dataflow;\n this.stamp = stamp == null ? -1 : stamp;\n this.add = [];\n this.rem = [];\n this.mod = [];\n this.fields = null;\n this.encode = encode || null;\n}\nfunction materialize(data, filter) {\n const out = [];\n visitArray(data, filter, _ => out.push(_));\n return out;\n}\nfunction filter(pulse, flags) {\n const map = {};\n pulse.visit(flags, t => {\n map[tupleid(t)] = 1;\n });\n return t => map[tupleid(t)] ? null : t;\n}\nfunction addFilter(a, b) {\n return a ? (t, i) => a(t, i) && b(t, i) : b;\n}\nPulse.prototype = {\n /**\n * Sentinel value indicating pulse propagation should stop.\n */\n StopPropagation,\n /**\n * Boolean flag indicating ADD (added) tuples.\n */\n ADD,\n /**\n * Boolean flag indicating REM (removed) tuples.\n */\n REM,\n /**\n * Boolean flag indicating MOD (modified) tuples.\n */\n MOD,\n /**\n * Boolean flag indicating ADD (added) and REM (removed) tuples.\n */\n ADD_REM,\n /**\n * Boolean flag indicating ADD (added) and MOD (modified) tuples.\n */\n ADD_MOD,\n /**\n * Boolean flag indicating ADD, REM and MOD tuples.\n */\n ALL,\n /**\n * Boolean flag indicating all tuples in a data source\n * except for the ADD, REM and MOD tuples.\n */\n REFLOW,\n /**\n * Boolean flag indicating a 'pass-through' to a\n * backing data source, ignoring ADD, REM and MOD tuples.\n */\n SOURCE,\n /**\n * Boolean flag indicating that source data should be\n * suppressed when creating a forked pulse.\n */\n NO_SOURCE,\n /**\n * Boolean flag indicating that field modifications should be\n * suppressed when creating a forked pulse.\n */\n NO_FIELDS,\n /**\n * Creates a new pulse based on the values of this pulse.\n * The dataflow, time stamp and field modification values are copied over.\n * By default, new empty ADD, REM and MOD arrays are created.\n * @param {number} flags - Integer of boolean flags indicating which (if any)\n * tuple arrays should be copied to the new pulse. The supported flag values\n * are ADD, REM and MOD. Array references are copied directly: new array\n * instances are not created.\n * @return {Pulse} - The forked pulse instance.\n * @see init\n */\n fork(flags) {\n return new Pulse(this.dataflow).init(this, flags);\n },\n /**\n * Creates a copy of this pulse with new materialized array\n * instances for the ADD, REM, MOD, and SOURCE arrays.\n * The dataflow, time stamp and field modification values are copied over.\n * @return {Pulse} - The cloned pulse instance.\n * @see init\n */\n clone() {\n const p = this.fork(ALL);\n p.add = p.add.slice();\n p.rem = p.rem.slice();\n p.mod = p.mod.slice();\n if (p.source) p.source = p.source.slice();\n return p.materialize(ALL | SOURCE);\n },\n /**\n * Returns a pulse that adds all tuples from a backing source. This is\n * useful for cases where operators are added to a dataflow after an\n * upstream data pipeline has already been processed, ensuring that\n * new operators can observe all tuples within a stream.\n * @return {Pulse} - A pulse instance with all source tuples included\n * in the add array. If the current pulse already has all source\n * tuples in its add array, it is returned directly. If the current\n * pulse does not have a backing source, it is returned directly.\n */\n addAll() {\n let p = this;\n const reuse = !p.source || p.add === p.rem // special case for indexed set (e.g., crossfilter)\n || !p.rem.length && p.source.length === p.add.length;\n if (reuse) {\n return p;\n } else {\n p = new Pulse(this.dataflow).init(this);\n p.add = p.source;\n p.rem = []; // new operators can ignore rem #2769\n return p;\n }\n },\n /**\n * Initialize this pulse based on the values of another pulse. This method\n * is used internally by {@link fork} to initialize a new forked tuple.\n * The dataflow, time stamp and field modification values are copied over.\n * By default, new empty ADD, REM and MOD arrays are created.\n * @param {Pulse} src - The source pulse to copy from.\n * @param {number} flags - Integer of boolean flags indicating which (if any)\n * tuple arrays should be copied to the new pulse. The supported flag values\n * are ADD, REM and MOD. Array references are copied directly: new array\n * instances are not created. By default, source data arrays are copied\n * to the new pulse. Use the NO_SOURCE flag to enforce a null source.\n * @return {Pulse} - Returns this Pulse instance.\n */\n init(src, flags) {\n const p = this;\n p.stamp = src.stamp;\n p.encode = src.encode;\n if (src.fields && !(flags & NO_FIELDS)) {\n p.fields = src.fields;\n }\n if (flags & ADD) {\n p.addF = src.addF;\n p.add = src.add;\n } else {\n p.addF = null;\n p.add = [];\n }\n if (flags & REM) {\n p.remF = src.remF;\n p.rem = src.rem;\n } else {\n p.remF = null;\n p.rem = [];\n }\n if (flags & MOD) {\n p.modF = src.modF;\n p.mod = src.mod;\n } else {\n p.modF = null;\n p.mod = [];\n }\n if (flags & NO_SOURCE) {\n p.srcF = null;\n p.source = null;\n } else {\n p.srcF = src.srcF;\n p.source = src.source;\n if (src.cleans) p.cleans = src.cleans;\n }\n return p;\n },\n /**\n * Schedules a function to run after pulse propagation completes.\n * @param {function} func - The function to run.\n */\n runAfter(func) {\n this.dataflow.runAfter(func);\n },\n /**\n * Indicates if tuples have been added, removed or modified.\n * @param {number} [flags] - The tuple types (ADD, REM or MOD) to query.\n * Defaults to ALL, returning true if any tuple type has changed.\n * @return {boolean} - Returns true if one or more queried tuple types have\n * changed, false otherwise.\n */\n changed(flags) {\n const f = flags || ALL;\n return f & ADD && this.add.length || f & REM && this.rem.length || f & MOD && this.mod.length;\n },\n /**\n * Forces a \"reflow\" of tuple values, such that all tuples in the backing\n * source are added to the MOD set, unless already present in the ADD set.\n * @param {boolean} [fork=false] - If true, returns a forked copy of this\n * pulse, and invokes reflow on that derived pulse.\n * @return {Pulse} - The reflowed pulse instance.\n */\n reflow(fork) {\n if (fork) return this.fork(ALL).reflow();\n const len = this.add.length,\n src = this.source && this.source.length;\n if (src && src !== len) {\n this.mod = this.source;\n if (len) this.filter(MOD, filter(this, ADD));\n }\n return this;\n },\n /**\n * Get/set metadata to pulse requesting garbage collection\n * to reclaim currently unused resources.\n */\n clean(value) {\n if (arguments.length) {\n this.cleans = !!value;\n return this;\n } else {\n return this.cleans;\n }\n },\n /**\n * Marks one or more data field names as modified to assist dependency\n * tracking and incremental processing by transform operators.\n * @param {string|Array<string>} _ - The field(s) to mark as modified.\n * @return {Pulse} - This pulse instance.\n */\n modifies(_) {\n const hash = this.fields || (this.fields = {});\n if (isArray(_)) {\n _.forEach(f => hash[f] = true);\n } else {\n hash[_] = true;\n }\n return this;\n },\n /**\n * Checks if one or more data fields have been modified during this pulse\n * propagation timestamp.\n * @param {string|Array<string>} _ - The field(s) to check for modified.\n * @param {boolean} nomod - If true, will check the modified flag even if\n * no mod tuples exist. If false (default), mod tuples must be present.\n * @return {boolean} - Returns true if any of the provided fields has been\n * marked as modified, false otherwise.\n */\n modified(_, nomod) {\n const fields = this.fields;\n return !((nomod || this.mod.length) && fields) ? false : !arguments.length ? !!fields : isArray(_) ? _.some(f => fields[f]) : fields[_];\n },\n /**\n * Adds a filter function to one more tuple sets. Filters are applied to\n * backing tuple arrays, to determine the actual set of tuples considered\n * added, removed or modified. They can be used to delay materialization of\n * a tuple set in order to avoid expensive array copies. In addition, the\n * filter functions can serve as value transformers: unlike standard predicate\n * function (which return boolean values), Pulse filters should return the\n * actual tuple value to process. If a tuple set is already filtered, the\n * new filter function will be appended into a conjuntive ('and') query.\n * @param {number} flags - Flags indicating the tuple set(s) to filter.\n * @param {function(*):object} filter - Filter function that will be applied\n * to the tuple set array, and should return a data tuple if the value\n * should be included in the tuple set, and falsy (or null) otherwise.\n * @return {Pulse} - Returns this pulse instance.\n */\n filter(flags, filter) {\n const p = this;\n if (flags & ADD) p.addF = addFilter(p.addF, filter);\n if (flags & REM) p.remF = addFilter(p.remF, filter);\n if (flags & MOD) p.modF = addFilter(p.modF, filter);\n if (flags & SOURCE) p.srcF = addFilter(p.srcF, filter);\n return p;\n },\n /**\n * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n * a registered filter function, it will be applied and the tuple set(s) will\n * be replaced with materialized tuple arrays.\n * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n * @return {Pulse} - Returns this pulse instance.\n */\n materialize(flags) {\n flags = flags || ALL;\n const p = this;\n if (flags & ADD && p.addF) {\n p.add = materialize(p.add, p.addF);\n p.addF = null;\n }\n if (flags & REM && p.remF) {\n p.rem = materialize(p.rem, p.remF);\n p.remF = null;\n }\n if (flags & MOD && p.modF) {\n p.mod = materialize(p.mod, p.modF);\n p.modF = null;\n }\n if (flags & SOURCE && p.srcF) {\n p.source = p.source.filter(p.srcF);\n p.srcF = null;\n }\n return p;\n },\n /**\n * Visit one or more tuple sets in this pulse.\n * @param {number} flags - Flags indicating the tuple set(s) to visit.\n * Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n * has been set).\n * @param {function(object):*} - Visitor function invoked per-tuple.\n * @return {Pulse} - Returns this pulse instance.\n */\n visit(flags, visitor) {\n const p = this,\n v = visitor;\n if (flags & SOURCE) {\n visitArray(p.source, p.srcF, v);\n return p;\n }\n if (flags & ADD) visitArray(p.add, p.addF, v);\n if (flags & REM) visitArray(p.rem, p.remF, v);\n if (flags & MOD) visitArray(p.mod, p.modF, v);\n const src = p.source;\n if (flags & REFLOW && src) {\n const sum = p.add.length + p.mod.length;\n if (sum === src.length) ; else if (sum) {\n visitArray(src, filter(p, ADD_MOD), v);\n } else {\n // if no add/rem/mod tuples, visit source\n visitArray(src, p.srcF, v);\n }\n }\n return p;\n }\n};\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array<Pulse>} pulses - The sub-pulses for this multi-pulse.\n */\nfunction MultiPulse(dataflow, stamp, pulses, encode) {\n const p = this;\n let c = 0;\n this.dataflow = dataflow;\n this.stamp = stamp;\n this.fields = null;\n this.encode = encode || null;\n this.pulses = pulses;\n for (const pulse of pulses) {\n if (pulse.stamp !== stamp) continue;\n if (pulse.fields) {\n const hash = p.fields || (p.fields = {});\n for (const f in pulse.fields) {\n hash[f] = 1;\n }\n }\n if (pulse.changed(p.ADD)) c |= p.ADD;\n if (pulse.changed(p.REM)) c |= p.REM;\n if (pulse.changed(p.MOD)) c |= p.MOD;\n }\n this.changes = c;\n}\ninherits(MultiPulse, Pulse, {\n /**\n * Creates a new pulse based on the values of this pulse.\n * The dataflow, time stamp and field modification values are copied over.\n * @return {Pulse}\n */\n fork(flags) {\n const p = new Pulse(this.dataflow).init(this, flags & this.NO_FIELDS);\n if (flags !== undefined) {\n if (flags & p.ADD) this.visit(p.ADD, t => p.add.push(t));\n if (flags & p.REM) this.visit(p.REM, t => p.rem.push(t));\n if (flags & p.MOD) this.visit(p.MOD, t => p.mod.push(t));\n }\n return p;\n },\n changed(flags) {\n return this.changes & flags;\n },\n modified(_) {\n const p = this,\n fields = p.fields;\n return !(fields && p.changes & p.MOD) ? 0 : isArray(_) ? _.some(f => fields[f]) : fields[_];\n },\n filter() {\n error('MultiPulse does not support filtering.');\n },\n materialize() {\n error('MultiPulse does not support materialization.');\n },\n visit(flags, visitor) {\n const p = this,\n pulses = p.pulses,\n n = pulses.length;\n let i = 0;\n if (flags & p.SOURCE) {\n for (; i < n; ++i) {\n pulses[i].visit(flags, visitor);\n }\n } else {\n for (; i < n; ++i) {\n if (pulses[i].stamp === p.stamp) {\n pulses[i].visit(flags, visitor);\n }\n }\n }\n return p;\n }\n});\n\n/* eslint-disable require-atomic-updates */\n\n/**\n * Evaluates the dataflow and returns a Promise that resolves when pulse\n * propagation completes. This method will increment the current timestamp\n * and process all updated, pulsed and touched operators. When invoked for\n * the first time, all registered operators will be processed. This method\n * should not be invoked by third-party clients, use {@link runAsync} or\n * {@link run} instead.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n * evaluation completes.\n */\nasync function evaluate(encode, prerun, postrun) {\n const df = this,\n async = [];\n\n // if the pulse value is set, this is a re-entrant call\n if (df._pulse) return reentrant(df);\n\n // wait for pending datasets to load\n if (df._pending) await df._pending;\n\n // invoke prerun function, if provided\n if (prerun) await asyncCallback(df, prerun);\n\n // exit early if there are no updates\n if (!df._touched.length) {\n df.debug('Dataflow invoked, but nothing to do.');\n return df;\n }\n\n // increment timestamp clock\n const stamp = ++df._clock;\n\n // set the current pulse\n df._pulse = new Pulse(df, stamp, encode);\n\n // initialize priority queue, reset touched operators\n df._touched.forEach(op => df._enqueue(op, true));\n df._touched = UniqueList(id);\n let count = 0,\n op,\n next,\n error;\n try {\n while (df._heap.size() > 0) {\n // dequeue operator with highest priority\n op = df._heap.pop();\n\n // re-queue if rank changed\n if (op.rank !== op.qrank) {\n df._enqueue(op, true);\n continue;\n }\n\n // otherwise, evaluate the operator\n next = op.run(df._getPulse(op, encode));\n if (next.then) {\n // await if operator returns a promise directly\n next = await next;\n } else if (next.async) {\n // queue parallel asynchronous execution\n async.push(next.async);\n next = StopPropagation;\n }\n\n // propagate evaluation, enqueue dependent operators\n if (next !== StopPropagation) {\n if (op._targets) op._targets.forEach(op => df._enqueue(op));\n }\n\n // increment visit counter\n ++count;\n }\n } catch (err) {\n df._heap.clear();\n error = err;\n }\n\n // reset pulse map\n df._input = {};\n df._pulse = null;\n df.debug(`Pulse ${stamp}: ${count} operators`);\n if (error) {\n df._postrun = [];\n df.error(error);\n }\n\n // invoke callbacks queued via runAfter\n if (df._postrun.length) {\n const pr = df._postrun.sort((a, b) => b.priority - a.priority);\n df._postrun = [];\n for (let i = 0; i < pr.length; ++i) {\n await asyncCallback(df, pr[i].callback);\n }\n }\n\n // invoke postrun function, if provided\n if (postrun) await asyncCallback(df, postrun);\n\n // handle non-blocking asynchronous callbacks\n if (async.length) {\n Promise.all(async).then(cb => df.runAsync(null, () => {\n cb.forEach(f => {\n try {\n f(df);\n } catch (err) {\n df.error(err);\n }\n });\n }));\n }\n return df;\n}\n\n/**\n * Queues dataflow evaluation to run once any other queued evaluations have\n * completed and returns a Promise that resolves when the queued pulse\n * propagation completes. If provided, a callback function will be invoked\n * immediately before evaluation commences. This method will ensure a\n * separate evaluation is invoked for each time it is called.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n * evaluation completes.\n */\nasync function runAsync(encode, prerun, postrun) {\n // await previously queued functions\n while (this._running) await this._running;\n\n // run dataflow, manage running promise\n const clear = () => this._running = null;\n (this._running = this.evaluate(encode, prerun, postrun)).then(clear, clear);\n return this._running;\n}\n\n/**\n * Requests dataflow evaluation and the immediately returns this dataflow\n * instance. If there are pending data loading or other asynchronous\n * operations, the dataflow will evaluate asynchronously after this method\n * has been invoked. To track when dataflow evaluation completes, use the\n * {@link runAsync} method instead. This method will raise an error if\n * invoked while the dataflow is already in the midst of evaluation.\n * @param {string} [encode] - The name of an encoding set to invoke during\n * propagation. This value is added to generated Pulse instances;\n * operators can then respond to (or ignore) this setting as appropriate.\n * This parameter can be used in conjunction with the Encode transform in\n * the vega-encode module.\n * @param {function} [prerun] - An optional callback function to invoke\n * immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n * after dataflow evaluation completes. The callback will be invoked\n * after those registered via {@link runAfter}.\n * @return {Dataflow} - This dataflow instance.\n */\nfunction run(encode, prerun, postrun) {\n return this._pulse ? reentrant(this) : (this.evaluate(encode, prerun, postrun), this);\n}\n\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately. Callbacks scheduled via runAfter\n * are invoked immediately upon completion of the current cycle, before\n * any request queued via runAsync. This method is primarily intended for\n * internal use. Third-party callers using runAfter to schedule a callback\n * that invokes {@link run} or {@link runAsync} should not use this method,\n * but instead use {@link runAsync} with prerun or postrun arguments.\n * @param {function(Dataflow)} callback - The callback function to run.\n * The callback will be invoked with this Dataflow instance as its\n * sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n * callback should be queued up to run after the next propagation\n * cycle, suppressing immediate invocation when propagation is not\n * currently occurring.\n * @param {number} [priority] - A priority value used to sort registered\n * callbacks to determine execution order. This argument is intended\n * for internal Vega use only.\n */\nfunction runAfter(callback, enqueue, priority) {\n if (this._pulse || enqueue) {\n // pulse propagation is currently running, queue to run after\n this._postrun.push({\n priority: priority || 0,\n callback: callback\n });\n } else {\n // pulse propagation already complete, invoke immediately\n try {\n callback(this);\n } catch (err) {\n this.error(err);\n }\n }\n}\n\n/**\n * Raise an error for re-entrant dataflow evaluation.\n */\nfunction reentrant(df) {\n df.error('Dataflow already running. Use runAsync() to chain invocations.');\n return df;\n}\n\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n * forceably added to the queue, even if it has already been previously\n * enqueued during the current pulse propagation. This is useful when the\n * dataflow graph is dynamically modified and the operator rank changes.\n */\nfunction enqueue(op, force) {\n const q = op.stamp < this._clock;\n if (q) op.stamp = this._clock;\n if (q || force) {\n op.qrank = op.rank;\n this._heap.push(op);\n }\n}\n\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n * annotate the returned pulse. See {@link run} for more information.\n */\nfunction getPulse(op, encode) {\n const s = op.source,\n stamp = this._clock;\n return s && isArray(s) ? new MultiPulse(this, stamp, s.map(_ => _.pulse), encode) : this._input[op.id] || singlePulse(this._pulse, s && s.pulse);\n}\nfunction singlePulse(p, s) {\n if (s && s.stamp === p.stamp) {\n return s;\n }\n p = p.fork();\n if (s && s !== StopPropagation) {\n p.source = s.source;\n }\n return p;\n}\n\nconst NO_OPT = {\n skip: false,\n force: false\n};\n\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction touch(op, options) {\n const opt = options || NO_OPT;\n if (this._pulse) {\n // if in midst of propagation, add to priority queue\n this._enqueue(op);\n } else {\n // otherwise, queue for next propagation\n this._touched.add(op);\n }\n if (opt.skip) op.skip(true);\n return this;\n}\n\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n * be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction update(op, value, options) {\n const opt = options || NO_OPT;\n if (op.set(value) || opt.force) {\n this.touch(op, opt);\n }\n return this;\n}\n\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n * be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction pulse(op, changeset, options) {\n this.touch(op, options || NO_OPT);\n const p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n t = op.pulse && op.pulse.source || [];\n p.target = op;\n this._input[op.id] = changeset.pulse(p, t);\n return this;\n}\n\nfunction Heap(cmp) {\n let nodes = [];\n return {\n clear: () => nodes = [],\n size: () => nodes.length,\n peek: () => nodes[0],\n push: x => {\n nodes.push(x);\n return siftdown(nodes, 0, nodes.length - 1, cmp);\n },\n pop: () => {\n const last = nodes.pop();\n let item;\n if (nodes.length) {\n item = nodes[0];\n nodes[0] = last;\n siftup(nodes, 0, cmp);\n } else {\n item = last;\n }\n return item;\n }\n };\n}\nfunction siftdown(array, start, idx, cmp) {\n let parent, pidx;\n const item = array[idx];\n while (idx > start) {\n pidx = idx - 1 >> 1;\n parent = array[pidx];\n if (cmp(item, parent) < 0) {\n array[idx] = parent;\n idx = pidx;\n continue;\n }\n break;\n }\n return array[idx] = item;\n}\nfunction siftup(array, idx, cmp) {\n const start = idx,\n end = array.length,\n item = array[idx];\n let cidx = (idx << 1) + 1,\n ridx;\n while (cidx < end) {\n ridx = cidx + 1;\n if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n cidx = ridx;\n }\n array[idx] = array[cidx];\n idx = cidx;\n cidx = (idx << 1) + 1;\n }\n array[idx] = item;\n return siftdown(array, start, idx, cmp);\n}\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\nfunction Dataflow() {\n this.logger(logger());\n this.logLevel(Error);\n this._clock = 0;\n this._rank = 0;\n this._locale = defaultLocale();\n try {\n this._loader = loader();\n } catch (e) {\n // do nothing if loader module is unavailable\n }\n this._touched = UniqueList(id);\n this._input = {};\n this._pulse = null;\n this._heap = Heap((a, b) => a.qrank - b.qrank);\n this._postrun = [];\n}\nfunction logMethod(method) {\n return function () {\n return this._log[method].apply(this, arguments);\n };\n}\nDataflow.prototype = {\n /**\n * The current timestamp of this dataflow. This value reflects the\n * timestamp of the previous dataflow run. The dataflow is initialized\n * with a stamp value of 0. The initial run of the dataflow will have\n * a timestap of 1, and so on. This value will match the\n * {@link Pulse.stamp} property.\n * @return {number} - The current timestamp value.\n */\n stamp() {\n return this._clock;\n },\n /**\n * Gets or sets the loader instance to use for data file loading. A\n * loader object must provide a \"load\" method for loading files and a\n * \"sanitize\" method for checking URL/filename validity. Both methods\n * should accept a URI and options hash as arguments, and return a Promise\n * that resolves to the loaded file contents (load) or a hash containing\n * sanitized URI data with the sanitized url assigned to the \"href\" property\n * (sanitize).\n * @param {object} _ - The loader instance to use.\n * @return {object|Dataflow} - If no arguments are provided, returns\n * the current loader instance. Otherwise returns this Dataflow instance.\n */\n loader(_) {\n if (arguments.length) {\n this._loader = _;\n return this;\n } else {\n return this._loader;\n }\n },\n /**\n * Gets or sets the locale instance to use for formatting and parsing\n * string values. The locale object should be provided by the\n * vega-format library, and include methods such as format, timeFormat,\n * utcFormat, timeParse, and utcParse.\n * @param {object} _ - The locale instance to use.\n * @return {object|Dataflow} - If no arguments are provided, returns\n * the current locale instance. Otherwise returns this Dataflow instance.\n */\n locale(_) {\n if (arguments.length) {\n this._locale = _;\n return this;\n } else {\n return this._locale;\n }\n },\n /**\n * Get or set the logger instance used to log messages. If no arguments are\n * provided, returns the current logger instance. Otherwise, sets the logger\n * and return this Dataflow instance. Provided loggers must support the full\n * API of logger objects generated by the vega-util logger method. Note that\n * by default the log level of the new logger will be used; use the logLevel\n * method to adjust the log level as needed.\n */\n logger(logger) {\n if (arguments.length) {\n this._log = logger;\n return this;\n } else {\n return this._log;\n }\n },\n /**\n * Logs an error message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit error messages.\n */\n error: logMethod('error'),\n /**\n * Logs a warning message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit warning messages.\n */\n warn: logMethod('warn'),\n /**\n * Logs a information message. By default, logged messages are written to\n * console output. The message will only be logged if the current log level is\n * high enough to permit information messages.\n */\n info: logMethod('info'),\n /**\n * Logs a debug message. By default, logged messages are written to console\n * output. The message will only be logged if the current log level is high\n * enough to permit debug messages.\n */\n debug: logMethod('debug'),\n /**\n * Get or set the current log level. If an argument is provided, it\n * will be used as the new log level.\n * @param {number} [level] - Should be one of None, Warn, Info\n * @return {number} - The current log level.\n */\n logLevel: logMethod('level'),\n /**\n * Empty entry threshold for garbage cleaning. Map data structures will\n * perform cleaning once the number of empty entries exceeds this value.\n */\n cleanThreshold: 1e4,\n // OPERATOR REGISTRATION\n add,\n connect,\n rank,\n rerank,\n // OPERATOR UPDATES\n pulse,\n touch,\n update,\n changeset,\n // DATA LOADING\n ingest,\n parse,\n preload,\n request,\n // EVENT HANDLING\n events,\n on,\n // PULSE PROPAGATION\n evaluate,\n run,\n runAsync,\n runAfter,\n _enqueue: enqueue,\n _getPulse: getPulse\n};\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\nfunction Transform(init, params) {\n Operator.call(this, init, null, params);\n}\ninherits(Transform, Operator, {\n /**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Internally, this method calls {@link evaluate} to perform processing.\n * If {@link evaluate} returns a falsy value, the input pulse is returned.\n * This method should NOT be overridden, instead overrride {@link evaluate}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return the output pulse for this operator (or StopPropagation)\n */\n run(pulse) {\n if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n let rv;\n if (this.skip()) {\n this.skip(false);\n } else {\n rv = this.evaluate(pulse);\n }\n rv = rv || pulse;\n if (rv.then) {\n rv = rv.then(_ => this.pulse = _);\n } else if (rv !== pulse.StopPropagation) {\n this.pulse = rv;\n }\n return rv;\n },\n /**\n * Overrides {@link Operator.evaluate} for transform operators.\n * Marshalls parameter values and then invokes {@link transform}.\n * @param {Pulse} pulse - the current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n value (including undefined) will let the input pulse pass through.\n */\n evaluate(pulse) {\n const params = this.marshall(pulse.stamp),\n out = this.transform(params, pulse);\n params.clear();\n return out;\n },\n /**\n * Process incoming pulses.\n * Subclasses should override this method to implement transforms.\n * @param {Parameters} _ - The operator parameter values.\n * @param {Pulse} pulse - The current dataflow pulse.\n * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n * value (including undefined) will let the input pulse pass through.\n */\n transform() {}\n});\n\nconst transforms = {};\nfunction definition(type) {\n const t = transform(type);\n return t && t.Definition || null;\n}\nfunction transform(type) {\n type = type && type.toLowerCase();\n return hasOwnProperty(transforms, type) ? transforms[type] : null;\n}\n\nexport { Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, UniqueList, asyncCallback, changeset, definition, derive, ingest$1 as ingest, isChangeSet, isTuple, rederive, replace, stableCompare, transform, transforms, tupleid };\n", "import { extend, identity, field, hasOwnProperty, extentIndex, inherits, array, accessorName, error, accessorFields, accessor, toNumber, merge, compare, truthy, extent, span, fastmap, isArray, key, ascending, peek, zero, constant } from 'vega-util';\nimport { tupleid, Transform, replace, ingest, stableCompare, Operator, derive, rederive } from 'vega-dataflow';\nimport { quartiles, bootstrapCI, bin, randomKDE, randomMixture, randomNormal, randomLogNormal, randomUniform, sampleCurve, dotbin, quantiles, random } from 'vega-statistics';\nimport { median, mean, min, max, range, bisector } from 'd3-array';\nimport { TIME_UNITS, utcInterval, timeInterval, timeBin, timeUnits, utcFloor, timeFloor } from 'vega-time';\n\nfunction multikey(f) {\n return x => {\n const n = f.length;\n let i = 1,\n k = String(f[0](x));\n for (; i < n; ++i) {\n k += '|' + f[i](x);\n }\n return k;\n };\n}\nfunction groupkey(fields) {\n return !fields || !fields.length ? function () {\n return '';\n } : fields.length === 1 ? fields[0] : multikey(fields);\n}\n\nfunction measureName(op, field, as) {\n return as || op + (!field ? '' : '_' + field);\n}\nconst noop = () => {};\nconst base_op = {\n init: noop,\n add: noop,\n rem: noop,\n idx: 0\n};\nconst AggregateOps = {\n values: {\n init: m => m.cell.store = true,\n value: m => m.cell.data.values(),\n idx: -1\n },\n count: {\n value: m => m.cell.num\n },\n __count__: {\n value: m => m.missing + m.valid\n },\n missing: {\n value: m => m.missing\n },\n valid: {\n value: m => m.valid\n },\n sum: {\n init: m => m.sum = 0,\n value: m => m.sum,\n add: (m, v) => m.sum += +v,\n rem: (m, v) => m.sum -= v\n },\n product: {\n init: m => m.product = 1,\n value: m => m.valid ? m.product : undefined,\n add: (m, v) => m.product *= v,\n rem: (m, v) => m.product /= v\n },\n mean: {\n init: m => m.mean = 0,\n value: m => m.valid ? m.mean : undefined,\n add: (m, v) => (m.mean_d = v - m.mean, m.mean += m.mean_d / m.valid),\n rem: (m, v) => (m.mean_d = v - m.mean, m.mean -= m.valid ? m.mean_d / m.valid : m.mean)\n },\n average: {\n value: m => m.valid ? m.mean : undefined,\n req: ['mean'],\n idx: 1\n },\n variance: {\n init: m => m.dev = 0,\n value: m => m.valid > 1 ? m.dev / (m.valid - 1) : undefined,\n add: (m, v) => m.dev += m.mean_d * (v - m.mean),\n rem: (m, v) => m.dev -= m.mean_d * (v - m.mean),\n req: ['mean'],\n idx: 1\n },\n variancep: {\n value: m => m.valid > 1 ? m.dev / m.valid : undefined,\n req: ['variance'],\n idx: 2\n },\n stdev: {\n value: m => m.valid > 1 ? Math.sqrt(m.dev / (m.valid - 1)) : undefined,\n req: ['variance'],\n idx: 2\n },\n stdevp: {\n value: m => m.valid > 1 ? Math.sqrt(m.dev / m.valid) : undefined,\n req: ['variance'],\n idx: 2\n },\n stderr: {\n value: m => m.valid > 1 ? Math.sqrt(m.dev / (m.valid * (m.valid - 1))) : undefined,\n req: ['variance'],\n idx: 2\n },\n distinct: {\n value: m => m.cell.data.distinct(m.get),\n req: ['values'],\n idx: 3\n },\n ci0: {\n value: m => m.cell.data.ci0(m.get),\n req: ['values'],\n idx: 3\n },\n ci1: {\n value: m => m.cell.data.ci1(m.get),\n req: ['values'],\n idx: 3\n },\n median: {\n value: m => m.cell.data.q2(m.get),\n req: ['values'],\n idx: 3\n },\n q1: {\n value: m => m.cell.data.q1(m.get),\n req: ['values'],\n idx: 3\n },\n q3: {\n value: m => m.cell.data.q3(m.get),\n req: ['values'],\n idx: 3\n },\n min: {\n init: m => m.min = undefined,\n value: m => m.min = Number.isNaN(m.min) ? m.cell.data.min(m.get) : m.min,\n add: (m, v) => {\n if (v < m.min || m.min === undefined) m.min = v;\n },\n rem: (m, v) => {\n if (v <= m.min) m.min = NaN;\n },\n req: ['values'],\n idx: 4\n },\n max: {\n init: m => m.max = undefined,\n value: m => m.max = Number.isNaN(m.max) ? m.cell.data.max(m.get) : m.max,\n add: (m, v) => {\n if (v > m.max || m.max === undefined) m.max = v;\n },\n rem: (m, v) => {\n if (v >= m.max) m.max = NaN;\n },\n req: ['values'],\n idx: 4\n },\n argmin: {\n init: m => m.argmin = undefined,\n value: m => m.argmin || m.cell.data.argmin(m.get),\n add: (m, v, t) => {\n if (v < m.min) m.argmin = t;\n },\n rem: (m, v) => {\n if (v <= m.min) m.argmin = undefined;\n },\n req: ['min', 'values'],\n idx: 3\n },\n argmax: {\n init: m => m.argmax = undefined,\n value: m => m.argmax || m.cell.data.argmax(m.get),\n add: (m, v, t) => {\n if (v > m.max) m.argmax = t;\n },\n rem: (m, v) => {\n if (v >= m.max) m.argmax = undefined;\n },\n req: ['max', 'values'],\n idx: 3\n },\n exponential: {\n init: (m, r) => {\n m.exp = 0;\n m.exp_r = r;\n },\n value: m => m.valid ? m.exp * (1 - m.exp_r) / (1 - m.exp_r ** m.valid) : undefined,\n add: (m, v) => m.exp = m.exp_r * m.exp + v,\n rem: (m, v) => m.exp = (m.exp - v / m.exp_r ** (m.valid - 1)) / m.exp_r\n },\n exponentialb: {\n value: m => m.valid ? m.exp * (1 - m.exp_r) : undefined,\n req: ['exponential'],\n idx: 1\n }\n};\nconst ValidAggregateOps = Object.keys(AggregateOps).filter(d => d !== '__count__');\nfunction measure(key, value) {\n return (out, aggregate_param) => extend({\n name: key,\n aggregate_param: aggregate_param,\n out: out || key\n }, base_op, value);\n}\n[...ValidAggregateOps, '__count__'].forEach(key => {\n AggregateOps[key] = measure(key, AggregateOps[key]);\n});\nfunction createMeasure(op, param, name) {\n return AggregateOps[op](name, param);\n}\nfunction compareIndex(a, b) {\n return a.idx - b.idx;\n}\nfunction resolve(agg) {\n const map = {};\n agg.forEach(a => map[a.name] = a);\n const getreqs = a => {\n if (!a.req) return;\n a.req.forEach(key => {\n if (!map[key]) getreqs(map[key] = AggregateOps[key]());\n });\n };\n agg.forEach(getreqs);\n return Object.values(map).sort(compareIndex);\n}\nfunction init() {\n this.valid = 0;\n this.missing = 0;\n this._ops.forEach(op => op.aggregate_param == null ? op.init(this) : op.init(this, op.aggregate_param));\n}\nfunction add(v, t) {\n if (v == null || v === '') {\n ++this.missing;\n return;\n }\n if (v !== v) return;\n ++this.valid;\n this._ops.forEach(op => op.add(this, v, t));\n}\nfunction rem(v, t) {\n if (v == null || v === '') {\n --this.missing;\n return;\n }\n if (v !== v) return;\n --this.valid;\n this._ops.forEach(op => op.rem(this, v, t));\n}\nfunction set(t) {\n this._out.forEach(op => t[op.out] = op.value(this));\n return t;\n}\nfunction compileMeasures(agg, field) {\n const get = field || identity,\n ops = resolve(agg),\n out = agg.slice().sort(compareIndex);\n function ctr(cell) {\n this._ops = ops;\n this._out = out;\n this.cell = cell;\n this.init();\n }\n ctr.prototype.init = init;\n ctr.prototype.add = add;\n ctr.prototype.rem = rem;\n ctr.prototype.set = set;\n ctr.prototype.get = get;\n ctr.fields = agg.map(op => op.out);\n return ctr;\n}\n\nfunction TupleStore(key) {\n this._key = key ? field(key) : tupleid;\n this.reset();\n}\nconst prototype$1 = TupleStore.prototype;\nprototype$1.reset = function () {\n this._add = [];\n this._rem = [];\n this._ext = null;\n this._get = null;\n this._q = null;\n};\nprototype$1.add = function (v) {\n this._add.push(v);\n};\nprototype$1.rem = function (v) {\n this._rem.push(v);\n};\nprototype$1.values = function () {\n this._get = null;\n if (this._rem.length === 0) return this._add;\n const a = this._add,\n r = this._rem,\n k = this._key,\n n = a.length,\n m = r.length,\n x = Array(n - m),\n map = {};\n let i, j, v;\n\n // use unique key field to clear removed values\n for (i = 0; i < m; ++i) {\n map[k(r[i])] = 1;\n }\n for (i = 0, j = 0; i < n; ++i) {\n if (map[k(v = a[i])]) {\n map[k(v)] = 0;\n } else {\n x[j++] = v;\n }\n }\n this._rem = [];\n return this._add = x;\n};\n\n// memoizing statistics methods\n\nprototype$1.distinct = function (get) {\n const v = this.values(),\n map = {};\n let n = v.length,\n count = 0,\n s;\n while (--n >= 0) {\n s = get(v[n]) + '';\n if (!hasOwnProperty(map, s)) {\n map[s] = 1;\n ++count;\n }\n }\n return count;\n};\nprototype$1.extent = function (get) {\n if (this._get !== get || !this._ext) {\n const v = this.values(),\n i = extentIndex(v, get);\n this._ext = [v[i[0]], v[i[1]]];\n this._get = get;\n }\n return this._ext;\n};\nprototype$1.argmin = function (get) {\n return this.extent(get)[0] || {};\n};\nprototype$1.argmax = function (get) {\n return this.extent(get)[1] || {};\n};\nprototype$1.min = function (get) {\n const m = this.extent(get)[0];\n return m != null ? get(m) : undefined;\n};\nprototype$1.max = function (get) {\n const m = this.extent(get)[1];\n return m != null ? get(m) : undefined;\n};\nprototype$1.quartile = function (get) {\n if (this._get !== get || !this._q) {\n this._q = quartiles(this.values(), get);\n this._get = get;\n }\n return this._q;\n};\nprototype$1.q1 = function (get) {\n return this.quartile(get)[0];\n};\nprototype$1.q2 = function (get) {\n return this.quartile(get)[1];\n};\nprototype$1.q3 = function (get) {\n return this.quartile(get)[2];\n};\nprototype$1.ci = function (get) {\n if (this._get !== get || !this._ci) {\n this._ci = bootstrapCI(this.values(), 1000, 0.05, get);\n this._get = get;\n }\n return this._ci;\n};\nprototype$1.ci0 = function (get) {\n return this.ci(get)[0];\n};\nprototype$1.ci1 = function (get) {\n return this.ci(get)[1];\n};\n\n/**\n * Group-by aggregation operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {Array<function(object): *>} [params.fields] - An array of accessors to aggregate.\n * @param {Array<string>} [params.ops] - An array of strings indicating aggregation operations.\n * @param {Array<object>} [params.aggregate_params=[null]] - An optional array of parameters for aggregation operations.\n * @param {Array<string>} [params.as] - An array of output field names for aggregated values.\n * @param {boolean} [params.cross=false] - A flag indicating that the full\n * cross-product of groupby values should be generated, including empty cells.\n * If true, the drop parameter is ignored and empty cells are retained.\n * @param {boolean} [params.drop=true] - A flag indicating if empty cells should be removed.\n */\nfunction Aggregate(params) {\n Transform.call(this, null, params);\n this._adds = []; // array of added output tuples\n this._mods = []; // array of modified output tuples\n this._alen = 0; // number of active added tuples\n this._mlen = 0; // number of active modified tuples\n this._drop = true; // should empty aggregation cells be removed\n this._cross = false; // produce full cross-product of group-by values\n\n this._dims = []; // group-by dimension accessors\n this._dnames = []; // group-by dimension names\n\n this._measures = []; // collection of aggregation monoids\n this._countOnly = false; // flag indicating only count aggregation\n this._counts = null; // collection of count fields\n this._prev = null; // previous aggregation cells\n\n this._inputs = null; // array of dependent input tuple field names\n this._outputs = null; // array of output tuple field names\n}\n\nAggregate.Definition = {\n 'type': 'Aggregate',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'ops',\n 'type': 'enum',\n 'array': true,\n 'values': ValidAggregateOps\n }, {\n 'name': 'aggregate_params',\n 'type': 'field',\n 'null': true,\n 'array': true,\n 'default': [null]\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'null': true,\n 'array': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }, {\n 'name': 'drop',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'cross',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'key',\n 'type': 'field'\n }]\n};\ninherits(Aggregate, Transform, {\n transform(_, pulse) {\n const aggr = this,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n mod = _.modified();\n aggr.stamp = out.stamp;\n if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n aggr._prev = aggr.value;\n aggr.value = mod ? aggr.init(_) : Object.create(null);\n pulse.visit(pulse.SOURCE, t => aggr.add(t));\n } else {\n aggr.value = aggr.value || aggr.init(_);\n pulse.visit(pulse.REM, t => aggr.rem(t));\n pulse.visit(pulse.ADD, t => aggr.add(t));\n }\n\n // Indicate output fields and return aggregate tuples.\n out.modifies(aggr._outputs);\n\n // Should empty cells be dropped?\n aggr._drop = _.drop !== false;\n\n // If domain cross-product requested, generate empty cells as needed\n // and ensure that empty cells are not dropped\n if (_.cross && aggr._dims.length > 1) {\n aggr._drop = false;\n aggr.cross();\n }\n if (pulse.clean() && aggr._drop) {\n out.clean(true).runAfter(() => this.clean());\n }\n return aggr.changes(out);\n },\n cross() {\n const aggr = this,\n curr = aggr.value,\n dims = aggr._dnames,\n vals = dims.map(() => ({})),\n n = dims.length;\n\n // collect all group-by domain values\n function collect(cells) {\n let key, i, t, v;\n for (key in cells) {\n t = cells[key].tuple;\n for (i = 0; i < n; ++i) {\n vals[i][v = t[dims[i]]] = v;\n }\n }\n }\n collect(aggr._prev);\n collect(curr);\n\n // iterate over key cross-product, create cells as needed\n function generate(base, tuple, index) {\n const name = dims[index],\n v = vals[index++];\n for (const k in v) {\n const key = base ? base + '|' + k : k;\n tuple[name] = v[k];\n if (index < n) generate(key, tuple, index);else if (!curr[key]) aggr.cell(key, tuple);\n }\n }\n generate('', {}, 0);\n },\n init(_) {\n // initialize input and output fields\n const inputs = this._inputs = [],\n outputs = this._outputs = [],\n inputMap = {};\n function inputVisit(get) {\n const fields = array(accessorFields(get)),\n n = fields.length;\n let i = 0,\n f;\n for (; i < n; ++i) {\n if (!inputMap[f = fields[i]]) {\n inputMap[f] = 1;\n inputs.push(f);\n }\n }\n }\n\n // initialize group-by dimensions\n this._dims = array(_.groupby);\n this._dnames = this._dims.map(d => {\n const dname = accessorName(d);\n inputVisit(d);\n outputs.push(dname);\n return dname;\n });\n this.cellkey = _.key ? _.key : groupkey(this._dims);\n\n // initialize aggregate measures\n this._countOnly = true;\n this._counts = [];\n this._measures = [];\n const fields = _.fields || [null],\n ops = _.ops || ['count'],\n aggregate_params = _.aggregate_params || [null],\n as = _.as || [],\n n = fields.length,\n map = {};\n let field, op, aggregate_param, m, mname, outname, i;\n if (n !== ops.length) {\n error('Unmatched number of fields and aggregate ops.');\n }\n for (i = 0; i < n; ++i) {\n field = fields[i];\n op = ops[i];\n aggregate_param = aggregate_params[i] || null;\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n mname = accessorName(field);\n outname = measureName(op, mname, as[i]);\n outputs.push(outname);\n if (op === 'count') {\n this._counts.push(outname);\n continue;\n }\n m = map[mname];\n if (!m) {\n inputVisit(field);\n m = map[mname] = [];\n m.field = field;\n this._measures.push(m);\n }\n if (op !== 'count') this._countOnly = false;\n m.push(createMeasure(op, aggregate_param, outname));\n }\n this._measures = this._measures.map(m => compileMeasures(m, m.field));\n return Object.create(null); // aggregation cells (this.value)\n },\n\n // -- Cell Management -----\n\n cellkey: groupkey(),\n cell(key, t) {\n let cell = this.value[key];\n if (!cell) {\n cell = this.value[key] = this.newcell(key, t);\n this._adds[this._alen++] = cell;\n } else if (cell.num === 0 && this._drop && cell.stamp < this.stamp) {\n cell.stamp = this.stamp;\n this._adds[this._alen++] = cell;\n } else if (cell.stamp < this.stamp) {\n cell.stamp = this.stamp;\n this._mods[this._mlen++] = cell;\n }\n return cell;\n },\n newcell(key, t) {\n const cell = {\n key: key,\n num: 0,\n agg: null,\n tuple: this.newtuple(t, this._prev && this._prev[key]),\n stamp: this.stamp,\n store: false\n };\n if (!this._countOnly) {\n const measures = this._measures,\n n = measures.length;\n cell.agg = Array(n);\n for (let i = 0; i < n; ++i) {\n cell.agg[i] = new measures[i](cell);\n }\n }\n if (cell.store) {\n cell.data = new TupleStore();\n }\n return cell;\n },\n newtuple(t, p) {\n const names = this._dnames,\n dims = this._dims,\n n = dims.length,\n x = {};\n for (let i = 0; i < n; ++i) {\n x[names[i]] = dims[i](t);\n }\n return p ? replace(p.tuple, x) : ingest(x);\n },\n clean() {\n const cells = this.value;\n for (const key in cells) {\n if (cells[key].num === 0) {\n delete cells[key];\n }\n }\n },\n // -- Process Tuples -----\n\n add(t) {\n const key = this.cellkey(t),\n cell = this.cell(key, t);\n cell.num += 1;\n if (this._countOnly) return;\n if (cell.store) cell.data.add(t);\n const agg = cell.agg;\n for (let i = 0, n = agg.length; i < n; ++i) {\n agg[i].add(agg[i].get(t), t);\n }\n },\n rem(t) {\n const key = this.cellkey(t),\n cell = this.cell(key, t);\n cell.num -= 1;\n if (this._countOnly) return;\n if (cell.store) cell.data.rem(t);\n const agg = cell.agg;\n for (let i = 0, n = agg.length; i < n; ++i) {\n agg[i].rem(agg[i].get(t), t);\n }\n },\n celltuple(cell) {\n const tuple = cell.tuple,\n counts = this._counts;\n\n // consolidate stored values\n if (cell.store) {\n cell.data.values();\n }\n\n // update tuple properties\n for (let i = 0, n = counts.length; i < n; ++i) {\n tuple[counts[i]] = cell.num;\n }\n if (!this._countOnly) {\n const agg = cell.agg;\n for (let i = 0, n = agg.length; i < n; ++i) {\n agg[i].set(tuple);\n }\n }\n return tuple;\n },\n changes(out) {\n const adds = this._adds,\n mods = this._mods,\n prev = this._prev,\n drop = this._drop,\n add = out.add,\n rem = out.rem,\n mod = out.mod;\n let cell, key, i, n;\n if (prev) for (key in prev) {\n cell = prev[key];\n if (!drop || cell.num) rem.push(cell.tuple);\n }\n for (i = 0, n = this._alen; i < n; ++i) {\n add.push(this.celltuple(adds[i]));\n adds[i] = null; // for garbage collection\n }\n\n for (i = 0, n = this._mlen; i < n; ++i) {\n cell = mods[i];\n (cell.num === 0 && drop ? rem : mod).push(this.celltuple(cell));\n mods[i] = null; // for garbage collection\n }\n\n this._alen = this._mlen = 0; // reset list of active cells\n this._prev = null;\n return out;\n }\n});\n\n// epsilon bias to offset floating point error (#1737)\nconst EPSILON$1 = 1e-14;\n\n/**\n * Generates a binning function for discretizing data.\n * @constructor\n * @param {object} params - The parameters for this operator. The\n * provided values should be valid options for the {@link bin} function.\n * @param {function(object): *} params.field - The data field to bin.\n */\nfunction Bin(params) {\n Transform.call(this, null, params);\n}\nBin.Definition = {\n 'type': 'Bin',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'interval',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'anchor',\n 'type': 'number'\n }, {\n 'name': 'maxbins',\n 'type': 'number',\n 'default': 20\n }, {\n 'name': 'base',\n 'type': 'number',\n 'default': 10\n }, {\n 'name': 'divide',\n 'type': 'number',\n 'array': true,\n 'default': [5, 2]\n }, {\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'required': true\n }, {\n 'name': 'span',\n 'type': 'number'\n }, {\n 'name': 'step',\n 'type': 'number'\n }, {\n 'name': 'steps',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'minstep',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'nice',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'name',\n 'type': 'string'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['bin0', 'bin1']\n }]\n};\ninherits(Bin, Transform, {\n transform(_, pulse) {\n const band = _.interval !== false,\n bins = this._bins(_),\n start = bins.start,\n step = bins.step,\n as = _.as || ['bin0', 'bin1'],\n b0 = as[0],\n b1 = as[1];\n let flag;\n if (_.modified()) {\n pulse = pulse.reflow(true);\n flag = pulse.SOURCE;\n } else {\n flag = pulse.modified(accessorFields(_.field)) ? pulse.ADD_MOD : pulse.ADD;\n }\n pulse.visit(flag, band ? t => {\n const v = bins(t);\n // minimum bin value (inclusive)\n t[b0] = v;\n // maximum bin value (exclusive)\n // use convoluted math for better floating point agreement\n // see https://github.com/vega/vega/issues/830\n // infinite values propagate through this formula! #2227\n t[b1] = v == null ? null : start + step * (1 + (v - start) / step);\n } : t => t[b0] = bins(t));\n return pulse.modifies(band ? as : b0);\n },\n _bins(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n const field = _.field,\n bins = bin(_),\n step = bins.step;\n let start = bins.start,\n stop = start + Math.ceil((bins.stop - start) / step) * step,\n a,\n d;\n if ((a = _.anchor) != null) {\n d = a - (start + step * Math.floor((a - start) / step));\n start += d;\n stop += d;\n }\n const f = function (t) {\n let v = toNumber(field(t));\n return v == null ? null : v < start ? -Infinity : v > stop ? +Infinity : (v = Math.max(start, Math.min(v, stop - step)), start + step * Math.floor(EPSILON$1 + (v - start) / step));\n };\n f.start = start;\n f.stop = bins.stop;\n f.step = step;\n return this.value = accessor(f, accessorFields(field), _.name || 'bin_' + accessorName(field));\n }\n});\n\nfunction SortedList (idFunc, source, input) {\n const $ = idFunc;\n let data = source || [],\n add = input || [],\n rem = {},\n cnt = 0;\n return {\n add: t => add.push(t),\n remove: t => rem[$(t)] = ++cnt,\n size: () => data.length,\n data: (compare, resort) => {\n if (cnt) {\n data = data.filter(t => !rem[$(t)]);\n rem = {};\n cnt = 0;\n }\n if (resort && compare) {\n data.sort(compare);\n }\n if (add.length) {\n data = compare ? merge(compare, data, add.sort(compare)) : data.concat(add);\n add = [];\n }\n return data;\n }\n };\n}\n\n/**\n * Collects all data tuples that pass through this operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for additionally sorting the collected tuples.\n */\nfunction Collect(params) {\n Transform.call(this, [], params);\n}\nCollect.Definition = {\n 'type': 'Collect',\n 'metadata': {\n 'source': true\n },\n 'params': [{\n 'name': 'sort',\n 'type': 'compare'\n }]\n};\ninherits(Collect, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.ALL),\n list = SortedList(tupleid, this.value, out.materialize(out.ADD).add),\n sort = _.sort,\n mod = pulse.changed() || sort && (_.modified('sort') || pulse.modified(sort.fields));\n out.visit(out.REM, list.remove);\n this.modified(mod);\n this.value = out.source = list.data(stableCompare(sort), mod);\n\n // propagate tree root if defined\n if (pulse.source && pulse.source.root) {\n this.value.root = pulse.source.root;\n }\n return out;\n }\n});\n\n/**\n * Generates a comparator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<string|function>} params.fields - The fields to compare.\n * @param {Array<string>} [params.orders] - The sort orders.\n * Each entry should be one of \"ascending\" (default) or \"descending\".\n */\nfunction Compare(params) {\n Operator.call(this, null, update$5, params);\n}\ninherits(Compare, Operator);\nfunction update$5(_) {\n return this.value && !_.modified() ? this.value : compare(_.fields, _.orders);\n}\n\n/**\n * Count regexp-defined pattern occurrences in a text field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the text field.\n * @param {string} [params.pattern] - RegExp string defining the text pattern.\n * @param {string} [params.case] - One of 'lower', 'upper' or null (mixed) case.\n * @param {string} [params.stopwords] - RegExp string of words to ignore.\n */\nfunction CountPattern(params) {\n Transform.call(this, null, params);\n}\nCountPattern.Definition = {\n 'type': 'CountPattern',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'case',\n 'type': 'enum',\n 'values': ['upper', 'lower', 'mixed'],\n 'default': 'mixed'\n }, {\n 'name': 'pattern',\n 'type': 'string',\n 'default': '[\\\\w\"]+'\n }, {\n 'name': 'stopwords',\n 'type': 'string',\n 'default': ''\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['text', 'count']\n }]\n};\nfunction tokenize(text, tcase, match) {\n switch (tcase) {\n case 'upper':\n text = text.toUpperCase();\n break;\n case 'lower':\n text = text.toLowerCase();\n break;\n }\n return text.match(match);\n}\ninherits(CountPattern, Transform, {\n transform(_, pulse) {\n const process = update => tuple => {\n var tokens = tokenize(get(tuple), _.case, match) || [],\n t;\n for (var i = 0, n = tokens.length; i < n; ++i) {\n if (!stop.test(t = tokens[i])) update(t);\n }\n };\n const init = this._parameterCheck(_, pulse),\n counts = this._counts,\n match = this._match,\n stop = this._stop,\n get = _.field,\n as = _.as || ['text', 'count'],\n add = process(t => counts[t] = 1 + (counts[t] || 0)),\n rem = process(t => counts[t] -= 1);\n if (init) {\n pulse.visit(pulse.SOURCE, add);\n } else {\n pulse.visit(pulse.ADD, add);\n pulse.visit(pulse.REM, rem);\n }\n return this._finish(pulse, as); // generate output tuples\n },\n\n _parameterCheck(_, pulse) {\n let init = false;\n if (_.modified('stopwords') || !this._stop) {\n this._stop = new RegExp('^' + (_.stopwords || '') + '$', 'i');\n init = true;\n }\n if (_.modified('pattern') || !this._match) {\n this._match = new RegExp(_.pattern || '[\\\\w\\']+', 'g');\n init = true;\n }\n if (_.modified('field') || pulse.modified(_.field.fields)) {\n init = true;\n }\n if (init) this._counts = {};\n return init;\n },\n _finish(pulse, as) {\n const counts = this._counts,\n tuples = this._tuples || (this._tuples = {}),\n text = as[0],\n count = as[1],\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n let w, t, c;\n for (w in counts) {\n t = tuples[w];\n c = counts[w] || 0;\n if (!t && c) {\n tuples[w] = t = ingest({});\n t[text] = w;\n t[count] = c;\n out.add.push(t);\n } else if (c === 0) {\n if (t) out.rem.push(t);\n counts[w] = null;\n tuples[w] = null;\n } else if (t[count] !== c) {\n t[count] = c;\n out.mod.push(t);\n }\n }\n return out.modifies(as);\n }\n});\n\n/**\n * Perform a cross-product of a tuple stream with itself.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object):boolean} [params.filter] - An optional filter\n * function for selectively including tuples in the cross product.\n * @param {Array<string>} [params.as] - The names of the output fields.\n */\nfunction Cross(params) {\n Transform.call(this, null, params);\n}\nCross.Definition = {\n 'type': 'Cross',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'filter',\n 'type': 'expr'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['a', 'b']\n }]\n};\ninherits(Cross, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE),\n as = _.as || ['a', 'b'],\n a = as[0],\n b = as[1],\n reset = !this.value || pulse.changed(pulse.ADD_REM) || _.modified('as') || _.modified('filter');\n let data = this.value;\n if (reset) {\n if (data) out.rem = data;\n data = pulse.materialize(pulse.SOURCE).source;\n out.add = this.value = cross(data, a, b, _.filter || truthy);\n } else {\n out.mod = data;\n }\n out.source = this.value;\n return out.modifies(as);\n }\n});\nfunction cross(input, a, b, filter) {\n var data = [],\n t = {},\n n = input.length,\n i = 0,\n j,\n left;\n for (; i < n; ++i) {\n t[a] = left = input[i];\n for (j = 0; j < n; ++j) {\n t[b] = input[j];\n if (filter(t)) {\n data.push(ingest(t));\n t = {};\n t[a] = left;\n }\n }\n }\n return data;\n}\n\nconst Distributions = {\n kde: randomKDE,\n mixture: randomMixture,\n normal: randomNormal,\n lognormal: randomLogNormal,\n uniform: randomUniform\n};\nconst DISTRIBUTIONS = 'distributions',\n FUNCTION = 'function',\n FIELD = 'field';\n\n/**\n * Parse a parameter object for a probability distribution.\n * @param {object} def - The distribution parameter object.\n * @param {function():Array<object>} - A method for requesting\n * source data. Used for distributions (such as KDE) that\n * require sample data points. This method will only be\n * invoked if the 'from' parameter for a target data source\n * is not provided. Typically this method returns backing\n * source data for a Pulse object.\n * @return {object} - The output distribution object.\n */\nfunction parse(def, data) {\n const func = def[FUNCTION];\n if (!hasOwnProperty(Distributions, func)) {\n error('Unknown distribution function: ' + func);\n }\n const d = Distributions[func]();\n for (const name in def) {\n // if data field, extract values\n if (name === FIELD) {\n d.data((def.from || data()).map(def[name]));\n }\n\n // if distribution mixture, recurse to parse each definition\n else if (name === DISTRIBUTIONS) {\n d[name](def[name].map(_ => parse(_, data)));\n }\n\n // otherwise, simply set the parameter\n else if (typeof d[name] === FUNCTION) {\n d[name](def[name]);\n }\n }\n return d;\n}\n\n/**\n * Grid sample points for a probability density. Given a distribution and\n * a sampling extent, will generate points suitable for plotting either\n * PDF (probability density function) or CDF (cumulative distribution\n * function) curves.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.distribution - The probability distribution. This\n * is an object parameter dependent on the distribution type.\n * @param {string} [params.method='pdf'] - The distribution method to sample.\n * One of 'pdf' or 'cdf'.\n * @param {Array<number>} [params.extent] - The [min, max] extent over which\n * to sample the distribution. This argument is required in most cases, but\n * can be omitted if the distribution (e.g., 'kde') supports a 'data' method\n * that returns numerical sample points from which the extent can be deduced.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n * for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n * for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n * plotting the density. If specified, overrides both minsteps and maxsteps\n * to set an exact number of uniform samples. Useful in conjunction with\n * a fixed extent to ensure consistent sample points for stacked densities.\n */\nfunction Density(params) {\n Transform.call(this, null, params);\n}\nconst distributions = [{\n 'key': {\n 'function': 'normal'\n },\n 'params': [{\n 'name': 'mean',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'stdev',\n 'type': 'number',\n 'default': 1\n }]\n}, {\n 'key': {\n 'function': 'lognormal'\n },\n 'params': [{\n 'name': 'mean',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'stdev',\n 'type': 'number',\n 'default': 1\n }]\n}, {\n 'key': {\n 'function': 'uniform'\n },\n 'params': [{\n 'name': 'min',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'max',\n 'type': 'number',\n 'default': 1\n }]\n}, {\n 'key': {\n 'function': 'kde'\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'from',\n 'type': 'data'\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'default': 0\n }]\n}];\nconst mixture = {\n 'key': {\n 'function': 'mixture'\n },\n 'params': [{\n 'name': 'distributions',\n 'type': 'param',\n 'array': true,\n 'params': distributions\n }, {\n 'name': 'weights',\n 'type': 'number',\n 'array': true\n }]\n};\nDensity.Definition = {\n 'type': 'Density',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'steps',\n 'type': 'number'\n }, {\n 'name': 'minsteps',\n 'type': 'number',\n 'default': 25\n }, {\n 'name': 'maxsteps',\n 'type': 'number',\n 'default': 200\n }, {\n 'name': 'method',\n 'type': 'string',\n 'default': 'pdf',\n 'values': ['pdf', 'cdf']\n }, {\n 'name': 'distribution',\n 'type': 'param',\n 'params': distributions.concat(mixture)\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'default': ['value', 'density']\n }]\n};\ninherits(Density, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n const dist = parse(_.distribution, source(pulse)),\n minsteps = _.steps || _.minsteps || 25,\n maxsteps = _.steps || _.maxsteps || 200;\n let method = _.method || 'pdf';\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n if (!_.extent && !dist.data) {\n error('Missing density extent parameter.');\n }\n method = dist[method];\n const as = _.as || ['value', 'density'],\n domain = _.extent || extent(dist.data()),\n values = sampleCurve(method, domain, minsteps, maxsteps).map(v => {\n const tuple = {};\n tuple[as[0]] = v[0];\n tuple[as[1]] = v[1];\n return ingest(tuple);\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\nfunction source(pulse) {\n return () => pulse.materialize(pulse.SOURCE).source;\n}\n\n// use either provided alias or accessor field name\nfunction fieldNames(fields, as) {\n if (!fields) return null;\n return fields.map((f, i) => as[i] || accessorName(f));\n}\nfunction partition$1(data, groupby, field) {\n const groups = [],\n get = f => f(t);\n let map, i, n, t, k, g;\n\n // partition data points into groups\n if (groupby == null) {\n groups.push(data.map(field));\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n g.dims = k;\n groups.push(g);\n }\n g.push(field(t));\n }\n }\n return groups;\n}\n\nconst Output = 'bin';\n\n/**\n * Dot density binning for dot plot construction.\n * Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n * https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to bin.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.step] - The step size (bin width) within which dots should be\n * stacked. Defaults to 1/30 of the extent of the data *field*.\n * @param {boolean} [params.smooth=false] - A boolean flag indicating if dot density\n * stacks should be smoothed to reduce variance.\n */\nfunction DotBin(params) {\n Transform.call(this, null, params);\n}\nDotBin.Definition = {\n 'type': 'DotBin',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'step',\n 'type': 'number'\n }, {\n 'name': 'smooth',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': Output\n }]\n};\nconst autostep = (data, field) => span(extent(data, field)) / 30;\ninherits(DotBin, Transform, {\n transform(_, pulse) {\n if (this.value && !(_.modified() || pulse.changed())) {\n return pulse; // early exit\n }\n\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$1(pulse.source, _.groupby, identity),\n smooth = _.smooth || false,\n field = _.field,\n step = _.step || autostep(source, field),\n sort = stableCompare((a, b) => field(a) - field(b)),\n as = _.as || Output,\n n = groups.length;\n\n // compute dotplot bins per group\n let min = Infinity,\n max = -Infinity,\n i = 0,\n j;\n for (; i < n; ++i) {\n const g = groups[i].sort(sort);\n j = -1;\n for (const v of dotbin(g, step, smooth, field)) {\n if (v < min) min = v;\n if (v > max) max = v;\n g[++j][as] = v;\n }\n }\n this.value = {\n start: min,\n stop: max,\n step: step\n };\n return pulse.reflow(true).modifies(as);\n }\n});\n\n/**\n * Wraps an expression function with access to external parameters.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function} params.expr - The expression function. The\n * function should accept both a datum and a parameter object.\n * This operator's value will be a new function that wraps the\n * expression function with access to this operator's parameters.\n */\nfunction Expression(params) {\n Operator.call(this, null, update$4, params);\n this.modified(true);\n}\ninherits(Expression, Operator);\nfunction update$4(_) {\n const expr = _.expr;\n return this.value && !_.modified('expr') ? this.value : accessor(datum => expr(datum, _), accessorFields(expr), accessorName(expr));\n}\n\n/**\n * Computes extents (min/max) for a data field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field over which to compute extends.\n */\nfunction Extent(params) {\n Transform.call(this, [undefined, undefined], params);\n}\nExtent.Definition = {\n 'type': 'Extent',\n 'metadata': {},\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }]\n};\ninherits(Extent, Transform, {\n transform(_, pulse) {\n const extent = this.value,\n field = _.field,\n mod = pulse.changed() || pulse.modified(field.fields) || _.modified('field');\n let min = extent[0],\n max = extent[1];\n if (mod || min == null) {\n min = +Infinity;\n max = -Infinity;\n }\n pulse.visit(mod ? pulse.SOURCE : pulse.ADD, t => {\n const v = toNumber(field(t));\n if (v != null) {\n // NaNs will fail all comparisons!\n if (v < min) min = v;\n if (v > max) max = v;\n }\n });\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n let name = accessorName(field);\n if (name) name = ` for field \"${name}\"`;\n pulse.dataflow.warn(`Infinite extent${name}: [${min}, ${max}]`);\n min = max = undefined;\n }\n this.value = [min, max];\n }\n});\n\n/**\n * Provides a bridge between a parent transform and a target subflow that\n * consumes only a subset of the tuples that pass through the parent.\n * @constructor\n * @param {Pulse} pulse - A pulse to use as the value of this operator.\n * @param {Transform} parent - The parent transform (typically a Facet instance).\n */\nfunction Subflow(pulse, parent) {\n Operator.call(this, pulse);\n this.parent = parent;\n this.count = 0;\n}\ninherits(Subflow, Operator, {\n /**\n * Routes pulses from this subflow to a target transform.\n * @param {Transform} target - A transform that receives the subflow of tuples.\n */\n connect(target) {\n this.detachSubflow = target.detachSubflow;\n this.targets().add(target);\n return target.source = this;\n },\n /**\n * Add an 'add' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being added.\n */\n add(t) {\n this.count += 1;\n this.value.add.push(t);\n },\n /**\n * Add a 'rem' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being removed.\n */\n rem(t) {\n this.count -= 1;\n this.value.rem.push(t);\n },\n /**\n * Add a 'mod' tuple to the subflow pulse.\n * @param {Tuple} t - The tuple being modified.\n */\n mod(t) {\n this.value.mod.push(t);\n },\n /**\n * Re-initialize this operator's pulse value.\n * @param {Pulse} pulse - The pulse to copy from.\n * @see Pulse.init\n */\n init(pulse) {\n this.value.init(pulse, pulse.NO_SOURCE);\n },\n /**\n * Evaluate this operator. This method overrides the\n * default behavior to simply return the contained pulse value.\n * @return {Pulse}\n */\n evaluate() {\n // assert: this.value.stamp === pulse.stamp\n return this.value;\n }\n});\n\n/**\n * Facets a dataflow into a set of subflows based on a key.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): *} params.key - The key field to facet by.\n */\nfunction Facet(params) {\n Transform.call(this, {}, params);\n this._keys = fastmap(); // cache previously calculated key values\n\n // keep track of active subflows, use as targets array for listeners\n // this allows us to limit propagation to only updated subflows\n const a = this._targets = [];\n a.active = 0;\n a.forEach = f => {\n for (let i = 0, n = a.active; i < n; ++i) {\n f(a[i], i, a);\n }\n };\n}\ninherits(Facet, Transform, {\n activate(flow) {\n this._targets[this._targets.active++] = flow;\n },\n // parent argument provided by PreFacet subclass\n subflow(key, flow, pulse, parent) {\n const flows = this.value;\n let sf = hasOwnProperty(flows, key) && flows[key],\n df,\n p;\n if (!sf) {\n p = parent || (p = this._group[key]) && p.tuple;\n df = pulse.dataflow;\n sf = new Subflow(pulse.fork(pulse.NO_SOURCE), this);\n df.add(sf).connect(flow(df, key, p));\n flows[key] = sf;\n this.activate(sf);\n } else if (sf.value.stamp < pulse.stamp) {\n sf.init(pulse);\n this.activate(sf);\n }\n return sf;\n },\n clean() {\n const flows = this.value;\n let detached = 0;\n for (const key in flows) {\n if (flows[key].count === 0) {\n const detach = flows[key].detachSubflow;\n if (detach) detach();\n delete flows[key];\n ++detached;\n }\n }\n\n // remove inactive targets from the active targets array\n if (detached) {\n const active = this._targets.filter(sf => sf && sf.count > 0);\n this.initTargets(active);\n }\n },\n initTargets(act) {\n const a = this._targets,\n n = a.length,\n m = act ? act.length : 0;\n let i = 0;\n for (; i < m; ++i) {\n a[i] = act[i];\n }\n for (; i < n && a[i] != null; ++i) {\n a[i] = null; // ensure old flows can be garbage collected\n }\n\n a.active = m;\n },\n transform(_, pulse) {\n const df = pulse.dataflow,\n key = _.key,\n flow = _.subflow,\n cache = this._keys,\n rekey = _.modified('key'),\n subflow = key => this.subflow(key, flow, pulse);\n this._group = _.group || {};\n this.initTargets(); // reset list of active subflows\n\n pulse.visit(pulse.REM, t => {\n const id = tupleid(t),\n k = cache.get(id);\n if (k !== undefined) {\n cache.delete(id);\n subflow(k).rem(t);\n }\n });\n pulse.visit(pulse.ADD, t => {\n const k = key(t);\n cache.set(tupleid(t), k);\n subflow(k).add(t);\n });\n if (rekey || pulse.modified(key.fields)) {\n pulse.visit(pulse.MOD, t => {\n const id = tupleid(t),\n k0 = cache.get(id),\n k1 = key(t);\n if (k0 === k1) {\n subflow(k1).mod(t);\n } else {\n cache.set(id, k1);\n subflow(k0).rem(t);\n subflow(k1).add(t);\n }\n });\n } else if (pulse.changed(pulse.MOD)) {\n pulse.visit(pulse.MOD, t => {\n subflow(cache.get(tupleid(t))).mod(t);\n });\n }\n if (rekey) {\n pulse.visit(pulse.REFLOW, t => {\n const id = tupleid(t),\n k0 = cache.get(id),\n k1 = key(t);\n if (k0 !== k1) {\n cache.set(id, k1);\n subflow(k0).rem(t);\n subflow(k1).add(t);\n }\n });\n }\n if (pulse.clean()) {\n df.runAfter(() => {\n this.clean();\n cache.clean();\n });\n } else if (cache.empty > df.cleanThreshold) {\n df.runAfter(cache.clean);\n }\n return pulse;\n }\n});\n\n/**\n * Generates one or more field accessor functions.\n * If the 'name' parameter is an array, an array of field accessors\n * will be created and the 'as' parameter will be ignored.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.name - The field name(s) to access.\n * @param {string} params.as - The accessor function name.\n */\nfunction Field(params) {\n Operator.call(this, null, update$3, params);\n}\ninherits(Field, Operator);\nfunction update$3(_) {\n return this.value && !_.modified() ? this.value : isArray(_.name) ? array(_.name).map(f => field(f)) : field(_.name, _.as);\n}\n\n/**\n * Filters data tuples according to a predicate function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The predicate expression function\n * that determines a tuple's filter status. Truthy values pass the filter.\n */\nfunction Filter(params) {\n Transform.call(this, fastmap(), params);\n}\nFilter.Definition = {\n 'type': 'Filter',\n 'metadata': {\n 'changes': true\n },\n 'params': [{\n 'name': 'expr',\n 'type': 'expr',\n 'required': true\n }]\n};\ninherits(Filter, Transform, {\n transform(_, pulse) {\n const df = pulse.dataflow,\n cache = this.value,\n // cache ids of filtered tuples\n output = pulse.fork(),\n add = output.add,\n rem = output.rem,\n mod = output.mod,\n test = _.expr;\n let isMod = true;\n pulse.visit(pulse.REM, t => {\n const id = tupleid(t);\n if (!cache.has(id)) rem.push(t);else cache.delete(id);\n });\n pulse.visit(pulse.ADD, t => {\n if (test(t, _)) add.push(t);else cache.set(tupleid(t), 1);\n });\n function revisit(t) {\n const id = tupleid(t),\n b = test(t, _),\n s = cache.get(id);\n if (b && s) {\n cache.delete(id);\n add.push(t);\n } else if (!b && !s) {\n cache.set(id, 1);\n rem.push(t);\n } else if (isMod && b && !s) {\n mod.push(t);\n }\n }\n pulse.visit(pulse.MOD, revisit);\n if (_.modified()) {\n isMod = false;\n pulse.visit(pulse.REFLOW, revisit);\n }\n if (cache.empty > df.cleanThreshold) df.runAfter(cache.clean);\n return output;\n }\n});\n\n/**\n * Flattens array-typed field values into new data objects.\n * If multiple fields are specified, they are treated as parallel arrays,\n * with output values included for each matching index (or null if missing).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.fields - An array of field\n * accessors for the tuple fields that should be flattened.\n * @param {string} [params.index] - Optional output field name for index\n * value. If unspecified, no index field is included in the output.\n * @param {Array<string>} [params.as] - Output field names for flattened\n * array fields. Any unspecified fields will use the field name provided\n * by the fields accessors.\n */\nfunction Flatten(params) {\n Transform.call(this, [], params);\n}\nFlatten.Definition = {\n 'type': 'Flatten',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'index',\n 'type': 'string'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }]\n};\ninherits(Flatten, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n as = fieldNames(fields, _.as || []),\n index = _.index || null,\n m = as.length;\n\n // remove any previous results\n out.rem = this.value;\n\n // generate flattened tuples\n pulse.visit(pulse.SOURCE, t => {\n const arrays = fields.map(f => f(t)),\n maxlen = arrays.reduce((l, a) => Math.max(l, a.length), 0);\n let i = 0,\n j,\n d,\n v;\n for (; i < maxlen; ++i) {\n d = derive(t);\n for (j = 0; j < m; ++j) {\n d[as[j]] = (v = arrays[j][i]) == null ? null : v;\n }\n if (index) {\n d[index] = i;\n }\n out.add.push(d);\n }\n });\n this.value = out.source = out.add;\n if (index) out.modifies(index);\n return out.modifies(as);\n }\n});\n\n/**\n * Folds one more tuple fields into multiple tuples in which the field\n * name and values are available under new 'key' and 'value' fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.fields - An array of field accessors\n * for the tuple fields that should be folded.\n * @param {Array<string>} [params.as] - Output field names for folded key\n * and value fields, defaults to ['key', 'value'].\n */\nfunction Fold(params) {\n Transform.call(this, [], params);\n}\nFold.Definition = {\n 'type': 'Fold',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['key', 'value']\n }]\n};\ninherits(Fold, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n fnames = fields.map(accessorName),\n as = _.as || ['key', 'value'],\n k = as[0],\n v = as[1],\n n = fields.length;\n out.rem = this.value;\n pulse.visit(pulse.SOURCE, t => {\n for (let i = 0, d; i < n; ++i) {\n d = derive(t);\n d[k] = fnames[i];\n d[v] = fields[i](t);\n out.add.push(d);\n }\n });\n this.value = out.source = out.add;\n return out.modifies(as);\n }\n});\n\n/**\n * Invokes a function for each data tuple and saves the results as a new field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The formula function to invoke for each tuple.\n * @param {string} params.as - The field name under which to save the result.\n * @param {boolean} [params.initonly=false] - If true, the formula is applied to\n * added tuples only, and does not update in response to modifications.\n */\nfunction Formula(params) {\n Transform.call(this, null, params);\n}\nFormula.Definition = {\n 'type': 'Formula',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'expr',\n 'type': 'expr',\n 'required': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'required': true\n }, {\n 'name': 'initonly',\n 'type': 'boolean'\n }]\n};\ninherits(Formula, Transform, {\n transform(_, pulse) {\n const func = _.expr,\n as = _.as,\n mod = _.modified(),\n flag = _.initonly ? pulse.ADD : mod ? pulse.SOURCE : pulse.modified(func.fields) || pulse.modified(as) ? pulse.ADD_MOD : pulse.ADD;\n if (mod) {\n // parameters updated, need to reflow\n pulse = pulse.materialize().reflow(true);\n }\n if (!_.initonly) {\n pulse.modifies(as);\n }\n return pulse.visit(flag, t => t[as] = func(t, _));\n }\n});\n\n/**\n * Generates data tuples using a provided generator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Parameters): object} params.generator - A tuple generator\n * function. This function is given the operator parameters as input.\n * Changes to any additional parameters will not trigger re-calculation\n * of previously generated tuples. Only future tuples are affected.\n * @param {number} params.size - The number of tuples to produce.\n */\nfunction Generate(params) {\n Transform.call(this, [], params);\n}\ninherits(Generate, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.ALL),\n gen = _.generator;\n let data = this.value,\n num = _.size - data.length,\n add,\n rem,\n t;\n if (num > 0) {\n // need more tuples, generate and add\n for (add = []; --num >= 0;) {\n add.push(t = ingest(gen(_)));\n data.push(t);\n }\n out.add = out.add.length ? out.materialize(out.ADD).add.concat(add) : add;\n } else {\n // need fewer tuples, remove\n rem = data.slice(0, -num);\n out.rem = out.rem.length ? out.materialize(out.REM).rem.concat(rem) : rem;\n data = data.slice(-num);\n }\n out.source = this.value = data;\n return out;\n }\n});\n\nconst Methods = {\n value: 'value',\n median: median,\n mean: mean,\n min: min,\n max: max\n};\nconst Empty = [];\n\n/**\n * Impute missing values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to impute.\n * @param {Array<function(object): *>} [params.groupby] - An array of\n * accessors to determine series within which to perform imputation.\n * @param {function(object): *} params.key - An accessor for a key value.\n * Each key value should be unique within a group. New tuples will be\n * imputed for any key values that are not found within a group.\n * @param {Array<*>} [params.keyvals] - Optional array of required key\n * values. New tuples will be imputed for any key values that are not\n * found within a group. In addition, these values will be automatically\n * augmented with the key values observed in the input data.\n * @param {string} [method='value'] - The imputation method to use. One of\n * 'value', 'mean', 'median', 'max', 'min'.\n * @param {*} [value=0] - The constant value to use for imputation\n * when using method 'value'.\n */\nfunction Impute(params) {\n Transform.call(this, [], params);\n}\nImpute.Definition = {\n 'type': 'Impute',\n 'metadata': {\n 'changes': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'key',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'keyvals',\n 'array': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'method',\n 'type': 'enum',\n 'default': 'value',\n 'values': ['value', 'mean', 'median', 'max', 'min']\n }, {\n 'name': 'value',\n 'default': 0\n }]\n};\nfunction getValue(_) {\n var m = _.method || Methods.value,\n v;\n if (Methods[m] == null) {\n error('Unrecognized imputation method: ' + m);\n } else if (m === Methods.value) {\n v = _.value !== undefined ? _.value : 0;\n return () => v;\n } else {\n return Methods[m];\n }\n}\nfunction getField(_) {\n const f = _.field;\n return t => t ? f(t) : NaN;\n}\ninherits(Impute, Transform, {\n transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n impute = getValue(_),\n field = getField(_),\n fName = accessorName(_.field),\n kName = accessorName(_.key),\n gNames = (_.groupby || []).map(accessorName),\n groups = partition(pulse.source, _.groupby, _.key, _.keyvals),\n curr = [],\n prev = this.value,\n m = groups.domain.length,\n group,\n value,\n gVals,\n kVal,\n g,\n i,\n j,\n l,\n n,\n t;\n for (g = 0, l = groups.length; g < l; ++g) {\n group = groups[g];\n gVals = group.values;\n value = NaN;\n\n // add tuples for missing values\n for (j = 0; j < m; ++j) {\n if (group[j] != null) continue;\n kVal = groups.domain[j];\n t = {\n _impute: true\n };\n for (i = 0, n = gVals.length; i < n; ++i) t[gNames[i]] = gVals[i];\n t[kName] = kVal;\n t[fName] = Number.isNaN(value) ? value = impute(group, field) : value;\n curr.push(ingest(t));\n }\n }\n\n // update pulse with imputed tuples\n if (curr.length) out.add = out.materialize(out.ADD).add.concat(curr);\n if (prev.length) out.rem = out.materialize(out.REM).rem.concat(prev);\n this.value = curr;\n return out;\n }\n});\nfunction partition(data, groupby, key, keyvals) {\n var get = f => f(t),\n groups = [],\n domain = keyvals ? keyvals.slice() : [],\n kMap = {},\n gMap = {},\n gVals,\n gKey,\n group,\n i,\n j,\n k,\n n,\n t;\n domain.forEach((k, i) => kMap[k] = i + 1);\n for (i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = key(t);\n j = kMap[k] || (kMap[k] = domain.push(k));\n gKey = (gVals = groupby ? groupby.map(get) : Empty) + '';\n if (!(group = gMap[gKey])) {\n group = gMap[gKey] = [];\n groups.push(group);\n group.values = gVals;\n }\n group[j - 1] = t;\n }\n groups.domain = domain;\n return groups;\n}\n\n/**\n * Extend input tuples with aggregate values.\n * Calcuates aggregate values and joins them with the input stream.\n * @constructor\n */\nfunction JoinAggregate(params) {\n Aggregate.call(this, params);\n}\nJoinAggregate.Definition = {\n 'type': 'JoinAggregate',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'null': true,\n 'array': true\n }, {\n 'name': 'ops',\n 'type': 'enum',\n 'array': true,\n 'values': ValidAggregateOps\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }, {\n 'name': 'key',\n 'type': 'field'\n }]\n};\ninherits(JoinAggregate, Aggregate, {\n transform(_, pulse) {\n const aggr = this,\n mod = _.modified();\n let cells;\n\n // process all input tuples to calculate aggregates\n if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n cells = aggr.value = mod ? aggr.init(_) : {};\n pulse.visit(pulse.SOURCE, t => aggr.add(t));\n } else {\n cells = aggr.value = aggr.value || this.init(_);\n pulse.visit(pulse.REM, t => aggr.rem(t));\n pulse.visit(pulse.ADD, t => aggr.add(t));\n }\n\n // update aggregation cells\n aggr.changes();\n\n // write aggregate values to input tuples\n pulse.visit(pulse.SOURCE, t => {\n extend(t, cells[aggr.cellkey(t)].tuple);\n });\n return pulse.reflow(mod).modifies(this._outputs);\n },\n changes() {\n const adds = this._adds,\n mods = this._mods;\n let i, n;\n for (i = 0, n = this._alen; i < n; ++i) {\n this.celltuple(adds[i]);\n adds[i] = null; // for garbage collection\n }\n\n for (i = 0, n = this._mlen; i < n; ++i) {\n this.celltuple(mods[i]);\n mods[i] = null; // for garbage collection\n }\n\n this._alen = this._mlen = 0; // reset list of active cells\n }\n});\n\n/**\n * Compute kernel density estimates (KDE) for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n * to groupby.\n * @param {function(object): *} params.field - An accessor for the data field\n * to estimate.\n * @param {number} [params.bandwidth=0] - The KDE kernel bandwidth.\n * If zero or unspecified, the bandwidth is automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n * output values should be probability estimates (false, default) or\n * smoothed counts (true).\n * @param {string} [params.cumulative=false] - A boolean flag indicating if a\n * density (false) or cumulative distribution (true) should be generated.\n * @param {Array<number>} [params.extent] - The domain extent over which to\n * plot the density. If unspecified, the [min, max] data extent is used.\n * @param {string} [params.resolve='independent'] - Indicates how parameters for\n * multiple densities should be resolved. If \"independent\" (the default), each\n * density may have its own domain extent and dynamic number of curve sample\n * steps. If \"shared\", the KDE transform will ensure that all densities are\n * defined over a shared domain and curve steps, enabling stacking.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n * for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n * for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n * plotting the density. If specified, overrides both minsteps and maxsteps\n * to set an exact number of uniform samples. Useful in conjunction with\n * a fixed extent to ensure consistent sample points for stacked densities.\n */\nfunction KDE(params) {\n Transform.call(this, null, params);\n}\nKDE.Definition = {\n 'type': 'KDE',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'cumulative',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'counts',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'resolve',\n 'type': 'enum',\n 'values': ['shared', 'independent'],\n 'default': 'independent'\n }, {\n 'name': 'steps',\n 'type': 'number'\n }, {\n 'name': 'minsteps',\n 'type': 'number',\n 'default': 25\n }, {\n 'name': 'maxsteps',\n 'type': 'number',\n 'default': 200\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'default': ['value', 'density']\n }]\n};\ninherits(KDE, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$1(source, _.groupby, _.field),\n names = (_.groupby || []).map(accessorName),\n bandwidth = _.bandwidth,\n method = _.cumulative ? 'cdf' : 'pdf',\n as = _.as || ['value', 'density'],\n values = [];\n let domain = _.extent,\n minsteps = _.steps || _.minsteps || 25,\n maxsteps = _.steps || _.maxsteps || 200;\n if (method !== 'pdf' && method !== 'cdf') {\n error('Invalid density method: ' + method);\n }\n if (_.resolve === 'shared') {\n if (!domain) domain = extent(source, _.field);\n minsteps = maxsteps = _.steps || maxsteps;\n }\n groups.forEach(g => {\n const density = randomKDE(g, bandwidth)[method],\n scale = _.counts ? g.length : 1,\n local = domain || extent(g);\n sampleCurve(density, local, minsteps, maxsteps).forEach(v => {\n const t = {};\n for (let i = 0; i < names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = v[0];\n t[as[1]] = v[1] * scale;\n values.push(ingest(t));\n });\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\n\n/**\n * Generates a key function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<string>} params.fields - The field name(s) for the key function.\n * @param {boolean} params.flat - A boolean flag indicating if the field names\n * should be treated as flat property names, side-stepping nested field\n * lookups normally indicated by dot or bracket notation.\n */\nfunction Key(params) {\n Operator.call(this, null, update$2, params);\n}\ninherits(Key, Operator);\nfunction update$2(_) {\n return this.value && !_.modified() ? this.value : key(_.fields, _.flat);\n}\n\n/**\n * Load and parse data from an external source. Marshalls parameter\n * values and then invokes the Dataflow request method.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.url - The URL to load from.\n * @param {object} params.format - The data format options.\n */\nfunction Load(params) {\n Transform.call(this, [], params);\n this._pending = null;\n}\ninherits(Load, Transform, {\n transform(_, pulse) {\n const df = pulse.dataflow;\n if (this._pending) {\n // update state and return pulse\n return output(this, pulse, this._pending);\n }\n if (stop(_)) return pulse.StopPropagation;\n if (_.values) {\n // parse and ingest values, return output pulse\n return output(this, pulse, df.parse(_.values, _.format));\n } else if (_.async) {\n // return promise for non-blocking async loading\n const p = df.request(_.url, _.format).then(res => {\n this._pending = array(res.data);\n return df => df.touch(this);\n });\n return {\n async: p\n };\n } else {\n // return promise for synchronous loading\n return df.request(_.url, _.format).then(res => output(this, pulse, array(res.data)));\n }\n }\n});\nfunction stop(_) {\n return _.modified('async') && !(_.modified('values') || _.modified('url') || _.modified('format'));\n}\nfunction output(op, pulse, data) {\n data.forEach(ingest);\n const out = pulse.fork(pulse.NO_FIELDS & pulse.NO_SOURCE);\n out.rem = op.value;\n op.value = out.source = out.add = data;\n op._pending = null;\n if (out.rem.length) out.clean(true);\n return out;\n}\n\n/**\n * Extend tuples by joining them with values from a lookup table.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Map} params.index - The lookup table map.\n * @param {Array<function(object): *} params.fields - The fields to lookup.\n * @param {Array<string>} params.as - Output field names for each lookup value.\n * @param {*} [params.default] - A default value to use if lookup fails.\n */\nfunction Lookup(params) {\n Transform.call(this, {}, params);\n}\nLookup.Definition = {\n 'type': 'Lookup',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'index',\n 'type': 'index',\n 'params': [{\n 'name': 'from',\n 'type': 'data',\n 'required': true\n }, {\n 'name': 'key',\n 'type': 'field',\n 'required': true\n }]\n }, {\n 'name': 'values',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }, {\n 'name': 'default',\n 'default': null\n }]\n};\ninherits(Lookup, Transform, {\n transform(_, pulse) {\n const keys = _.fields,\n index = _.index,\n values = _.values,\n defaultValue = _.default == null ? null : _.default,\n reset = _.modified(),\n n = keys.length;\n let flag = reset ? pulse.SOURCE : pulse.ADD,\n out = pulse,\n as = _.as,\n set,\n m,\n mods;\n if (values) {\n m = values.length;\n if (n > 1 && !as) {\n error('Multi-field lookup requires explicit \"as\" parameter.');\n }\n if (as && as.length !== n * m) {\n error('The \"as\" parameter has too few output field names.');\n }\n as = as || values.map(accessorName);\n set = function (t) {\n for (var i = 0, k = 0, j, v; i < n; ++i) {\n v = index.get(keys[i](t));\n if (v == null) for (j = 0; j < m; ++j, ++k) t[as[k]] = defaultValue;else for (j = 0; j < m; ++j, ++k) t[as[k]] = values[j](v);\n }\n };\n } else {\n if (!as) {\n error('Missing output field names.');\n }\n set = function (t) {\n for (var i = 0, v; i < n; ++i) {\n v = index.get(keys[i](t));\n t[as[i]] = v == null ? defaultValue : v;\n }\n };\n }\n if (reset) {\n out = pulse.reflow(true);\n } else {\n mods = keys.some(k => pulse.modified(k.fields));\n flag |= mods ? pulse.MOD : 0;\n }\n pulse.visit(flag, set);\n return out.modifies(as);\n }\n});\n\n/**\n * Computes global min/max extents over a collection of extents.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<Array<number>>} params.extents - The input extents.\n */\nfunction MultiExtent(params) {\n Operator.call(this, null, update$1, params);\n}\ninherits(MultiExtent, Operator);\nfunction update$1(_) {\n if (this.value && !_.modified()) {\n return this.value;\n }\n const ext = _.extents,\n n = ext.length;\n let min = +Infinity,\n max = -Infinity,\n i,\n e;\n for (i = 0; i < n; ++i) {\n e = ext[i];\n if (e[0] < min) min = e[0];\n if (e[1] > max) max = e[1];\n }\n return [min, max];\n}\n\n/**\n * Merge a collection of value arrays.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<Array<*>>} params.values - The input value arrrays.\n */\nfunction MultiValues(params) {\n Operator.call(this, null, update, params);\n}\ninherits(MultiValues, Operator);\nfunction update(_) {\n return this.value && !_.modified() ? this.value : _.values.reduce((data, _) => data.concat(_), []);\n}\n\n/**\n * Operator whose value is simply its parameter hash. This operator is\n * useful for enabling reactive updates to values of nested objects.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Params(params) {\n Transform.call(this, null, params);\n}\ninherits(Params, Transform, {\n transform(_, pulse) {\n this.modified(_.modified());\n this.value = _;\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS); // do not pass tuples\n }\n});\n\n/**\n * Aggregate and pivot selected field values to become new fields.\n * This operator is useful to construction cross-tabulations.\n * @constructor\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n * to groupby. These fields act just like groupby fields of an Aggregate transform.\n * @param {function(object): *} params.field - The field to pivot on. The unique\n * values of this field become new field names in the output stream.\n * @param {function(object): *} params.value - The field to populate pivoted fields.\n * The aggregate values of this field become the values of the new pivoted fields.\n * @param {string} [params.op] - The aggregation operation for the value field,\n * applied per cell in the output stream. The default is \"sum\".\n * @param {number} [params.limit] - An optional parameter indicating the maximum\n * number of pivoted fields to generate. The pivoted field names are sorted in\n * ascending order prior to enforcing the limit.\n */\nfunction Pivot(params) {\n Aggregate.call(this, params);\n}\nPivot.Definition = {\n 'type': 'Pivot',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'value',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'op',\n 'type': 'enum',\n 'values': ValidAggregateOps,\n 'default': 'sum'\n }, {\n 'name': 'limit',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'key',\n 'type': 'field'\n }]\n};\ninherits(Pivot, Aggregate, {\n _transform: Aggregate.prototype.transform,\n transform(_, pulse) {\n return this._transform(aggregateParams(_, pulse), pulse);\n }\n});\n\n// Shoehorn a pivot transform into an aggregate transform!\n// First collect all unique pivot field values.\n// Then generate aggregate fields for each output pivot field.\nfunction aggregateParams(_, pulse) {\n const key = _.field,\n value = _.value,\n op = (_.op === 'count' ? '__count__' : _.op) || 'sum',\n fields = accessorFields(key).concat(accessorFields(value)),\n keys = pivotKeys(key, _.limit || 0, pulse);\n\n // if data stream content changes, pivot fields may change\n // flag parameter modification to ensure re-initialization\n if (pulse.changed()) _.set('__pivot__', null, null, true);\n return {\n key: _.key,\n groupby: _.groupby,\n ops: keys.map(() => op),\n fields: keys.map(k => get(k, key, value, fields)),\n as: keys.map(k => k + ''),\n modified: _.modified.bind(_)\n };\n}\n\n// Generate aggregate field accessor.\n// Output NaN for non-existent values; aggregator will ignore!\nfunction get(k, key, value, fields) {\n return accessor(d => key(d) === k ? value(d) : NaN, fields, k + '');\n}\n\n// Collect (and optionally limit) all unique pivot values.\nfunction pivotKeys(key, limit, pulse) {\n const map = {},\n list = [];\n pulse.visit(pulse.SOURCE, t => {\n const k = key(t);\n if (!map[k]) {\n map[k] = 1;\n list.push(k);\n }\n });\n list.sort(ascending);\n return limit ? list.slice(0, limit) : list;\n}\n\n/**\n * Partitions pre-faceted data into tuple subflows.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n * that generates a subflow of operators and returns its root operator.\n * @param {function(object): Array<object>} params.field - The field\n * accessor for an array of subflow tuple objects.\n */\nfunction PreFacet(params) {\n Facet.call(this, params);\n}\ninherits(PreFacet, Facet, {\n transform(_, pulse) {\n const flow = _.subflow,\n field = _.field,\n subflow = t => this.subflow(tupleid(t), flow, pulse, t);\n if (_.modified('field') || field && pulse.modified(accessorFields(field))) {\n error('PreFacet does not support field modification.');\n }\n this.initTargets(); // reset list of active subflows\n\n if (field) {\n pulse.visit(pulse.MOD, t => {\n const sf = subflow(t);\n field(t).forEach(_ => sf.mod(_));\n });\n pulse.visit(pulse.ADD, t => {\n const sf = subflow(t);\n field(t).forEach(_ => sf.add(ingest(_)));\n });\n pulse.visit(pulse.REM, t => {\n const sf = subflow(t);\n field(t).forEach(_ => sf.rem(_));\n });\n } else {\n pulse.visit(pulse.MOD, t => subflow(t).mod(t));\n pulse.visit(pulse.ADD, t => subflow(t).add(t));\n pulse.visit(pulse.REM, t => subflow(t).rem(t));\n }\n if (pulse.clean()) {\n pulse.runAfter(() => this.clean());\n }\n return pulse;\n }\n});\n\n/**\n * Performs a relational projection, copying selected fields from source\n * tuples to a new set of derived tuples.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *} params.fields - The fields to project,\n * as an array of field accessors. If unspecified, all fields will be\n * copied with names unchanged.\n * @param {Array<string>} [params.as] - Output field names for each projected\n * field. Any unspecified fields will use the field name provided by\n * the field accessor.\n */\nfunction Project(params) {\n Transform.call(this, null, params);\n}\nProject.Definition = {\n 'type': 'Project',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }]\n};\ninherits(Project, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE),\n fields = _.fields,\n as = fieldNames(_.fields, _.as || []),\n derive = fields ? (s, t) => project(s, t, fields, as) : rederive;\n let lut;\n if (this.value) {\n lut = this.value;\n } else {\n pulse = pulse.addAll();\n lut = this.value = {};\n }\n pulse.visit(pulse.REM, t => {\n const id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n pulse.visit(pulse.ADD, t => {\n const dt = derive(t, ingest({}));\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n pulse.visit(pulse.MOD, t => {\n out.mod.push(derive(t, lut[tupleid(t)]));\n });\n return out;\n }\n});\nfunction project(s, t, fields, as) {\n for (let i = 0, n = fields.length; i < n; ++i) {\n t[as[i]] = fields[i](s);\n }\n return t;\n}\n\n/**\n * Proxy the value of another operator as a pure signal value.\n * Ensures no tuples are propagated.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {*} params.value - The value to proxy, becomes the value of this operator.\n */\nfunction Proxy(params) {\n Transform.call(this, null, params);\n}\ninherits(Proxy, Transform, {\n transform(_, pulse) {\n this.value = _.value;\n return _.modified('value') ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n }\n});\n\n/**\n * Generates sample quantile values from an input data stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the data field\n * over which to calculate quantile values.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n * to groupby.\n * @param {Array<number>} [params.probs] - An array of probabilities in\n * the range (0, 1) for which to compute quantile values. If not specified,\n * the *step* parameter will be used.\n * @param {Array<number>} [params.step=0.01] - A probability step size for\n * sampling quantile values. All values from one-half the step size up to\n * 1 (exclusive) will be sampled. This parameter is only used if the\n * *quantiles* parameter is not provided.\n */\nfunction Quantile(params) {\n Transform.call(this, null, params);\n}\nQuantile.Definition = {\n 'type': 'Quantile',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'probs',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'step',\n 'type': 'number',\n 'default': 0.01\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'default': ['prob', 'value']\n }]\n};\nconst EPSILON = 1e-14;\ninherits(Quantile, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n as = _.as || ['prob', 'value'];\n if (this.value && !_.modified() && !pulse.changed()) {\n out.source = this.value;\n return out;\n }\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition$1(source, _.groupby, _.field),\n names = (_.groupby || []).map(accessorName),\n values = [],\n step = _.step || 0.01,\n p = _.probs || range(step / 2, 1 - EPSILON, step),\n n = p.length;\n groups.forEach(g => {\n const q = quantiles(g, p);\n for (let i = 0; i < n; ++i) {\n const t = {};\n for (let i = 0; i < names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[i];\n t[as[1]] = q[i];\n values.push(ingest(t));\n }\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n return out;\n }\n});\n\n/**\n * Relays a data stream between data processing pipelines.\n * If the derive parameter is set, this transform will create derived\n * copies of observed tuples. This provides derived data streams in which\n * modifications to the tuples do not pollute an upstream data source.\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.derive=false] - Boolean flag indicating if\n * the transform should make derived copies of incoming tuples.\n * @constructor\n */\nfunction Relay(params) {\n Transform.call(this, null, params);\n}\ninherits(Relay, Transform, {\n transform(_, pulse) {\n let out, lut;\n if (this.value) {\n lut = this.value;\n } else {\n out = pulse = pulse.addAll();\n lut = this.value = {};\n }\n if (_.derive) {\n out = pulse.fork(pulse.NO_SOURCE);\n pulse.visit(pulse.REM, t => {\n const id = tupleid(t);\n out.rem.push(lut[id]);\n lut[id] = null;\n });\n pulse.visit(pulse.ADD, t => {\n const dt = derive(t);\n lut[tupleid(t)] = dt;\n out.add.push(dt);\n });\n pulse.visit(pulse.MOD, t => {\n const dt = lut[tupleid(t)];\n for (const k in t) {\n dt[k] = t[k];\n // down stream writes may overwrite re-derived tuples\n // conservatively mark all source fields as modified\n out.modifies(k);\n }\n out.mod.push(dt);\n });\n }\n return out;\n }\n});\n\n/**\n * Samples tuples passing through this operator.\n * Uses reservoir sampling to maintain a representative sample.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.size=1000] - The maximum number of samples.\n */\nfunction Sample(params) {\n Transform.call(this, [], params);\n this.count = 0;\n}\nSample.Definition = {\n 'type': 'Sample',\n 'metadata': {},\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'default': 1000\n }]\n};\ninherits(Sample, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE),\n mod = _.modified('size'),\n num = _.size,\n map = this.value.reduce((m, t) => (m[tupleid(t)] = 1, m), {});\n let res = this.value,\n cnt = this.count,\n cap = 0;\n\n // sample reservoir update function\n function update(t) {\n let p, idx;\n if (res.length < num) {\n res.push(t);\n } else {\n idx = ~~((cnt + 1) * random());\n if (idx < res.length && idx >= cap) {\n p = res[idx];\n if (map[tupleid(p)]) out.rem.push(p); // eviction\n res[idx] = t;\n }\n }\n ++cnt;\n }\n if (pulse.rem.length) {\n // find all tuples that should be removed, add to output\n pulse.visit(pulse.REM, t => {\n const id = tupleid(t);\n if (map[id]) {\n map[id] = -1;\n out.rem.push(t);\n }\n --cnt;\n });\n\n // filter removed tuples out of the sample reservoir\n res = res.filter(t => map[tupleid(t)] !== -1);\n }\n if ((pulse.rem.length || mod) && res.length < num && pulse.source) {\n // replenish sample if backing data source is available\n cap = cnt = res.length;\n pulse.visit(pulse.SOURCE, t => {\n // update, but skip previously sampled tuples\n if (!map[tupleid(t)]) update(t);\n });\n cap = -1;\n }\n if (mod && res.length > num) {\n const n = res.length - num;\n for (let i = 0; i < n; ++i) {\n map[tupleid(res[i])] = -1;\n out.rem.push(res[i]);\n }\n res = res.slice(n);\n }\n if (pulse.mod.length) {\n // propagate modified tuples in the sample reservoir\n pulse.visit(pulse.MOD, t => {\n if (map[tupleid(t)]) out.mod.push(t);\n });\n }\n if (pulse.add.length) {\n // update sample reservoir\n pulse.visit(pulse.ADD, update);\n }\n if (pulse.add.length || cap < 0) {\n // output newly added tuples\n out.add = res.filter(t => !map[tupleid(t)]);\n }\n this.count = cnt;\n this.value = out.source = res;\n return out;\n }\n});\n\n/**\n * Generates data tuples for a specified sequence range of numbers.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} params.start - The first number in the sequence.\n * @param {number} params.stop - The last number (exclusive) in the sequence.\n * @param {number} [params.step=1] - The step size between numbers in the sequence.\n */\nfunction Sequence(params) {\n Transform.call(this, null, params);\n}\nSequence.Definition = {\n 'type': 'Sequence',\n 'metadata': {\n 'generates': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'start',\n 'type': 'number',\n 'required': true\n }, {\n 'name': 'stop',\n 'type': 'number',\n 'required': true\n }, {\n 'name': 'step',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'data'\n }]\n};\ninherits(Sequence, Transform, {\n transform(_, pulse) {\n if (this.value && !_.modified()) return;\n const out = pulse.materialize().fork(pulse.MOD),\n as = _.as || 'data';\n out.rem = this.value ? pulse.rem.concat(this.value) : pulse.rem;\n this.value = range(_.start, _.stop, _.step || 1).map(v => {\n const t = {};\n t[as] = v;\n return ingest(t);\n });\n out.add = pulse.add.concat(this.value);\n return out;\n }\n});\n\n/**\n * Propagates a new pulse without any tuples so long as the input\n * pulse contains some added, removed or modified tuples.\n * @param {object} params - The parameters for this operator.\n * @constructor\n */\nfunction Sieve(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Sieve, Transform, {\n transform(_, pulse) {\n this.value = pulse.source;\n return pulse.changed() ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n }\n});\n\n/**\n * Discretize dates to specific time units.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The data field containing date/time values.\n */\nfunction TimeUnit(params) {\n Transform.call(this, null, params);\n}\nconst OUTPUT = ['unit0', 'unit1'];\nTimeUnit.Definition = {\n 'type': 'TimeUnit',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'interval',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'units',\n 'type': 'enum',\n 'values': TIME_UNITS,\n 'array': true\n }, {\n 'name': 'step',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'maxbins',\n 'type': 'number',\n 'default': 40\n }, {\n 'name': 'extent',\n 'type': 'date',\n 'array': true\n }, {\n 'name': 'timezone',\n 'type': 'enum',\n 'default': 'local',\n 'values': ['local', 'utc']\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': OUTPUT\n }]\n};\ninherits(TimeUnit, Transform, {\n transform(_, pulse) {\n const field = _.field,\n band = _.interval !== false,\n utc = _.timezone === 'utc',\n floor = this._floor(_, pulse),\n offset = (utc ? utcInterval : timeInterval)(floor.unit).offset,\n as = _.as || OUTPUT,\n u0 = as[0],\n u1 = as[1],\n step = floor.step;\n let min = floor.start || Infinity,\n max = floor.stop || -Infinity,\n flag = pulse.ADD;\n if (_.modified() || pulse.changed(pulse.REM) || pulse.modified(accessorFields(field))) {\n pulse = pulse.reflow(true);\n flag = pulse.SOURCE;\n min = Infinity;\n max = -Infinity;\n }\n pulse.visit(flag, t => {\n const v = field(t);\n let a, b;\n if (v == null) {\n t[u0] = null;\n if (band) t[u1] = null;\n } else {\n t[u0] = a = b = floor(v);\n if (band) t[u1] = b = offset(a, step);\n if (a < min) min = a;\n if (b > max) max = b;\n }\n });\n floor.start = min;\n floor.stop = max;\n return pulse.modifies(band ? as : u0);\n },\n _floor(_, pulse) {\n const utc = _.timezone === 'utc';\n\n // get parameters\n const {\n units,\n step\n } = _.units ? {\n units: _.units,\n step: _.step || 1\n } : timeBin({\n extent: _.extent || extent(pulse.materialize(pulse.SOURCE).source, _.field),\n maxbins: _.maxbins\n });\n\n // check / standardize time units\n const tunits = timeUnits(units),\n prev = this.value || {},\n floor = (utc ? utcFloor : timeFloor)(tunits, step);\n floor.unit = peek(tunits);\n floor.units = tunits;\n floor.step = step;\n floor.start = prev.start;\n floor.stop = prev.stop;\n return this.value = floor;\n }\n});\n\n/**\n * An index that maps from unique, string-coerced, field values to tuples.\n * Assumes that the field serves as a unique key with no duplicate values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field accessor to index.\n */\nfunction TupleIndex(params) {\n Transform.call(this, fastmap(), params);\n}\ninherits(TupleIndex, Transform, {\n transform(_, pulse) {\n const df = pulse.dataflow,\n field = _.field,\n index = this.value,\n set = t => index.set(field(t), t);\n let mod = true;\n if (_.modified('field') || pulse.modified(field.fields)) {\n index.clear();\n pulse.visit(pulse.SOURCE, set);\n } else if (pulse.changed()) {\n pulse.visit(pulse.REM, t => index.delete(field(t)));\n pulse.visit(pulse.ADD, set);\n } else {\n mod = false;\n }\n this.modified(mod);\n if (index.empty > df.cleanThreshold) df.runAfter(index.clean);\n return pulse.fork();\n }\n});\n\n/**\n * Extracts an array of values. Assumes the source data has already been\n * reduced as needed (e.g., by an upstream Aggregate transform).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The domain field to extract.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for sorting the values. The comparator will be\n * applied to backing tuples prior to value extraction.\n */\nfunction Values(params) {\n Transform.call(this, null, params);\n}\ninherits(Values, Transform, {\n transform(_, pulse) {\n const run = !this.value || _.modified('field') || _.modified('sort') || pulse.changed() || _.sort && pulse.modified(_.sort.fields);\n if (run) {\n this.value = (_.sort ? pulse.source.slice().sort(stableCompare(_.sort)) : pulse.source).map(_.field);\n }\n }\n});\n\nfunction WindowOp(op, field, param, as) {\n const fn = WindowOps[op](field, param);\n return {\n init: fn.init || zero,\n update: function (w, t) {\n t[as] = fn.next(w);\n }\n };\n}\nconst WindowOps = {\n row_number: function () {\n return {\n next: w => w.index + 1\n };\n },\n rank: function () {\n let rank;\n return {\n init: () => rank = 1,\n next: w => {\n const i = w.index,\n data = w.data;\n return i && w.compare(data[i - 1], data[i]) ? rank = i + 1 : rank;\n }\n };\n },\n dense_rank: function () {\n let drank;\n return {\n init: () => drank = 1,\n next: w => {\n const i = w.index,\n d = w.data;\n return i && w.compare(d[i - 1], d[i]) ? ++drank : drank;\n }\n };\n },\n percent_rank: function () {\n const rank = WindowOps.rank(),\n next = rank.next;\n return {\n init: rank.init,\n next: w => (next(w) - 1) / (w.data.length - 1)\n };\n },\n cume_dist: function () {\n let cume;\n return {\n init: () => cume = 0,\n next: w => {\n const d = w.data,\n c = w.compare;\n let i = w.index;\n if (cume < i) {\n while (i + 1 < d.length && !c(d[i], d[i + 1])) ++i;\n cume = i;\n }\n return (1 + cume) / d.length;\n }\n };\n },\n ntile: function (field, num) {\n num = +num;\n if (!(num > 0)) error('ntile num must be greater than zero.');\n const cume = WindowOps.cume_dist(),\n next = cume.next;\n return {\n init: cume.init,\n next: w => Math.ceil(num * next(w))\n };\n },\n lag: function (field, offset) {\n offset = +offset || 1;\n return {\n next: w => {\n const i = w.index - offset;\n return i >= 0 ? field(w.data[i]) : null;\n }\n };\n },\n lead: function (field, offset) {\n offset = +offset || 1;\n return {\n next: w => {\n const i = w.index + offset,\n d = w.data;\n return i < d.length ? field(d[i]) : null;\n }\n };\n },\n first_value: function (field) {\n return {\n next: w => field(w.data[w.i0])\n };\n },\n last_value: function (field) {\n return {\n next: w => field(w.data[w.i1 - 1])\n };\n },\n nth_value: function (field, nth) {\n nth = +nth;\n if (!(nth > 0)) error('nth_value nth must be greater than zero.');\n return {\n next: w => {\n const i = w.i0 + (nth - 1);\n return i < w.i1 ? field(w.data[i]) : null;\n }\n };\n },\n prev_value: function (field) {\n let prev;\n return {\n init: () => prev = null,\n next: w => {\n const v = field(w.data[w.index]);\n return v != null ? prev = v : prev;\n }\n };\n },\n next_value: function (field) {\n let v, i;\n return {\n init: () => (v = null, i = -1),\n next: w => {\n const d = w.data;\n return w.index <= i ? v : (i = find(field, d, w.index)) < 0 ? (i = d.length, v = null) : v = field(d[i]);\n }\n };\n }\n};\nfunction find(field, data, index) {\n for (let n = data.length; index < n; ++index) {\n const v = field(data[index]);\n if (v != null) return index;\n }\n return -1;\n}\nconst ValidWindowOps = Object.keys(WindowOps);\n\nfunction WindowState(_) {\n const ops = array(_.ops),\n fields = array(_.fields),\n params = array(_.params),\n aggregate_params = array(_.aggregate_params),\n as = array(_.as),\n outputs = this.outputs = [],\n windows = this.windows = [],\n inputs = {},\n map = {},\n counts = [],\n measures = [];\n let countOnly = true;\n function visitInputs(f) {\n array(accessorFields(f)).forEach(_ => inputs[_] = 1);\n }\n visitInputs(_.sort);\n ops.forEach((op, i) => {\n const field = fields[i],\n param = params[i],\n aggregate_param = aggregate_params[i] || null,\n mname = accessorName(field),\n name = measureName(op, mname, as[i]);\n visitInputs(field);\n outputs.push(name);\n\n // Window operation\n if (hasOwnProperty(WindowOps, op)) {\n windows.push(WindowOp(op, field, param, name));\n }\n\n // Aggregate operation\n else {\n if (field == null && op !== 'count') {\n error('Null aggregate field specified.');\n }\n if (op === 'count') {\n counts.push(name);\n return;\n }\n countOnly = false;\n let m = map[mname];\n if (!m) {\n m = map[mname] = [];\n m.field = field;\n measures.push(m);\n }\n m.push(createMeasure(op, aggregate_param, name));\n }\n });\n if (counts.length || measures.length) {\n this.cell = cell(measures, counts, countOnly);\n }\n this.inputs = Object.keys(inputs);\n}\nconst prototype = WindowState.prototype;\nprototype.init = function () {\n this.windows.forEach(_ => _.init());\n if (this.cell) this.cell.init();\n};\nprototype.update = function (w, t) {\n const cell = this.cell,\n wind = this.windows,\n data = w.data,\n m = wind && wind.length;\n let j;\n if (cell) {\n for (j = w.p0; j < w.i0; ++j) cell.rem(data[j]);\n for (j = w.p1; j < w.i1; ++j) cell.add(data[j]);\n cell.set(t);\n }\n for (j = 0; j < m; ++j) wind[j].update(w, t);\n};\nfunction cell(measures, counts, countOnly) {\n measures = measures.map(m => compileMeasures(m, m.field));\n const cell = {\n num: 0,\n agg: null,\n store: false,\n count: counts\n };\n if (!countOnly) {\n var n = measures.length,\n a = cell.agg = Array(n),\n i = 0;\n for (; i < n; ++i) a[i] = new measures[i](cell);\n }\n if (cell.store) {\n var store = cell.data = new TupleStore();\n }\n cell.add = function (t) {\n cell.num += 1;\n if (countOnly) return;\n if (store) store.add(t);\n for (let i = 0; i < n; ++i) {\n a[i].add(a[i].get(t), t);\n }\n };\n cell.rem = function (t) {\n cell.num -= 1;\n if (countOnly) return;\n if (store) store.rem(t);\n for (let i = 0; i < n; ++i) {\n a[i].rem(a[i].get(t), t);\n }\n };\n cell.set = function (t) {\n let i, n;\n\n // consolidate stored values\n if (store) store.values();\n\n // update tuple properties\n for (i = 0, n = counts.length; i < n; ++i) t[counts[i]] = cell.num;\n if (!countOnly) for (i = 0, n = a.length; i < n; ++i) a[i].set(t);\n };\n cell.init = function () {\n cell.num = 0;\n if (store) store.reset();\n for (let i = 0; i < n; ++i) a[i].init();\n };\n return cell;\n}\n\n/**\n * Perform window calculations and write results to the input stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator function for sorting tuples within a window.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors by which to partition tuples into separate windows.\n * @param {Array<string>} params.ops - An array of strings indicating window operations to perform.\n * @param {Array<function(object): *>} [params.fields] - An array of accessors\n * for data fields to use as inputs to window operations.\n * @param {Array<*>} [params.params] - An array of parameter values for window operations.\n * @param {Array<object>} [params.aggregate_params] - An optional array of parameter values for aggregation operations.\n * @param {Array<string>} [params.as] - An array of output field names for window operations.\n * @param {Array<number>} [params.frame] - Window frame definition as two-element array.\n * @param {boolean} [params.ignorePeers=false] - If true, base window frame boundaries on row\n * number alone, ignoring peers with identical sort values. If false (default),\n * the window boundaries will be adjusted to include peer values.\n */\nfunction Window(params) {\n Transform.call(this, {}, params);\n this._mlen = 0;\n this._mods = [];\n}\nWindow.Definition = {\n 'type': 'Window',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'ops',\n 'type': 'enum',\n 'array': true,\n 'values': ValidWindowOps.concat(ValidAggregateOps)\n }, {\n 'name': 'params',\n 'type': 'number',\n 'null': true,\n 'array': true\n }, {\n 'name': 'aggregate_params',\n 'type': 'field',\n 'null': true,\n 'array': true,\n 'default': [null]\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'null': true,\n 'array': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'array': true\n }, {\n 'name': 'frame',\n 'type': 'number',\n 'null': true,\n 'array': true,\n 'length': 2,\n 'default': [null, 0]\n }, {\n 'name': 'ignorePeers',\n 'type': 'boolean',\n 'default': false\n }]\n};\ninherits(Window, Transform, {\n transform(_, pulse) {\n this.stamp = pulse.stamp;\n const mod = _.modified(),\n cmp = stableCompare(_.sort),\n key = groupkey(_.groupby),\n group = t => this.group(key(t));\n\n // initialize window state\n let state = this.state;\n if (!state || mod) {\n state = this.state = new WindowState(_);\n }\n\n // partition input tuples\n if (mod || pulse.modified(state.inputs)) {\n this.value = {};\n pulse.visit(pulse.SOURCE, t => group(t).add(t));\n } else {\n pulse.visit(pulse.REM, t => group(t).remove(t));\n pulse.visit(pulse.ADD, t => group(t).add(t));\n }\n\n // perform window calculations for each modified partition\n for (let i = 0, n = this._mlen; i < n; ++i) {\n processPartition(this._mods[i], state, cmp, _);\n }\n this._mlen = 0;\n this._mods = [];\n\n // TODO don't reflow everything?\n return pulse.reflow(mod).modifies(state.outputs);\n },\n group(key) {\n let group = this.value[key];\n if (!group) {\n group = this.value[key] = SortedList(tupleid);\n group.stamp = -1;\n }\n if (group.stamp < this.stamp) {\n group.stamp = this.stamp;\n this._mods[this._mlen++] = group;\n }\n return group;\n }\n});\nfunction processPartition(list, state, cmp, _) {\n const sort = _.sort,\n range = sort && !_.ignorePeers,\n frame = _.frame || [null, 0],\n data = list.data(cmp),\n // use cmp for stable sort\n n = data.length,\n b = range ? bisector(sort) : null,\n w = {\n i0: 0,\n i1: 0,\n p0: 0,\n p1: 0,\n index: 0,\n data: data,\n compare: sort || constant(-1)\n };\n state.init();\n for (let i = 0; i < n; ++i) {\n setWindow(w, frame, i, n);\n if (range) adjustRange(w, b);\n state.update(w, data[i]);\n }\n}\nfunction setWindow(w, f, i, n) {\n w.p0 = w.i0;\n w.p1 = w.i1;\n w.i0 = f[0] == null ? 0 : Math.max(0, i - Math.abs(f[0]));\n w.i1 = f[1] == null ? n : Math.min(n, i + Math.abs(f[1]) + 1);\n w.index = i;\n}\n\n// if frame type is 'range', adjust window for peer values\nfunction adjustRange(w, bisect) {\n const r0 = w.i0,\n r1 = w.i1 - 1,\n c = w.compare,\n d = w.data,\n n = d.length - 1;\n if (r0 > 0 && !c(d[r0], d[r0 - 1])) w.i0 = bisect.left(d, d[r0]);\n if (r1 < n && !c(d[r1], d[r1 + 1])) w.i1 = bisect.right(d, d[r1]);\n}\n\nexport { Aggregate as aggregate, Bin as bin, Collect as collect, Compare as compare, CountPattern as countpattern, Cross as cross, Density as density, DotBin as dotbin, Expression as expression, Extent as extent, Facet as facet, Field as field, Filter as filter, Flatten as flatten, Fold as fold, Formula as formula, Generate as generate, Impute as impute, JoinAggregate as joinaggregate, KDE as kde, Key as key, Load as load, Lookup as lookup, MultiExtent as multiextent, MultiValues as multivalues, Params as params, Pivot as pivot, PreFacet as prefacet, Project as project, Proxy as proxy, Quantile as quantile, Relay as relay, Sample as sample, Sequence as sequence, Sieve as sieve, Subflow as subflow, TimeUnit as timeunit, TupleIndex as tupleindex, Values as values, Window as window };\n", "import { ascending, quantileSorted, deviation, quantile, median } from 'd3-array';\n\nfunction* numbers (values, valueof) {\n if (valueof == null) {\n for (let value of values) {\n if (value != null && value !== '' && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n value = valueof(value, ++index, values);\n if (value != null && value !== '' && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n\nfunction quantiles (array, p, f) {\n const values = Float64Array.from(numbers(array, f));\n\n // don't depend on return value from typed array sort call\n // protects against undefined sort results in Safari (vega/vega-lite#4964)\n values.sort(ascending);\n return p.map(_ => quantileSorted(values, _));\n}\n\nfunction quartiles (array, f) {\n return quantiles(array, [0.25, 0.50, 0.75], f);\n}\n\n// Scott, D. W. (1992) Multivariate Density Estimation:\n// Theory, Practice, and Visualization. Wiley.\nfunction estimateBandwidth (array, f) {\n const n = array.length,\n d = deviation(array, f),\n q = quartiles(array, f),\n h = (q[2] - q[0]) / 1.34,\n v = Math.min(d, h) || d || Math.abs(q[0]) || 1;\n return 1.06 * v * Math.pow(n, -0.2);\n}\n\nfunction bin (_) {\n // determine range\n const maxb = _.maxbins || 20,\n base = _.base || 10,\n logb = Math.log(base),\n div = _.divide || [5, 2];\n let min = _.extent[0],\n max = _.extent[1],\n step,\n level,\n minstep,\n v,\n i,\n n;\n const span = _.span || max - min || Math.abs(min) || 1;\n if (_.step) {\n // if step size is explicitly given, use that\n step = _.step;\n } else if (_.steps) {\n // if provided, limit choice to acceptable step sizes\n v = span / maxb;\n for (i = 0, n = _.steps.length; i < n && _.steps[i] < v; ++i);\n step = _.steps[Math.max(0, i - 1)];\n } else {\n // else use span to determine step size\n level = Math.ceil(Math.log(maxb) / logb);\n minstep = _.minstep || 0;\n step = Math.max(minstep, Math.pow(base, Math.round(Math.log(span) / logb) - level));\n\n // increase step size if too many bins\n while (Math.ceil(span / step) > maxb) {\n step *= base;\n }\n\n // decrease step size if allowed\n for (i = 0, n = div.length; i < n; ++i) {\n v = step / div[i];\n if (v >= minstep && span / v <= maxb) step = v;\n }\n }\n\n // update precision, min and max\n v = Math.log(step);\n const precision = v >= 0 ? 0 : ~~(-v / logb) + 1,\n eps = Math.pow(base, -precision - 1);\n if (_.nice || _.nice === undefined) {\n v = Math.floor(min / step + eps) * step;\n min = min < v ? v - step : v;\n max = Math.ceil(max / step) * step;\n }\n return {\n start: min,\n stop: max === min ? min + step : max,\n step: step\n };\n}\n\nvar random = Math.random;\nfunction setRandom(r) {\n random = r;\n}\n\nfunction bootstrapCI (array, samples, alpha, f) {\n if (!array.length) return [undefined, undefined];\n const values = Float64Array.from(numbers(array, f)),\n n = values.length,\n m = samples;\n let a, i, j, mu;\n for (j = 0, mu = Array(m); j < m; ++j) {\n for (a = 0, i = 0; i < n; ++i) {\n a += values[~~(random() * n)];\n }\n mu[j] = a / n;\n }\n mu.sort(ascending);\n return [quantile(mu, alpha / 2), quantile(mu, 1 - alpha / 2)];\n}\n\n// Dot density binning for dot plot construction.\n// Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n// https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\nfunction dotbin (array, step, smooth, f) {\n f = f || (_ => _);\n const n = array.length,\n v = new Float64Array(n);\n let i = 0,\n j = 1,\n a = f(array[0]),\n b = a,\n w = a + step,\n x;\n for (; j < n; ++j) {\n x = f(array[j]);\n if (x >= w) {\n b = (a + b) / 2;\n for (; i < j; ++i) v[i] = b;\n w = x + step;\n a = x;\n }\n b = x;\n }\n b = (a + b) / 2;\n for (; i < j; ++i) v[i] = b;\n return smooth ? smoothing(v, step + step / 4) : v;\n}\n\n// perform smoothing to reduce variance\n// swap points between \"adjacent\" stacks\n// Wilkinson defines adjacent as within step/4 units\nfunction smoothing(v, thresh) {\n const n = v.length;\n let a = 0,\n b = 1,\n c,\n d;\n\n // get left stack\n while (v[a] === v[b]) ++b;\n while (b < n) {\n // get right stack\n c = b + 1;\n while (v[b] === v[c]) ++c;\n\n // are stacks adjacent?\n // if so, compare sizes and swap as needed\n if (v[b] - v[b - 1] < thresh) {\n d = b + (a + c - b - b >> 1);\n while (d < b) v[d++] = v[b];\n while (d > b) v[d--] = v[a];\n }\n\n // update left stack indices\n a = b;\n b = c;\n }\n return v;\n}\n\nfunction lcg (seed) {\n // Random numbers using a Linear Congruential Generator with seed value\n // Uses glibc values from https://en.wikipedia.org/wiki/Linear_congruential_generator\n return function () {\n seed = (1103515245 * seed + 12345) % 2147483647;\n return seed / 2147483647;\n };\n}\n\nfunction integer (min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n let a, b, d;\n const dist = {\n min(_) {\n if (arguments.length) {\n a = _ || 0;\n d = b - a;\n return dist;\n } else {\n return a;\n }\n },\n max(_) {\n if (arguments.length) {\n b = _ || 0;\n d = b - a;\n return dist;\n } else {\n return b;\n }\n },\n sample() {\n return a + Math.floor(d * random());\n },\n pdf(x) {\n return x === Math.floor(x) && x >= a && x < b ? 1 / d : 0;\n },\n cdf(x) {\n const v = Math.floor(x);\n return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n },\n icdf(p) {\n return p >= 0 && p <= 1 ? a - 1 + Math.floor(p * d) : NaN;\n }\n };\n return dist.min(min).max(max);\n}\n\nconst SQRT2PI = Math.sqrt(2 * Math.PI);\nconst SQRT2 = Math.SQRT2;\n\nlet nextSample = NaN;\nfunction sampleNormal(mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n let x = 0,\n y = 0,\n rds,\n c;\n if (nextSample === nextSample) {\n x = nextSample;\n nextSample = NaN;\n } else {\n do {\n x = random() * 2 - 1;\n y = random() * 2 - 1;\n rds = x * x + y * y;\n } while (rds === 0 || rds > 1);\n c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform\n x *= c;\n nextSample = y * c;\n }\n return mean + x * stdev;\n}\nfunction densityNormal(value, mean, stdev) {\n stdev = stdev == null ? 1 : stdev;\n const z = (value - (mean || 0)) / stdev;\n return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI);\n}\n\n// Approximation from West (2009)\n// Better Approximations to Cumulative Normal Functions\nfunction cumulativeNormal(value, mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n const z = (value - mean) / stdev,\n Z = Math.abs(z);\n let cd;\n if (Z > 37) {\n cd = 0;\n } else {\n const exp = Math.exp(-Z * Z / 2);\n let sum;\n if (Z < 7.07106781186547) {\n sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n sum = sum * Z + 6.37396220353165;\n sum = sum * Z + 33.912866078383;\n sum = sum * Z + 112.079291497871;\n sum = sum * Z + 221.213596169931;\n sum = sum * Z + 220.206867912376;\n cd = exp * sum;\n sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n sum = sum * Z + 16.064177579207;\n sum = sum * Z + 86.7807322029461;\n sum = sum * Z + 296.564248779674;\n sum = sum * Z + 637.333633378831;\n sum = sum * Z + 793.826512519948;\n sum = sum * Z + 440.413735824752;\n cd = cd / sum;\n } else {\n sum = Z + 0.65;\n sum = Z + 4 / sum;\n sum = Z + 3 / sum;\n sum = Z + 2 / sum;\n sum = Z + 1 / sum;\n cd = exp / sum / 2.506628274631;\n }\n }\n return z > 0 ? 1 - cd : cd;\n}\n\n// Approximation of Probit function using inverse error function.\nfunction quantileNormal(p, mean, stdev) {\n if (p < 0 || p > 1) return NaN;\n return (mean || 0) + (stdev == null ? 1 : stdev) * SQRT2 * erfinv(2 * p - 1);\n}\n\n// Approximate inverse error function. Implementation from \"Approximating\n// the erfinv function\" by Mike Giles, GPU Computing Gems, volume 2, 2010.\n// Ported from Apache Commons Math, http://www.apache.org/licenses/LICENSE-2.0\nfunction erfinv(x) {\n // beware that the logarithm argument must be\n // commputed as (1.0 - x) * (1.0 + x),\n // it must NOT be simplified as 1.0 - x * x as this\n // would induce rounding errors near the boundaries +/-1\n let w = -Math.log((1 - x) * (1 + x)),\n p;\n if (w < 6.25) {\n w -= 3.125;\n p = -3.6444120640178196996e-21;\n p = -1.685059138182016589e-19 + p * w;\n p = 1.2858480715256400167e-18 + p * w;\n p = 1.115787767802518096e-17 + p * w;\n p = -1.333171662854620906e-16 + p * w;\n p = 2.0972767875968561637e-17 + p * w;\n p = 6.6376381343583238325e-15 + p * w;\n p = -4.0545662729752068639e-14 + p * w;\n p = -8.1519341976054721522e-14 + p * w;\n p = 2.6335093153082322977e-12 + p * w;\n p = -1.2975133253453532498e-11 + p * w;\n p = -5.4154120542946279317e-11 + p * w;\n p = 1.051212273321532285e-09 + p * w;\n p = -4.1126339803469836976e-09 + p * w;\n p = -2.9070369957882005086e-08 + p * w;\n p = 4.2347877827932403518e-07 + p * w;\n p = -1.3654692000834678645e-06 + p * w;\n p = -1.3882523362786468719e-05 + p * w;\n p = 0.0001867342080340571352 + p * w;\n p = -0.00074070253416626697512 + p * w;\n p = -0.0060336708714301490533 + p * w;\n p = 0.24015818242558961693 + p * w;\n p = 1.6536545626831027356 + p * w;\n } else if (w < 16.0) {\n w = Math.sqrt(w) - 3.25;\n p = 2.2137376921775787049e-09;\n p = 9.0756561938885390979e-08 + p * w;\n p = -2.7517406297064545428e-07 + p * w;\n p = 1.8239629214389227755e-08 + p * w;\n p = 1.5027403968909827627e-06 + p * w;\n p = -4.013867526981545969e-06 + p * w;\n p = 2.9234449089955446044e-06 + p * w;\n p = 1.2475304481671778723e-05 + p * w;\n p = -4.7318229009055733981e-05 + p * w;\n p = 6.8284851459573175448e-05 + p * w;\n p = 2.4031110387097893999e-05 + p * w;\n p = -0.0003550375203628474796 + p * w;\n p = 0.00095328937973738049703 + p * w;\n p = -0.0016882755560235047313 + p * w;\n p = 0.0024914420961078508066 + p * w;\n p = -0.0037512085075692412107 + p * w;\n p = 0.005370914553590063617 + p * w;\n p = 1.0052589676941592334 + p * w;\n p = 3.0838856104922207635 + p * w;\n } else if (Number.isFinite(w)) {\n w = Math.sqrt(w) - 5.0;\n p = -2.7109920616438573243e-11;\n p = -2.5556418169965252055e-10 + p * w;\n p = 1.5076572693500548083e-09 + p * w;\n p = -3.7894654401267369937e-09 + p * w;\n p = 7.6157012080783393804e-09 + p * w;\n p = -1.4960026627149240478e-08 + p * w;\n p = 2.9147953450901080826e-08 + p * w;\n p = -6.7711997758452339498e-08 + p * w;\n p = 2.2900482228026654717e-07 + p * w;\n p = -9.9298272942317002539e-07 + p * w;\n p = 4.5260625972231537039e-06 + p * w;\n p = -1.9681778105531670567e-05 + p * w;\n p = 7.5995277030017761139e-05 + p * w;\n p = -0.00021503011930044477347 + p * w;\n p = -0.00013871931833623122026 + p * w;\n p = 1.0103004648645343977 + p * w;\n p = 4.8499064014085844221 + p * w;\n } else {\n p = Infinity;\n }\n return p * x;\n}\nfunction gaussian (mean, stdev) {\n let mu, sigma;\n const dist = {\n mean(_) {\n if (arguments.length) {\n mu = _ || 0;\n return dist;\n } else {\n return mu;\n }\n },\n stdev(_) {\n if (arguments.length) {\n sigma = _ == null ? 1 : _;\n return dist;\n } else {\n return sigma;\n }\n },\n sample: () => sampleNormal(mu, sigma),\n pdf: value => densityNormal(value, mu, sigma),\n cdf: value => cumulativeNormal(value, mu, sigma),\n icdf: p => quantileNormal(p, mu, sigma)\n };\n return dist.mean(mean).stdev(stdev);\n}\n\nfunction kde (support, bandwidth) {\n const kernel = gaussian();\n let n = 0;\n const dist = {\n data(_) {\n if (arguments.length) {\n support = _;\n n = _ ? _.length : 0;\n return dist.bandwidth(bandwidth);\n } else {\n return support;\n }\n },\n bandwidth(_) {\n if (!arguments.length) return bandwidth;\n bandwidth = _;\n if (!bandwidth && support) bandwidth = estimateBandwidth(support);\n return dist;\n },\n sample() {\n return support[~~(random() * n)] + bandwidth * kernel.sample();\n },\n pdf(x) {\n let y = 0,\n i = 0;\n for (; i < n; ++i) {\n y += kernel.pdf((x - support[i]) / bandwidth);\n }\n return y / bandwidth / n;\n },\n cdf(x) {\n let y = 0,\n i = 0;\n for (; i < n; ++i) {\n y += kernel.cdf((x - support[i]) / bandwidth);\n }\n return y / n;\n },\n icdf() {\n throw Error('KDE icdf not supported.');\n }\n };\n return dist.data(support);\n}\n\nfunction sampleLogNormal(mean, stdev) {\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n return Math.exp(mean + sampleNormal() * stdev);\n}\nfunction densityLogNormal(value, mean, stdev) {\n if (value <= 0) return 0;\n mean = mean || 0;\n stdev = stdev == null ? 1 : stdev;\n const z = (Math.log(value) - mean) / stdev;\n return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI * value);\n}\nfunction cumulativeLogNormal(value, mean, stdev) {\n return cumulativeNormal(Math.log(value), mean, stdev);\n}\nfunction quantileLogNormal(p, mean, stdev) {\n return Math.exp(quantileNormal(p, mean, stdev));\n}\nfunction lognormal (mean, stdev) {\n let mu, sigma;\n const dist = {\n mean(_) {\n if (arguments.length) {\n mu = _ || 0;\n return dist;\n } else {\n return mu;\n }\n },\n stdev(_) {\n if (arguments.length) {\n sigma = _ == null ? 1 : _;\n return dist;\n } else {\n return sigma;\n }\n },\n sample: () => sampleLogNormal(mu, sigma),\n pdf: value => densityLogNormal(value, mu, sigma),\n cdf: value => cumulativeLogNormal(value, mu, sigma),\n icdf: p => quantileLogNormal(p, mu, sigma)\n };\n return dist.mean(mean).stdev(stdev);\n}\n\nfunction mixture (dists, weights) {\n let m = 0,\n w;\n function normalize(x) {\n const w = [];\n let sum = 0,\n i;\n for (i = 0; i < m; ++i) {\n sum += w[i] = x[i] == null ? 1 : +x[i];\n }\n for (i = 0; i < m; ++i) {\n w[i] /= sum;\n }\n return w;\n }\n const dist = {\n weights(_) {\n if (arguments.length) {\n w = normalize(weights = _ || []);\n return dist;\n }\n return weights;\n },\n distributions(_) {\n if (arguments.length) {\n if (_) {\n m = _.length;\n dists = _;\n } else {\n m = 0;\n dists = [];\n }\n return dist.weights(weights);\n }\n return dists;\n },\n sample() {\n const r = random();\n let d = dists[m - 1],\n v = w[0],\n i = 0;\n\n // first select distribution\n for (; i < m - 1; v += w[++i]) {\n if (r < v) {\n d = dists[i];\n break;\n }\n }\n // then sample from it\n return d.sample();\n },\n pdf(x) {\n let p = 0,\n i = 0;\n for (; i < m; ++i) {\n p += w[i] * dists[i].pdf(x);\n }\n return p;\n },\n cdf(x) {\n let p = 0,\n i = 0;\n for (; i < m; ++i) {\n p += w[i] * dists[i].cdf(x);\n }\n return p;\n },\n icdf() {\n throw Error('Mixture icdf not supported.');\n }\n };\n return dist.distributions(dists).weights(weights);\n}\n\nfunction sampleUniform(min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return min + (max - min) * random();\n}\nfunction densityUniform(value, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return value >= min && value <= max ? 1 / (max - min) : 0;\n}\nfunction cumulativeUniform(value, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return value < min ? 0 : value > max ? 1 : (value - min) / (max - min);\n}\nfunction quantileUniform(p, min, max) {\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return p >= 0 && p <= 1 ? min + p * (max - min) : NaN;\n}\nfunction uniform (min, max) {\n let a, b;\n const dist = {\n min(_) {\n if (arguments.length) {\n a = _ || 0;\n return dist;\n } else {\n return a;\n }\n },\n max(_) {\n if (arguments.length) {\n b = _ == null ? 1 : _;\n return dist;\n } else {\n return b;\n }\n },\n sample: () => sampleUniform(a, b),\n pdf: value => densityUniform(value, a, b),\n cdf: value => cumulativeUniform(value, a, b),\n icdf: p => quantileUniform(p, a, b)\n };\n if (max == null) {\n max = min == null ? 1 : min;\n min = 0;\n }\n return dist.min(min).max(max);\n}\n\nfunction constant (data, x, y) {\n let mean = 0,\n n = 0;\n for (const d of data) {\n const val = y(d);\n if (x(d) == null || val == null || isNaN(val)) continue;\n mean += (val - mean) / ++n;\n }\n return {\n coef: [mean],\n predict: () => mean,\n rSquared: 0\n };\n}\n\n// Ordinary Least Squares\nfunction ols (uX, uY, uXY, uX2) {\n const delta = uX2 - uX * uX,\n slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n intercept = uY - slope * uX;\n return [intercept, slope];\n}\n\nfunction points(data, x, y, sort) {\n data = data.filter(d => {\n let u = x(d),\n v = y(d);\n return u != null && (u = +u) >= u && v != null && (v = +v) >= v;\n });\n if (sort) {\n data.sort((a, b) => x(a) - x(b));\n }\n const n = data.length,\n X = new Float64Array(n),\n Y = new Float64Array(n);\n\n // extract values, calculate means\n let i = 0,\n ux = 0,\n uy = 0,\n xv,\n yv,\n d;\n for (d of data) {\n X[i] = xv = +x(d);\n Y[i] = yv = +y(d);\n ++i;\n ux += (xv - ux) / i;\n uy += (yv - uy) / i;\n }\n\n // mean center the data\n for (i = 0; i < n; ++i) {\n X[i] -= ux;\n Y[i] -= uy;\n }\n return [X, Y, ux, uy];\n}\nfunction visitPoints(data, x, y, callback) {\n let i = -1,\n u,\n v;\n for (const d of data) {\n u = x(d);\n v = y(d);\n if (u != null && (u = +u) >= u && v != null && (v = +v) >= v) {\n callback(u, v, ++i);\n }\n }\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction rSquared (data, x, y, uY, predict) {\n let SSE = 0,\n SST = 0;\n visitPoints(data, x, y, (dx, dy) => {\n const sse = dy - predict(dx),\n sst = dy - uY;\n SSE += sse * sse;\n SST += sst * sst;\n });\n return 1 - SSE / SST;\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction linear (data, x, y) {\n let X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n n = 0;\n visitPoints(data, x, y, (dx, dy) => {\n ++n;\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n });\n const coef = ols(X, Y, XY, X2),\n predict = x => coef[0] + coef[1] * x;\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction log (data, x, y) {\n let X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n n = 0;\n visitPoints(data, x, y, (dx, dy) => {\n ++n;\n dx = Math.log(dx);\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n });\n const coef = ols(X, Y, XY, X2),\n predict = x => coef[0] + coef[1] * Math.log(x);\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, Y, predict)\n };\n}\n\nfunction exp (data, x, y) {\n // eslint-disable-next-line no-unused-vars\n const [xv, yv, ux, uy] = points(data, x, y);\n let YL = 0,\n XY = 0,\n XYL = 0,\n X2Y = 0,\n n = 0,\n dx,\n ly,\n xy;\n visitPoints(data, x, y, (_, dy) => {\n dx = xv[n++];\n ly = Math.log(dy);\n xy = dx * dy;\n YL += (dy * ly - YL) / n;\n XY += (xy - XY) / n;\n XYL += (xy * ly - XYL) / n;\n X2Y += (dx * xy - X2Y) / n;\n });\n const [c0, c1] = ols(XY / uy, YL / uy, XYL / uy, X2Y / uy),\n predict = x => Math.exp(c0 + c1 * (x - ux));\n return {\n coef: [Math.exp(c0 - c1 * ux), c1],\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction pow (data, x, y) {\n let X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n YS = 0,\n n = 0;\n visitPoints(data, x, y, (dx, dy) => {\n const lx = Math.log(dx),\n ly = Math.log(dy);\n ++n;\n X += (lx - X) / n;\n Y += (ly - Y) / n;\n XY += (lx * ly - XY) / n;\n X2 += (lx * lx - X2) / n;\n YS += (dy - YS) / n;\n });\n const coef = ols(X, Y, XY, X2),\n predict = x => coef[0] * Math.pow(x, coef[1]);\n coef[0] = Math.exp(coef[0]);\n return {\n coef: coef,\n predict: predict,\n rSquared: rSquared(data, x, y, YS, predict)\n };\n}\n\nfunction quad (data, x, y) {\n const [xv, yv, ux, uy] = points(data, x, y),\n n = xv.length;\n let X2 = 0,\n X3 = 0,\n X4 = 0,\n XY = 0,\n X2Y = 0,\n i,\n dx,\n dy,\n x2;\n for (i = 0; i < n;) {\n dx = xv[i];\n dy = yv[i++];\n x2 = dx * dx;\n X2 += (x2 - X2) / i;\n X3 += (x2 * dx - X3) / i;\n X4 += (x2 * x2 - X4) / i;\n XY += (dx * dy - XY) / i;\n X2Y += (x2 * dy - X2Y) / i;\n }\n const X2X2 = X4 - X2 * X2,\n d = X2 * X2X2 - X3 * X3,\n a = (X2Y * X2 - XY * X3) / d,\n b = (XY * X2X2 - X2Y * X3) / d,\n c = -a * X2,\n predict = x => {\n x = x - ux;\n return a * x * x + b * x + c + uy;\n };\n\n // transform coefficients back from mean-centered space\n return {\n coef: [c - b * ux + a * ux * ux + uy, b - 2 * a * ux, a],\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n// ... which was adapted from regression-js by Tom Alexander\n// Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.js#L246\n// License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\nfunction poly (data, x, y, order) {\n // use more efficient methods for lower orders\n if (order === 0) return constant(data, x, y);\n if (order === 1) return linear(data, x, y);\n if (order === 2) return quad(data, x, y);\n const [xv, yv, ux, uy] = points(data, x, y),\n n = xv.length,\n lhs = [],\n rhs = [],\n k = order + 1;\n let i, j, l, v, c;\n for (i = 0; i < k; ++i) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i) * yv[l];\n }\n lhs.push(v);\n c = new Float64Array(k);\n for (j = 0; j < k; ++j) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i + j);\n }\n c[j] = v;\n }\n rhs.push(c);\n }\n rhs.push(lhs);\n const coef = gaussianElimination(rhs),\n predict = x => {\n x -= ux;\n let y = uy + coef[0] + coef[1] * x + coef[2] * x * x;\n for (i = 3; i < k; ++i) y += coef[i] * Math.pow(x, i);\n return y;\n };\n return {\n coef: uncenter(k, coef, -ux, uy),\n predict: predict,\n rSquared: rSquared(data, x, y, uy, predict)\n };\n}\nfunction uncenter(k, a, x, y) {\n const z = Array(k);\n let i, j, v, c;\n\n // initialize to zero\n for (i = 0; i < k; ++i) z[i] = 0;\n\n // polynomial expansion\n for (i = k - 1; i >= 0; --i) {\n v = a[i];\n c = 1;\n z[i] += v;\n for (j = 1; j <= i; ++j) {\n c *= (i + 1 - j) / j; // binomial coefficent\n z[i - j] += v * Math.pow(x, j) * c;\n }\n }\n\n // bias term\n z[0] += y;\n return z;\n}\n\n// Given an array for a two-dimensional matrix and the polynomial order,\n// solve A * x = b using Gaussian elimination.\nfunction gaussianElimination(matrix) {\n const n = matrix.length - 1,\n coef = [];\n let i, j, k, r, t;\n for (i = 0; i < n; ++i) {\n r = i; // max row\n for (j = i + 1; j < n; ++j) {\n if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n r = j;\n }\n }\n for (k = i; k < n + 1; ++k) {\n t = matrix[k][i];\n matrix[k][i] = matrix[k][r];\n matrix[k][r] = t;\n }\n for (j = i + 1; j < n; ++j) {\n for (k = n; k >= i; k--) {\n matrix[k][j] -= matrix[k][i] * matrix[i][j] / matrix[i][i];\n }\n }\n }\n for (j = n - 1; j >= 0; --j) {\n t = 0;\n for (k = j + 1; k < n; ++k) {\n t += matrix[k][j] * coef[k];\n }\n coef[j] = (matrix[n][j] - t) / matrix[j][j];\n }\n return coef;\n}\n\nconst maxiters = 2,\n epsilon = 1e-12;\n\n// Adapted from science.js by Jason Davies\n// Source: https://github.com/jasondavies/science.js/blob/master/src/stats/loess.js\n// License: https://github.com/jasondavies/science.js/blob/master/LICENSE\nfunction loess (data, x, y, bandwidth) {\n const [xv, yv, ux, uy] = points(data, x, y, true),\n n = xv.length,\n bw = Math.max(2, ~~(bandwidth * n)),\n // # nearest neighbors\n yhat = new Float64Array(n),\n residuals = new Float64Array(n),\n robustWeights = new Float64Array(n).fill(1);\n for (let iter = -1; ++iter <= maxiters;) {\n const interval = [0, bw - 1];\n for (let i = 0; i < n; ++i) {\n const dx = xv[i],\n i0 = interval[0],\n i1 = interval[1],\n edge = dx - xv[i0] > xv[i1] - dx ? i0 : i1;\n let W = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0;\n const denom = 1 / Math.abs(xv[edge] - dx || 1); // avoid singularity!\n\n for (let k = i0; k <= i1; ++k) {\n const xk = xv[k],\n yk = yv[k],\n w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n xkw = xk * w;\n W += w;\n X += xkw;\n Y += yk * w;\n XY += yk * xkw;\n X2 += xk * xkw;\n }\n\n // linear regression fit\n const [a, b] = ols(X / W, Y / W, XY / W, X2 / W);\n yhat[i] = a + b * dx;\n residuals[i] = Math.abs(yv[i] - yhat[i]);\n updateInterval(xv, i + 1, interval);\n }\n if (iter === maxiters) {\n break;\n }\n const medianResidual = median(residuals);\n if (Math.abs(medianResidual) < epsilon) break;\n for (let i = 0, arg, w; i < n; ++i) {\n arg = residuals[i] / (6 * medianResidual);\n // default to epsilon (rather than zero) for large deviations\n // keeping weights tiny but non-zero prevents singularites\n robustWeights[i] = arg >= 1 ? epsilon : (w = 1 - arg * arg) * w;\n }\n }\n return output(xv, yhat, ux, uy);\n}\n\n// weighting kernel for local regression\nfunction tricube(x) {\n return (x = 1 - x * x * x) * x * x;\n}\n\n// advance sliding window interval of nearest neighbors\nfunction updateInterval(xv, i, interval) {\n const val = xv[i];\n let left = interval[0],\n right = interval[1] + 1;\n if (right >= xv.length) return;\n\n // step right if distance to new right edge is <= distance to old left edge\n // step when distance is equal to ensure movement over duplicate x values\n while (i > left && xv[right] - val <= val - xv[left]) {\n interval[0] = ++left;\n interval[1] = right;\n ++right;\n }\n}\n\n// generate smoothed output points\n// average points with repeated x values\nfunction output(xv, yhat, ux, uy) {\n const n = xv.length,\n out = [];\n let i = 0,\n cnt = 0,\n prev = [],\n v;\n for (; i < n; ++i) {\n v = xv[i] + ux;\n if (prev[0] === v) {\n // average output values via online update\n prev[1] += (yhat[i] - prev[1]) / ++cnt;\n } else {\n // add new output point\n cnt = 0;\n prev[1] += uy;\n prev = [v, yhat[i]];\n out.push(prev);\n }\n }\n prev[1] += uy;\n return out;\n}\n\n// subdivide up to accuracy of 0.5 degrees\nconst MIN_RADIANS = 0.5 * Math.PI / 180;\n\n// Adaptively sample an interpolated function over a domain extent\nfunction sampleCurve (f, extent, minSteps, maxSteps) {\n minSteps = minSteps || 25;\n maxSteps = Math.max(minSteps, maxSteps || 200);\n const point = x => [x, f(x)],\n minX = extent[0],\n maxX = extent[1],\n span = maxX - minX,\n stop = span / maxSteps,\n prev = [point(minX)],\n next = [];\n if (minSteps === maxSteps) {\n // no adaptation, sample uniform grid directly and return\n for (let i = 1; i < maxSteps; ++i) {\n prev.push(point(minX + i / minSteps * span));\n }\n prev.push(point(maxX));\n return prev;\n } else {\n // sample minimum points on uniform grid\n // then move on to perform adaptive refinement\n next.push(point(maxX));\n for (let i = minSteps; --i > 0;) {\n next.push(point(minX + i / minSteps * span));\n }\n }\n let p0 = prev[0];\n let p1 = next[next.length - 1];\n const sx = 1 / span;\n const sy = scaleY(p0[1], next);\n while (p1) {\n // midpoint for potential curve subdivision\n const pm = point((p0[0] + p1[0]) / 2);\n const dx = pm[0] - p0[0] >= stop;\n if (dx && angleDelta(p0, pm, p1, sx, sy) > MIN_RADIANS) {\n // maximum resolution has not yet been met, and\n // subdivision midpoint is sufficiently different from endpoint\n // save subdivision, push midpoint onto the visitation stack\n next.push(pm);\n } else {\n // subdivision midpoint sufficiently similar to endpoint\n // skip subdivision, store endpoint, move to next point on the stack\n p0 = p1;\n prev.push(p1);\n next.pop();\n }\n p1 = next[next.length - 1];\n }\n return prev;\n}\nfunction scaleY(init, points) {\n let ymin = init;\n let ymax = init;\n const n = points.length;\n for (let i = 0; i < n; ++i) {\n const y = points[i][1];\n if (y < ymin) ymin = y;\n if (y > ymax) ymax = y;\n }\n return 1 / (ymax - ymin);\n}\nfunction angleDelta(p, q, r, sx, sy) {\n const a0 = Math.atan2(sy * (r[1] - p[1]), sx * (r[0] - p[0])),\n a1 = Math.atan2(sy * (q[1] - p[1]), sx * (q[0] - p[0]));\n return Math.abs(a0 - a1);\n}\n\nexport { estimateBandwidth as bandwidthNRD, bin, bootstrapCI, cumulativeLogNormal, cumulativeNormal, cumulativeUniform, densityLogNormal, densityNormal, densityUniform, dotbin, quantileLogNormal, quantileNormal, quantileUniform, quantiles, quartiles, random, integer as randomInteger, kde as randomKDE, lcg as randomLCG, lognormal as randomLogNormal, mixture as randomMixture, gaussian as randomNormal, uniform as randomUniform, constant as regressionConstant, exp as regressionExp, linear as regressionLinear, loess as regressionLoess, log as regressionLog, poly as regressionPoly, pow as regressionPow, quad as regressionQuad, sampleCurve, sampleLogNormal, sampleNormal, sampleUniform, setRandom };\n", "import { Transform } from 'vega-dataflow';\nimport { Marks, boundClip, GroupItem, Item, Bounds, multiLineOffset, boundStroke } from 'vega-scenegraph';\nimport { inherits, peek, isObject } from 'vega-util';\n\nconst Top = 'top';\nconst Left = 'left';\nconst Right = 'right';\nconst Bottom = 'bottom';\nconst TopLeft = 'top-left';\nconst TopRight = 'top-right';\nconst BottomLeft = 'bottom-left';\nconst BottomRight = 'bottom-right';\nconst Start = 'start';\nconst Middle = 'middle';\nconst End = 'end';\nconst X = 'x';\nconst Y = 'y';\nconst Group = 'group';\nconst AxisRole = 'axis';\nconst TitleRole = 'title';\nconst FrameRole = 'frame';\nconst ScopeRole = 'scope';\nconst LegendRole = 'legend';\nconst RowHeader = 'row-header';\nconst RowFooter = 'row-footer';\nconst RowTitle = 'row-title';\nconst ColHeader = 'column-header';\nconst ColFooter = 'column-footer';\nconst ColTitle = 'column-title';\nconst Padding = 'padding';\nconst Symbols = 'symbol';\nconst Fit = 'fit';\nconst FitX = 'fit-x';\nconst FitY = 'fit-y';\nconst Pad = 'pad';\nconst None = 'none';\nconst All = 'all';\nconst Each = 'each';\nconst Flush = 'flush';\nconst Column = 'column';\nconst Row = 'row';\n\n/**\n * Calculate bounding boxes for scenegraph items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - The scenegraph mark instance to bound.\n */\nfunction Bound(params) {\n Transform.call(this, null, params);\n}\ninherits(Bound, Transform, {\n transform(_, pulse) {\n const view = pulse.dataflow,\n mark = _.mark,\n type = mark.marktype,\n entry = Marks[type],\n bound = entry.bound;\n let markBounds = mark.bounds,\n rebound;\n if (entry.nested) {\n // multi-item marks have a single bounds instance\n if (mark.items.length) view.dirty(mark.items[0]);\n markBounds = boundItem(mark, bound);\n mark.items.forEach(item => {\n item.bounds.clear().union(markBounds);\n });\n } else if (type === Group || _.modified()) {\n // operator parameters modified -> re-bound all items\n // updates group bounds in response to modified group content\n pulse.visit(pulse.MOD, item => view.dirty(item));\n markBounds.clear();\n mark.items.forEach(item => markBounds.union(boundItem(item, bound)));\n\n // force reflow for axes/legends/titles to propagate any layout changes\n switch (mark.role) {\n case AxisRole:\n case LegendRole:\n case TitleRole:\n pulse.reflow();\n }\n } else {\n // incrementally update bounds, re-bound mark as needed\n rebound = pulse.changed(pulse.REM);\n pulse.visit(pulse.ADD, item => {\n markBounds.union(boundItem(item, bound));\n });\n pulse.visit(pulse.MOD, item => {\n rebound = rebound || markBounds.alignsWith(item.bounds);\n view.dirty(item);\n markBounds.union(boundItem(item, bound));\n });\n if (rebound) {\n markBounds.clear();\n mark.items.forEach(item => markBounds.union(item.bounds));\n }\n }\n\n // ensure mark bounds do not exceed any clipping region\n boundClip(mark);\n return pulse.modifies('bounds');\n }\n});\nfunction boundItem(item, bound, opt) {\n return bound(item.bounds.clear(), item, opt);\n}\n\nconst COUNTER_NAME = ':vega_identifier:';\n\n/**\n * Adds a unique identifier to all added tuples.\n * This transform creates a new signal that serves as an id counter.\n * As a result, the id counter is shared across all instances of this\n * transform, generating unique ids across multiple data streams. In\n * addition, this signal value can be included in a snapshot of the\n * dataflow state, enabling correct resumption of id allocation.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.as - The field name for the generated identifier.\n */\nfunction Identifier(params) {\n Transform.call(this, 0, params);\n}\nIdentifier.Definition = {\n 'type': 'Identifier',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'as',\n 'type': 'string',\n 'required': true\n }]\n};\ninherits(Identifier, Transform, {\n transform(_, pulse) {\n const counter = getCounter(pulse.dataflow),\n as = _.as;\n let id = counter.value;\n pulse.visit(pulse.ADD, t => t[as] = t[as] || ++id);\n counter.set(this.value = id);\n return pulse;\n }\n});\nfunction getCounter(view) {\n return view._signals[COUNTER_NAME] || (view._signals[COUNTER_NAME] = view.add(0));\n}\n\n/**\n * Bind scenegraph items to a scenegraph mark instance.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.markdef - The mark definition for creating the mark.\n * This is an object of legal scenegraph mark properties which *must* include\n * the 'marktype' property.\n */\nfunction Mark(params) {\n Transform.call(this, null, params);\n}\ninherits(Mark, Transform, {\n transform(_, pulse) {\n let mark = this.value;\n\n // acquire mark on first invocation, bind context and group\n if (!mark) {\n mark = pulse.dataflow.scenegraph().mark(_.markdef, lookup$1(_), _.index);\n mark.group.context = _.context;\n if (!_.context.group) _.context.group = mark.group;\n mark.source = this.source; // point to upstream collector\n mark.clip = _.clip;\n mark.interactive = _.interactive;\n this.value = mark;\n }\n\n // initialize entering items\n const Init = mark.marktype === Group ? GroupItem : Item;\n pulse.visit(pulse.ADD, item => Init.call(item, mark));\n\n // update clipping and/or interactive status\n if (_.modified('clip') || _.modified('interactive')) {\n mark.clip = _.clip;\n mark.interactive = !!_.interactive;\n mark.zdirty = true; // force scenegraph re-eval\n pulse.reflow();\n }\n\n // bind items array to scenegraph mark\n mark.items = pulse.source;\n return pulse;\n }\n});\nfunction lookup$1(_) {\n const g = _.groups,\n p = _.parent;\n return g && g.size === 1 ? g.get(Object.keys(g.object)[0]) : g && p ? g.lookup(p) : null;\n}\n\n/**\n * Analyze items for overlap, changing opacity to hide items with\n * overlapping bounding boxes. This transform will preserve at least\n * two items (e.g., first and last) even if overlap persists.\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting items.\n * @param {object} [params.method] - The overlap removal method to apply.\n * One of 'parity' (default, hide every other item until there is no\n * more overlap) or 'greedy' (sequentially scan and hide and items that\n * overlap with the last visible item).\n * @param {object} [params.boundScale] - A scale whose range should be used\n * to bound the items. Items exceeding the bounds of the scale range\n * will be treated as overlapping. If null or undefined, no bounds check\n * will be applied.\n * @param {object} [params.boundOrient] - The orientation of the scale\n * (top, bottom, left, or right) used to bound items. This parameter is\n * ignored if boundScale is null or undefined.\n * @param {object} [params.boundTolerance] - The tolerance in pixels for\n * bound inclusion testing (default 1). This specifies by how many pixels\n * an item's bounds may exceed the scale range bounds and not be culled.\n * @constructor\n */\nfunction Overlap(params) {\n Transform.call(this, null, params);\n}\nconst methods = {\n parity: items => items.filter((item, i) => i % 2 ? item.opacity = 0 : 1),\n greedy: (items, sep) => {\n let a;\n return items.filter((b, i) => !i || !intersect(a.bounds, b.bounds, sep) ? (a = b, 1) : b.opacity = 0);\n }\n};\n\n// compute bounding box intersection\n// including padding pixels of separation\nconst intersect = (a, b, sep) => sep > Math.max(b.x1 - a.x2, a.x1 - b.x2, b.y1 - a.y2, a.y1 - b.y2);\nconst hasOverlap = (items, pad) => {\n for (var i = 1, n = items.length, a = items[0].bounds, b; i < n; a = b, ++i) {\n if (intersect(a, b = items[i].bounds, pad)) return true;\n }\n};\nconst hasBounds = item => {\n const b = item.bounds;\n return b.width() > 1 && b.height() > 1;\n};\nconst boundTest = (scale, orient, tolerance) => {\n var range = scale.range(),\n b = new Bounds();\n if (orient === Top || orient === Bottom) {\n b.set(range[0], -Infinity, range[1], +Infinity);\n } else {\n b.set(-Infinity, range[0], +Infinity, range[1]);\n }\n b.expand(tolerance || 1);\n return item => b.encloses(item.bounds);\n};\n\n// reset all items to be fully opaque\nconst reset = source => {\n source.forEach(item => item.opacity = 1);\n return source;\n};\n\n// add all tuples to mod, fork pulse if parameters were modified\n// fork prevents cross-stream tuple pollution (e.g., pulse from scale)\nconst reflow = (pulse, _) => pulse.reflow(_.modified()).modifies('opacity');\ninherits(Overlap, Transform, {\n transform(_, pulse) {\n const reduce = methods[_.method] || methods.parity,\n sep = _.separation || 0;\n let source = pulse.materialize(pulse.SOURCE).source,\n items,\n test;\n if (!source || !source.length) return;\n if (!_.method) {\n // early exit if method is falsy\n if (_.modified('method')) {\n reset(source);\n pulse = reflow(pulse, _);\n }\n return pulse;\n }\n\n // skip labels with no content\n source = source.filter(hasBounds);\n\n // early exit, nothing to do\n if (!source.length) return;\n if (_.sort) {\n source = source.slice().sort(_.sort);\n }\n items = reset(source);\n pulse = reflow(pulse, _);\n if (items.length >= 3 && hasOverlap(items, sep)) {\n do {\n items = reduce(items, sep);\n } while (items.length >= 3 && hasOverlap(items, sep));\n if (items.length < 3 && !peek(source).opacity) {\n if (items.length > 1) peek(items).opacity = 0;\n peek(source).opacity = 1;\n }\n }\n if (_.boundScale && _.boundTolerance >= 0) {\n test = boundTest(_.boundScale, _.boundOrient, +_.boundTolerance);\n source.forEach(item => {\n if (!test(item)) item.opacity = 0;\n });\n }\n\n // re-calculate mark bounds\n const bounds = items[0].mark.bounds.clear();\n source.forEach(item => {\n if (item.opacity) bounds.union(item.bounds);\n });\n return pulse;\n }\n});\n\n/**\n * Queue modified scenegraph items for rendering.\n * @constructor\n */\nfunction Render(params) {\n Transform.call(this, null, params);\n}\ninherits(Render, Transform, {\n transform(_, pulse) {\n const view = pulse.dataflow;\n pulse.visit(pulse.ALL, item => view.dirty(item));\n\n // set z-index dirty flag as needed\n if (pulse.fields && pulse.fields['zindex']) {\n const item = pulse.source && pulse.source[0];\n if (item) item.mark.zdirty = true;\n }\n }\n});\n\nconst tempBounds = new Bounds();\nfunction set(item, property, value) {\n return item[property] === value ? 0 : (item[property] = value, 1);\n}\n\nfunction isYAxis(mark) {\n var orient = mark.items[0].orient;\n return orient === Left || orient === Right;\n}\nfunction axisIndices(datum) {\n let index = +datum.grid;\n return [datum.ticks ? index++ : -1,\n // ticks index\n datum.labels ? index++ : -1,\n // labels index\n index + +datum.domain // title index\n ];\n}\n\nfunction axisLayout(view, axis, width, height) {\n var item = axis.items[0],\n datum = item.datum,\n delta = item.translate != null ? item.translate : 0.5,\n orient = item.orient,\n indices = axisIndices(datum),\n range = item.range,\n offset = item.offset,\n position = item.position,\n minExtent = item.minExtent,\n maxExtent = item.maxExtent,\n title = datum.title && item.items[indices[2]].items[0],\n titlePadding = item.titlePadding,\n bounds = item.bounds,\n dl = title && multiLineOffset(title),\n x = 0,\n y = 0,\n i,\n s;\n tempBounds.clear().union(bounds);\n bounds.clear();\n if ((i = indices[0]) > -1) bounds.union(item.items[i].bounds);\n if ((i = indices[1]) > -1) bounds.union(item.items[i].bounds);\n\n // position axis group and title\n switch (orient) {\n case Top:\n x = position || 0;\n y = -offset;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.y1));\n bounds.add(0, -s).add(range, 0);\n if (title) axisTitleLayout(view, title, s, titlePadding, dl, 0, -1, bounds);\n break;\n case Left:\n x = -offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, -bounds.x1));\n bounds.add(-s, 0).add(0, range);\n if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, -1, bounds);\n break;\n case Right:\n x = width + offset;\n y = position || 0;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.x2));\n bounds.add(0, 0).add(s, range);\n if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, 1, bounds);\n break;\n case Bottom:\n x = position || 0;\n y = height + offset;\n s = Math.max(minExtent, Math.min(maxExtent, bounds.y2));\n bounds.add(0, 0).add(range, s);\n if (title) axisTitleLayout(view, title, s, titlePadding, 0, 0, 1, bounds);\n break;\n default:\n x = item.x;\n y = item.y;\n }\n\n // update bounds\n boundStroke(bounds.translate(x, y), item);\n if (set(item, 'x', x + delta) | set(item, 'y', y + delta)) {\n item.bounds = tempBounds;\n view.dirty(item);\n item.bounds = bounds;\n view.dirty(item);\n }\n return item.mark.bounds.clear().union(bounds);\n}\nfunction axisTitleLayout(view, title, offset, pad, dl, isYAxis, sign, bounds) {\n const b = title.bounds;\n if (title.auto) {\n const v = sign * (offset + dl + pad);\n let dx = 0,\n dy = 0;\n view.dirty(title);\n isYAxis ? dx = (title.x || 0) - (title.x = v) : dy = (title.y || 0) - (title.y = v);\n title.mark.bounds.clear().union(b.translate(-dx, -dy));\n view.dirty(title);\n }\n bounds.union(b);\n}\n\n// aggregation functions for grid margin determination\nconst min = (a, b) => Math.floor(Math.min(a, b));\nconst max = (a, b) => Math.ceil(Math.max(a, b));\nfunction gridLayoutGroups(group) {\n var groups = group.items,\n n = groups.length,\n i = 0,\n mark,\n items;\n const views = {\n marks: [],\n rowheaders: [],\n rowfooters: [],\n colheaders: [],\n colfooters: [],\n rowtitle: null,\n coltitle: null\n };\n\n // layout axes, gather legends, collect bounds\n for (; i < n; ++i) {\n mark = groups[i];\n items = mark.items;\n if (mark.marktype === Group) {\n switch (mark.role) {\n case AxisRole:\n case LegendRole:\n case TitleRole:\n break;\n case RowHeader:\n views.rowheaders.push(...items);\n break;\n case RowFooter:\n views.rowfooters.push(...items);\n break;\n case ColHeader:\n views.colheaders.push(...items);\n break;\n case ColFooter:\n views.colfooters.push(...items);\n break;\n case RowTitle:\n views.rowtitle = items[0];\n break;\n case ColTitle:\n views.coltitle = items[0];\n break;\n default:\n views.marks.push(...items);\n }\n }\n }\n return views;\n}\nfunction bboxFlush(item) {\n return new Bounds().set(0, 0, item.width || 0, item.height || 0);\n}\nfunction bboxFull(item) {\n const b = item.bounds.clone();\n return b.empty() ? b.set(0, 0, 0, 0) : b.translate(-(item.x || 0), -(item.y || 0));\n}\nfunction get(opt, key, d) {\n const v = isObject(opt) ? opt[key] : opt;\n return v != null ? v : d !== undefined ? d : 0;\n}\nfunction offsetValue(v) {\n return v < 0 ? Math.ceil(-v) : 0;\n}\nfunction gridLayout(view, groups, opt) {\n var dirty = !opt.nodirty,\n bbox = opt.bounds === Flush ? bboxFlush : bboxFull,\n bounds = tempBounds.set(0, 0, 0, 0),\n alignCol = get(opt.align, Column),\n alignRow = get(opt.align, Row),\n padCol = get(opt.padding, Column),\n padRow = get(opt.padding, Row),\n ncols = opt.columns || groups.length,\n nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n n = groups.length,\n xOffset = Array(n),\n xExtent = Array(ncols),\n xMax = 0,\n yOffset = Array(n),\n yExtent = Array(nrows),\n yMax = 0,\n dx = Array(n),\n dy = Array(n),\n boxes = Array(n),\n m,\n i,\n c,\n r,\n b,\n g,\n px,\n py,\n x,\n y,\n offset;\n for (i = 0; i < ncols; ++i) xExtent[i] = 0;\n for (i = 0; i < nrows; ++i) yExtent[i] = 0;\n\n // determine offsets for each group\n for (i = 0; i < n; ++i) {\n g = groups[i];\n b = boxes[i] = bbox(g);\n g.x = g.x || 0;\n dx[i] = 0;\n g.y = g.y || 0;\n dy[i] = 0;\n c = i % ncols;\n r = ~~(i / ncols);\n xMax = Math.max(xMax, px = Math.ceil(b.x2));\n yMax = Math.max(yMax, py = Math.ceil(b.y2));\n xExtent[c] = Math.max(xExtent[c], px);\n yExtent[r] = Math.max(yExtent[r], py);\n xOffset[i] = padCol + offsetValue(b.x1);\n yOffset[i] = padRow + offsetValue(b.y1);\n if (dirty) view.dirty(groups[i]);\n }\n\n // set initial alignment offsets\n for (i = 0; i < n; ++i) {\n if (i % ncols === 0) xOffset[i] = 0;\n if (i < ncols) yOffset[i] = 0;\n }\n\n // enforce column alignment constraints\n if (alignCol === Each) {\n for (c = 1; c < ncols; ++c) {\n for (offset = 0, i = c; i < n; i += ncols) {\n if (offset < xOffset[i]) offset = xOffset[i];\n }\n for (i = c; i < n; i += ncols) {\n xOffset[i] = offset + xExtent[c - 1];\n }\n }\n } else if (alignCol === All) {\n for (offset = 0, i = 0; i < n; ++i) {\n if (i % ncols && offset < xOffset[i]) offset = xOffset[i];\n }\n for (i = 0; i < n; ++i) {\n if (i % ncols) xOffset[i] = offset + xMax;\n }\n } else {\n for (alignCol = false, c = 1; c < ncols; ++c) {\n for (i = c; i < n; i += ncols) {\n xOffset[i] += xExtent[c - 1];\n }\n }\n }\n\n // enforce row alignment constraints\n if (alignRow === Each) {\n for (r = 1; r < nrows; ++r) {\n for (offset = 0, i = r * ncols, m = i + ncols; i < m; ++i) {\n if (offset < yOffset[i]) offset = yOffset[i];\n }\n for (i = r * ncols; i < m; ++i) {\n yOffset[i] = offset + yExtent[r - 1];\n }\n }\n } else if (alignRow === All) {\n for (offset = 0, i = ncols; i < n; ++i) {\n if (offset < yOffset[i]) offset = yOffset[i];\n }\n for (i = ncols; i < n; ++i) {\n yOffset[i] = offset + yMax;\n }\n } else {\n for (alignRow = false, r = 1; r < nrows; ++r) {\n for (i = r * ncols, m = i + ncols; i < m; ++i) {\n yOffset[i] += yExtent[r - 1];\n }\n }\n }\n\n // perform horizontal grid layout\n for (x = 0, i = 0; i < n; ++i) {\n x = xOffset[i] + (i % ncols ? x : 0);\n dx[i] += x - groups[i].x;\n }\n\n // perform vertical grid layout\n for (c = 0; c < ncols; ++c) {\n for (y = 0, i = c; i < n; i += ncols) {\n y += yOffset[i];\n dy[i] += y - groups[i].y;\n }\n }\n\n // perform horizontal centering\n if (alignCol && get(opt.center, Column) && nrows > 1) {\n for (i = 0; i < n; ++i) {\n b = alignCol === All ? xMax : xExtent[i % ncols];\n x = b - boxes[i].x2 - groups[i].x - dx[i];\n if (x > 0) dx[i] += x / 2;\n }\n }\n\n // perform vertical centering\n if (alignRow && get(opt.center, Row) && ncols !== 1) {\n for (i = 0; i < n; ++i) {\n b = alignRow === All ? yMax : yExtent[~~(i / ncols)];\n y = b - boxes[i].y2 - groups[i].y - dy[i];\n if (y > 0) dy[i] += y / 2;\n }\n }\n\n // position grid relative to anchor\n for (i = 0; i < n; ++i) {\n bounds.union(boxes[i].translate(dx[i], dy[i]));\n }\n x = get(opt.anchor, X);\n y = get(opt.anchor, Y);\n switch (get(opt.anchor, Column)) {\n case End:\n x -= bounds.width();\n break;\n case Middle:\n x -= bounds.width() / 2;\n }\n switch (get(opt.anchor, Row)) {\n case End:\n y -= bounds.height();\n break;\n case Middle:\n y -= bounds.height() / 2;\n }\n x = Math.round(x);\n y = Math.round(y);\n\n // update mark positions, bounds, dirty\n bounds.clear();\n for (i = 0; i < n; ++i) {\n groups[i].mark.bounds.clear();\n }\n for (i = 0; i < n; ++i) {\n g = groups[i];\n g.x += dx[i] += x;\n g.y += dy[i] += y;\n bounds.union(g.mark.bounds.union(g.bounds.translate(dx[i], dy[i])));\n if (dirty) view.dirty(g);\n }\n return bounds;\n}\nfunction trellisLayout(view, group, opt) {\n var views = gridLayoutGroups(group),\n groups = views.marks,\n bbox = opt.bounds === Flush ? boundFlush : boundFull,\n off = opt.offset,\n ncols = opt.columns || groups.length,\n nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n cells = nrows * ncols,\n x,\n y,\n x2,\n y2,\n anchor,\n band,\n offset;\n\n // -- initial grid layout\n const bounds = gridLayout(view, groups, opt);\n if (bounds.empty()) bounds.set(0, 0, 0, 0); // empty grid\n\n // -- layout grid headers and footers --\n\n // perform row header layout\n if (views.rowheaders) {\n band = get(opt.headerBand, Row, null);\n x = layoutHeaders(view, views.rowheaders, groups, ncols, nrows, -get(off, 'rowHeader'), min, 0, bbox, 'x1', 0, ncols, 1, band);\n }\n\n // perform column header layout\n if (views.colheaders) {\n band = get(opt.headerBand, Column, null);\n y = layoutHeaders(view, views.colheaders, groups, ncols, ncols, -get(off, 'columnHeader'), min, 1, bbox, 'y1', 0, 1, ncols, band);\n }\n\n // perform row footer layout\n if (views.rowfooters) {\n band = get(opt.footerBand, Row, null);\n x2 = layoutHeaders(view, views.rowfooters, groups, ncols, nrows, get(off, 'rowFooter'), max, 0, bbox, 'x2', ncols - 1, ncols, 1, band);\n }\n\n // perform column footer layout\n if (views.colfooters) {\n band = get(opt.footerBand, Column, null);\n y2 = layoutHeaders(view, views.colfooters, groups, ncols, ncols, get(off, 'columnFooter'), max, 1, bbox, 'y2', cells - ncols, 1, ncols, band);\n }\n\n // perform row title layout\n if (views.rowtitle) {\n anchor = get(opt.titleAnchor, Row);\n offset = get(off, 'rowTitle');\n offset = anchor === End ? x2 + offset : x - offset;\n band = get(opt.titleBand, Row, 0.5);\n layoutTitle(view, views.rowtitle, offset, 0, bounds, band);\n }\n\n // perform column title layout\n if (views.coltitle) {\n anchor = get(opt.titleAnchor, Column);\n offset = get(off, 'columnTitle');\n offset = anchor === End ? y2 + offset : y - offset;\n band = get(opt.titleBand, Column, 0.5);\n layoutTitle(view, views.coltitle, offset, 1, bounds, band);\n }\n}\nfunction boundFlush(item, field) {\n return field === 'x1' ? item.x || 0 : field === 'y1' ? item.y || 0 : field === 'x2' ? (item.x || 0) + (item.width || 0) : field === 'y2' ? (item.y || 0) + (item.height || 0) : undefined;\n}\nfunction boundFull(item, field) {\n return item.bounds[field];\n}\nfunction layoutHeaders(view, headers, groups, ncols, limit, offset, agg, isX, bound, bf, start, stride, back, band) {\n var n = groups.length,\n init = 0,\n edge = 0,\n i,\n j,\n k,\n m,\n b,\n h,\n g,\n x,\n y;\n\n // if no groups, early exit and return 0\n if (!n) return init;\n\n // compute margin\n for (i = start; i < n; i += stride) {\n if (groups[i]) init = agg(init, bound(groups[i], bf));\n }\n\n // if no headers, return margin calculation\n if (!headers.length) return init;\n\n // check if number of headers exceeds number of rows or columns\n if (headers.length > limit) {\n view.warn('Grid headers exceed limit: ' + limit);\n headers = headers.slice(0, limit);\n }\n\n // apply offset\n init += offset;\n\n // clear mark bounds for all headers\n for (j = 0, m = headers.length; j < m; ++j) {\n view.dirty(headers[j]);\n headers[j].mark.bounds.clear();\n }\n\n // layout each header\n for (i = start, j = 0, m = headers.length; j < m; ++j, i += stride) {\n h = headers[j];\n b = h.mark.bounds;\n\n // search for nearest group to align to\n // necessary if table has empty cells\n for (k = i; k >= 0 && (g = groups[k]) == null; k -= back);\n\n // assign coordinates and update bounds\n if (isX) {\n x = band == null ? g.x : Math.round(g.bounds.x1 + band * g.bounds.width());\n y = init;\n } else {\n x = init;\n y = band == null ? g.y : Math.round(g.bounds.y1 + band * g.bounds.height());\n }\n b.union(h.bounds.translate(x - (h.x || 0), y - (h.y || 0)));\n h.x = x;\n h.y = y;\n view.dirty(h);\n\n // update current edge of layout bounds\n edge = agg(edge, b[bf]);\n }\n return edge;\n}\nfunction layoutTitle(view, g, offset, isX, bounds, band) {\n if (!g) return;\n view.dirty(g);\n\n // compute title coordinates\n var x = offset,\n y = offset;\n isX ? x = Math.round(bounds.x1 + band * bounds.width()) : y = Math.round(bounds.y1 + band * bounds.height());\n\n // assign coordinates and update bounds\n g.bounds.translate(x - (g.x || 0), y - (g.y || 0));\n g.mark.bounds.clear().union(g.bounds);\n g.x = x;\n g.y = y;\n\n // queue title for redraw\n view.dirty(g);\n}\n\n// utility for looking up legend layout configuration\nfunction lookup(config, orient) {\n const opt = config[orient] || {};\n return (key, d) => opt[key] != null ? opt[key] : config[key] != null ? config[key] : d;\n}\n\n// if legends specify offset directly, use the maximum specified value\nfunction offsets(legends, value) {\n let max = -Infinity;\n legends.forEach(item => {\n if (item.offset != null) max = Math.max(max, item.offset);\n });\n return max > -Infinity ? max : value;\n}\nfunction legendParams(g, orient, config, xb, yb, w, h) {\n const _ = lookup(config, orient),\n offset = offsets(g, _('offset', 0)),\n anchor = _('anchor', Start),\n mult = anchor === End ? 1 : anchor === Middle ? 0.5 : 0;\n const p = {\n align: Each,\n bounds: _('bounds', Flush),\n columns: _('direction') === 'vertical' ? 1 : g.length,\n padding: _('margin', 8),\n center: _('center'),\n nodirty: true\n };\n switch (orient) {\n case Left:\n p.anchor = {\n x: Math.floor(xb.x1) - offset,\n column: End,\n y: mult * (h || xb.height() + 2 * xb.y1),\n row: anchor\n };\n break;\n case Right:\n p.anchor = {\n x: Math.ceil(xb.x2) + offset,\n y: mult * (h || xb.height() + 2 * xb.y1),\n row: anchor\n };\n break;\n case Top:\n p.anchor = {\n y: Math.floor(yb.y1) - offset,\n row: End,\n x: mult * (w || yb.width() + 2 * yb.x1),\n column: anchor\n };\n break;\n case Bottom:\n p.anchor = {\n y: Math.ceil(yb.y2) + offset,\n x: mult * (w || yb.width() + 2 * yb.x1),\n column: anchor\n };\n break;\n case TopLeft:\n p.anchor = {\n x: offset,\n y: offset\n };\n break;\n case TopRight:\n p.anchor = {\n x: w - offset,\n y: offset,\n column: End\n };\n break;\n case BottomLeft:\n p.anchor = {\n x: offset,\n y: h - offset,\n row: End\n };\n break;\n case BottomRight:\n p.anchor = {\n x: w - offset,\n y: h - offset,\n column: End,\n row: End\n };\n break;\n }\n return p;\n}\nfunction legendLayout(view, legend) {\n var item = legend.items[0],\n datum = item.datum,\n orient = item.orient,\n bounds = item.bounds,\n x = item.x,\n y = item.y,\n w,\n h;\n\n // cache current bounds for later comparison\n item._bounds ? item._bounds.clear().union(bounds) : item._bounds = bounds.clone();\n bounds.clear();\n\n // adjust legend to accommodate padding and title\n legendGroupLayout(view, item, item.items[0].items[0]);\n\n // aggregate bounds to determine size, and include origin\n bounds = legendBounds(item, bounds);\n w = 2 * item.padding;\n h = 2 * item.padding;\n if (!bounds.empty()) {\n w = Math.ceil(bounds.width() + w);\n h = Math.ceil(bounds.height() + h);\n }\n if (datum.type === Symbols) {\n legendEntryLayout(item.items[0].items[0].items[0].items);\n }\n if (orient !== None) {\n item.x = x = 0;\n item.y = y = 0;\n }\n item.width = w;\n item.height = h;\n boundStroke(bounds.set(x, y, x + w, y + h), item);\n item.mark.bounds.clear().union(bounds);\n return item;\n}\nfunction legendBounds(item, b) {\n // aggregate item bounds\n item.items.forEach(_ => b.union(_.bounds));\n\n // anchor to legend origin\n b.x1 = item.padding;\n b.y1 = item.padding;\n return b;\n}\nfunction legendGroupLayout(view, item, entry) {\n var pad = item.padding,\n ex = pad - entry.x,\n ey = pad - entry.y;\n if (!item.datum.title) {\n if (ex || ey) translate(view, entry, ex, ey);\n } else {\n var title = item.items[1].items[0],\n anchor = title.anchor,\n tpad = item.titlePadding || 0,\n tx = pad - title.x,\n ty = pad - title.y;\n switch (title.orient) {\n case Left:\n ex += Math.ceil(title.bounds.width()) + tpad;\n break;\n case Right:\n case Bottom:\n break;\n default:\n ey += title.bounds.height() + tpad;\n }\n if (ex || ey) translate(view, entry, ex, ey);\n switch (title.orient) {\n case Left:\n ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n break;\n case Right:\n tx += legendTitleOffset(item, entry, title, End, 0, 0) + tpad;\n ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n break;\n case Bottom:\n tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n ty += legendTitleOffset(item, entry, title, End, -1, 0, 1) + tpad;\n break;\n default:\n tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n }\n if (tx || ty) translate(view, title, tx, ty);\n\n // translate legend if title pushes into negative coordinates\n if ((tx = Math.round(title.bounds.x1 - pad)) < 0) {\n translate(view, entry, -tx, 0);\n translate(view, title, -tx, 0);\n }\n }\n}\nfunction legendTitleOffset(item, entry, title, anchor, y, lr, noBar) {\n const grad = item.datum.type !== 'symbol',\n vgrad = title.datum.vgrad,\n e = grad && (lr || !vgrad) && !noBar ? entry.items[0] : entry,\n s = e.bounds[y ? 'y2' : 'x2'] - item.padding,\n u = vgrad && lr ? s : 0,\n v = vgrad && lr ? 0 : s,\n o = y <= 0 ? 0 : multiLineOffset(title);\n return Math.round(anchor === Start ? u : anchor === End ? v - o : 0.5 * (s - o));\n}\nfunction translate(view, item, dx, dy) {\n item.x += dx;\n item.y += dy;\n item.bounds.translate(dx, dy);\n item.mark.bounds.translate(dx, dy);\n view.dirty(item);\n}\nfunction legendEntryLayout(entries) {\n // get max widths for each column\n const widths = entries.reduce((w, g) => {\n w[g.column] = Math.max(g.bounds.x2 - g.x, w[g.column] || 0);\n return w;\n }, {});\n\n // set dimensions of legend entry groups\n entries.forEach(g => {\n g.width = widths[g.column];\n g.height = g.bounds.y2 - g.y;\n });\n}\n\nfunction titleLayout(view, mark, width, height, viewBounds) {\n var group = mark.items[0],\n frame = group.frame,\n orient = group.orient,\n anchor = group.anchor,\n offset = group.offset,\n padding = group.padding,\n title = group.items[0].items[0],\n subtitle = group.items[1] && group.items[1].items[0],\n end = orient === Left || orient === Right ? height : width,\n start = 0,\n x = 0,\n y = 0,\n sx = 0,\n sy = 0,\n pos;\n if (frame !== Group) {\n orient === Left ? (start = viewBounds.y2, end = viewBounds.y1) : orient === Right ? (start = viewBounds.y1, end = viewBounds.y2) : (start = viewBounds.x1, end = viewBounds.x2);\n } else if (orient === Left) {\n start = height, end = 0;\n }\n pos = anchor === Start ? start : anchor === End ? end : (start + end) / 2;\n if (subtitle && subtitle.text) {\n // position subtitle\n switch (orient) {\n case Top:\n case Bottom:\n sy = title.bounds.height() + padding;\n break;\n case Left:\n sx = title.bounds.width() + padding;\n break;\n case Right:\n sx = -title.bounds.width() - padding;\n break;\n }\n tempBounds.clear().union(subtitle.bounds);\n tempBounds.translate(sx - (subtitle.x || 0), sy - (subtitle.y || 0));\n if (set(subtitle, 'x', sx) | set(subtitle, 'y', sy)) {\n view.dirty(subtitle);\n subtitle.bounds.clear().union(tempBounds);\n subtitle.mark.bounds.clear().union(tempBounds);\n view.dirty(subtitle);\n }\n tempBounds.clear().union(subtitle.bounds);\n } else {\n tempBounds.clear();\n }\n tempBounds.union(title.bounds);\n\n // position title group\n switch (orient) {\n case Top:\n x = pos;\n y = viewBounds.y1 - tempBounds.height() - offset;\n break;\n case Left:\n x = viewBounds.x1 - tempBounds.width() - offset;\n y = pos;\n break;\n case Right:\n x = viewBounds.x2 + tempBounds.width() + offset;\n y = pos;\n break;\n case Bottom:\n x = pos;\n y = viewBounds.y2 + offset;\n break;\n default:\n x = group.x;\n y = group.y;\n }\n if (set(group, 'x', x) | set(group, 'y', y)) {\n tempBounds.translate(x, y);\n view.dirty(group);\n group.bounds.clear().union(tempBounds);\n mark.bounds.clear().union(tempBounds);\n view.dirty(group);\n }\n return group.bounds;\n}\n\n/**\n * Layout view elements such as axes and legends.\n * Also performs size adjustments.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - Scenegraph mark of groups to layout.\n */\nfunction ViewLayout(params) {\n Transform.call(this, null, params);\n}\ninherits(ViewLayout, Transform, {\n transform(_, pulse) {\n const view = pulse.dataflow;\n _.mark.items.forEach(group => {\n if (_.layout) trellisLayout(view, group, _.layout);\n layoutGroup(view, group, _);\n });\n return shouldReflow(_.mark.group) ? pulse.reflow() : pulse;\n }\n});\nfunction shouldReflow(group) {\n // We typically should reflow if layout is invoked (#2568), as child items\n // may have resized and reflow ensures group bounds are re-calculated.\n // However, legend entries have a special exception to avoid instability.\n // For example, if a selected legend symbol gains a stroke on hover,\n // we don't want to re-position subsequent elements in the legend.\n return group && group.mark.role !== 'legend-entry';\n}\nfunction layoutGroup(view, group, _) {\n var items = group.items,\n width = Math.max(0, group.width || 0),\n height = Math.max(0, group.height || 0),\n viewBounds = new Bounds().set(0, 0, width, height),\n xBounds = viewBounds.clone(),\n yBounds = viewBounds.clone(),\n legends = [],\n title,\n mark,\n orient,\n b,\n i,\n n;\n\n // layout axes, gather legends, collect bounds\n for (i = 0, n = items.length; i < n; ++i) {\n mark = items[i];\n switch (mark.role) {\n case AxisRole:\n b = isYAxis(mark) ? xBounds : yBounds;\n b.union(axisLayout(view, mark, width, height));\n break;\n case TitleRole:\n title = mark;\n break;\n case LegendRole:\n legends.push(legendLayout(view, mark));\n break;\n case FrameRole:\n case ScopeRole:\n case RowHeader:\n case RowFooter:\n case RowTitle:\n case ColHeader:\n case ColFooter:\n case ColTitle:\n xBounds.union(mark.bounds);\n yBounds.union(mark.bounds);\n break;\n default:\n viewBounds.union(mark.bounds);\n }\n }\n\n // layout legends, adjust viewBounds\n if (legends.length) {\n // group legends by orient\n const l = {};\n legends.forEach(item => {\n orient = item.orient || Right;\n if (orient !== None) (l[orient] || (l[orient] = [])).push(item);\n });\n\n // perform grid layout for each orient group\n for (const orient in l) {\n const g = l[orient];\n gridLayout(view, g, legendParams(g, orient, _.legends, xBounds, yBounds, width, height));\n }\n\n // update view bounds\n legends.forEach(item => {\n const b = item.bounds;\n if (!b.equals(item._bounds)) {\n item.bounds = item._bounds;\n view.dirty(item); // dirty previous location\n item.bounds = b;\n view.dirty(item);\n }\n if (_.autosize && (_.autosize.type === Fit || _.autosize.type === FitX || _.autosize.type === FitY)) {\n // For autosize fit, incorporate the orthogonal dimension only.\n // Legends that overrun the chart area will then be clipped;\n // otherwise the chart area gets reduced to nothing!\n switch (item.orient) {\n case Left:\n case Right:\n viewBounds.add(b.x1, 0).add(b.x2, 0);\n break;\n case Top:\n case Bottom:\n viewBounds.add(0, b.y1).add(0, b.y2);\n }\n } else {\n viewBounds.union(b);\n }\n });\n }\n\n // combine bounding boxes\n viewBounds.union(xBounds).union(yBounds);\n\n // layout title, adjust bounds\n if (title) {\n viewBounds.union(titleLayout(view, title, width, height, viewBounds));\n }\n\n // override aggregated view bounds if content is clipped\n if (group.clip) {\n viewBounds.set(0, 0, group.width || 0, group.height || 0);\n }\n\n // perform size adjustment\n viewSizeLayout(view, group, viewBounds, _);\n}\nfunction viewSizeLayout(view, group, viewBounds, _) {\n const auto = _.autosize || {},\n type = auto.type;\n if (view._autosize < 1 || !type) return;\n let viewWidth = view._width,\n viewHeight = view._height,\n width = Math.max(0, group.width || 0),\n left = Math.max(0, Math.ceil(-viewBounds.x1)),\n height = Math.max(0, group.height || 0),\n top = Math.max(0, Math.ceil(-viewBounds.y1));\n const right = Math.max(0, Math.ceil(viewBounds.x2 - width)),\n bottom = Math.max(0, Math.ceil(viewBounds.y2 - height));\n if (auto.contains === Padding) {\n const padding = view.padding();\n viewWidth -= padding.left + padding.right;\n viewHeight -= padding.top + padding.bottom;\n }\n if (type === None) {\n left = 0;\n top = 0;\n width = viewWidth;\n height = viewHeight;\n } else if (type === Fit) {\n width = Math.max(0, viewWidth - left - right);\n height = Math.max(0, viewHeight - top - bottom);\n } else if (type === FitX) {\n width = Math.max(0, viewWidth - left - right);\n viewHeight = height + top + bottom;\n } else if (type === FitY) {\n viewWidth = width + left + right;\n height = Math.max(0, viewHeight - top - bottom);\n } else if (type === Pad) {\n viewWidth = width + left + right;\n viewHeight = height + top + bottom;\n }\n view._resizeView(viewWidth, viewHeight, width, height, [left, top], auto.resize);\n}\n\nexport { Bound as bound, Identifier as identifier, Mark as mark, Overlap as overlap, Render as render, ViewLayout as viewlayout };\n", "export default function(x) {\n return function constant() {\n return x;\n };\n}\n", "export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n", "const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We\u2019re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n", "import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n", "import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 \u2265 r0, da1 \u2265 da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it\u2019s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector\u2019s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it\u2019s a circular sector?\n // Or perhaps it\u2019s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector\u2019s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n", "export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n", "function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n", "export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n", "import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n", "import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n circle,\n plus,\n times,\n triangle2,\n asterisk,\n square2,\n diamond2\n];\n\nexport default function Symbol(type, size) {\n let context = null,\n path = withPath(symbol);\n\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n let buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n", "export default function() {}\n", "export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n", "import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n", "import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n", "import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n", "export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n", "import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n", "import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n", "function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic B\u00E9zier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n", "function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n", "function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n", "function domCanvas(w, h) {\n if (typeof document !== 'undefined' && document.createElement) {\n const c = document.createElement('canvas');\n if (c && c.getContext) {\n c.width = w;\n c.height = h;\n return c;\n }\n }\n return null;\n}\nconst domImage = () => typeof Image !== 'undefined' ? Image : null;\n\nexport { domCanvas as canvas, domCanvas, domImage as image };\n", "export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n", "import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n", "export {default as interpolate} from \"./value.js\";\nexport {default as interpolateArray} from \"./array.js\";\nexport {default as interpolateBasis} from \"./basis.js\";\nexport {default as interpolateBasisClosed} from \"./basisClosed.js\";\nexport {default as interpolateDate} from \"./date.js\";\nexport {default as interpolateDiscrete} from \"./discrete.js\";\nexport {default as interpolateHue} from \"./hue.js\";\nexport {default as interpolateNumber} from \"./number.js\";\nexport {default as interpolateNumberArray} from \"./numberArray.js\";\nexport {default as interpolateObject} from \"./object.js\";\nexport {default as interpolateRound} from \"./round.js\";\nexport {default as interpolateString} from \"./string.js\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index.js\";\nexport {default as interpolateZoom} from \"./zoom.js\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb.js\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl.js\";\nexport {default as interpolateLab} from \"./lab.js\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl.js\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix.js\";\nexport {default as piecewise} from \"./piecewise.js\";\nexport {default as quantize} from \"./quantize.js\";\n", "export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n", "import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n", "export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n", "import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n", "import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n", "export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n", "import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n", "export default x => () => x;\n", "import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n", "import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n", "export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n", "import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n", "export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n", "export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n", "import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n", "import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n", "import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n", "export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n", "import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n", "export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n", "var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n", "import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n", "import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n", "var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 \u2245 u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n", "import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n", "import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n", "import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n", "import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n", "import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n", "export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n", "export default function constants(x) {\n return function() {\n return x;\n };\n}\n", "export default function number(x) {\n return +x;\n}\n", "import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n", "import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n", "import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n", "import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n", "export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n", "import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n", "import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n", "import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n", "import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n", "import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n", "import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n", "import { toNumber, peek, toSet, array, constant, isNumber, span, isObject, isString, error, isArray } from 'vega-util';\nimport { bisectRight, range, bisect } from 'd3-array';\nimport * as $ from 'd3-scale';\nimport { scaleOrdinal, tickFormat as tickFormat$1 } from 'd3-scale';\nexport { scaleImplicit } from 'd3-scale';\nimport * as $$1 from 'd3-interpolate';\nimport { timeInterval, utcInterval } from 'vega-time';\n\nfunction bandSpace (count, paddingInner, paddingOuter) {\n const space = count - paddingInner + paddingOuter * 2;\n return count ? space > 0 ? space : 1 : 0;\n}\n\nconst Identity = 'identity';\nconst Linear = 'linear';\nconst Log = 'log';\nconst Pow = 'pow';\nconst Sqrt = 'sqrt';\nconst Symlog = 'symlog';\nconst Time = 'time';\nconst UTC = 'utc';\nconst Sequential = 'sequential';\nconst Diverging = 'diverging';\nconst Quantile = 'quantile';\nconst Quantize = 'quantize';\nconst Threshold = 'threshold';\nconst Ordinal = 'ordinal';\nconst Point = 'point';\nconst Band = 'band';\nconst BinOrdinal = 'bin-ordinal';\n\n// categories\nconst Continuous = 'continuous';\nconst Discrete = 'discrete';\nconst Discretizing = 'discretizing';\nconst Interpolating = 'interpolating';\nconst Temporal = 'temporal';\n\nfunction invertRange (scale) {\n return function (_) {\n let lo = _[0],\n hi = _[1],\n t;\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n return [scale.invert(lo), scale.invert(hi)];\n };\n}\n\nfunction invertRangeExtent (scale) {\n return function (_) {\n const range = scale.range();\n let lo = _[0],\n hi = _[1],\n min = -1,\n max,\n t,\n i,\n n;\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n for (i = 0, n = range.length; i < n; ++i) {\n if (range[i] >= lo && range[i] <= hi) {\n if (min < 0) min = i;\n max = i;\n }\n }\n if (min < 0) return undefined;\n lo = scale.invertExtent(range[min]);\n hi = scale.invertExtent(range[max]);\n return [lo[0] === undefined ? lo[1] : lo[0], hi[1] === undefined ? hi[0] : hi[1]];\n };\n}\n\nfunction band() {\n const scale = scaleOrdinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range;\n let range$1 = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n delete scale.unknown;\n function rescale() {\n const n = domain().length,\n reverse = range$1[1] < range$1[0],\n stop = range$1[1 - reverse],\n space = bandSpace(n, paddingInner, paddingOuter);\n let start = range$1[reverse - 0];\n step = (stop - start) / (space || 1);\n if (round) {\n step = Math.floor(step);\n }\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) {\n start = Math.round(start);\n bandwidth = Math.round(bandwidth);\n }\n const values = range(n).map(i => start + step * i);\n return ordinalRange(reverse ? values.reverse() : values);\n }\n scale.domain = function (_) {\n if (arguments.length) {\n domain(_);\n return rescale();\n } else {\n return domain();\n }\n };\n scale.range = function (_) {\n if (arguments.length) {\n range$1 = [+_[0], +_[1]];\n return rescale();\n } else {\n return range$1.slice();\n }\n };\n scale.rangeRound = function (_) {\n range$1 = [+_[0], +_[1]];\n round = true;\n return rescale();\n };\n scale.bandwidth = function () {\n return bandwidth;\n };\n scale.step = function () {\n return step;\n };\n scale.round = function (_) {\n if (arguments.length) {\n round = !!_;\n return rescale();\n } else {\n return round;\n }\n };\n scale.padding = function (_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n paddingInner = paddingOuter;\n return rescale();\n } else {\n return paddingInner;\n }\n };\n scale.paddingInner = function (_) {\n if (arguments.length) {\n paddingInner = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingInner;\n }\n };\n scale.paddingOuter = function (_) {\n if (arguments.length) {\n paddingOuter = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return paddingOuter;\n }\n };\n scale.align = function (_) {\n if (arguments.length) {\n align = Math.max(0, Math.min(1, _));\n return rescale();\n } else {\n return align;\n }\n };\n scale.invertRange = function (_) {\n // bail if range has null or undefined values\n if (_[0] == null || _[1] == null) return;\n const reverse = range$1[1] < range$1[0],\n values = reverse ? ordinalRange().reverse() : ordinalRange(),\n n = values.length - 1;\n let lo = +_[0],\n hi = +_[1],\n a,\n b,\n t;\n\n // bail if either range endpoint is invalid\n if (lo !== lo || hi !== hi) return;\n\n // order range inputs, bail if outside of scale range\n if (hi < lo) {\n t = lo;\n lo = hi;\n hi = t;\n }\n if (hi < values[0] || lo > range$1[1 - reverse]) return;\n\n // binary search to index into scale range\n a = Math.max(0, bisectRight(values, lo) - 1);\n b = lo === hi ? a : bisectRight(values, hi) - 1;\n\n // increment index a if lo is within padding gap\n if (lo - values[a] > bandwidth + 1e-10) ++a;\n if (reverse) {\n // map + swap\n t = a;\n a = n - b;\n b = n - t;\n }\n return a > b ? undefined : domain().slice(a, b + 1);\n };\n scale.invert = function (_) {\n const value = scale.invertRange([_, _]);\n return value ? value[0] : value;\n };\n scale.copy = function () {\n return band().domain(domain()).range(range$1).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n };\n return rescale();\n}\nfunction pointish(scale) {\n const copy = scale.copy;\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n scale.copy = function () {\n return pointish(copy());\n };\n return scale;\n}\nfunction point() {\n return pointish(band().paddingInner(1));\n}\n\nvar map = Array.prototype.map;\nfunction numbers(_) {\n return map.call(_, toNumber);\n}\n\nconst slice = Array.prototype.slice;\n\nfunction scaleBinOrdinal() {\n let domain = [],\n range = [];\n function scale(x) {\n return x == null || x !== x ? undefined : range[(bisect(domain, x) - 1) % range.length];\n }\n scale.domain = function (_) {\n if (arguments.length) {\n domain = numbers(_);\n return scale;\n } else {\n return domain.slice();\n }\n };\n scale.range = function (_) {\n if (arguments.length) {\n range = slice.call(_);\n return scale;\n } else {\n return range.slice();\n }\n };\n scale.tickFormat = function (count, specifier) {\n return tickFormat$1(domain[0], peek(domain), count == null ? 10 : count, specifier);\n };\n scale.copy = function () {\n return scaleBinOrdinal().domain(scale.domain()).range(scale.range());\n };\n return scale;\n}\n\n/** Private scale registry: should not be exported */\nconst scales = new Map();\nconst VEGA_SCALE = Symbol('vega_scale');\nfunction registerScale(scale) {\n scale[VEGA_SCALE] = true;\n return scale;\n}\n\n/**\n * Return true if object was created by a constructor from the vega-scale `scale` function.\n */\nfunction isRegisteredScale(scale) {\n return scale && scale[VEGA_SCALE] === true;\n}\n\n/**\n * Augment scales with their type and needed inverse methods.\n */\nfunction create(type, constructor, metadata) {\n const ctr = function scale() {\n const s = constructor();\n if (!s.invertRange) {\n s.invertRange = s.invert ? invertRange(s) : s.invertExtent ? invertRangeExtent(s) : undefined;\n }\n s.type = type;\n return registerScale(s);\n };\n ctr.metadata = toSet(array(metadata));\n return ctr;\n}\n\n/**\n * Registry function for adding and accessing scale constructor functions.\n * The *type* argument is a String indicating the name of the scale type.\n *\n * If the *scale* argument is not specified, this method returns the matching scale constructor in the registry, or `null` if not found.\n * If the *scale* argument is provided, it must be a scale constructor function to add to the registry under the given *type* name.\n * The *metadata* argument provides additional information to guide appropriate use of scales within Vega.\n *\n * *metadata* can be either a string or string array. The valid string values are:\n * - `\"continuous\"` - the scale is defined over a continuous-valued domain.\n * - `\"discrete\"` - the scale is defined over a discrete domain and range.\n * - `\"discretizing\"` - the scale discretizes a continuous domain to a discrete range.\n * - `\"interpolating\"` - the scale range is defined using a color interpolator.\n * - `\"log\"` - the scale performs a logarithmic transform of the continuous domain.\n * - `\"temporal\"` - the scale domain is defined over date-time values.\n */\nfunction scale(type, scale, metadata) {\n if (arguments.length > 1) {\n scales.set(type, create(type, scale, metadata));\n return this;\n } else {\n return isValidScaleType(type) ? scales.get(type) : undefined;\n }\n}\n\n// identity scale\nscale(Identity, $.scaleIdentity);\n\n// continuous scales\nscale(Linear, $.scaleLinear, Continuous);\nscale(Log, $.scaleLog, [Continuous, Log]);\nscale(Pow, $.scalePow, Continuous);\nscale(Sqrt, $.scaleSqrt, Continuous);\nscale(Symlog, $.scaleSymlog, Continuous);\nscale(Time, $.scaleTime, [Continuous, Temporal]);\nscale(UTC, $.scaleUtc, [Continuous, Temporal]);\n\n// sequential scales\nscale(Sequential, $.scaleSequential, [Continuous, Interpolating]); // backwards compat\nscale(`${Sequential}-${Linear}`, $.scaleSequential, [Continuous, Interpolating]);\nscale(`${Sequential}-${Log}`, $.scaleSequentialLog, [Continuous, Interpolating, Log]);\nscale(`${Sequential}-${Pow}`, $.scaleSequentialPow, [Continuous, Interpolating]);\nscale(`${Sequential}-${Sqrt}`, $.scaleSequentialSqrt, [Continuous, Interpolating]);\nscale(`${Sequential}-${Symlog}`, $.scaleSequentialSymlog, [Continuous, Interpolating]);\n\n// diverging scales\nscale(`${Diverging}-${Linear}`, $.scaleDiverging, [Continuous, Interpolating]);\nscale(`${Diverging}-${Log}`, $.scaleDivergingLog, [Continuous, Interpolating, Log]);\nscale(`${Diverging}-${Pow}`, $.scaleDivergingPow, [Continuous, Interpolating]);\nscale(`${Diverging}-${Sqrt}`, $.scaleDivergingSqrt, [Continuous, Interpolating]);\nscale(`${Diverging}-${Symlog}`, $.scaleDivergingSymlog, [Continuous, Interpolating]);\n\n// discretizing scales\nscale(Quantile, $.scaleQuantile, [Discretizing, Quantile]);\nscale(Quantize, $.scaleQuantize, Discretizing);\nscale(Threshold, $.scaleThreshold, Discretizing);\n\n// discrete scales\nscale(BinOrdinal, scaleBinOrdinal, [Discrete, Discretizing]);\nscale(Ordinal, $.scaleOrdinal, Discrete);\nscale(Band, band, Discrete);\nscale(Point, point, Discrete);\nfunction isValidScaleType(type) {\n return scales.has(type);\n}\nfunction hasType(key, type) {\n const s = scales.get(key);\n return s && s.metadata[type];\n}\nfunction isContinuous(key) {\n return hasType(key, Continuous);\n}\nfunction isDiscrete(key) {\n return hasType(key, Discrete);\n}\nfunction isDiscretizing(key) {\n return hasType(key, Discretizing);\n}\nfunction isLogarithmic(key) {\n return hasType(key, Log);\n}\nfunction isTemporal(key) {\n return hasType(key, Temporal);\n}\nfunction isInterpolating(key) {\n return hasType(key, Interpolating);\n}\nfunction isQuantile(key) {\n return hasType(key, Quantile);\n}\n\nconst scaleProps = ['clamp', 'base', 'constant', 'exponent'];\nfunction interpolateRange(interpolator, range) {\n const start = range[0],\n span = peek(range) - start;\n return function (i) {\n return interpolator(start + i * span);\n };\n}\nfunction interpolateColors(colors, type, gamma) {\n return $$1.piecewise(interpolate(type || 'rgb', gamma), colors);\n}\nfunction quantizeInterpolator(interpolator, count) {\n const samples = new Array(count),\n n = count + 1;\n for (let i = 0; i < count;) samples[i] = interpolator(++i / n);\n return samples;\n}\nfunction scaleCopy(scale) {\n const t = scale.type,\n s = scale.copy();\n s.type = t;\n return s;\n}\nfunction scaleFraction(scale$1, min, max) {\n const delta = max - min;\n let i, t, s;\n if (!delta || !Number.isFinite(delta)) {\n return constant(0.5);\n } else {\n i = (t = scale$1.type).indexOf('-');\n t = i < 0 ? t : t.slice(i + 1);\n s = scale(t)().domain([min, max]).range([0, 1]);\n scaleProps.forEach(m => scale$1[m] ? s[m](scale$1[m]()) : 0);\n return s;\n }\n}\nfunction interpolate(type, gamma) {\n const interp = $$1[method(type)];\n return gamma != null && interp && interp.gamma ? interp.gamma(gamma) : interp;\n}\nfunction method(type) {\n return 'interpolate' + type.toLowerCase().split('-').map(s => s[0].toUpperCase() + s.slice(1)).join('');\n}\n\nconst continuous = {\n blues: 'cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90',\n greens: 'd3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429',\n greys: 'e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e',\n oranges: 'fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303',\n purples: 'e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c',\n reds: 'fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13',\n blueGreen: 'd5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429',\n bluePurple: 'ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71',\n greenBlue: 'd3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1',\n orangeRed: 'fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403',\n purpleBlue: 'dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281',\n purpleBlueGreen: 'dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353',\n purpleRed: 'dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a',\n redPurple: 'fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174',\n yellowGreen: 'e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034',\n yellowOrangeBrown: 'feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204',\n yellowOrangeRed: 'fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225',\n blueOrange: '134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07',\n brownBlueGreen: '704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147',\n purpleGreen: '5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29',\n purpleOrange: '4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07',\n redBlue: '8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85',\n redGrey: '8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434',\n yellowGreenBlue: 'eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185',\n redYellowBlue: 'a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695',\n redYellowGreen: 'a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837',\n pinkYellowGreen: '8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419',\n spectral: '9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2',\n viridis: '440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725',\n magma: '0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf',\n inferno: '0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4',\n plasma: '0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921',\n cividis: '00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647',\n rainbow: '6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa',\n sinebow: 'ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040',\n turbo: '23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00',\n browns: 'eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632',\n tealBlues: 'bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985',\n teals: 'bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667',\n warmGreys: 'dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e',\n goldGreen: 'f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36',\n goldOrange: 'f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26',\n goldRed: 'f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e',\n lightGreyRed: 'efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b',\n lightGreyTeal: 'e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc',\n lightMulti: 'e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c',\n lightOrange: 'f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b',\n lightTealBlue: 'e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988',\n darkBlue: '3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff',\n darkGold: '3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff',\n darkGreen: '3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa',\n darkMulti: '3737371f5287197d8c29a86995ce3fffe800ffffff',\n darkRed: '3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c'\n};\nconst discrete = {\n category10: '1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf',\n category20: '1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5',\n category20b: '393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6',\n category20c: '3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9',\n tableau10: '4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac',\n tableau20: '4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5',\n accent: '7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666',\n dark2: '1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666',\n paired: 'a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928',\n pastel1: 'fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2',\n pastel2: 'b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc',\n set1: 'e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999',\n set2: '66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3',\n set3: '8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f'\n};\n\nfunction colors(palette) {\n const n = palette.length / 6 | 0,\n c = new Array(n);\n for (let i = 0; i < n;) {\n c[i] = '#' + palette.slice(i * 6, ++i * 6);\n }\n return c;\n}\nfunction apply(_, f) {\n for (const k in _) scheme(k, f(_[k]));\n}\nconst schemes = {};\napply(discrete, colors);\napply(continuous, _ => interpolateColors(colors(_)));\nfunction scheme(name, scheme) {\n name = name && name.toLowerCase();\n if (arguments.length > 1) {\n schemes[name] = scheme;\n return this;\n } else {\n return schemes[name];\n }\n}\n\nconst SymbolLegend = 'symbol';\nconst DiscreteLegend = 'discrete';\nconst GradientLegend = 'gradient';\n\nconst defaultFormatter = value => isArray(value) ? value.map(v => String(v)) : String(value);\nconst ascending = (a, b) => a[1] - b[1];\nconst descending = (a, b) => b[1] - a[1];\n\n/**\n * Determine the tick count or interval function.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} count - The desired tick count or interval specifier.\n * @param {number} minStep - The desired minimum step between tick values.\n * @return {*} - The tick count or interval function.\n */\nfunction tickCount(scale, count, minStep) {\n let step;\n if (isNumber(count)) {\n if (scale.bins) {\n count = Math.max(count, scale.bins.length);\n }\n if (minStep != null) {\n count = Math.min(count, Math.floor(span(scale.domain()) / minStep || 1) + 1);\n }\n }\n if (isObject(count)) {\n step = count.step;\n count = count.interval;\n }\n if (isString(count)) {\n count = scale.type === Time ? timeInterval(count) : scale.type == UTC ? utcInterval(count) : error('Only time and utc scales accept interval strings.');\n if (step) count = count.every(step);\n }\n return count;\n}\n\n/**\n * Filter a set of candidate tick values, ensuring that only tick values\n * that lie within the scale range are included.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {Array<*>} ticks - The candidate tick values.\n * @param {*} count - The tick count or interval function.\n * @return {Array<*>} - The filtered tick values.\n */\nfunction validTicks(scale, ticks, count) {\n let range = scale.range(),\n lo = range[0],\n hi = peek(range),\n cmp = ascending;\n if (lo > hi) {\n range = hi;\n hi = lo;\n lo = range;\n cmp = descending;\n }\n lo = Math.floor(lo);\n hi = Math.ceil(hi);\n\n // filter ticks to valid values within the range\n // additionally sort ticks in range order (#2579)\n ticks = ticks.map(v => [v, scale(v)]).filter(_ => lo <= _[1] && _[1] <= hi).sort(cmp).map(_ => _[0]);\n if (count > 0 && ticks.length > 1) {\n const endpoints = [ticks[0], peek(ticks)];\n while (ticks.length > count && ticks.length >= 3) {\n ticks = ticks.filter((_, i) => !(i % 2));\n }\n if (ticks.length < 3) {\n ticks = endpoints;\n }\n }\n return ticks;\n}\n\n/**\n * Generate tick values for the given scale and approximate tick count or\n * interval value. If the scale has a 'ticks' method, it will be used to\n * generate the ticks, with the count argument passed as a parameter. If the\n * scale lacks a 'ticks' method, the full scale domain will be returned.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\nfunction tickValues(scale, count) {\n return scale.bins ? validTicks(scale, scale.bins) : scale.ticks ? scale.ticks(count) : scale.domain();\n}\n\n/**\n * Generate a label format function for a scale. If the scale has a\n * 'tickFormat' method, it will be used to generate the formatter, with the\n * count and specifier arguments passed as parameters. If the scale lacks a\n * 'tickFormat' method, the returned formatter performs simple string coercion.\n * If the input scale is a logarithmic scale and the format specifier does not\n * indicate a desired decimal precision, a special variable precision formatter\n * that automatically trims trailing zeroes will be generated.\n * @param {Scale} scale - The scale for which to generate the label formatter.\n * @param {*} [count] - The approximate number of desired ticks.\n * @param {string} [specifier] - The format specifier. Must be a legal d3\n * specifier string (see https://github.com/d3/d3-format#formatSpecifier) or\n * time multi-format specifier object.\n * @return {function(*):string} - The generated label formatter.\n */\nfunction tickFormat(locale, scale, count, specifier, formatType, noSkip) {\n const type = scale.type;\n let format = defaultFormatter;\n if (type === Time || formatType === Time) {\n format = locale.timeFormat(specifier);\n } else if (type === UTC || formatType === UTC) {\n format = locale.utcFormat(specifier);\n } else if (isLogarithmic(type)) {\n const varfmt = locale.formatFloat(specifier);\n if (noSkip || scale.bins) {\n format = varfmt;\n } else {\n const test = tickLog(scale, count, false);\n format = _ => test(_) ? varfmt(_) : '';\n }\n } else if (scale.tickFormat) {\n // if d3 scale has tickFormat, it must be continuous\n const d = scale.domain();\n format = locale.formatSpan(d[0], d[d.length - 1], count, specifier);\n } else if (specifier) {\n format = locale.format(specifier);\n }\n return format;\n}\nfunction tickLog(scale, count, values) {\n const ticks = tickValues(scale, count),\n base = scale.base(),\n logb = Math.log(base),\n k = Math.max(1, base * count / ticks.length);\n\n // apply d3-scale's log format filter criteria\n const test = d => {\n let i = d / Math.pow(base, Math.round(Math.log(d) / logb));\n if (i * base < base - 0.5) i *= base;\n return i <= k;\n };\n return values ? ticks.filter(test) : test;\n}\n\nconst symbols = {\n [Quantile]: 'quantiles',\n [Quantize]: 'thresholds',\n [Threshold]: 'domain'\n};\nconst formats = {\n [Quantile]: 'quantiles',\n [Quantize]: 'domain'\n};\nfunction labelValues(scale, count) {\n return scale.bins ? binValues(scale.bins) : scale.type === Log ? tickLog(scale, count, true) : symbols[scale.type] ? thresholdValues(scale[symbols[scale.type]]()) : tickValues(scale, count);\n}\nfunction thresholdFormat(locale, scale, specifier) {\n const _ = scale[formats[scale.type]](),\n n = _.length;\n let d = n > 1 ? _[1] - _[0] : _[0],\n i;\n for (i = 1; i < n; ++i) {\n d = Math.min(d, _[i] - _[i - 1]);\n }\n\n // tickCount = 3 ticks times 10 for increased resolution\n return locale.formatSpan(0, d, 3 * 10, specifier);\n}\nfunction thresholdValues(thresholds) {\n const values = [-Infinity].concat(thresholds);\n values.max = +Infinity;\n return values;\n}\nfunction binValues(bins) {\n const values = bins.slice(0, -1);\n values.max = peek(bins);\n return values;\n}\nconst isDiscreteRange = scale => symbols[scale.type] || scale.bins;\nfunction labelFormat(locale, scale, count, type, specifier, formatType, noSkip) {\n const format = formats[scale.type] && formatType !== Time && formatType !== UTC ? thresholdFormat(locale, scale, specifier) : tickFormat(locale, scale, count, specifier, formatType, noSkip);\n return type === SymbolLegend && isDiscreteRange(scale) ? formatRange(format) : type === DiscreteLegend ? formatDiscrete(format) : formatPoint(format);\n}\nconst formatRange = format => (value, index, array) => {\n const limit = get(array[index + 1], get(array.max, +Infinity)),\n lo = formatValue(value, format),\n hi = formatValue(limit, format);\n return lo && hi ? lo + ' \\u2013 ' + hi : hi ? '< ' + hi : '\\u2265 ' + lo;\n};\nconst get = (value, dflt) => value != null ? value : dflt;\nconst formatDiscrete = format => (value, index) => index ? format(value) : null;\nconst formatPoint = format => value => format(value);\nconst formatValue = (value, format) => Number.isFinite(value) ? format(value) : null;\nfunction labelFraction(scale) {\n const domain = scale.domain(),\n count = domain.length - 1;\n let lo = +domain[0],\n hi = +peek(domain),\n span = hi - lo;\n if (scale.type === Threshold) {\n const adjust = count ? span / count : 0.1;\n lo -= adjust;\n hi += adjust;\n span = hi - lo;\n }\n return value => (value - lo) / span;\n}\n\nfunction format(locale, scale, specifier, formatType) {\n const type = formatType || scale.type;\n\n // replace abbreviated time specifiers to improve screen reader experience\n if (isString(specifier) && isTemporal(type)) {\n specifier = specifier.replace(/%a/g, '%A').replace(/%b/g, '%B');\n }\n return !specifier && type === Time ? locale.timeFormat('%A, %d %B %Y, %X') : !specifier && type === UTC ? locale.utcFormat('%A, %d %B %Y, %X UTC') : labelFormat(locale, scale, 5, null, specifier, formatType, true);\n}\nfunction domainCaption(locale, scale, opt) {\n opt = opt || {};\n const max = Math.max(3, opt.maxlen || 7),\n fmt = format(locale, scale, opt.format, opt.formatType);\n\n // if scale breaks domain into bins, describe boundaries\n if (isDiscretizing(scale.type)) {\n const v = labelValues(scale).slice(1).map(fmt),\n n = v.length;\n return `${n} boundar${n === 1 ? 'y' : 'ies'}: ${v.join(', ')}`;\n }\n\n // if scale domain is discrete, list values\n else if (isDiscrete(scale.type)) {\n const d = scale.domain(),\n n = d.length,\n v = n > max ? d.slice(0, max - 2).map(fmt).join(', ') + ', ending with ' + d.slice(-1).map(fmt) : d.map(fmt).join(', ');\n return `${n} value${n === 1 ? '' : 's'}: ${v}`;\n }\n\n // if scale domain is continuous, describe value range\n else {\n const d = scale.domain();\n return `values from ${fmt(d[0])} to ${fmt(peek(d))}`;\n }\n}\n\nexport { Band, BinOrdinal, DiscreteLegend, Diverging, GradientLegend, Identity, Linear, Log, Ordinal, Point, Pow, Quantile, Quantize, Sequential, Sqrt, SymbolLegend, Symlog, Threshold, Time, UTC, bandSpace, domainCaption, interpolate, interpolateColors, interpolateRange, isContinuous, isDiscrete, isDiscretizing, isInterpolating, isLogarithmic, isQuantile, isRegisteredScale, isTemporal, isValidScaleType, labelFormat, labelFraction, labelValues, quantizeInterpolator, registerScale, scale, scaleCopy, scaleFraction, scheme, tickCount, tickFormat, tickValues, validTicks };\n", "import { hasOwnProperty, isFunction, inherits, truthy, lruCache, isArray, error, toSet, array, peek, extend, isNumber, isObject } from 'vega-util';\nimport { curveBasis, curveBasisClosed, curveBasisOpen, curveBundle, curveCardinal, curveCardinalOpen, curveCardinalClosed, curveCatmullRom, curveCatmullRomClosed, curveCatmullRomOpen, curveLinear, curveLinearClosed, curveMonotoneY, curveMonotoneX, curveNatural, curveStep, curveStepAfter, curveStepBefore, arc as arc$2, area as area$2, line as line$2, symbol as symbol$2 } from 'd3-shape';\nimport { path as path$3 } from 'd3-path';\nexport { path } from 'd3-path';\nimport { image as image$1, canvas } from 'vega-canvas';\nimport { loader } from 'vega-loader';\nimport { isDiscrete, domainCaption } from 'vega-scale';\n\nlet gradient_id = 0;\nfunction resetSVGGradientId() {\n gradient_id = 0;\n}\nconst patternPrefix = 'p_';\nfunction isGradient(value) {\n return value && value.gradient;\n}\nfunction gradientRef(g, defs, base) {\n const type = g.gradient;\n let id = g.id,\n prefix = type === 'radial' ? patternPrefix : '';\n\n // check id, assign default values as needed\n if (!id) {\n id = g.id = 'gradient_' + gradient_id++;\n if (type === 'radial') {\n g.x1 = get(g.x1, 0.5);\n g.y1 = get(g.y1, 0.5);\n g.r1 = get(g.r1, 0);\n g.x2 = get(g.x2, 0.5);\n g.y2 = get(g.y2, 0.5);\n g.r2 = get(g.r2, 0.5);\n prefix = patternPrefix;\n } else {\n g.x1 = get(g.x1, 0);\n g.y1 = get(g.y1, 0);\n g.x2 = get(g.x2, 1);\n g.y2 = get(g.y2, 0);\n }\n }\n\n // register definition\n defs[id] = g;\n\n // return url reference\n return 'url(' + (base || '') + '#' + prefix + id + ')';\n}\nfunction get(val, def) {\n return val != null ? val : def;\n}\nfunction Gradient (p0, p1) {\n var stops = [],\n gradient;\n return gradient = {\n gradient: 'linear',\n x1: p0 ? p0[0] : 0,\n y1: p0 ? p0[1] : 0,\n x2: p1 ? p1[0] : 1,\n y2: p1 ? p1[1] : 0,\n stops: stops,\n stop: function (offset, color) {\n stops.push({\n offset: offset,\n color: color\n });\n return gradient;\n }\n };\n}\n\nconst lookup = {\n 'basis': {\n curve: curveBasis\n },\n 'basis-closed': {\n curve: curveBasisClosed\n },\n 'basis-open': {\n curve: curveBasisOpen\n },\n 'bundle': {\n curve: curveBundle,\n tension: 'beta',\n value: 0.85\n },\n 'cardinal': {\n curve: curveCardinal,\n tension: 'tension',\n value: 0\n },\n 'cardinal-open': {\n curve: curveCardinalOpen,\n tension: 'tension',\n value: 0\n },\n 'cardinal-closed': {\n curve: curveCardinalClosed,\n tension: 'tension',\n value: 0\n },\n 'catmull-rom': {\n curve: curveCatmullRom,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-closed': {\n curve: curveCatmullRomClosed,\n tension: 'alpha',\n value: 0.5\n },\n 'catmull-rom-open': {\n curve: curveCatmullRomOpen,\n tension: 'alpha',\n value: 0.5\n },\n 'linear': {\n curve: curveLinear\n },\n 'linear-closed': {\n curve: curveLinearClosed\n },\n 'monotone': {\n horizontal: curveMonotoneY,\n vertical: curveMonotoneX\n },\n 'natural': {\n curve: curveNatural\n },\n 'step': {\n curve: curveStep\n },\n 'step-after': {\n curve: curveStepAfter\n },\n 'step-before': {\n curve: curveStepBefore\n }\n};\nfunction curves(type, orientation, tension) {\n var entry = hasOwnProperty(lookup, type) && lookup[type],\n curve = null;\n if (entry) {\n curve = entry.curve || entry[orientation || 'vertical'];\n if (entry.tension && tension != null) {\n curve = curve[entry.tension](tension);\n }\n }\n return curve;\n}\n\nconst paramCounts = {\n m: 2,\n l: 2,\n h: 1,\n v: 1,\n z: 0,\n c: 6,\n s: 4,\n q: 4,\n t: 2,\n a: 7\n};\nconst commandPattern = /[mlhvzcsqta]([^mlhvzcsqta]+|$)/gi;\nconst numberPattern = /^[+-]?(([0-9]*\\.[0-9]+)|([0-9]+\\.)|([0-9]+))([eE][+-]?[0-9]+)?/;\nconst spacePattern = /^((\\s+,?\\s*)|(,\\s*))/;\nconst flagPattern = /^[01]/;\nfunction parse(path) {\n const commands = [];\n const matches = path.match(commandPattern) || [];\n matches.forEach(str => {\n let cmd = str[0];\n const type = cmd.toLowerCase();\n\n // parse parameters\n const paramCount = paramCounts[type];\n const params = parseParams(type, paramCount, str.slice(1).trim());\n const count = params.length;\n\n // error checking based on parameter count\n if (count < paramCount || count && count % paramCount !== 0) {\n throw Error('Invalid SVG path, incorrect parameter count');\n }\n\n // register the command\n commands.push([cmd, ...params.slice(0, paramCount)]);\n\n // exit now if we're done, also handles zero-param 'z'\n if (count === paramCount) {\n return;\n }\n\n // handle implicit line-to\n if (type === 'm') {\n cmd = cmd === 'M' ? 'L' : 'l';\n }\n\n // repeat command when given extended param list\n for (let i = paramCount; i < count; i += paramCount) {\n commands.push([cmd, ...params.slice(i, i + paramCount)]);\n }\n });\n return commands;\n}\nfunction parseParams(type, paramCount, segment) {\n const params = [];\n for (let index = 0; paramCount && index < segment.length;) {\n for (let i = 0; i < paramCount; ++i) {\n const pattern = type === 'a' && (i === 3 || i === 4) ? flagPattern : numberPattern;\n const match = segment.slice(index).match(pattern);\n if (match === null) {\n throw Error('Invalid SVG path, incorrect parameter type');\n }\n index += match[0].length;\n params.push(+match[0]);\n const ws = segment.slice(index).match(spacePattern);\n if (ws !== null) {\n index += ws[0].length;\n }\n }\n }\n return params;\n}\n\nconst DegToRad = Math.PI / 180;\nconst Epsilon = 1e-14;\nconst HalfPi = Math.PI / 2;\nconst Tau = Math.PI * 2;\nconst HalfSqrt3 = Math.sqrt(3) / 2;\n\nvar segmentCache = {};\nvar bezierCache = {};\nvar join = [].join;\n\n// Copied from Inkscape svgtopdf, thanks!\nfunction segments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n const key = join.call(arguments);\n if (segmentCache[key]) {\n return segmentCache[key];\n }\n const th = rotateX * DegToRad;\n const sin_th = Math.sin(th);\n const cos_th = Math.cos(th);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n const px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n const py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n let pl = px * px / (rx * rx) + py * py / (ry * ry);\n if (pl > 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n const a00 = cos_th / rx;\n const a01 = sin_th / rx;\n const a10 = -sin_th / ry;\n const a11 = cos_th / ry;\n const x0 = a00 * ox + a01 * oy;\n const y0 = a10 * ox + a11 * oy;\n const x1 = a00 * x + a01 * y;\n const y1 = a10 * x + a11 * y;\n const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n let sfactor_sq = 1 / d - 0.25;\n if (sfactor_sq < 0) sfactor_sq = 0;\n let sfactor = Math.sqrt(sfactor_sq);\n if (sweep == large) sfactor = -sfactor;\n const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n const th0 = Math.atan2(y0 - yc, x0 - xc);\n const th1 = Math.atan2(y1 - yc, x1 - xc);\n let th_arc = th1 - th0;\n if (th_arc < 0 && sweep === 1) {\n th_arc += Tau;\n } else if (th_arc > 0 && sweep === 0) {\n th_arc -= Tau;\n }\n const segs = Math.ceil(Math.abs(th_arc / (HalfPi + 0.001)));\n const result = [];\n for (let i = 0; i < segs; ++i) {\n const th2 = th0 + i * th_arc / segs;\n const th3 = th0 + (i + 1) * th_arc / segs;\n result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n }\n return segmentCache[key] = result;\n}\nfunction bezier(params) {\n const key = join.call(params);\n if (bezierCache[key]) {\n return bezierCache[key];\n }\n var cx = params[0],\n cy = params[1],\n th0 = params[2],\n th1 = params[3],\n rx = params[4],\n ry = params[5],\n sin_th = params[6],\n cos_th = params[7];\n const a00 = cos_th * rx;\n const a01 = -sin_th * ry;\n const a10 = sin_th * rx;\n const a11 = cos_th * ry;\n const cos_th0 = Math.cos(th0);\n const sin_th0 = Math.sin(th0);\n const cos_th1 = Math.cos(th1);\n const sin_th1 = Math.sin(th1);\n const th_half = 0.5 * (th1 - th0);\n const sin_th_h2 = Math.sin(th_half * 0.5);\n const t = 8 / 3 * sin_th_h2 * sin_th_h2 / Math.sin(th_half);\n const x1 = cx + cos_th0 - t * sin_th0;\n const y1 = cy + sin_th0 + t * cos_th0;\n const x3 = cx + cos_th1;\n const y3 = cy + sin_th1;\n const x2 = x3 + t * sin_th1;\n const y2 = y3 - t * cos_th1;\n return bezierCache[key] = [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];\n}\n\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\nfunction scale$1(current, sX, sY) {\n const c = temp[0] = current[0];\n if (c === 'a' || c === 'A') {\n temp[1] = sX * current[1];\n temp[2] = sY * current[2];\n temp[3] = current[3];\n temp[4] = current[4];\n temp[5] = current[5];\n temp[6] = sX * current[6];\n temp[7] = sY * current[7];\n } else if (c === 'h' || c === 'H') {\n temp[1] = sX * current[1];\n } else if (c === 'v' || c === 'V') {\n temp[1] = sY * current[1];\n } else {\n for (var i = 1, n = current.length; i < n; ++i) {\n temp[i] = (i % 2 == 1 ? sX : sY) * current[i];\n }\n }\n return temp;\n}\nfunction pathRender (context, path, l, t, sX, sY) {\n var current,\n // current instruction\n previous = null,\n x = 0,\n // current x\n y = 0,\n // current y\n controlX = 0,\n // current control point x\n controlY = 0,\n // current control point y\n tempX,\n tempY,\n tempControlX,\n tempControlY,\n anchorX = 0,\n anchorY = 0;\n if (l == null) l = 0;\n if (t == null) t = 0;\n if (sX == null) sX = 1;\n if (sY == null) sY = sX;\n if (context.beginPath) context.beginPath();\n for (var i = 0, len = path.length; i < len; ++i) {\n current = path[i];\n if (sX !== 1 || sY !== 1) {\n current = scale$1(current, sX, sY);\n }\n switch (current[0]) {\n // first letter\n\n case 'l':\n // lineto, relative\n x += current[1];\n y += current[2];\n context.lineTo(x + l, y + t);\n break;\n case 'L':\n // lineto, absolute\n x = current[1];\n y = current[2];\n context.lineTo(x + l, y + t);\n break;\n case 'h':\n // horizontal lineto, relative\n x += current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'H':\n // horizontal lineto, absolute\n x = current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'v':\n // vertical lineto, relative\n y += current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'V':\n // verical lineto, absolute\n y = current[1];\n context.lineTo(x + l, y + t);\n break;\n case 'm':\n // moveTo, relative\n x += current[1];\n y += current[2];\n anchorX = x;\n anchorY = y;\n context.moveTo(x + l, y + t);\n break;\n case 'M':\n // moveTo, absolute\n x = current[1];\n y = current[2];\n anchorX = x;\n anchorY = y;\n context.moveTo(x + l, y + t);\n break;\n case 'c':\n // bezierCurveTo, relative\n tempX = x + current[5];\n tempY = y + current[6];\n controlX = x + current[3];\n controlY = y + current[4];\n context.bezierCurveTo(x + current[1] + l,\n // x1\n y + current[2] + t,\n // y1\n controlX + l,\n // x2\n controlY + t,\n // y2\n tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n case 'C':\n // bezierCurveTo, absolute\n x = current[5];\n y = current[6];\n controlX = current[3];\n controlY = current[4];\n context.bezierCurveTo(current[1] + l, current[2] + t, controlX + l, controlY + t, x + l, y + t);\n break;\n case 's':\n // shorthand cubic bezierCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.bezierCurveTo(controlX + l, controlY + t, x + current[1] + l, y + current[2] + t, tempX + l, tempY + t);\n\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = x + current[1];\n controlY = y + current[2];\n x = tempX;\n y = tempY;\n break;\n case 'S':\n // shorthand cubic bezierCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.bezierCurveTo(controlX + l, controlY + t, current[1] + l, current[2] + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // the first control point is assumed to be the reflection of\n // the second control point on the previous command relative\n // to the current point.\n controlX = current[1];\n controlY = current[2];\n break;\n case 'q':\n // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n controlX = x + current[1];\n controlY = y + current[2];\n context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n case 'Q':\n // quadraticCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n context.quadraticCurveTo(current[1] + l, current[2] + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = current[1];\n controlY = current[2];\n break;\n case 't':\n // shorthand quadraticCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[1];\n tempY = y + current[2];\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n } else if (previous[0] === 't') {\n // calculate reflection of previous control points for t\n controlX = 2 * x - tempControlX;\n controlY = 2 * y - tempControlY;\n } else if (previous[0] === 'q') {\n // calculate reflection of previous control points for q\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n tempControlX = controlX;\n tempControlY = controlY;\n context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n controlX = x + current[1];\n controlY = y + current[2];\n break;\n case 'T':\n tempX = current[1];\n tempY = current[2];\n\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n x = tempX;\n y = tempY;\n break;\n case 'a':\n drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + x + l, current[7] + y + t]);\n x += current[6];\n y += current[7];\n break;\n case 'A':\n drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + l, current[7] + t]);\n x = current[6];\n y = current[7];\n break;\n case 'z':\n case 'Z':\n x = anchorX;\n y = anchorY;\n context.closePath();\n break;\n }\n previous = current;\n }\n}\nfunction drawArc(context, x, y, coords) {\n const seg = segments(coords[5],\n // end x\n coords[6],\n // end y\n coords[0],\n // radius x\n coords[1],\n // radius y\n coords[3],\n // large flag\n coords[4],\n // sweep flag\n coords[2],\n // rotation\n x, y);\n for (let i = 0; i < seg.length; ++i) {\n const bez = bezier(seg[i]);\n context.bezierCurveTo(bez[0], bez[1], bez[2], bez[3], bez[4], bez[5]);\n }\n}\n\nconst Tan30 = 0.5773502691896257;\nconst builtins = {\n 'circle': {\n draw: function (context, size) {\n const r = Math.sqrt(size) / 2;\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, Tau);\n }\n },\n 'cross': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n s = r / 2.5;\n context.moveTo(-r, -s);\n context.lineTo(-r, s);\n context.lineTo(-s, s);\n context.lineTo(-s, r);\n context.lineTo(s, r);\n context.lineTo(s, s);\n context.lineTo(r, s);\n context.lineTo(r, -s);\n context.lineTo(s, -s);\n context.lineTo(s, -r);\n context.lineTo(-s, -r);\n context.lineTo(-s, -s);\n context.closePath();\n }\n },\n 'diamond': {\n draw: function (context, size) {\n const r = Math.sqrt(size) / 2;\n context.moveTo(-r, 0);\n context.lineTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.closePath();\n }\n },\n 'square': {\n draw: function (context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n },\n 'arrow': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n s = r / 7,\n t = r / 2.5,\n v = r / 8;\n context.moveTo(-s, r);\n context.lineTo(s, r);\n context.lineTo(s, -v);\n context.lineTo(t, -v);\n context.lineTo(0, -r);\n context.lineTo(-t, -v);\n context.lineTo(-s, -v);\n context.closePath();\n }\n },\n 'wedge': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r,\n o = h - r * Tan30,\n b = r / 4;\n context.moveTo(0, -h - o);\n context.lineTo(-b, h - o);\n context.lineTo(b, h - o);\n context.closePath();\n }\n },\n 'triangle': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r,\n o = h - r * Tan30;\n context.moveTo(0, -h - o);\n context.lineTo(-r, h - o);\n context.lineTo(r, h - o);\n context.closePath();\n }\n },\n 'triangle-up': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(0, -h);\n context.lineTo(-r, h);\n context.lineTo(r, h);\n context.closePath();\n }\n },\n 'triangle-down': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(0, h);\n context.lineTo(-r, -h);\n context.lineTo(r, -h);\n context.closePath();\n }\n },\n 'triangle-right': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(h, 0);\n context.lineTo(-h, -r);\n context.lineTo(-h, r);\n context.closePath();\n }\n },\n 'triangle-left': {\n draw: function (context, size) {\n var r = Math.sqrt(size) / 2,\n h = HalfSqrt3 * r;\n context.moveTo(-h, 0);\n context.lineTo(h, -r);\n context.lineTo(h, r);\n context.closePath();\n }\n },\n 'stroke': {\n draw: function (context, size) {\n const r = Math.sqrt(size) / 2;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n }\n }\n};\nfunction symbols(_) {\n return hasOwnProperty(builtins, _) ? builtins[_] : customSymbol(_);\n}\nvar custom = {};\nfunction customSymbol(path) {\n if (!hasOwnProperty(custom, path)) {\n const parsed = parse(path);\n custom[path] = {\n draw: function (context, size) {\n pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2);\n }\n };\n }\n return custom[path];\n}\n\n// See http://spencermortensen.com/articles/bezier-circle/\nconst C = 0.448084975506; // C = 1 - c\n\nfunction rectangleX(d) {\n return d.x;\n}\nfunction rectangleY(d) {\n return d.y;\n}\nfunction rectangleWidth(d) {\n return d.width;\n}\nfunction rectangleHeight(d) {\n return d.height;\n}\nfunction number(_) {\n return typeof _ === 'function' ? _ : () => +_;\n}\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(value, max));\n}\nfunction vg_rect () {\n var x = rectangleX,\n y = rectangleY,\n width = rectangleWidth,\n height = rectangleHeight,\n crTL = number(0),\n crTR = crTL,\n crBL = crTL,\n crBR = crTL,\n context = null;\n function rectangle(_, x0, y0) {\n var buffer,\n x1 = x0 != null ? x0 : +x.call(this, _),\n y1 = y0 != null ? y0 : +y.call(this, _),\n w = +width.call(this, _),\n h = +height.call(this, _),\n s = Math.min(w, h) / 2,\n tl = clamp(+crTL.call(this, _), 0, s),\n tr = clamp(+crTR.call(this, _), 0, s),\n bl = clamp(+crBL.call(this, _), 0, s),\n br = clamp(+crBR.call(this, _), 0, s);\n if (!context) context = buffer = path$3();\n if (tl <= 0 && tr <= 0 && bl <= 0 && br <= 0) {\n context.rect(x1, y1, w, h);\n } else {\n var x2 = x1 + w,\n y2 = y1 + h;\n context.moveTo(x1 + tl, y1);\n context.lineTo(x2 - tr, y1);\n context.bezierCurveTo(x2 - C * tr, y1, x2, y1 + C * tr, x2, y1 + tr);\n context.lineTo(x2, y2 - br);\n context.bezierCurveTo(x2, y2 - C * br, x2 - C * br, y2, x2 - br, y2);\n context.lineTo(x1 + bl, y2);\n context.bezierCurveTo(x1 + C * bl, y2, x1, y2 - C * bl, x1, y2 - bl);\n context.lineTo(x1, y1 + tl);\n context.bezierCurveTo(x1, y1 + C * tl, x1 + C * tl, y1, x1 + tl, y1);\n context.closePath();\n }\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n rectangle.x = function (_) {\n if (arguments.length) {\n x = number(_);\n return rectangle;\n } else {\n return x;\n }\n };\n rectangle.y = function (_) {\n if (arguments.length) {\n y = number(_);\n return rectangle;\n } else {\n return y;\n }\n };\n rectangle.width = function (_) {\n if (arguments.length) {\n width = number(_);\n return rectangle;\n } else {\n return width;\n }\n };\n rectangle.height = function (_) {\n if (arguments.length) {\n height = number(_);\n return rectangle;\n } else {\n return height;\n }\n };\n rectangle.cornerRadius = function (tl, tr, br, bl) {\n if (arguments.length) {\n crTL = number(tl);\n crTR = tr != null ? number(tr) : crTL;\n crBR = br != null ? number(br) : crTL;\n crBL = bl != null ? number(bl) : crTR;\n return rectangle;\n } else {\n return crTL;\n }\n };\n rectangle.context = function (_) {\n if (arguments.length) {\n context = _ == null ? null : _;\n return rectangle;\n } else {\n return context;\n }\n };\n return rectangle;\n}\n\nfunction vg_trail () {\n var x,\n y,\n size,\n defined,\n context = null,\n ready,\n x1,\n y1,\n r1;\n function point(x2, y2, w2) {\n const r2 = w2 / 2;\n if (ready) {\n var ux = y1 - y2,\n uy = x2 - x1;\n if (ux || uy) {\n // get normal vector\n var ud = Math.hypot(ux, uy),\n rx = (ux /= ud) * r1,\n ry = (uy /= ud) * r1,\n t = Math.atan2(uy, ux);\n\n // draw segment\n context.moveTo(x1 - rx, y1 - ry);\n context.lineTo(x2 - ux * r2, y2 - uy * r2);\n context.arc(x2, y2, r2, t - Math.PI, t);\n context.lineTo(x1 + rx, y1 + ry);\n context.arc(x1, y1, r1, t, t + Math.PI);\n } else {\n context.arc(x2, y2, r2, 0, Tau);\n }\n context.closePath();\n } else {\n ready = 1;\n }\n x1 = x2;\n y1 = y2;\n r1 = r2;\n }\n function trail(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n if (context == null) context = buffer = path$3();\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) ready = 0;\n }\n if (defined0) point(+x(d, i, data), +y(d, i, data), +size(d, i, data));\n }\n if (buffer) {\n context = null;\n return buffer + '' || null;\n }\n }\n trail.x = function (_) {\n if (arguments.length) {\n x = _;\n return trail;\n } else {\n return x;\n }\n };\n trail.y = function (_) {\n if (arguments.length) {\n y = _;\n return trail;\n } else {\n return y;\n }\n };\n trail.size = function (_) {\n if (arguments.length) {\n size = _;\n return trail;\n } else {\n return size;\n }\n };\n trail.defined = function (_) {\n if (arguments.length) {\n defined = _;\n return trail;\n } else {\n return defined;\n }\n };\n trail.context = function (_) {\n if (arguments.length) {\n if (_ == null) {\n context = null;\n } else {\n context = _;\n }\n return trail;\n } else {\n return context;\n }\n };\n return trail;\n}\n\nfunction value$1(a, b) {\n return a != null ? a : b;\n}\nconst x = item => item.x || 0,\n y = item => item.y || 0,\n w = item => item.width || 0,\n h = item => item.height || 0,\n xw = item => (item.x || 0) + (item.width || 0),\n yh = item => (item.y || 0) + (item.height || 0),\n sa = item => item.startAngle || 0,\n ea = item => item.endAngle || 0,\n pa = item => item.padAngle || 0,\n ir = item => item.innerRadius || 0,\n or = item => item.outerRadius || 0,\n cr = item => item.cornerRadius || 0,\n tl = item => value$1(item.cornerRadiusTopLeft, item.cornerRadius) || 0,\n tr = item => value$1(item.cornerRadiusTopRight, item.cornerRadius) || 0,\n br = item => value$1(item.cornerRadiusBottomRight, item.cornerRadius) || 0,\n bl = item => value$1(item.cornerRadiusBottomLeft, item.cornerRadius) || 0,\n sz = item => value$1(item.size, 64),\n ts = item => item.size || 1,\n def = item => !(item.defined === false),\n type = item => symbols(item.shape || 'circle');\nconst arcShape = arc$2().startAngle(sa).endAngle(ea).padAngle(pa).innerRadius(ir).outerRadius(or).cornerRadius(cr),\n areavShape = area$2().x(x).y1(y).y0(yh).defined(def),\n areahShape = area$2().y(y).x1(x).x0(xw).defined(def),\n lineShape = line$2().x(x).y(y).defined(def),\n rectShape = vg_rect().x(x).y(y).width(w).height(h).cornerRadius(tl, tr, br, bl),\n symbolShape = symbol$2().type(type).size(sz),\n trailShape = vg_trail().x(x).y(y).defined(def).size(ts);\nfunction hasCornerRadius(item) {\n return item.cornerRadius || item.cornerRadiusTopLeft || item.cornerRadiusTopRight || item.cornerRadiusBottomRight || item.cornerRadiusBottomLeft;\n}\nfunction arc$1(context, item) {\n return arcShape.context(context)(item);\n}\nfunction area$1(context, items) {\n const item = items[0],\n interp = item.interpolate || 'linear';\n return (item.orient === 'horizontal' ? areahShape : areavShape).curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction line$1(context, items) {\n const item = items[0],\n interp = item.interpolate || 'linear';\n return lineShape.curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction rectangle(context, item, x, y) {\n return rectShape.context(context)(item, x, y);\n}\nfunction shape$1(context, item) {\n return (item.mark.shape || item.shape).context(context)(item);\n}\nfunction symbol$1(context, item) {\n return symbolShape.context(context)(item);\n}\nfunction trail$1(context, items) {\n return trailShape.context(context)(items);\n}\n\nvar clip_id = 1;\nfunction resetSVGClipId() {\n clip_id = 1;\n}\nfunction clip$1 (renderer, item, size) {\n var clip = item.clip,\n defs = renderer._defs,\n id = item.clip_id || (item.clip_id = 'clip' + clip_id++),\n c = defs.clipping[id] || (defs.clipping[id] = {\n id: id\n });\n if (isFunction(clip)) {\n c.path = clip(null);\n } else if (hasCornerRadius(size)) {\n c.path = rectangle(null, size, 0, 0);\n } else {\n c.width = size.width || 0;\n c.height = size.height || 0;\n }\n return 'url(#' + id + ')';\n}\n\nfunction Bounds(b) {\n this.clear();\n if (b) this.union(b);\n}\nBounds.prototype = {\n clone() {\n return new Bounds(this);\n },\n clear() {\n this.x1 = +Number.MAX_VALUE;\n this.y1 = +Number.MAX_VALUE;\n this.x2 = -Number.MAX_VALUE;\n this.y2 = -Number.MAX_VALUE;\n return this;\n },\n empty() {\n return this.x1 === +Number.MAX_VALUE && this.y1 === +Number.MAX_VALUE && this.x2 === -Number.MAX_VALUE && this.y2 === -Number.MAX_VALUE;\n },\n equals(b) {\n return this.x1 === b.x1 && this.y1 === b.y1 && this.x2 === b.x2 && this.y2 === b.y2;\n },\n set(x1, y1, x2, y2) {\n if (x2 < x1) {\n this.x2 = x1;\n this.x1 = x2;\n } else {\n this.x1 = x1;\n this.x2 = x2;\n }\n if (y2 < y1) {\n this.y2 = y1;\n this.y1 = y2;\n } else {\n this.y1 = y1;\n this.y2 = y2;\n }\n return this;\n },\n add(x, y) {\n if (x < this.x1) this.x1 = x;\n if (y < this.y1) this.y1 = y;\n if (x > this.x2) this.x2 = x;\n if (y > this.y2) this.y2 = y;\n return this;\n },\n expand(d) {\n this.x1 -= d;\n this.y1 -= d;\n this.x2 += d;\n this.y2 += d;\n return this;\n },\n round() {\n this.x1 = Math.floor(this.x1);\n this.y1 = Math.floor(this.y1);\n this.x2 = Math.ceil(this.x2);\n this.y2 = Math.ceil(this.y2);\n return this;\n },\n scale(s) {\n this.x1 *= s;\n this.y1 *= s;\n this.x2 *= s;\n this.y2 *= s;\n return this;\n },\n translate(dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n return this;\n },\n rotate(angle, x, y) {\n const p = this.rotatedPoints(angle, x, y);\n return this.clear().add(p[0], p[1]).add(p[2], p[3]).add(p[4], p[5]).add(p[6], p[7]);\n },\n rotatedPoints(angle, x, y) {\n var {\n x1,\n y1,\n x2,\n y2\n } = this,\n cos = Math.cos(angle),\n sin = Math.sin(angle),\n cx = x - x * cos + y * sin,\n cy = y - x * sin - y * cos;\n return [cos * x1 - sin * y1 + cx, sin * x1 + cos * y1 + cy, cos * x1 - sin * y2 + cx, sin * x1 + cos * y2 + cy, cos * x2 - sin * y1 + cx, sin * x2 + cos * y1 + cy, cos * x2 - sin * y2 + cx, sin * x2 + cos * y2 + cy];\n },\n union(b) {\n if (b.x1 < this.x1) this.x1 = b.x1;\n if (b.y1 < this.y1) this.y1 = b.y1;\n if (b.x2 > this.x2) this.x2 = b.x2;\n if (b.y2 > this.y2) this.y2 = b.y2;\n return this;\n },\n intersect(b) {\n if (b.x1 > this.x1) this.x1 = b.x1;\n if (b.y1 > this.y1) this.y1 = b.y1;\n if (b.x2 < this.x2) this.x2 = b.x2;\n if (b.y2 < this.y2) this.y2 = b.y2;\n return this;\n },\n encloses(b) {\n return b && this.x1 <= b.x1 && this.x2 >= b.x2 && this.y1 <= b.y1 && this.y2 >= b.y2;\n },\n alignsWith(b) {\n return b && (this.x1 == b.x1 || this.x2 == b.x2 || this.y1 == b.y1 || this.y2 == b.y2);\n },\n intersects(b) {\n return b && !(this.x2 < b.x1 || this.x1 > b.x2 || this.y2 < b.y1 || this.y1 > b.y2);\n },\n contains(x, y) {\n return !(x < this.x1 || x > this.x2 || y < this.y1 || y > this.y2);\n },\n width() {\n return this.x2 - this.x1;\n },\n height() {\n return this.y2 - this.y1;\n }\n};\n\nfunction Item(mark) {\n this.mark = mark;\n this.bounds = this.bounds || new Bounds();\n}\n\nfunction GroupItem(mark) {\n Item.call(this, mark);\n this.items = this.items || [];\n}\ninherits(GroupItem, Item);\n\nfunction ResourceLoader(customLoader) {\n this._pending = 0;\n this._loader = customLoader || loader();\n}\nfunction increment(loader) {\n loader._pending += 1;\n}\nfunction decrement(loader) {\n loader._pending -= 1;\n}\nResourceLoader.prototype = {\n pending() {\n return this._pending;\n },\n sanitizeURL(uri) {\n const loader = this;\n increment(loader);\n return loader._loader.sanitize(uri, {\n context: 'href'\n }).then(opt => {\n decrement(loader);\n return opt;\n }).catch(() => {\n decrement(loader);\n return null;\n });\n },\n loadImage(uri) {\n const loader = this,\n Image = image$1();\n increment(loader);\n return loader._loader.sanitize(uri, {\n context: 'image'\n }).then(opt => {\n const url = opt.href;\n if (!url || !Image) throw {\n url: url\n };\n const img = new Image();\n\n // set crossOrigin only if cors is defined; empty string sets anonymous mode\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/crossOrigin\n const cors = hasOwnProperty(opt, 'crossOrigin') ? opt.crossOrigin : 'anonymous';\n if (cors != null) img.crossOrigin = cors;\n\n // attempt to load image resource\n img.onload = () => decrement(loader);\n img.onerror = () => decrement(loader);\n img.src = url;\n return img;\n }).catch(e => {\n decrement(loader);\n return {\n complete: false,\n width: 0,\n height: 0,\n src: e && e.url || ''\n };\n });\n },\n ready() {\n const loader = this;\n return new Promise(accept => {\n function poll(value) {\n if (!loader.pending()) accept(value);else setTimeout(() => {\n poll(true);\n }, 10);\n }\n poll(false);\n });\n }\n};\n\nfunction boundStroke (bounds, item, miter) {\n if (item.stroke && item.opacity !== 0 && item.strokeOpacity !== 0) {\n const sw = item.strokeWidth != null ? +item.strokeWidth : 1;\n bounds.expand(sw + (miter ? miterAdjustment(item, sw) : 0));\n }\n return bounds;\n}\nfunction miterAdjustment(item, strokeWidth) {\n // TODO: more sophisticated adjustment? Or miter support in boundContext?\n return item.strokeJoin && item.strokeJoin !== 'miter' ? 0 : strokeWidth;\n}\n\nconst circleThreshold = Tau - 1e-8;\nlet bounds, lx, ly, rot, ma, mb, mc, md;\nconst add = (x, y) => bounds.add(x, y);\nconst addL = (x, y) => add(lx = x, ly = y);\nconst addX = x => add(x, bounds.y1);\nconst addY = y => add(bounds.x1, y);\nconst px = (x, y) => ma * x + mc * y;\nconst py = (x, y) => mb * x + md * y;\nconst addp = (x, y) => add(px(x, y), py(x, y));\nconst addpL = (x, y) => addL(px(x, y), py(x, y));\nfunction boundContext (_, deg) {\n bounds = _;\n if (deg) {\n rot = deg * DegToRad;\n ma = md = Math.cos(rot);\n mb = Math.sin(rot);\n mc = -mb;\n } else {\n ma = md = 1;\n rot = mb = mc = 0;\n }\n return context$1;\n}\nconst context$1 = {\n beginPath() {},\n closePath() {},\n moveTo: addpL,\n lineTo: addpL,\n rect(x, y, w, h) {\n if (rot) {\n addp(x + w, y);\n addp(x + w, y + h);\n addp(x, y + h);\n addpL(x, y);\n } else {\n add(x + w, y + h);\n addL(x, y);\n }\n },\n quadraticCurveTo(x1, y1, x2, y2) {\n const px1 = px(x1, y1),\n py1 = py(x1, y1),\n px2 = px(x2, y2),\n py2 = py(x2, y2);\n quadExtrema(lx, px1, px2, addX);\n quadExtrema(ly, py1, py2, addY);\n addL(px2, py2);\n },\n bezierCurveTo(x1, y1, x2, y2, x3, y3) {\n const px1 = px(x1, y1),\n py1 = py(x1, y1),\n px2 = px(x2, y2),\n py2 = py(x2, y2),\n px3 = px(x3, y3),\n py3 = py(x3, y3);\n cubicExtrema(lx, px1, px2, px3, addX);\n cubicExtrema(ly, py1, py2, py3, addY);\n addL(px3, py3);\n },\n arc(cx, cy, r, sa, ea, ccw) {\n sa += rot;\n ea += rot;\n\n // store last point on path\n lx = r * Math.cos(ea) + cx;\n ly = r * Math.sin(ea) + cy;\n if (Math.abs(ea - sa) > circleThreshold) {\n // treat as full circle\n add(cx - r, cy - r);\n add(cx + r, cy + r);\n } else {\n const update = a => add(r * Math.cos(a) + cx, r * Math.sin(a) + cy);\n let s, i;\n\n // sample end points\n update(sa);\n update(ea);\n\n // sample interior points aligned with 90 degrees\n if (ea !== sa) {\n sa = sa % Tau;\n if (sa < 0) sa += Tau;\n ea = ea % Tau;\n if (ea < 0) ea += Tau;\n if (ea < sa) {\n ccw = !ccw; // flip direction\n s = sa;\n sa = ea;\n ea = s; // swap end-points\n }\n\n if (ccw) {\n ea -= Tau;\n s = sa - sa % HalfPi;\n for (i = 0; i < 4 && s > ea; ++i, s -= HalfPi) update(s);\n } else {\n s = sa - sa % HalfPi + HalfPi;\n for (i = 0; i < 4 && s < ea; ++i, s = s + HalfPi) update(s);\n }\n }\n }\n }\n};\nfunction quadExtrema(x0, x1, x2, cb) {\n const t = (x0 - x1) / (x0 + x2 - 2 * x1);\n if (0 < t && t < 1) cb(x0 + (x1 - x0) * t);\n}\nfunction cubicExtrema(x0, x1, x2, x3, cb) {\n const a = x3 - x0 + 3 * x1 - 3 * x2,\n b = x0 + x2 - 2 * x1,\n c = x0 - x1;\n let t0 = 0,\n t1 = 0,\n r;\n\n // solve for parameter t\n if (Math.abs(a) > Epsilon) {\n // quadratic equation\n r = b * b + c * a;\n if (r >= 0) {\n r = Math.sqrt(r);\n t0 = (-b + r) / a;\n t1 = (-b - r) / a;\n }\n } else {\n // linear equation\n t0 = 0.5 * c / b;\n }\n\n // calculate position\n if (0 < t0 && t0 < 1) cb(cubic(t0, x0, x1, x2, x3));\n if (0 < t1 && t1 < 1) cb(cubic(t1, x0, x1, x2, x3));\n}\nfunction cubic(t, x0, x1, x2, x3) {\n const s = 1 - t,\n s2 = s * s,\n t2 = t * t;\n return s2 * s * x0 + 3 * s2 * t * x1 + 3 * s * t2 * x2 + t2 * t * x3;\n}\n\nvar context = (context = canvas(1, 1)) ? context.getContext('2d') : null;\n\nconst b = new Bounds();\nfunction intersectPath(draw) {\n return function (item, brush) {\n // rely on (inaccurate) bounds intersection if no context\n if (!context) return true;\n\n // add path to offscreen graphics context\n draw(context, item);\n\n // get bounds intersection region\n b.clear().union(item.bounds).intersect(brush).round();\n const {\n x1,\n y1,\n x2,\n y2\n } = b;\n\n // iterate over intersection region\n // perform fine grained inclusion test\n for (let y = y1; y <= y2; ++y) {\n for (let x = x1; x <= x2; ++x) {\n if (context.isPointInPath(x, y)) {\n return true;\n }\n }\n }\n\n // false if no hits in intersection region\n return false;\n };\n}\nfunction intersectPoint(item, box) {\n return box.contains(item.x || 0, item.y || 0);\n}\nfunction intersectRect(item, box) {\n const x = item.x || 0,\n y = item.y || 0,\n w = item.width || 0,\n h = item.height || 0;\n return box.intersects(b.set(x, y, x + w, y + h));\n}\nfunction intersectRule(item, box) {\n const x = item.x || 0,\n y = item.y || 0,\n x2 = item.x2 != null ? item.x2 : x,\n y2 = item.y2 != null ? item.y2 : y;\n return intersectBoxLine(box, x, y, x2, y2);\n}\nfunction intersectBoxLine(box, x, y, u, v) {\n const {\n x1,\n y1,\n x2,\n y2\n } = box,\n dx = u - x,\n dy = v - y;\n let t0 = 0,\n t1 = 1,\n p,\n q,\n r,\n e;\n for (e = 0; e < 4; ++e) {\n if (e === 0) {\n p = -dx;\n q = -(x1 - x);\n }\n if (e === 1) {\n p = dx;\n q = x2 - x;\n }\n if (e === 2) {\n p = -dy;\n q = -(y1 - y);\n }\n if (e === 3) {\n p = dy;\n q = y2 - y;\n }\n if (Math.abs(p) < 1e-10 && q < 0) return false;\n r = q / p;\n if (p < 0) {\n if (r > t1) return false;else if (r > t0) t0 = r;\n } else if (p > 0) {\n if (r < t0) return false;else if (r < t1) t1 = r;\n }\n }\n return true;\n}\n\nfunction blend (context, item) {\n context.globalCompositeOperation = item.blend || 'source-over';\n}\n\nfunction value (value, dflt) {\n return value == null ? dflt : value;\n}\n\nfunction addStops(gradient, stops) {\n const n = stops.length;\n for (let i = 0; i < n; ++i) {\n gradient.addColorStop(stops[i].offset, stops[i].color);\n }\n return gradient;\n}\nfunction gradient (context, spec, bounds) {\n const w = bounds.width(),\n h = bounds.height();\n let gradient;\n if (spec.gradient === 'radial') {\n gradient = context.createRadialGradient(bounds.x1 + value(spec.x1, 0.5) * w, bounds.y1 + value(spec.y1, 0.5) * h, Math.max(w, h) * value(spec.r1, 0), bounds.x1 + value(spec.x2, 0.5) * w, bounds.y1 + value(spec.y2, 0.5) * h, Math.max(w, h) * value(spec.r2, 0.5));\n } else {\n // linear gradient\n const x1 = value(spec.x1, 0),\n y1 = value(spec.y1, 0),\n x2 = value(spec.x2, 1),\n y2 = value(spec.y2, 0);\n if (x1 === x2 || y1 === y2 || w === h) {\n // axis aligned: use normal gradient\n gradient = context.createLinearGradient(bounds.x1 + x1 * w, bounds.y1 + y1 * h, bounds.x1 + x2 * w, bounds.y1 + y2 * h);\n } else {\n // not axis aligned: render gradient into a pattern (#2365)\n // this allows us to use normalized bounding box coordinates\n const image = canvas(Math.ceil(w), Math.ceil(h)),\n ictx = image.getContext('2d');\n ictx.scale(w, h);\n ictx.fillStyle = addStops(ictx.createLinearGradient(x1, y1, x2, y2), spec.stops);\n ictx.fillRect(0, 0, w, h);\n return context.createPattern(image, 'no-repeat');\n }\n }\n return addStops(gradient, spec.stops);\n}\n\nfunction color (context, item, value) {\n return isGradient(value) ? gradient(context, value, item.bounds) : value;\n}\n\nfunction fill (context, item, opacity) {\n opacity *= item.fillOpacity == null ? 1 : item.fillOpacity;\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.fillStyle = color(context, item, item.fill);\n return true;\n } else {\n return false;\n }\n}\n\nvar Empty = [];\nfunction stroke (context, item, opacity) {\n var lw = (lw = item.strokeWidth) != null ? lw : 1;\n if (lw <= 0) return false;\n opacity *= item.strokeOpacity == null ? 1 : item.strokeOpacity;\n if (opacity > 0) {\n context.globalAlpha = opacity;\n context.strokeStyle = color(context, item, item.stroke);\n context.lineWidth = lw;\n context.lineCap = item.strokeCap || 'butt';\n context.lineJoin = item.strokeJoin || 'miter';\n context.miterLimit = item.strokeMiterLimit || 10;\n if (context.setLineDash) {\n context.setLineDash(item.strokeDash || Empty);\n context.lineDashOffset = item.strokeDashOffset || 0;\n }\n return true;\n } else {\n return false;\n }\n}\n\nfunction compare(a, b) {\n return a.zindex - b.zindex || a.index - b.index;\n}\nfunction zorder(scene) {\n if (!scene.zdirty) return scene.zitems;\n var items = scene.items,\n output = [],\n item,\n i,\n n;\n for (i = 0, n = items.length; i < n; ++i) {\n item = items[i];\n item.index = i;\n if (item.zindex) output.push(item);\n }\n scene.zdirty = false;\n return scene.zitems = output.sort(compare);\n}\nfunction visit(scene, visitor) {\n var items = scene.items,\n i,\n n;\n if (!items || !items.length) return;\n const zitems = zorder(scene);\n if (zitems && zitems.length) {\n for (i = 0, n = items.length; i < n; ++i) {\n if (!items[i].zindex) visitor(items[i]);\n }\n items = zitems;\n }\n for (i = 0, n = items.length; i < n; ++i) {\n visitor(items[i]);\n }\n}\nfunction pickVisit(scene, visitor) {\n var items = scene.items,\n hit,\n i;\n if (!items || !items.length) return null;\n const zitems = zorder(scene);\n if (zitems && zitems.length) items = zitems;\n for (i = items.length; --i >= 0;) {\n if (hit = visitor(items[i])) return hit;\n }\n if (items === zitems) {\n for (items = scene.items, i = items.length; --i >= 0;) {\n if (!items[i].zindex) {\n if (hit = visitor(items[i])) return hit;\n }\n }\n }\n return null;\n}\n\nfunction drawAll(path) {\n return function (context, scene, bounds) {\n visit(scene, item => {\n if (!bounds || bounds.intersects(item.bounds)) {\n drawPath(path, context, item, item);\n }\n });\n };\n}\nfunction drawOne(path) {\n return function (context, scene, bounds) {\n if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) {\n drawPath(path, context, scene.items[0], scene.items);\n }\n };\n}\nfunction drawPath(path, context, item, items) {\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity === 0) return;\n if (path(context, items)) return;\n blend(context, item);\n if (item.fill && fill(context, item, opacity)) {\n context.fill();\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.stroke();\n }\n}\n\nfunction pick$1(test) {\n test = test || truthy;\n return function (context, scene, x, y, gx, gy) {\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n return pickVisit(scene, item => {\n const b = item.bounds;\n // first hit test against bounding box\n if (b && !b.contains(gx, gy) || !b) return;\n // if in bounding box, perform more careful test\n if (test(context, item, x, y, gx, gy)) return item;\n });\n };\n}\nfunction hitPath(path, filled) {\n return function (context, o, x, y) {\n var item = Array.isArray(o) ? o[0] : o,\n fill = filled == null ? item.fill : filled,\n stroke = item.stroke && context.isPointInStroke,\n lw,\n lc;\n if (stroke) {\n lw = item.strokeWidth;\n lc = item.strokeCap;\n context.lineWidth = lw != null ? lw : 1;\n context.lineCap = lc != null ? lc : 'butt';\n }\n return path(context, o) ? false : fill && context.isPointInPath(x, y) || stroke && context.isPointInStroke(x, y);\n };\n}\nfunction pickPath(path) {\n return pick$1(hitPath(path));\n}\n\nfunction translate(x, y) {\n return 'translate(' + x + ',' + y + ')';\n}\nfunction rotate(a) {\n return 'rotate(' + a + ')';\n}\nfunction scale(scaleX, scaleY) {\n return 'scale(' + scaleX + ',' + scaleY + ')';\n}\nfunction translateItem(item) {\n return translate(item.x || 0, item.y || 0);\n}\nfunction rotateItem(item) {\n return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '');\n}\nfunction transformItem(item) {\n return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '') + (item.scaleX || item.scaleY ? ' ' + scale(item.scaleX || 1, item.scaleY || 1) : '');\n}\n\nfunction markItemPath (type, shape, isect) {\n function attr(emit, item) {\n emit('transform', rotateItem(item));\n emit('d', shape(null, item));\n }\n function bound(bounds, item) {\n shape(boundContext(bounds, item.angle), item);\n return boundStroke(bounds, item).translate(item.x || 0, item.y || 0);\n }\n function draw(context, item) {\n var x = item.x || 0,\n y = item.y || 0,\n a = item.angle || 0;\n context.translate(x, y);\n if (a) context.rotate(a *= DegToRad);\n context.beginPath();\n shape(context, item);\n if (a) context.rotate(-a);\n context.translate(-x, -y);\n }\n return {\n type: type,\n tag: 'path',\n nested: false,\n attr: attr,\n bound: bound,\n draw: drawAll(draw),\n pick: pickPath(draw),\n isect: isect || intersectPath(draw)\n };\n}\n\nvar arc = markItemPath('arc', arc$1);\n\nfunction pickArea(a, p) {\n var v = a[0].orient === 'horizontal' ? p[1] : p[0],\n z = a[0].orient === 'horizontal' ? 'y' : 'x',\n i = a.length,\n min = +Infinity,\n hit,\n d;\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n d = Math.abs(a[i][z] - v);\n if (d < min) {\n min = d;\n hit = a[i];\n }\n }\n return hit;\n}\nfunction pickLine(a, p) {\n var t = Math.pow(a[0].strokeWidth || 1, 2),\n i = a.length,\n dx,\n dy,\n dd;\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n if (dd < t) return a[i];\n }\n return null;\n}\nfunction pickTrail(a, p) {\n var i = a.length,\n dx,\n dy,\n dd;\n while (--i >= 0) {\n if (a[i].defined === false) continue;\n dx = a[i].x - p[0];\n dy = a[i].y - p[1];\n dd = dx * dx + dy * dy;\n dx = a[i].size || 1;\n if (dd < dx * dx) return a[i];\n }\n return null;\n}\n\nfunction markMultiItemPath (type, shape, tip) {\n function attr(emit, item) {\n var items = item.mark.items;\n if (items.length) emit('d', shape(null, items));\n }\n function bound(bounds, mark) {\n var items = mark.items;\n if (items.length === 0) {\n return bounds;\n } else {\n shape(boundContext(bounds), items);\n return boundStroke(bounds, items[0]);\n }\n }\n function draw(context, items) {\n context.beginPath();\n shape(context, items);\n }\n const hit = hitPath(draw);\n function pick(context, scene, x, y, gx, gy) {\n var items = scene.items,\n b = scene.bounds;\n if (!items || !items.length || b && !b.contains(gx, gy)) {\n return null;\n }\n x *= context.pixelRatio;\n y *= context.pixelRatio;\n return hit(context, items, x, y) ? items[0] : null;\n }\n return {\n type: type,\n tag: 'path',\n nested: true,\n attr: attr,\n bound: bound,\n draw: drawOne(draw),\n pick: pick,\n isect: intersectPoint,\n tip: tip\n };\n}\n\nvar area = markMultiItemPath('area', area$1, pickArea);\n\nfunction clip (context, scene) {\n var clip = scene.clip;\n context.save();\n if (isFunction(clip)) {\n context.beginPath();\n clip(context);\n context.clip();\n } else {\n clipGroup(context, scene.group);\n }\n}\nfunction clipGroup(context, group) {\n context.beginPath();\n hasCornerRadius(group) ? rectangle(context, group, 0, 0) : context.rect(0, 0, group.width || 0, group.height || 0);\n context.clip();\n}\n\nfunction offset$1(item) {\n const sw = value(item.strokeWidth, 1);\n return item.strokeOffset != null ? item.strokeOffset : item.stroke && sw > 0.5 && sw < 1.5 ? 0.5 - Math.abs(sw - 1) : 0;\n}\nfunction attr$5(emit, item) {\n emit('transform', translateItem(item));\n}\nfunction emitRectangle(emit, item) {\n const off = offset$1(item);\n emit('d', rectangle(null, item, off, off));\n}\nfunction background(emit, item) {\n emit('class', 'background');\n emit('aria-hidden', true);\n emitRectangle(emit, item);\n}\nfunction foreground(emit, item) {\n emit('class', 'foreground');\n emit('aria-hidden', true);\n if (item.strokeForeground) {\n emitRectangle(emit, item);\n } else {\n emit('d', '');\n }\n}\nfunction content(emit, item, renderer) {\n const url = item.clip ? clip$1(renderer, item, item) : null;\n emit('clip-path', url);\n}\nfunction bound$5(bounds, group) {\n if (!group.clip && group.items) {\n const items = group.items,\n m = items.length;\n for (let j = 0; j < m; ++j) {\n bounds.union(items[j].bounds);\n }\n }\n if ((group.clip || group.width || group.height) && !group.noBound) {\n bounds.add(0, 0).add(group.width || 0, group.height || 0);\n }\n boundStroke(bounds, group);\n return bounds.translate(group.x || 0, group.y || 0);\n}\nfunction rectanglePath(context, group, x, y) {\n const off = offset$1(group);\n context.beginPath();\n rectangle(context, group, (x || 0) + off, (y || 0) + off);\n}\nconst hitBackground = hitPath(rectanglePath);\nconst hitForeground = hitPath(rectanglePath, false);\nconst hitCorner = hitPath(rectanglePath, true);\nfunction draw$4(context, scene, bounds, markTypes) {\n visit(scene, group => {\n const gx = group.x || 0,\n gy = group.y || 0,\n fore = group.strokeForeground,\n opacity = group.opacity == null ? 1 : group.opacity;\n\n // draw group background\n if ((group.stroke || group.fill) && opacity) {\n rectanglePath(context, group, gx, gy);\n blend(context, group);\n if (group.fill && fill(context, group, opacity)) {\n context.fill();\n }\n if (group.stroke && !fore && stroke(context, group, opacity)) {\n context.stroke();\n }\n }\n\n // setup graphics context, set clip and bounds\n context.save();\n context.translate(gx, gy);\n if (group.clip) clipGroup(context, group);\n if (bounds) bounds.translate(-gx, -gy);\n\n // draw group contents\n visit(group, item => {\n if (item.marktype === 'group' || markTypes == null || markTypes.includes(item.marktype)) {\n this.draw(context, item, bounds, markTypes);\n }\n });\n\n // restore graphics context\n if (bounds) bounds.translate(gx, gy);\n context.restore();\n\n // draw group foreground\n if (fore && group.stroke && opacity) {\n rectanglePath(context, group, gx, gy);\n blend(context, group);\n if (stroke(context, group, opacity)) {\n context.stroke();\n }\n }\n });\n}\nfunction pick(context, scene, x, y, gx, gy) {\n if (scene.bounds && !scene.bounds.contains(gx, gy) || !scene.items) {\n return null;\n }\n const cx = x * context.pixelRatio,\n cy = y * context.pixelRatio;\n return pickVisit(scene, group => {\n let hit, dx, dy;\n\n // first hit test bounding box\n const b = group.bounds;\n if (b && !b.contains(gx, gy)) return;\n\n // passed bounds check, test rectangular clip\n dx = group.x || 0;\n dy = group.y || 0;\n const dw = dx + (group.width || 0),\n dh = dy + (group.height || 0),\n c = group.clip;\n if (c && (gx < dx || gx > dw || gy < dy || gy > dh)) return;\n\n // adjust coordinate system\n context.save();\n context.translate(dx, dy);\n dx = gx - dx;\n dy = gy - dy;\n\n // test background for rounded corner clip\n if (c && hasCornerRadius(group) && !hitCorner(context, group, cx, cy)) {\n context.restore();\n return null;\n }\n const fore = group.strokeForeground,\n ix = scene.interactive !== false;\n\n // hit test against group foreground\n if (ix && fore && group.stroke && hitForeground(context, group, cx, cy)) {\n context.restore();\n return group;\n }\n\n // hit test against contained marks\n hit = pickVisit(group, mark => pickMark(mark, dx, dy) ? this.pick(mark, x, y, dx, dy) : null);\n\n // hit test against group background\n if (!hit && ix && (group.fill || !fore && group.stroke) && hitBackground(context, group, cx, cy)) {\n hit = group;\n }\n\n // restore state and return\n context.restore();\n return hit || null;\n });\n}\nfunction pickMark(mark, x, y) {\n return (mark.interactive !== false || mark.marktype === 'group') && mark.bounds && mark.bounds.contains(x, y);\n}\nvar group = {\n type: 'group',\n tag: 'g',\n nested: false,\n attr: attr$5,\n bound: bound$5,\n draw: draw$4,\n pick: pick,\n isect: intersectRect,\n content: content,\n background: background,\n foreground: foreground\n};\n\nvar metadata = {\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'xmlns:xlink': 'http://www.w3.org/1999/xlink',\n 'version': '1.1'\n};\n\nfunction getImage(item, renderer) {\n var image = item.image;\n if (!image || item.url && item.url !== image.url) {\n image = {\n complete: false,\n width: 0,\n height: 0\n };\n renderer.loadImage(item.url).then(image => {\n item.image = image;\n item.image.url = item.url;\n });\n }\n return image;\n}\nfunction imageWidth(item, image) {\n return item.width != null ? item.width : !image || !image.width ? 0 : item.aspect !== false && item.height ? item.height * image.width / image.height : image.width;\n}\nfunction imageHeight(item, image) {\n return item.height != null ? item.height : !image || !image.height ? 0 : item.aspect !== false && item.width ? item.width * image.height / image.width : image.height;\n}\nfunction imageXOffset(align, w) {\n return align === 'center' ? w / 2 : align === 'right' ? w : 0;\n}\nfunction imageYOffset(baseline, h) {\n return baseline === 'middle' ? h / 2 : baseline === 'bottom' ? h : 0;\n}\nfunction attr$4(emit, item, renderer) {\n const img = getImage(item, renderer),\n w = imageWidth(item, img),\n h = imageHeight(item, img),\n x = (item.x || 0) - imageXOffset(item.align, w),\n y = (item.y || 0) - imageYOffset(item.baseline, h),\n i = !img.src && img.toDataURL ? img.toDataURL() : img.src || '';\n emit('href', i, metadata['xmlns:xlink'], 'xlink:href');\n emit('transform', translate(x, y));\n emit('width', w);\n emit('height', h);\n emit('preserveAspectRatio', item.aspect === false ? 'none' : 'xMidYMid');\n}\nfunction bound$4(bounds, item) {\n const img = item.image,\n w = imageWidth(item, img),\n h = imageHeight(item, img),\n x = (item.x || 0) - imageXOffset(item.align, w),\n y = (item.y || 0) - imageYOffset(item.baseline, h);\n return bounds.set(x, y, x + w, y + h);\n}\nfunction draw$3(context, scene, bounds) {\n visit(scene, item => {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n const img = getImage(item, this);\n let w = imageWidth(item, img);\n let h = imageHeight(item, img);\n if (w === 0 || h === 0) return; // early exit\n\n let x = (item.x || 0) - imageXOffset(item.align, w),\n y = (item.y || 0) - imageYOffset(item.baseline, h),\n opacity,\n ar0,\n ar1,\n t;\n if (item.aspect !== false) {\n ar0 = img.width / img.height;\n ar1 = item.width / item.height;\n if (ar0 === ar0 && ar1 === ar1 && ar0 !== ar1) {\n if (ar1 < ar0) {\n t = w / ar0;\n y += (h - t) / 2;\n h = t;\n } else {\n t = h * ar0;\n x += (w - t) / 2;\n w = t;\n }\n }\n }\n if (img.complete || img.toDataURL) {\n blend(context, item);\n context.globalAlpha = (opacity = item.opacity) != null ? opacity : 1;\n context.imageSmoothingEnabled = item.smooth !== false;\n context.drawImage(img, x, y, w, h);\n }\n });\n}\nvar image = {\n type: 'image',\n tag: 'image',\n nested: false,\n attr: attr$4,\n bound: bound$4,\n draw: draw$3,\n pick: pick$1(),\n isect: truthy,\n // bounds check is sufficient\n get: getImage,\n xOffset: imageXOffset,\n yOffset: imageYOffset\n};\n\nvar line = markMultiItemPath('line', line$1, pickLine);\n\nfunction attr$3(emit, item) {\n var sx = item.scaleX || 1,\n sy = item.scaleY || 1;\n if (sx !== 1 || sy !== 1) {\n emit('vector-effect', 'non-scaling-stroke');\n }\n emit('transform', transformItem(item));\n emit('d', item.path);\n}\nfunction path$1(context, item) {\n var path = item.path;\n if (path == null) return true;\n var x = item.x || 0,\n y = item.y || 0,\n sx = item.scaleX || 1,\n sy = item.scaleY || 1,\n a = (item.angle || 0) * DegToRad,\n cache = item.pathCache;\n if (!cache || cache.path !== path) {\n (item.pathCache = cache = parse(path)).path = path;\n }\n if (a && context.rotate && context.translate) {\n context.translate(x, y);\n context.rotate(a);\n pathRender(context, cache, 0, 0, sx, sy);\n context.rotate(-a);\n context.translate(-x, -y);\n } else {\n pathRender(context, cache, x, y, sx, sy);\n }\n}\nfunction bound$3(bounds, item) {\n return path$1(boundContext(bounds, item.angle), item) ? bounds.set(0, 0, 0, 0) : boundStroke(bounds, item, true);\n}\nvar path$2 = {\n type: 'path',\n tag: 'path',\n nested: false,\n attr: attr$3,\n bound: bound$3,\n draw: drawAll(path$1),\n pick: pickPath(path$1),\n isect: intersectPath(path$1)\n};\n\nfunction attr$2(emit, item) {\n emit('d', rectangle(null, item));\n}\nfunction bound$2(bounds, item) {\n var x, y;\n return boundStroke(bounds.set(x = item.x || 0, y = item.y || 0, x + item.width || 0, y + item.height || 0), item);\n}\nfunction draw$2(context, item) {\n context.beginPath();\n rectangle(context, item);\n}\nvar rect = {\n type: 'rect',\n tag: 'path',\n nested: false,\n attr: attr$2,\n bound: bound$2,\n draw: drawAll(draw$2),\n pick: pickPath(draw$2),\n isect: intersectRect\n};\n\nfunction attr$1(emit, item) {\n emit('transform', translateItem(item));\n emit('x2', item.x2 != null ? item.x2 - (item.x || 0) : 0);\n emit('y2', item.y2 != null ? item.y2 - (item.y || 0) : 0);\n}\nfunction bound$1(bounds, item) {\n var x1, y1;\n return boundStroke(bounds.set(x1 = item.x || 0, y1 = item.y || 0, item.x2 != null ? item.x2 : x1, item.y2 != null ? item.y2 : y1), item);\n}\nfunction path(context, item, opacity) {\n var x1, y1, x2, y2;\n if (item.stroke && stroke(context, item, opacity)) {\n x1 = item.x || 0;\n y1 = item.y || 0;\n x2 = item.x2 != null ? item.x2 : x1;\n y2 = item.y2 != null ? item.y2 : y1;\n context.beginPath();\n context.moveTo(x1, y1);\n context.lineTo(x2, y2);\n return true;\n }\n return false;\n}\nfunction draw$1(context, scene, bounds) {\n visit(scene, item => {\n if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n var opacity = item.opacity == null ? 1 : item.opacity;\n if (opacity && path(context, item, opacity)) {\n blend(context, item);\n context.stroke();\n }\n });\n}\nfunction hit$1(context, item, x, y) {\n if (!context.isPointInStroke) return false;\n return path(context, item, 1) && context.isPointInStroke(x, y);\n}\nvar rule = {\n type: 'rule',\n tag: 'line',\n nested: false,\n attr: attr$1,\n bound: bound$1,\n draw: draw$1,\n pick: pick$1(hit$1),\n isect: intersectRule\n};\n\nvar shape = markItemPath('shape', shape$1);\n\nvar symbol = markItemPath('symbol', symbol$1, intersectPoint);\n\n// memoize text width measurement\nconst widthCache = lruCache();\nvar textMetrics = {\n height: fontSize,\n measureWidth: measureWidth,\n estimateWidth: estimateWidth,\n width: estimateWidth,\n canvas: useCanvas\n};\nuseCanvas(true);\nfunction useCanvas(use) {\n textMetrics.width = use && context ? measureWidth : estimateWidth;\n}\n\n// make simple estimate if no canvas is available\nfunction estimateWidth(item, text) {\n return _estimateWidth(textValue(item, text), fontSize(item));\n}\nfunction _estimateWidth(text, currentFontHeight) {\n return ~~(0.8 * text.length * currentFontHeight);\n}\n\n// measure text width if canvas is available\nfunction measureWidth(item, text) {\n return fontSize(item) <= 0 || !(text = textValue(item, text)) ? 0 : _measureWidth(text, font(item));\n}\nfunction _measureWidth(text, currentFont) {\n const key = `(${currentFont}) ${text}`;\n let width = widthCache.get(key);\n if (width === undefined) {\n context.font = currentFont;\n width = context.measureText(text).width;\n widthCache.set(key, width);\n }\n return width;\n}\nfunction fontSize(item) {\n return item.fontSize != null ? +item.fontSize || 0 : 11;\n}\nfunction lineHeight(item) {\n return item.lineHeight != null ? item.lineHeight : fontSize(item) + 2;\n}\nfunction lineArray(_) {\n return isArray(_) ? _.length > 1 ? _ : _[0] : _;\n}\nfunction textLines(item) {\n return lineArray(item.lineBreak && item.text && !isArray(item.text) ? item.text.split(item.lineBreak) : item.text);\n}\nfunction multiLineOffset(item) {\n const tl = textLines(item);\n return (isArray(tl) ? tl.length - 1 : 0) * lineHeight(item);\n}\nfunction textValue(item, line) {\n const text = line == null ? '' : (line + '').trim();\n return item.limit > 0 && text.length ? truncate(item, text) : text;\n}\nfunction widthGetter(item) {\n if (textMetrics.width === measureWidth) {\n // we are using canvas\n const currentFont = font(item);\n return text => _measureWidth(text, currentFont);\n } else if (textMetrics.width === estimateWidth) {\n // we are relying on estimates\n const currentFontHeight = fontSize(item);\n return text => _estimateWidth(text, currentFontHeight);\n } else {\n // User defined textMetrics.width function in use (e.g. vl-convert)\n return text => textMetrics.width(item, text);\n }\n}\nfunction truncate(item, text) {\n var limit = +item.limit,\n width = widthGetter(item);\n if (width(text) < limit) return text;\n var ellipsis = item.ellipsis || '\\u2026',\n rtl = item.dir === 'rtl',\n lo = 0,\n hi = text.length,\n mid;\n limit -= width(ellipsis);\n if (rtl) {\n while (lo < hi) {\n mid = lo + hi >>> 1;\n if (width(text.slice(mid)) > limit) lo = mid + 1;else hi = mid;\n }\n return ellipsis + text.slice(lo);\n } else {\n while (lo < hi) {\n mid = 1 + (lo + hi >>> 1);\n if (width(text.slice(0, mid)) < limit) lo = mid;else hi = mid - 1;\n }\n return text.slice(0, lo) + ellipsis;\n }\n}\nfunction fontFamily(item, quote) {\n var font = item.font;\n return (quote && font ? String(font).replace(/\"/g, '\\'') : font) || 'sans-serif';\n}\nfunction font(item, quote) {\n return '' + (item.fontStyle ? item.fontStyle + ' ' : '') + (item.fontVariant ? item.fontVariant + ' ' : '') + (item.fontWeight ? item.fontWeight + ' ' : '') + fontSize(item) + 'px ' + fontFamily(item, quote);\n}\nfunction offset(item) {\n // perform our own font baseline calculation\n // why? not all browsers support SVG 1.1 'alignment-baseline' :(\n // this also ensures consistent layout across renderers\n var baseline = item.baseline,\n h = fontSize(item);\n return Math.round(baseline === 'top' ? 0.79 * h : baseline === 'middle' ? 0.30 * h : baseline === 'bottom' ? -0.21 * h : baseline === 'line-top' ? 0.29 * h + 0.5 * lineHeight(item) : baseline === 'line-bottom' ? 0.29 * h - 0.5 * lineHeight(item) : 0);\n}\n\nconst textAlign = {\n 'left': 'start',\n 'center': 'middle',\n 'right': 'end'\n};\nconst tempBounds = new Bounds();\nfunction anchorPoint(item) {\n var x = item.x || 0,\n y = item.y || 0,\n r = item.radius || 0,\n t;\n if (r) {\n t = (item.theta || 0) - HalfPi;\n x += r * Math.cos(t);\n y += r * Math.sin(t);\n }\n tempBounds.x1 = x;\n tempBounds.y1 = y;\n return tempBounds;\n}\nfunction attr(emit, item) {\n var dx = item.dx || 0,\n dy = (item.dy || 0) + offset(item),\n p = anchorPoint(item),\n x = p.x1,\n y = p.y1,\n a = item.angle || 0,\n t;\n emit('text-anchor', textAlign[item.align] || 'start');\n if (a) {\n t = translate(x, y) + ' ' + rotate(a);\n if (dx || dy) t += ' ' + translate(dx, dy);\n } else {\n t = translate(x + dx, y + dy);\n }\n emit('transform', t);\n}\nfunction bound(bounds, item, mode) {\n var h = textMetrics.height(item),\n a = item.align,\n p = anchorPoint(item),\n x = p.x1,\n y = p.y1,\n dx = item.dx || 0,\n dy = (item.dy || 0) + offset(item) - Math.round(0.8 * h),\n // use 4/5 offset\n tl = textLines(item),\n w;\n\n // get dimensions\n if (isArray(tl)) {\n // multi-line text\n h += lineHeight(item) * (tl.length - 1);\n w = tl.reduce((w, t) => Math.max(w, textMetrics.width(item, t)), 0);\n } else {\n // single-line text\n w = textMetrics.width(item, tl);\n }\n\n // horizontal alignment\n if (a === 'center') {\n dx -= w / 2;\n } else if (a === 'right') {\n dx -= w;\n } else ;\n bounds.set(dx += x, dy += y, dx + w, dy + h);\n if (item.angle && !mode) {\n bounds.rotate(item.angle * DegToRad, x, y);\n } else if (mode === 2) {\n return bounds.rotatedPoints(item.angle * DegToRad, x, y);\n }\n return bounds;\n}\nfunction draw(context, scene, bounds) {\n visit(scene, item => {\n var opacity = item.opacity == null ? 1 : item.opacity,\n p,\n x,\n y,\n i,\n lh,\n tl,\n str;\n if (bounds && !bounds.intersects(item.bounds) ||\n // bounds check\n opacity === 0 || item.fontSize <= 0 || item.text == null || item.text.length === 0) return;\n context.font = font(item);\n context.textAlign = item.align || 'left';\n p = anchorPoint(item);\n x = p.x1, y = p.y1;\n if (item.angle) {\n context.save();\n context.translate(x, y);\n context.rotate(item.angle * DegToRad);\n x = y = 0; // reset x, y\n }\n\n x += item.dx || 0;\n y += (item.dy || 0) + offset(item);\n tl = textLines(item);\n blend(context, item);\n if (isArray(tl)) {\n lh = lineHeight(item);\n for (i = 0; i < tl.length; ++i) {\n str = textValue(item, tl[i]);\n if (item.fill && fill(context, item, opacity)) {\n context.fillText(str, x, y);\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.strokeText(str, x, y);\n }\n y += lh;\n }\n } else {\n str = textValue(item, tl);\n if (item.fill && fill(context, item, opacity)) {\n context.fillText(str, x, y);\n }\n if (item.stroke && stroke(context, item, opacity)) {\n context.strokeText(str, x, y);\n }\n }\n if (item.angle) context.restore();\n });\n}\nfunction hit(context, item, x, y, gx, gy) {\n if (item.fontSize <= 0) return false;\n if (!item.angle) return true; // bounds sufficient if no rotation\n\n // project point into space of unrotated bounds\n var p = anchorPoint(item),\n ax = p.x1,\n ay = p.y1,\n b = bound(tempBounds, item, 1),\n a = -item.angle * DegToRad,\n cos = Math.cos(a),\n sin = Math.sin(a),\n px = cos * gx - sin * gy + (ax - cos * ax + sin * ay),\n py = sin * gx + cos * gy + (ay - sin * ax - cos * ay);\n return b.contains(px, py);\n}\nfunction intersectText(item, box) {\n const p = bound(tempBounds, item, 2);\n return intersectBoxLine(box, p[0], p[1], p[2], p[3]) || intersectBoxLine(box, p[0], p[1], p[4], p[5]) || intersectBoxLine(box, p[4], p[5], p[6], p[7]) || intersectBoxLine(box, p[2], p[3], p[6], p[7]);\n}\nvar text = {\n type: 'text',\n tag: 'text',\n nested: false,\n attr: attr,\n bound: bound,\n draw: draw,\n pick: pick$1(hit),\n isect: intersectText\n};\n\nvar trail = markMultiItemPath('trail', trail$1, pickTrail);\n\nvar Marks = {\n arc: arc,\n area: area,\n group: group,\n image: image,\n line: line,\n path: path$2,\n rect: rect,\n rule: rule,\n shape: shape,\n symbol: symbol,\n text: text,\n trail: trail\n};\n\nfunction boundItem (item, func, opt) {\n var type = Marks[item.mark.marktype],\n bound = func || type.bound;\n if (type.nested) item = item.mark;\n return bound(item.bounds || (item.bounds = new Bounds()), item, opt);\n}\n\nvar DUMMY = {\n mark: null\n};\nfunction boundMark (mark, bounds, opt) {\n var type = Marks[mark.marktype],\n bound = type.bound,\n items = mark.items,\n hasItems = items && items.length,\n i,\n n,\n item,\n b;\n if (type.nested) {\n if (hasItems) {\n item = items[0];\n } else {\n // no items, fake it\n DUMMY.mark = mark;\n item = DUMMY;\n }\n b = boundItem(item, bound, opt);\n bounds = bounds && bounds.union(b) || b;\n return bounds;\n }\n bounds = bounds || mark.bounds && mark.bounds.clear() || new Bounds();\n if (hasItems) {\n for (i = 0, n = items.length; i < n; ++i) {\n bounds.union(boundItem(items[i], bound, opt));\n }\n }\n return mark.bounds = bounds;\n}\n\nconst keys = ['marktype', 'name', 'role', 'interactive', 'clip', 'items', 'zindex', 'x', 'y', 'width', 'height', 'align', 'baseline',\n// layout\n'fill', 'fillOpacity', 'opacity', 'blend',\n// fill\n'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap',\n// stroke\n'strokeDash', 'strokeDashOffset',\n// stroke dash\n'strokeForeground', 'strokeOffset',\n// group\n'startAngle', 'endAngle', 'innerRadius', 'outerRadius',\n// arc\n'cornerRadius', 'padAngle',\n// arc, rect\n'cornerRadiusTopLeft', 'cornerRadiusTopRight',\n// rect, group\n'cornerRadiusBottomLeft', 'cornerRadiusBottomRight', 'interpolate', 'tension', 'orient', 'defined',\n// area, line\n'url', 'aspect', 'smooth',\n// image\n'path', 'scaleX', 'scaleY',\n// path\n'x2', 'y2',\n// rule\n'size', 'shape',\n// symbol\n'text', 'angle', 'theta', 'radius', 'dir', 'dx', 'dy',\n// text\n'ellipsis', 'limit', 'lineBreak', 'lineHeight', 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant',\n// font\n'description', 'aria', 'ariaRole', 'ariaRoleDescription' // aria\n];\n\nfunction sceneToJSON(scene, indent) {\n return JSON.stringify(scene, keys, indent);\n}\nfunction sceneFromJSON(json) {\n const scene = typeof json === 'string' ? JSON.parse(json) : json;\n return initialize(scene);\n}\nfunction initialize(scene) {\n var type = scene.marktype,\n items = scene.items,\n parent,\n i,\n n;\n if (items) {\n for (i = 0, n = items.length; i < n; ++i) {\n parent = type ? 'mark' : 'group';\n items[i][parent] = scene;\n if (items[i].zindex) items[i][parent].zdirty = true;\n if ('group' === (type || parent)) initialize(items[i]);\n }\n }\n if (type) boundMark(scene);\n return scene;\n}\n\nfunction Scenegraph(scene) {\n if (arguments.length) {\n this.root = sceneFromJSON(scene);\n } else {\n this.root = createMark({\n marktype: 'group',\n name: 'root',\n role: 'frame'\n });\n this.root.items = [new GroupItem(this.root)];\n }\n}\nScenegraph.prototype = {\n toJSON(indent) {\n return sceneToJSON(this.root, indent || 0);\n },\n mark(markdef, group, index) {\n group = group || this.root.items[0];\n const mark = createMark(markdef, group);\n group.items[index] = mark;\n if (mark.zindex) mark.group.zdirty = true;\n return mark;\n }\n};\nfunction createMark(def, group) {\n const mark = {\n bounds: new Bounds(),\n clip: !!def.clip,\n group: group,\n interactive: def.interactive === false ? false : true,\n items: [],\n marktype: def.marktype,\n name: def.name || undefined,\n role: def.role || undefined,\n zindex: def.zindex || 0\n };\n\n // add accessibility properties if defined\n if (def.aria != null) {\n mark.aria = def.aria;\n }\n if (def.description) {\n mark.description = def.description;\n }\n return mark;\n}\n\n// create a new DOM element\nfunction domCreate(doc, tag, ns) {\n if (!doc && typeof document !== 'undefined' && document.createElement) {\n doc = document;\n }\n return doc ? ns ? doc.createElementNS(ns, tag) : doc.createElement(tag) : null;\n}\n\n// find first child element with matching tag\nfunction domFind(el, tag) {\n tag = tag.toLowerCase();\n var nodes = el.childNodes,\n i = 0,\n n = nodes.length;\n for (; i < n; ++i) if (nodes[i].tagName.toLowerCase() === tag) {\n return nodes[i];\n }\n}\n\n// retrieve child element at given index\n// create & insert if doesn't exist or if tags do not match\nfunction domChild(el, index, tag, ns) {\n var a = el.childNodes[index],\n b;\n if (!a || a.tagName.toLowerCase() !== tag.toLowerCase()) {\n b = a || null;\n a = domCreate(el.ownerDocument, tag, ns);\n el.insertBefore(a, b);\n }\n return a;\n}\n\n// remove all child elements at or above the given index\nfunction domClear(el, index) {\n var nodes = el.childNodes,\n curr = nodes.length;\n while (curr > index) el.removeChild(nodes[--curr]);\n return el;\n}\n\n// generate css class name for mark\nfunction cssClass(mark) {\n return 'mark-' + mark.marktype + (mark.role ? ' role-' + mark.role : '') + (mark.name ? ' ' + mark.name : '');\n}\n\nfunction point (event, el) {\n const rect = el.getBoundingClientRect();\n return [event.clientX - rect.left - (el.clientLeft || 0), event.clientY - rect.top - (el.clientTop || 0)];\n}\n\nfunction resolveItem (item, event, el, origin) {\n var mark = item && item.mark,\n mdef,\n p;\n if (mark && (mdef = Marks[mark.marktype]).tip) {\n p = point(event, el);\n p[0] -= origin[0];\n p[1] -= origin[1];\n while (item = item.mark.group) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n }\n item = mdef.tip(mark.items, p);\n }\n return item;\n}\n\n/**\n * Create a new Handler instance.\n * @param {object} [customLoader] - Optional loader instance for\n * href URL sanitization. If not specified, a standard loader\n * instance will be generated.\n * @param {function} [customTooltip] - Optional tooltip handler\n * function for custom tooltip display.\n * @constructor\n */\nfunction Handler(customLoader, customTooltip) {\n this._active = null;\n this._handlers = {};\n this._loader = customLoader || loader();\n this._tooltip = customTooltip || defaultTooltip;\n}\n\n// The default tooltip display handler.\n// Sets the HTML title attribute on the visualization container.\nfunction defaultTooltip(handler, event, item, value) {\n handler.element().setAttribute('title', value || '');\n}\nHandler.prototype = {\n /**\n * Initialize a new Handler instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {Array<number>} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {object} [obj] - Optional context object that should serve as\n * the \"this\" context for event callbacks.\n * @return {Handler} - This handler instance.\n */\n initialize(el, origin, obj) {\n this._el = el;\n this._obj = obj || null;\n return this.origin(origin);\n },\n /**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\n element() {\n return this._el;\n },\n /**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\n canvas() {\n return this._el && this._el.firstChild;\n },\n /**\n * Get / set the origin coordinates of the visualization.\n */\n origin(origin) {\n if (arguments.length) {\n this._origin = origin || [0, 0];\n return this;\n } else {\n return this._origin.slice();\n }\n },\n /**\n * Get / set the scenegraph root.\n */\n scene(scene) {\n if (!arguments.length) return this._scene;\n this._scene = scene;\n return this;\n },\n /**\n * Add an event handler. Subclasses should override this method.\n */\n on( /*type, handler*/) {},\n /**\n * Remove an event handler. Subclasses should override this method.\n */\n off( /*type, handler*/) {},\n /**\n * Utility method for finding the array index of an event handler.\n * @param {Array} h - An array of registered event handlers.\n * @param {string} type - The event type.\n * @param {function} handler - The event handler instance to find.\n * @return {number} - The handler's array index or -1 if not registered.\n */\n _handlerIndex(h, type, handler) {\n for (let i = h ? h.length : 0; --i >= 0;) {\n if (h[i].type === type && (!handler || h[i].handler === handler)) {\n return i;\n }\n }\n return -1;\n },\n /**\n * Returns an array with registered event handlers.\n * @param {string} [type] - The event type to query. Any annotations\n * are ignored; for example, for the argument \"click.foo\", \".foo\" will\n * be ignored and the method returns all \"click\" handlers. If type is\n * null or unspecified, this method returns handlers for all types.\n * @return {Array} - A new array containing all registered event handlers.\n */\n handlers(type) {\n const h = this._handlers,\n a = [];\n if (type) {\n a.push(...h[this.eventName(type)]);\n } else {\n for (const k in h) {\n a.push(...h[k]);\n }\n }\n return a;\n },\n /**\n * Parses an event name string to return the specific event type.\n * For example, given \"click.foo\" returns \"click\"\n * @param {string} name - The input event type string.\n * @return {string} - A string with the event type only.\n */\n eventName(name) {\n const i = name.indexOf('.');\n return i < 0 ? name : name.slice(0, i);\n },\n /**\n * Handle hyperlink navigation in response to an item.href value.\n * @param {Event} event - The event triggering hyperlink navigation.\n * @param {Item} item - The scenegraph item.\n * @param {string} href - The URL to navigate to.\n */\n handleHref(event, item, href) {\n this._loader.sanitize(href, {\n context: 'href'\n }).then(opt => {\n const e = new MouseEvent(event.type, event),\n a = domCreate(null, 'a');\n for (const name in opt) a.setAttribute(name, opt[name]);\n a.dispatchEvent(e);\n }).catch(() => {/* do nothing */});\n },\n /**\n * Handle tooltip display in response to an item.tooltip value.\n * @param {Event} event - The event triggering tooltip display.\n * @param {Item} item - The scenegraph item.\n * @param {boolean} show - A boolean flag indicating whether\n * to show or hide a tooltip for the given item.\n */\n handleTooltip(event, item, show) {\n if (item && item.tooltip != null) {\n item = resolveItem(item, event, this.canvas(), this._origin);\n const value = show && item && item.tooltip || null;\n this._tooltip.call(this._obj, this, event, item, value);\n }\n },\n /**\n * Returns the size of a scenegraph item and its position relative\n * to the viewport.\n * @param {Item} item - The scenegraph item.\n * @return {object} - A bounding box object (compatible with the\n * DOMRect type) consisting of x, y, width, heigh, top, left,\n * right, and bottom properties.\n */\n getItemBoundingClientRect(item) {\n const el = this.canvas();\n if (!el) return;\n const rect = el.getBoundingClientRect(),\n origin = this._origin,\n bounds = item.bounds,\n width = bounds.width(),\n height = bounds.height();\n let x = bounds.x1 + origin[0] + rect.left,\n y = bounds.y1 + origin[1] + rect.top;\n\n // translate coordinate for each parent group\n while (item.mark && (item = item.mark.group)) {\n x += item.x || 0;\n y += item.y || 0;\n }\n\n // return DOMRect-compatible bounding box\n return {\n x,\n y,\n width,\n height,\n left: x,\n top: y,\n right: x + width,\n bottom: y + height\n };\n }\n};\n\n/**\n * Create a new Renderer instance.\n * @param {object} [loader] - Optional loader instance for\n * image and href URL sanitization. If not specified, a\n * standard loader instance will be generated.\n * @constructor\n */\nfunction Renderer(loader) {\n this._el = null;\n this._bgcolor = null;\n this._loader = new ResourceLoader(loader);\n}\nRenderer.prototype = {\n /**\n * Initialize a new Renderer instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {number} width - The coordinate width of the display, in pixels.\n * @param {number} height - The coordinate height of the display, in pixels.\n * @param {Array<number>} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance.\n */\n initialize(el, width, height, origin, scaleFactor) {\n this._el = el;\n return this.resize(width, height, origin, scaleFactor);\n },\n /**\n * Returns the parent container element for a visualization.\n * @return {DOMElement} - The containing DOM element.\n */\n element() {\n return this._el;\n },\n /**\n * Returns the scene element (e.g., canvas or SVG) of the visualization\n * Subclasses must override if the first child is not the scene element.\n * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n */\n canvas() {\n return this._el && this._el.firstChild;\n },\n /**\n * Get / set the background color.\n */\n background(bgcolor) {\n if (arguments.length === 0) return this._bgcolor;\n this._bgcolor = bgcolor;\n return this;\n },\n /**\n * Resize the display.\n * @param {number} width - The new coordinate width of the display, in pixels.\n * @param {number} height - The new coordinate height of the display, in pixels.\n * @param {Array<number>} origin - The new origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {Renderer} - This renderer instance;\n */\n resize(width, height, origin, scaleFactor) {\n this._width = width;\n this._height = height;\n this._origin = origin || [0, 0];\n this._scale = scaleFactor || 1;\n return this;\n },\n /**\n * Report a dirty item whose bounds should be redrawn.\n * This base class method does nothing. Subclasses that perform\n * incremental should implement this method.\n * @param {Item} item - The dirty item whose bounds should be redrawn.\n */\n dirty( /*item*/) {},\n /**\n * Render an input scenegraph, potentially with a set of dirty items.\n * This method will perform an immediate rendering with available resources.\n * The renderer may also need to perform image loading to perform a complete\n * render. This process can lead to asynchronous re-rendering of the scene\n * after this method returns. To receive notification when rendering is\n * complete, use the renderAsync method instead.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @param {Array} markTypes - Array of the mark types to render.\n * If undefined, render all mark types\n * @return {Renderer} - This renderer instance.\n */\n render(scene, markTypes) {\n const r = this;\n\n // bind arguments into a render call, and cache it\n // this function may be subsequently called for async redraw\n r._call = function () {\n r._render(scene, markTypes);\n };\n\n // invoke the renderer\n r._call();\n\n // clear the cached call for garbage collection\n // async redraws will stash their own copy\n r._call = null;\n return r;\n },\n /**\n * Internal rendering method. Renderer subclasses should override this\n * method to actually perform rendering.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @param {Array} markTypes - Array of the mark types to render.\n * If undefined, render all mark types\n */\n _render( /*scene, markTypes*/\n ) {\n // subclasses to override\n },\n /**\n * Asynchronous rendering method. Similar to render, but returns a Promise\n * that resolves when all rendering is completed. Sometimes a renderer must\n * perform image loading to get a complete rendering. The returned\n * Promise will not resolve until this process completes.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @param {Array} markTypes - Array of the mark types to render.\n * If undefined, render all mark types\n * @return {Promise} - A Promise that resolves when rendering is complete.\n */\n renderAsync(scene, markTypes) {\n const r = this.render(scene, markTypes);\n return this._ready ? this._ready.then(() => r) : Promise.resolve(r);\n },\n /**\n * Internal method for asynchronous resource loading.\n * Proxies method calls to the ImageLoader, and tracks loading\n * progress to invoke a re-render once complete.\n * @param {string} method - The method name to invoke on the ImageLoader.\n * @param {string} uri - The URI for the requested resource.\n * @return {Promise} - A Promise that resolves to the requested resource.\n */\n _load(method, uri) {\n var r = this,\n p = r._loader[method](uri);\n if (!r._ready) {\n // re-render the scene when loading completes\n const call = r._call;\n r._ready = r._loader.ready().then(redraw => {\n if (redraw) call();\n r._ready = null;\n });\n }\n return p;\n },\n /**\n * Sanitize a URL to include as a hyperlink in the rendered scene.\n * This method proxies a call to ImageLoader.sanitizeURL, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string to sanitize.\n * @return {Promise} - A Promise that resolves to the sanitized URL.\n */\n sanitizeURL(uri) {\n return this._load('sanitizeURL', uri);\n },\n /**\n * Requests an image to include in the rendered scene.\n * This method proxies a call to ImageLoader.loadImage, but also tracks\n * image loading progress and invokes a re-render once complete.\n * @param {string} uri - The URI string of the image.\n * @return {Promise} - A Promise that resolves to the loaded Image.\n */\n loadImage(uri) {\n return this._load('loadImage', uri);\n }\n};\n\nconst KeyDownEvent = 'keydown';\nconst KeyPressEvent = 'keypress';\nconst KeyUpEvent = 'keyup';\nconst DragEnterEvent = 'dragenter';\nconst DragLeaveEvent = 'dragleave';\nconst DragOverEvent = 'dragover';\nconst PointerDownEvent = 'pointerdown';\nconst PointerUpEvent = 'pointerup';\nconst PointerMoveEvent = 'pointermove';\nconst PointerOutEvent = 'pointerout';\nconst PointerOverEvent = 'pointerover';\nconst MouseDownEvent = 'mousedown';\nconst MouseUpEvent = 'mouseup';\nconst MouseMoveEvent = 'mousemove';\nconst MouseOutEvent = 'mouseout';\nconst MouseOverEvent = 'mouseover';\nconst ClickEvent = 'click';\nconst DoubleClickEvent = 'dblclick';\nconst WheelEvent = 'wheel';\nconst MouseWheelEvent = 'mousewheel';\nconst TouchStartEvent = 'touchstart';\nconst TouchMoveEvent = 'touchmove';\nconst TouchEndEvent = 'touchend';\nconst Events = [KeyDownEvent, KeyPressEvent, KeyUpEvent, DragEnterEvent, DragLeaveEvent, DragOverEvent, PointerDownEvent, PointerUpEvent, PointerMoveEvent, PointerOutEvent, PointerOverEvent, MouseDownEvent, MouseUpEvent, MouseMoveEvent, MouseOutEvent, MouseOverEvent, ClickEvent, DoubleClickEvent, WheelEvent, MouseWheelEvent, TouchStartEvent, TouchMoveEvent, TouchEndEvent];\nconst TooltipShowEvent = PointerMoveEvent;\nconst TooltipHideEvent = PointerOutEvent;\nconst HrefEvent = ClickEvent;\n\nfunction CanvasHandler(loader, tooltip) {\n Handler.call(this, loader, tooltip);\n this._down = null;\n this._touch = null;\n this._first = true;\n this._events = {};\n}\nconst eventBundle = type => type === TouchStartEvent || type === TouchMoveEvent || type === TouchEndEvent ? [TouchStartEvent, TouchMoveEvent, TouchEndEvent] : [type];\n\n// lazily add listeners to the canvas as needed\nfunction eventListenerCheck(handler, type) {\n eventBundle(type).forEach(_ => addEventListener(handler, _));\n}\nfunction addEventListener(handler, type) {\n const canvas = handler.canvas();\n if (canvas && !handler._events[type]) {\n handler._events[type] = 1;\n canvas.addEventListener(type, handler[type] ? evt => handler[type](evt) : evt => handler.fire(type, evt));\n }\n}\nfunction fireAll(handler, types, event) {\n types.forEach(type => handler.fire(type, event));\n}\nfunction move(moveEvents, overEvents, outEvents) {\n return function (evt) {\n const a = this._active,\n p = this.pickEvent(evt);\n if (p === a) {\n // active item and picked item are the same\n fireAll(this, moveEvents, evt); // fire move\n } else {\n // active item and picked item are different\n if (!a || !a.exit) {\n // fire out for prior active item\n // suppress if active item was removed from scene\n fireAll(this, outEvents, evt);\n }\n this._active = p; // set new active item\n fireAll(this, overEvents, evt); // fire over for new active item\n fireAll(this, moveEvents, evt); // fire move for new active item\n }\n };\n}\n\nfunction inactive(types) {\n return function (evt) {\n fireAll(this, types, evt);\n this._active = null;\n };\n}\ninherits(CanvasHandler, Handler, {\n initialize(el, origin, obj) {\n this._canvas = el && domFind(el, 'canvas');\n\n // add minimal events required for proper state management\n [ClickEvent, MouseDownEvent, PointerDownEvent, PointerMoveEvent, PointerOutEvent, DragLeaveEvent].forEach(type => eventListenerCheck(this, type));\n return Handler.prototype.initialize.call(this, el, origin, obj);\n },\n // return the backing canvas instance\n canvas() {\n return this._canvas;\n },\n // retrieve the current canvas context\n context() {\n return this._canvas.getContext('2d');\n },\n // supported events\n events: Events,\n // to keep old versions of firefox happy\n DOMMouseScroll(evt) {\n this.fire(MouseWheelEvent, evt);\n },\n pointermove: move([PointerMoveEvent, MouseMoveEvent], [PointerOverEvent, MouseOverEvent], [PointerOutEvent, MouseOutEvent]),\n dragover: move([DragOverEvent], [DragEnterEvent], [DragLeaveEvent]),\n pointerout: inactive([PointerOutEvent, MouseOutEvent]),\n dragleave: inactive([DragLeaveEvent]),\n pointerdown(evt) {\n this._down = this._active;\n this.fire(PointerDownEvent, evt);\n },\n mousedown(evt) {\n this._down = this._active;\n this.fire(MouseDownEvent, evt);\n },\n click(evt) {\n if (this._down === this._active) {\n this.fire(ClickEvent, evt);\n this._down = null;\n }\n },\n touchstart(evt) {\n this._touch = this.pickEvent(evt.changedTouches[0]);\n if (this._first) {\n this._active = this._touch;\n this._first = false;\n }\n this.fire(TouchStartEvent, evt, true);\n },\n touchmove(evt) {\n this.fire(TouchMoveEvent, evt, true);\n },\n touchend(evt) {\n this.fire(TouchEndEvent, evt, true);\n this._touch = null;\n },\n // fire an event\n fire(type, evt, touch) {\n const a = touch ? this._touch : this._active,\n h = this._handlers[type];\n\n // set event type relative to scenegraph items\n evt.vegaType = type;\n\n // handle hyperlinks and tooltips first\n if (type === HrefEvent && a && a.href) {\n this.handleHref(evt, a, a.href);\n } else if (type === TooltipShowEvent || type === TooltipHideEvent) {\n this.handleTooltip(evt, a, type !== TooltipHideEvent);\n }\n\n // invoke all registered handlers\n if (h) {\n for (let i = 0, len = h.length; i < len; ++i) {\n h[i].handler.call(this._obj, evt, a);\n }\n }\n },\n // add an event handler\n on(type, handler) {\n const name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n if (i < 0) {\n eventListenerCheck(this, type);\n (h[name] || (h[name] = [])).push({\n type: type,\n handler: handler\n });\n }\n return this;\n },\n // remove an event handler\n off(type, handler) {\n const name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n if (i >= 0) {\n h.splice(i, 1);\n }\n return this;\n },\n pickEvent(evt) {\n const p = point(evt, this._canvas),\n o = this._origin;\n return this.pick(this._scene, p[0], p[1], p[0] - o[0], p[1] - o[1]);\n },\n // find the scenegraph item at the current pointer position\n // x, y -- the absolute x, y pointer coordinates on the canvas element\n // gx, gy -- the relative coordinates within the current group\n pick(scene, x, y, gx, gy) {\n const g = this.context(),\n mark = Marks[scene.marktype];\n return mark.pick.call(this, g, scene, x, y, gx, gy);\n }\n});\n\nfunction devicePixelRatio() {\n return typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n}\nvar pixelRatio = devicePixelRatio();\nfunction resize (canvas, width, height, origin, scaleFactor, opt) {\n const inDOM = typeof HTMLElement !== 'undefined' && canvas instanceof HTMLElement && canvas.parentNode != null,\n context = canvas.getContext('2d'),\n ratio = inDOM ? pixelRatio : scaleFactor;\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n for (const key in opt) {\n context[key] = opt[key];\n }\n if (inDOM && ratio !== 1) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n context.pixelRatio = ratio;\n context.setTransform(ratio, 0, 0, ratio, ratio * origin[0], ratio * origin[1]);\n return canvas;\n}\n\nfunction CanvasRenderer(loader) {\n Renderer.call(this, loader);\n this._options = {};\n this._redraw = false;\n this._dirty = new Bounds();\n this._tempb = new Bounds();\n}\nconst base$2 = Renderer.prototype;\nconst viewBounds = (origin, width, height) => new Bounds().set(0, 0, width, height).translate(-origin[0], -origin[1]);\nfunction clipToBounds(g, b, origin) {\n // expand bounds by 1 pixel, then round to pixel boundaries\n b.expand(1).round();\n\n // align to base pixel grid in case of non-integer scaling (#2425)\n if (g.pixelRatio % 1) {\n b.scale(g.pixelRatio).round().scale(1 / g.pixelRatio);\n }\n\n // to avoid artifacts translate if origin has fractional pixels\n b.translate(-(origin[0] % 1), -(origin[1] % 1));\n\n // set clip path\n g.beginPath();\n g.rect(b.x1, b.y1, b.width(), b.height());\n g.clip();\n return b;\n}\ninherits(CanvasRenderer, Renderer, {\n initialize(el, width, height, origin, scaleFactor, options) {\n this._options = options || {};\n this._canvas = this._options.externalContext ? null : canvas(1, 1, this._options.type); // instantiate a small canvas\n\n if (el && this._canvas) {\n domClear(el, 0).appendChild(this._canvas);\n this._canvas.setAttribute('class', 'marks');\n }\n\n // this method will invoke resize to size the canvas appropriately\n return base$2.initialize.call(this, el, width, height, origin, scaleFactor);\n },\n resize(width, height, origin, scaleFactor) {\n base$2.resize.call(this, width, height, origin, scaleFactor);\n if (this._canvas) {\n // configure canvas size and transform\n resize(this._canvas, this._width, this._height, this._origin, this._scale, this._options.context);\n } else {\n // external context needs to be scaled and positioned to origin\n const ctx = this._options.externalContext;\n if (!ctx) error('CanvasRenderer is missing a valid canvas or context');\n ctx.scale(this._scale, this._scale);\n ctx.translate(this._origin[0], this._origin[1]);\n }\n this._redraw = true;\n return this;\n },\n canvas() {\n return this._canvas;\n },\n context() {\n return this._options.externalContext || (this._canvas ? this._canvas.getContext('2d') : null);\n },\n dirty(item) {\n const b = this._tempb.clear().union(item.bounds);\n let g = item.mark.group;\n while (g) {\n b.translate(g.x || 0, g.y || 0);\n g = g.mark.group;\n }\n this._dirty.union(b);\n },\n _render(scene, markTypes) {\n const g = this.context(),\n o = this._origin,\n w = this._width,\n h = this._height,\n db = this._dirty,\n vb = viewBounds(o, w, h);\n\n // setup\n g.save();\n const b = this._redraw || db.empty() ? (this._redraw = false, vb.expand(1)) : clipToBounds(g, vb.intersect(db), o);\n this.clear(-o[0], -o[1], w, h);\n\n // render\n this.draw(g, scene, b, markTypes);\n\n // takedown\n g.restore();\n db.clear();\n return this;\n },\n draw(ctx, scene, bounds, markTypes) {\n if (scene.marktype !== 'group' && markTypes != null && !markTypes.includes(scene.marktype)) {\n return;\n }\n const mark = Marks[scene.marktype];\n if (scene.clip) clip(ctx, scene);\n mark.draw.call(this, ctx, scene, bounds, markTypes);\n if (scene.clip) ctx.restore();\n },\n clear(x, y, w, h) {\n const opt = this._options,\n g = this.context();\n if (opt.type !== 'pdf' && !opt.externalContext) {\n // calling clear rect voids vector output in pdf mode\n // and could remove external context content (#2615)\n g.clearRect(x, y, w, h);\n }\n if (this._bgcolor != null) {\n g.fillStyle = this._bgcolor;\n g.fillRect(x, y, w, h);\n }\n }\n});\n\nfunction SVGHandler(loader, tooltip) {\n Handler.call(this, loader, tooltip);\n const h = this;\n h._hrefHandler = listener(h, (evt, item) => {\n if (item && item.href) h.handleHref(evt, item, item.href);\n });\n h._tooltipHandler = listener(h, (evt, item) => {\n h.handleTooltip(evt, item, evt.type !== TooltipHideEvent);\n });\n}\n\n// wrap an event listener for the SVG DOM\nconst listener = (context, handler) => evt => {\n let item = evt.target.__data__;\n item = Array.isArray(item) ? item[0] : item;\n evt.vegaType = evt.type;\n handler.call(context._obj, evt, item);\n};\ninherits(SVGHandler, Handler, {\n initialize(el, origin, obj) {\n let svg = this._svg;\n if (svg) {\n svg.removeEventListener(HrefEvent, this._hrefHandler);\n svg.removeEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.removeEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n this._svg = svg = el && domFind(el, 'svg');\n if (svg) {\n svg.addEventListener(HrefEvent, this._hrefHandler);\n svg.addEventListener(TooltipShowEvent, this._tooltipHandler);\n svg.addEventListener(TooltipHideEvent, this._tooltipHandler);\n }\n return Handler.prototype.initialize.call(this, el, origin, obj);\n },\n canvas() {\n return this._svg;\n },\n // add an event handler\n on(type, handler) {\n const name = this.eventName(type),\n h = this._handlers,\n i = this._handlerIndex(h[name], type, handler);\n if (i < 0) {\n const x = {\n type,\n handler,\n listener: listener(this, handler)\n };\n (h[name] || (h[name] = [])).push(x);\n if (this._svg) {\n this._svg.addEventListener(name, x.listener);\n }\n }\n return this;\n },\n // remove an event handler\n off(type, handler) {\n const name = this.eventName(type),\n h = this._handlers[name],\n i = this._handlerIndex(h, type, handler);\n if (i >= 0) {\n if (this._svg) {\n this._svg.removeEventListener(name, h[i].listener);\n }\n h.splice(i, 1);\n }\n return this;\n }\n});\n\nconst ARIA_HIDDEN = 'aria-hidden';\nconst ARIA_LABEL = 'aria-label';\nconst ARIA_ROLE = 'role';\nconst ARIA_ROLEDESCRIPTION = 'aria-roledescription';\nconst GRAPHICS_OBJECT = 'graphics-object';\nconst GRAPHICS_SYMBOL = 'graphics-symbol';\nconst bundle = (role, roledesc, label) => ({\n [ARIA_ROLE]: role,\n [ARIA_ROLEDESCRIPTION]: roledesc,\n [ARIA_LABEL]: label || undefined\n});\n\n// these roles are covered by related roles\n// we can ignore them, no need to generate attributes\nconst AriaIgnore = toSet(['axis-domain', 'axis-grid', 'axis-label', 'axis-tick', 'axis-title', 'legend-band', 'legend-entry', 'legend-gradient', 'legend-label', 'legend-title', 'legend-symbol', 'title']);\n\n// aria attribute generators for guide roles\nconst AriaGuides = {\n 'axis': {\n desc: 'axis',\n caption: axisCaption\n },\n 'legend': {\n desc: 'legend',\n caption: legendCaption\n },\n 'title-text': {\n desc: 'title',\n caption: item => `Title text '${titleCaption(item)}'`\n },\n 'title-subtitle': {\n desc: 'subtitle',\n caption: item => `Subtitle text '${titleCaption(item)}'`\n }\n};\n\n// aria properties generated for mark item encoding channels\nconst AriaEncode = {\n ariaRole: ARIA_ROLE,\n ariaRoleDescription: ARIA_ROLEDESCRIPTION,\n description: ARIA_LABEL\n};\nfunction ariaItemAttributes(emit, item) {\n const hide = item.aria === false;\n emit(ARIA_HIDDEN, hide || undefined);\n if (hide || item.description == null) {\n for (const prop in AriaEncode) {\n emit(AriaEncode[prop], undefined);\n }\n } else {\n const type = item.mark.marktype;\n emit(ARIA_LABEL, item.description);\n emit(ARIA_ROLE, item.ariaRole || (type === 'group' ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL));\n emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || `${type} mark`);\n }\n}\nfunction ariaMarkAttributes(mark) {\n return mark.aria === false ? {\n [ARIA_HIDDEN]: true\n } : AriaIgnore[mark.role] ? null : AriaGuides[mark.role] ? ariaGuide(mark, AriaGuides[mark.role]) : ariaMark(mark);\n}\nfunction ariaMark(mark) {\n const type = mark.marktype;\n const recurse = type === 'group' || type === 'text' || mark.items.some(_ => _.description != null && _.aria !== false);\n return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, `${type} mark container`, mark.description);\n}\nfunction ariaGuide(mark, opt) {\n try {\n const item = mark.items[0],\n caption = opt.caption || (() => '');\n return bundle(opt.role || GRAPHICS_SYMBOL, opt.desc, item.description || caption(item));\n } catch (err) {\n return null;\n }\n}\nfunction titleCaption(item) {\n return array(item.text).join(' ');\n}\nfunction axisCaption(item) {\n const datum = item.datum,\n orient = item.orient,\n title = datum.title ? extractTitle(item) : null,\n ctx = item.context,\n scale = ctx.scales[datum.scale].value,\n locale = ctx.dataflow.locale(),\n type = scale.type,\n xy = orient === 'left' || orient === 'right' ? 'Y' : 'X';\n return `${xy}-axis` + (title ? ` titled '${title}'` : '') + ` for a ${isDiscrete(type) ? 'discrete' : type} scale` + ` with ${domainCaption(locale, scale, item)}`;\n}\nfunction legendCaption(item) {\n const datum = item.datum,\n title = datum.title ? extractTitle(item) : null,\n type = `${datum.type || ''} legend`.trim(),\n scales = datum.scales,\n props = Object.keys(scales),\n ctx = item.context,\n scale = ctx.scales[scales[props[0]]].value,\n locale = ctx.dataflow.locale();\n return capitalize(type) + (title ? ` titled '${title}'` : '') + ` for ${channelCaption(props)}` + ` with ${domainCaption(locale, scale, item)}`;\n}\nfunction extractTitle(item) {\n try {\n return array(peek(item.items).items[0].text).join(' ');\n } catch (err) {\n return null;\n }\n}\nfunction channelCaption(props) {\n props = props.map(p => p + (p === 'fill' || p === 'stroke' ? ' color' : ''));\n return props.length < 2 ? props[0] : props.slice(0, -1).join(', ') + ' and ' + peek(props);\n}\nfunction capitalize(s) {\n return s.length ? s[0].toUpperCase() + s.slice(1) : s;\n}\n\nconst innerText = val => (val + '').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\nconst attrText = val => innerText(val).replace(/\"/g, '"').replace(/\\t/g, '	').replace(/\\n/g, '
').replace(/\\r/g, '
');\nfunction markup() {\n let buf = '',\n outer = '',\n inner = '';\n const stack = [],\n clear = () => outer = inner = '',\n push = tag => {\n if (outer) {\n buf += `${outer}>${inner}`;\n clear();\n }\n stack.push(tag);\n },\n attr = (name, value) => {\n if (value != null) outer += ` ${name}=\"${attrText(value)}\"`;\n return m;\n },\n m = {\n open(tag) {\n push(tag);\n outer = '<' + tag;\n for (var _len = arguments.length, attrs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n attrs[_key - 1] = arguments[_key];\n }\n for (const set of attrs) {\n for (const key in set) attr(key, set[key]);\n }\n return m;\n },\n close() {\n const tag = stack.pop();\n if (outer) {\n buf += outer + (inner ? `>${inner}</${tag}>` : '/>');\n } else {\n buf += `</${tag}>`;\n }\n clear();\n return m;\n },\n attr,\n text: t => (inner += innerText(t), m),\n toString: () => buf\n };\n return m;\n}\nconst serializeXML = node => _serialize(markup(), node) + '';\nfunction _serialize(m, node) {\n m.open(node.tagName);\n if (node.hasAttributes()) {\n const attrs = node.attributes,\n n = attrs.length;\n for (let i = 0; i < n; ++i) {\n m.attr(attrs[i].name, attrs[i].value);\n }\n }\n if (node.hasChildNodes()) {\n const children = node.childNodes;\n for (const child of children) {\n child.nodeType === 3 // text node\n ? m.text(child.nodeValue) : _serialize(m, child);\n }\n }\n return m.close();\n}\n\nconst stylesAttr = {\n fill: 'fill',\n fillOpacity: 'fill-opacity',\n stroke: 'stroke',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n strokeCap: 'stroke-linecap',\n strokeJoin: 'stroke-linejoin',\n strokeDash: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeMiterLimit: 'stroke-miterlimit',\n opacity: 'opacity'\n};\nconst stylesCss = {\n blend: 'mix-blend-mode'\n};\n\n// ensure miter limit default is consistent with canvas (#2498)\nconst rootAttributes = {\n 'fill': 'none',\n 'stroke-miterlimit': 10\n};\n\nconst RootIndex = 0,\n xmlns = 'http://www.w3.org/2000/xmlns/',\n svgns = metadata.xmlns;\nfunction SVGRenderer(loader) {\n Renderer.call(this, loader);\n this._dirtyID = 0;\n this._dirty = [];\n this._svg = null;\n this._root = null;\n this._defs = null;\n}\nconst base$1 = Renderer.prototype;\ninherits(SVGRenderer, Renderer, {\n /**\n * Initialize a new SVGRenderer instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {number} width - The coordinate width of the display, in pixels.\n * @param {number} height - The coordinate height of the display, in pixels.\n * @param {Array<number>} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {SVGRenderer} - This renderer instance.\n */\n initialize(el, width, height, origin, scaleFactor) {\n // create the svg definitions cache\n this._defs = {};\n this._clearDefs();\n if (el) {\n this._svg = domChild(el, 0, 'svg', svgns);\n this._svg.setAttributeNS(xmlns, 'xmlns', svgns);\n this._svg.setAttributeNS(xmlns, 'xmlns:xlink', metadata['xmlns:xlink']);\n this._svg.setAttribute('version', metadata['version']);\n this._svg.setAttribute('class', 'marks');\n domClear(el, 1);\n\n // set the svg root group\n this._root = domChild(this._svg, RootIndex, 'g', svgns);\n setAttributes(this._root, rootAttributes);\n\n // ensure no additional child elements\n domClear(this._svg, RootIndex + 1);\n }\n\n // set background color if defined\n this.background(this._bgcolor);\n return base$1.initialize.call(this, el, width, height, origin, scaleFactor);\n },\n /**\n * Get / set the background color.\n */\n background(bgcolor) {\n if (arguments.length && this._svg) {\n this._svg.style.setProperty('background-color', bgcolor);\n }\n return base$1.background.apply(this, arguments);\n },\n /**\n * Resize the display.\n * @param {number} width - The new coordinate width of the display, in pixels.\n * @param {number} height - The new coordinate height of the display, in pixels.\n * @param {Array<number>} origin - The new origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {SVGRenderer} - This renderer instance;\n */\n resize(width, height, origin, scaleFactor) {\n base$1.resize.call(this, width, height, origin, scaleFactor);\n if (this._svg) {\n setAttributes(this._svg, {\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: `0 0 ${this._width} ${this._height}`\n });\n this._root.setAttribute('transform', `translate(${this._origin})`);\n }\n this._dirty = [];\n return this;\n },\n /**\n * Returns the SVG element of the visualization.\n * @return {DOMElement} - The SVG element.\n */\n canvas() {\n return this._svg;\n },\n /**\n * Returns an SVG text string for the rendered content,\n * or null if this renderer is currently headless.\n */\n svg() {\n const svg = this._svg,\n bg = this._bgcolor;\n if (!svg) return null;\n let node;\n if (bg) {\n svg.removeAttribute('style');\n node = domChild(svg, RootIndex, 'rect', svgns);\n setAttributes(node, {\n width: this._width,\n height: this._height,\n fill: bg\n });\n }\n const text = serializeXML(svg);\n if (bg) {\n svg.removeChild(node);\n this._svg.style.setProperty('background-color', bg);\n }\n return text;\n },\n /**\n * Internal rendering method.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @param {Array} markTypes - Array of the mark types to render.\n * If undefined, render all mark types\n */\n _render(scene, markTypes) {\n // perform spot updates and re-render markup\n if (this._dirtyCheck()) {\n if (this._dirtyAll) this._clearDefs();\n this.mark(this._root, scene, undefined, markTypes);\n domClear(this._root, 1);\n }\n this.defs();\n this._dirty = [];\n ++this._dirtyID;\n return this;\n },\n // -- Manage rendering of items marked as dirty --\n\n /**\n * Flag a mark item as dirty.\n * @param {Item} item - The mark item.\n */\n dirty(item) {\n if (item.dirty !== this._dirtyID) {\n item.dirty = this._dirtyID;\n this._dirty.push(item);\n }\n },\n /**\n * Check if a mark item is considered dirty.\n * @param {Item} item - The mark item.\n */\n isDirty(item) {\n return this._dirtyAll || !item._svg || !item._svg.ownerSVGElement || item.dirty === this._dirtyID;\n },\n /**\n * Internal method to check dirty status and, if possible,\n * make targetted updates without a full rendering pass.\n */\n _dirtyCheck() {\n this._dirtyAll = true;\n const items = this._dirty;\n if (!items.length || !this._dirtyID) return true;\n const id = ++this._dirtyID;\n let item, mark, type, mdef, i, n, o;\n for (i = 0, n = items.length; i < n; ++i) {\n item = items[i];\n mark = item.mark;\n if (mark.marktype !== type) {\n // memoize mark instance lookup\n type = mark.marktype;\n mdef = Marks[type];\n }\n if (mark.zdirty && mark.dirty !== id) {\n this._dirtyAll = false;\n dirtyParents(item, id);\n mark.items.forEach(i => {\n i.dirty = id;\n });\n }\n if (mark.zdirty) continue; // handle in standard drawing pass\n\n if (item.exit) {\n // EXIT\n if (mdef.nested && mark.items.length) {\n // if nested mark with remaining points, update instead\n o = mark.items[0];\n if (o._svg) this._update(mdef, o._svg, o);\n } else if (item._svg) {\n // otherwise remove from DOM\n o = item._svg.parentNode;\n if (o) o.removeChild(item._svg);\n }\n item._svg = null;\n continue;\n }\n item = mdef.nested ? mark.items[0] : item;\n if (item._update === id) continue; // already visited\n\n if (!item._svg || !item._svg.ownerSVGElement) {\n // ENTER\n this._dirtyAll = false;\n dirtyParents(item, id);\n } else {\n // IN-PLACE UPDATE\n this._update(mdef, item._svg, item);\n }\n item._update = id;\n }\n return !this._dirtyAll;\n },\n // -- Construct & maintain scenegraph to SVG mapping ---\n\n /**\n * Render a set of mark items.\n * @param {SVGElement} el - The parent element in the SVG tree.\n * @param {object} scene - The mark parent to render.\n * @param {SVGElement} prev - The previous sibling in the SVG tree.\n * @param {Array} markTypes - Array of the mark types to render.\n * If undefined, render all mark types\n */\n mark(el, scene, prev, markTypes) {\n if (!this.isDirty(scene)) {\n return scene._svg;\n }\n const svg = this._svg,\n markType = scene.marktype,\n mdef = Marks[markType],\n events = scene.interactive === false ? 'none' : null,\n isGroup = mdef.tag === 'g';\n const parent = bind(scene, el, prev, 'g', svg);\n if (markType !== 'group' && markTypes != null && !markTypes.includes(markType)) {\n domClear(parent, 0);\n return scene._svg;\n }\n parent.setAttribute('class', cssClass(scene));\n\n // apply aria attributes to parent container element\n const aria = ariaMarkAttributes(scene);\n for (const key in aria) setAttribute(parent, key, aria[key]);\n if (!isGroup) {\n setAttribute(parent, 'pointer-events', events);\n }\n setAttribute(parent, 'clip-path', scene.clip ? clip$1(this, scene, scene.group) : null);\n let sibling = null,\n i = 0;\n const process = item => {\n const dirty = this.isDirty(item),\n node = bind(item, parent, sibling, mdef.tag, svg);\n if (dirty) {\n this._update(mdef, node, item);\n if (isGroup) recurse(this, node, item, markTypes);\n }\n sibling = node;\n ++i;\n };\n if (mdef.nested) {\n if (scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n domClear(parent, i);\n return parent;\n },\n /**\n * Update the attributes of an SVG element for a mark item.\n * @param {object} mdef - The mark definition object\n * @param {SVGElement} el - The SVG element.\n * @param {Item} item - The mark item.\n */\n _update(mdef, el, item) {\n // set dom element and values cache\n // provides access to emit method\n element = el;\n values = el.__values__;\n\n // apply aria-specific properties\n ariaItemAttributes(emit, item);\n\n // apply svg attributes\n mdef.attr(emit, item, this);\n\n // some marks need special treatment\n const extra = mark_extras[mdef.type];\n if (extra) extra.call(this, mdef, el, item);\n\n // apply svg style attributes\n // note: element state may have been modified by 'extra' method\n if (element) this.style(element, item);\n },\n /**\n * Update the presentation attributes of an SVG element for a mark item.\n * @param {SVGElement} el - The SVG element.\n * @param {Item} item - The mark item.\n */\n style(el, item) {\n if (item == null) return;\n for (const prop in stylesAttr) {\n let value = prop === 'font' ? fontFamily(item) : item[prop];\n if (value === values[prop]) continue;\n const name = stylesAttr[prop];\n if (value == null) {\n el.removeAttribute(name);\n } else {\n if (isGradient(value)) {\n value = gradientRef(value, this._defs.gradient, href());\n }\n el.setAttribute(name, value + '');\n }\n values[prop] = value;\n }\n for (const prop in stylesCss) {\n setStyle(el, stylesCss[prop], item[prop]);\n }\n },\n /**\n * Render SVG defs, as needed.\n * Must be called *after* marks have been processed to ensure the\n * collected state is current and accurate.\n */\n defs() {\n const svg = this._svg,\n defs = this._defs;\n let el = defs.el,\n index = 0;\n for (const id in defs.gradient) {\n if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n index = updateGradient(el, defs.gradient[id], index);\n }\n for (const id in defs.clipping) {\n if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n index = updateClipping(el, defs.clipping[id], index);\n }\n\n // clean-up\n if (el) {\n index === 0 ? (svg.removeChild(el), defs.el = null) : domClear(el, index);\n }\n },\n /**\n * Clear defs caches.\n */\n _clearDefs() {\n const def = this._defs;\n def.gradient = {};\n def.clipping = {};\n }\n});\n\n// mark ancestor chain with a dirty id\nfunction dirtyParents(item, id) {\n for (; item && item.dirty !== id; item = item.mark.group) {\n item.dirty = id;\n if (item.mark && item.mark.dirty !== id) {\n item.mark.dirty = id;\n } else return;\n }\n}\n\n// update gradient definitions\nfunction updateGradient(el, grad, index) {\n let i, n, stop;\n if (grad.gradient === 'radial') {\n // SVG radial gradients automatically transform to normalized bbox\n // coordinates, in a way that is cumbersome to replicate in canvas.\n // We wrap the radial gradient in a pattern element, allowing us to\n // maintain a circular gradient that matches what canvas provides.\n let pt = domChild(el, index++, 'pattern', svgns);\n setAttributes(pt, {\n id: patternPrefix + grad.id,\n viewBox: '0,0,1,1',\n width: '100%',\n height: '100%',\n preserveAspectRatio: 'xMidYMid slice'\n });\n pt = domChild(pt, 0, 'rect', svgns);\n setAttributes(pt, {\n width: 1,\n height: 1,\n fill: `url(${href()}#${grad.id})`\n });\n el = domChild(el, index++, 'radialGradient', svgns);\n setAttributes(el, {\n id: grad.id,\n fx: grad.x1,\n fy: grad.y1,\n fr: grad.r1,\n cx: grad.x2,\n cy: grad.y2,\n r: grad.r2\n });\n } else {\n el = domChild(el, index++, 'linearGradient', svgns);\n setAttributes(el, {\n id: grad.id,\n x1: grad.x1,\n x2: grad.x2,\n y1: grad.y1,\n y2: grad.y2\n });\n }\n for (i = 0, n = grad.stops.length; i < n; ++i) {\n stop = domChild(el, i, 'stop', svgns);\n stop.setAttribute('offset', grad.stops[i].offset);\n stop.setAttribute('stop-color', grad.stops[i].color);\n }\n domClear(el, i);\n return index;\n}\n\n// update clipping path definitions\nfunction updateClipping(el, clip, index) {\n let mask;\n el = domChild(el, index, 'clipPath', svgns);\n el.setAttribute('id', clip.id);\n if (clip.path) {\n mask = domChild(el, 0, 'path', svgns);\n mask.setAttribute('d', clip.path);\n } else {\n mask = domChild(el, 0, 'rect', svgns);\n setAttributes(mask, {\n x: 0,\n y: 0,\n width: clip.width,\n height: clip.height\n });\n }\n domClear(el, 1);\n return index + 1;\n}\n\n// Recursively process group contents.\nfunction recurse(renderer, el, group, markTypes) {\n // child 'g' element is second to last among children (path, g, path)\n // other children here are foreground and background path elements\n el = el.lastChild.previousSibling;\n let prev,\n idx = 0;\n visit(group, item => {\n prev = renderer.mark(el, item, prev, markTypes);\n ++idx;\n });\n\n // remove any extraneous DOM elements\n domClear(el, 1 + idx);\n}\n\n// Bind a scenegraph item to an SVG DOM element.\n// Create new SVG elements as needed.\nfunction bind(item, el, sibling, tag, svg) {\n let node = item._svg,\n doc;\n\n // create a new dom node if needed\n if (!node) {\n doc = el.ownerDocument;\n node = domCreate(doc, tag, svgns);\n item._svg = node;\n if (item.mark) {\n node.__data__ = item;\n node.__values__ = {\n fill: 'default'\n };\n\n // if group, create background, content, and foreground elements\n if (tag === 'g') {\n const bg = domCreate(doc, 'path', svgns);\n node.appendChild(bg);\n bg.__data__ = item;\n const cg = domCreate(doc, 'g', svgns);\n node.appendChild(cg);\n cg.__data__ = item;\n const fg = domCreate(doc, 'path', svgns);\n node.appendChild(fg);\n fg.__data__ = item;\n fg.__values__ = {\n fill: 'default'\n };\n }\n }\n }\n\n // (re-)insert if (a) not contained in SVG or (b) sibling order has changed\n if (node.ownerSVGElement !== svg || siblingCheck(node, sibling)) {\n el.insertBefore(node, sibling ? sibling.nextSibling : el.firstChild);\n }\n return node;\n}\n\n// check if two nodes are ordered siblings\nfunction siblingCheck(node, sibling) {\n return node.parentNode && node.parentNode.childNodes.length > 1 && node.previousSibling != sibling; // treat null/undefined the same\n}\n\n// -- Set attributes & styles on SVG elements ---\n\nlet element = null,\n // temp var for current SVG element\n values = null; // temp var for current values hash\n\n// Extra configuration for certain mark types\nconst mark_extras = {\n group(mdef, el, item) {\n const fg = element = el.childNodes[2];\n values = fg.__values__;\n mdef.foreground(emit, item, this);\n values = el.__values__; // use parent's values hash\n element = el.childNodes[1];\n mdef.content(emit, item, this);\n const bg = element = el.childNodes[0];\n mdef.background(emit, item, this);\n const value = item.mark.interactive === false ? 'none' : null;\n if (value !== values.events) {\n setAttribute(fg, 'pointer-events', value);\n setAttribute(bg, 'pointer-events', value);\n values.events = value;\n }\n if (item.strokeForeground && item.stroke) {\n const fill = item.fill;\n setAttribute(fg, 'display', null);\n\n // set style of background\n this.style(bg, item);\n setAttribute(bg, 'stroke', null);\n\n // set style of foreground\n if (fill) item.fill = null;\n values = fg.__values__;\n this.style(fg, item);\n if (fill) item.fill = fill;\n\n // leave element null to prevent downstream styling\n element = null;\n } else {\n // ensure foreground is ignored\n setAttribute(fg, 'display', 'none');\n }\n },\n image(mdef, el, item) {\n if (item.smooth === false) {\n setStyle(el, 'image-rendering', 'optimizeSpeed');\n setStyle(el, 'image-rendering', 'pixelated');\n } else {\n setStyle(el, 'image-rendering', null);\n }\n },\n text(mdef, el, item) {\n const tl = textLines(item);\n let key, value, doc, lh;\n if (isArray(tl)) {\n // multi-line text\n value = tl.map(_ => textValue(item, _));\n key = value.join('\\n'); // content cache key\n\n if (key !== values.text) {\n domClear(el, 0);\n doc = el.ownerDocument;\n lh = lineHeight(item);\n value.forEach((t, i) => {\n const ts = domCreate(doc, 'tspan', svgns);\n ts.__data__ = item; // data binding\n ts.textContent = t;\n if (i) {\n ts.setAttribute('x', 0);\n ts.setAttribute('dy', lh);\n }\n el.appendChild(ts);\n });\n values.text = key;\n }\n } else {\n // single-line text\n value = textValue(item, tl);\n if (value !== values.text) {\n el.textContent = value;\n values.text = value;\n }\n }\n setAttribute(el, 'font-family', fontFamily(item));\n setAttribute(el, 'font-size', fontSize(item) + 'px');\n setAttribute(el, 'font-style', item.fontStyle);\n setAttribute(el, 'font-variant', item.fontVariant);\n setAttribute(el, 'font-weight', item.fontWeight);\n }\n};\nfunction emit(name, value, ns) {\n // early exit if value is unchanged\n if (value === values[name]) return;\n\n // use appropriate method given namespace (ns)\n if (ns) {\n setAttributeNS(element, name, value, ns);\n } else {\n setAttribute(element, name, value);\n }\n\n // note current value for future comparison\n values[name] = value;\n}\nfunction setStyle(el, name, value) {\n if (value !== values[name]) {\n if (value == null) {\n el.style.removeProperty(name);\n } else {\n el.style.setProperty(name, value + '');\n }\n values[name] = value;\n }\n}\nfunction setAttributes(el, attrs) {\n for (const key in attrs) {\n setAttribute(el, key, attrs[key]);\n }\n}\nfunction setAttribute(el, name, value) {\n if (value != null) {\n // if value is provided, update DOM attribute\n el.setAttribute(name, value);\n } else {\n // else remove DOM attribute\n el.removeAttribute(name);\n }\n}\nfunction setAttributeNS(el, name, value, ns) {\n if (value != null) {\n // if value is provided, update DOM attribute\n el.setAttributeNS(ns, name, value);\n } else {\n // else remove DOM attribute\n el.removeAttributeNS(ns, name);\n }\n}\nfunction href() {\n let loc;\n return typeof window === 'undefined' ? '' : (loc = window.location).hash ? loc.href.slice(0, -loc.hash.length) : loc.href;\n}\n\nfunction SVGStringRenderer(loader) {\n Renderer.call(this, loader);\n this._text = null;\n this._defs = {\n gradient: {},\n clipping: {}\n };\n}\ninherits(SVGStringRenderer, Renderer, {\n /**\n * Returns the rendered SVG text string,\n * or null if rendering has not yet occurred.\n */\n svg() {\n return this._text;\n },\n /**\n * Internal rendering method.\n * @param {object} scene - The root mark of a scenegraph to render.\n */\n _render(scene) {\n const m = markup();\n\n // svg tag\n m.open('svg', extend({}, metadata, {\n class: 'marks',\n width: this._width * this._scale,\n height: this._height * this._scale,\n viewBox: `0 0 ${this._width} ${this._height}`\n }));\n\n // background, if defined\n const bg = this._bgcolor;\n if (bg && bg !== 'transparent' && bg !== 'none') {\n m.open('rect', {\n width: this._width,\n height: this._height,\n fill: bg\n }).close();\n }\n\n // root content group\n m.open('g', rootAttributes, {\n transform: 'translate(' + this._origin + ')'\n });\n this.mark(m, scene);\n m.close(); // </g>\n\n // defs\n this.defs(m);\n\n // get SVG text string\n this._text = m.close() + '';\n return this;\n },\n /**\n * Render a set of mark items.\n * @param {object} m - The markup context.\n * @param {object} scene - The mark parent to render.\n */\n mark(m, scene) {\n const mdef = Marks[scene.marktype],\n tag = mdef.tag,\n attrList = [ariaItemAttributes, mdef.attr];\n\n // render opening group tag\n m.open('g', {\n 'class': cssClass(scene),\n 'clip-path': scene.clip ? clip$1(this, scene, scene.group) : null\n }, ariaMarkAttributes(scene), {\n 'pointer-events': tag !== 'g' && scene.interactive === false ? 'none' : null\n });\n\n // render contained elements\n const process = item => {\n const href = this.href(item);\n if (href) m.open('a', href);\n m.open(tag, this.attr(scene, item, attrList, tag !== 'g' ? tag : null));\n if (tag === 'text') {\n const tl = textLines(item);\n if (isArray(tl)) {\n // multi-line text\n const attrs = {\n x: 0,\n dy: lineHeight(item)\n };\n for (let i = 0; i < tl.length; ++i) {\n m.open('tspan', i ? attrs : null).text(textValue(item, tl[i])).close();\n }\n } else {\n // single-line text\n m.text(textValue(item, tl));\n }\n } else if (tag === 'g') {\n const fore = item.strokeForeground,\n fill = item.fill,\n stroke = item.stroke;\n if (fore && stroke) {\n item.stroke = null;\n }\n m.open('path', this.attr(scene, item, mdef.background, 'bgrect')).close();\n\n // recurse for group content\n m.open('g', this.attr(scene, item, mdef.content));\n visit(item, scene => this.mark(m, scene));\n m.close();\n if (fore && stroke) {\n if (fill) item.fill = null;\n item.stroke = stroke;\n m.open('path', this.attr(scene, item, mdef.foreground, 'bgrect')).close();\n if (fill) item.fill = fill;\n } else {\n m.open('path', this.attr(scene, item, mdef.foreground, 'bgfore')).close();\n }\n }\n m.close(); // </tag>\n if (href) m.close(); // </a>\n };\n\n if (mdef.nested) {\n if (scene.items && scene.items.length) process(scene.items[0]);\n } else {\n visit(scene, process);\n }\n\n // render closing group tag\n return m.close(); // </g>\n },\n\n /**\n * Get href attributes for a hyperlinked mark item.\n * @param {Item} item - The mark item.\n */\n href(item) {\n const href = item.href;\n let attr;\n if (href) {\n if (attr = this._hrefs && this._hrefs[href]) {\n return attr;\n } else {\n this.sanitizeURL(href).then(attr => {\n // rewrite to use xlink namespace\n attr['xlink:href'] = attr.href;\n attr.href = null;\n (this._hrefs || (this._hrefs = {}))[href] = attr;\n });\n }\n }\n return null;\n },\n /**\n * Get an object of SVG attributes for a mark item.\n * @param {object} scene - The mark parent.\n * @param {Item} item - The mark item.\n * @param {array|function} attrs - One or more attribute emitters.\n * @param {string} tag - The tag being rendered.\n */\n attr(scene, item, attrs, tag) {\n const object = {},\n emit = (name, value, ns, prefixed) => {\n object[prefixed || name] = value;\n };\n\n // apply mark specific attributes\n if (Array.isArray(attrs)) {\n attrs.forEach(fn => fn(emit, item, this));\n } else {\n attrs(emit, item, this);\n }\n\n // apply style attributes\n if (tag) {\n style(object, item, scene, tag, this._defs);\n }\n return object;\n },\n /**\n * Render SVG defs, as needed.\n * Must be called *after* marks have been processed to ensure the\n * collected state is current and accurate.\n * @param {object} m - The markup context.\n */\n defs(m) {\n const gradient = this._defs.gradient,\n clipping = this._defs.clipping,\n count = Object.keys(gradient).length + Object.keys(clipping).length;\n if (count === 0) return; // nothing to do\n\n m.open('defs');\n for (const id in gradient) {\n const def = gradient[id],\n stops = def.stops;\n if (def.gradient === 'radial') {\n // SVG radial gradients automatically transform to normalized bbox\n // coordinates, in a way that is cumbersome to replicate in canvas.\n // We wrap the radial gradient in a pattern element, allowing us to\n // maintain a circular gradient that matches what canvas provides.\n\n m.open('pattern', {\n id: patternPrefix + id,\n viewBox: '0,0,1,1',\n width: '100%',\n height: '100%',\n preserveAspectRatio: 'xMidYMid slice'\n });\n m.open('rect', {\n width: '1',\n height: '1',\n fill: 'url(#' + id + ')'\n }).close();\n m.close(); // </pattern>\n\n m.open('radialGradient', {\n id: id,\n fx: def.x1,\n fy: def.y1,\n fr: def.r1,\n cx: def.x2,\n cy: def.y2,\n r: def.r2\n });\n } else {\n m.open('linearGradient', {\n id: id,\n x1: def.x1,\n x2: def.x2,\n y1: def.y1,\n y2: def.y2\n });\n }\n for (let i = 0; i < stops.length; ++i) {\n m.open('stop', {\n offset: stops[i].offset,\n 'stop-color': stops[i].color\n }).close();\n }\n m.close();\n }\n for (const id in clipping) {\n const def = clipping[id];\n m.open('clipPath', {\n id: id\n });\n if (def.path) {\n m.open('path', {\n d: def.path\n }).close();\n } else {\n m.open('rect', {\n x: 0,\n y: 0,\n width: def.width,\n height: def.height\n }).close();\n }\n m.close();\n }\n m.close();\n }\n});\n\n// Helper function for attr for style presentation attributes\nfunction style(s, item, scene, tag, defs) {\n let styleList;\n if (item == null) return s;\n if (tag === 'bgrect' && scene.interactive === false) {\n s['pointer-events'] = 'none';\n }\n if (tag === 'bgfore') {\n if (scene.interactive === false) {\n s['pointer-events'] = 'none';\n }\n s.display = 'none';\n if (item.fill !== null) return s;\n }\n if (tag === 'image' && item.smooth === false) {\n styleList = ['image-rendering: optimizeSpeed;', 'image-rendering: pixelated;'];\n }\n if (tag === 'text') {\n s['font-family'] = fontFamily(item);\n s['font-size'] = fontSize(item) + 'px';\n s['font-style'] = item.fontStyle;\n s['font-variant'] = item.fontVariant;\n s['font-weight'] = item.fontWeight;\n }\n for (const prop in stylesAttr) {\n let value = item[prop];\n const name = stylesAttr[prop];\n if (value === 'transparent' && (name === 'fill' || name === 'stroke')) ; else if (value != null) {\n if (isGradient(value)) {\n value = gradientRef(value, defs.gradient, '');\n }\n s[name] = value;\n }\n }\n for (const prop in stylesCss) {\n const value = item[prop];\n if (value != null) {\n styleList = styleList || [];\n styleList.push(`${stylesCss[prop]}: ${value};`);\n }\n }\n if (styleList) {\n s.style = styleList.join(' ');\n }\n return s;\n}\n\n/**\n * @typedef {Object} HybridRendererOptions\n *\n * @property {string[]} [svgMarkTypes=['text']] - An array of SVG mark types to render\n * in the SVG layer. All other mark types\n * will be rendered in the Canvas layer.\n * @property {boolean} [svgOnTop=true] - Flag to determine if SVG should be rendered on top.\n * @property {boolean} [debug=false] - Flag to enable or disable debugging mode. When true,\n * the top layer will be stacked below the bottom layer\n * rather than overlaid on top.\n */\n\n/** @type {HybridRendererOptions} */\nconst OPTS = {\n svgMarkTypes: ['text'],\n svgOnTop: true,\n debug: false\n};\n\n/**\n * Configure the HybridRenderer\n *\n * @param {HybridRendererOptions} options - HybridRenderer configuration options.\n */\nfunction setHybridRendererOptions(options) {\n OPTS['svgMarkTypes'] = options.svgMarkTypes ?? ['text'];\n OPTS['svgOnTop'] = options.svgOnTop ?? true;\n OPTS['debug'] = options.debug ?? false;\n}\nfunction HybridRenderer(loader) {\n Renderer.call(this, loader);\n this._svgRenderer = new SVGRenderer(loader);\n this._canvasRenderer = new CanvasRenderer(loader);\n}\nconst base = Renderer.prototype;\ninherits(HybridRenderer, Renderer, {\n /**\n * Initialize a new HybridRenderer instance.\n * @param {DOMElement} el - The containing DOM element for the display.\n * @param {number} width - The coordinate width of the display, in pixels.\n * @param {number} height - The coordinate height of the display, in pixels.\n * @param {Array<number>} origin - The origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {HybridRenderer} - This renderer instance.\n */\n initialize(el, width, height, origin, scaleFactor) {\n this._root_el = domChild(el, 0, 'div');\n const bottomEl = domChild(this._root_el, 0, 'div');\n const topEl = domChild(this._root_el, 1, 'div');\n this._root_el.style.position = 'relative';\n\n // Set position absolute to overlay svg on top of canvas\n if (!OPTS.debug) {\n bottomEl.style.height = '100%';\n topEl.style.position = 'absolute';\n topEl.style.top = '0';\n topEl.style.left = '0';\n topEl.style.height = '100%';\n topEl.style.width = '100%';\n }\n this._svgEl = OPTS.svgOnTop ? topEl : bottomEl;\n this._canvasEl = OPTS.svgOnTop ? bottomEl : topEl;\n\n // pointer-events to none on SVG layer so that canvas gets all events\n this._svgEl.style.pointerEvents = 'none';\n this._canvasRenderer.initialize(this._canvasEl, width, height, origin, scaleFactor);\n this._svgRenderer.initialize(this._svgEl, width, height, origin, scaleFactor);\n return base.initialize.call(this, el, width, height, origin, scaleFactor);\n },\n /**\n * Flag a mark item as dirty.\n * @param {Item} item - The mark item.\n */\n dirty(item) {\n if (OPTS.svgMarkTypes.includes(item.mark.marktype)) {\n this._svgRenderer.dirty(item);\n } else {\n this._canvasRenderer.dirty(item);\n }\n return this;\n },\n /**\n * Internal rendering method.\n * @param {object} scene - The root mark of a scenegraph to render.\n * @param {Array} markTypes - Array of the mark types to render.\n * If undefined, render all mark types\n */\n _render(scene, markTypes) {\n const allMarkTypes = markTypes ?? ['arc', 'area', 'image', 'line', 'path', 'rect', 'rule', 'shape', 'symbol', 'text', 'trail'];\n const canvasMarkTypes = allMarkTypes.filter(m => !OPTS.svgMarkTypes.includes(m));\n this._svgRenderer.render(scene, OPTS.svgMarkTypes);\n this._canvasRenderer.render(scene, canvasMarkTypes);\n },\n /**\n * Resize the display.\n * @param {number} width - The new coordinate width of the display, in pixels.\n * @param {number} height - The new coordinate height of the display, in pixels.\n * @param {Array<number>} origin - The new origin of the display, in pixels.\n * The coordinate system will be translated to this point.\n * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n * the width and height to determine the final pixel size.\n * @return {SVGRenderer} - This renderer instance;\n */\n resize(width, height, origin, scaleFactor) {\n base.resize.call(this, width, height, origin, scaleFactor);\n this._svgRenderer.resize(width, height, origin, scaleFactor);\n this._canvasRenderer.resize(width, height, origin, scaleFactor);\n return this;\n },\n background(bgcolor) {\n // Propagate background color to lower canvas renderer\n if (OPTS.svgOnTop) {\n this._canvasRenderer.background(bgcolor);\n } else {\n this._svgRenderer.background(bgcolor);\n }\n return this;\n }\n});\n\nfunction HybridHandler(loader, tooltip) {\n CanvasHandler.call(this, loader, tooltip);\n}\ninherits(HybridHandler, CanvasHandler, {\n initialize(el, origin, obj) {\n const canvas = domChild(domChild(el, 0, 'div'), OPTS.svgOnTop ? 0 : 1, 'div');\n return CanvasHandler.prototype.initialize.call(this, canvas, origin, obj);\n }\n});\n\nconst Canvas = 'canvas';\nconst Hybrid = 'hybrid';\nconst PNG = 'png';\nconst SVG = 'svg';\nconst None = 'none';\nconst RenderType = {\n Canvas: Canvas,\n PNG: PNG,\n SVG: SVG,\n Hybrid: Hybrid,\n None: None\n};\nconst modules = {};\nmodules[Canvas] = modules[PNG] = {\n renderer: CanvasRenderer,\n headless: CanvasRenderer,\n handler: CanvasHandler\n};\nmodules[SVG] = {\n renderer: SVGRenderer,\n headless: SVGStringRenderer,\n handler: SVGHandler\n};\nmodules[Hybrid] = {\n renderer: HybridRenderer,\n headless: HybridRenderer,\n handler: HybridHandler\n};\nmodules[None] = {};\nfunction renderModule(name, _) {\n name = String(name || '').toLowerCase();\n if (arguments.length > 1) {\n modules[name] = _;\n return this;\n } else {\n return modules[name];\n }\n}\n\nfunction intersect(scene, bounds, filter) {\n const hits = [],\n // intersection results\n box = new Bounds().union(bounds),\n // defensive copy\n type = scene.marktype;\n return type ? intersectMark(scene, box, filter, hits) : type === 'group' ? intersectGroup(scene, box, filter, hits) : error('Intersect scene must be mark node or group item.');\n}\nfunction intersectMark(mark, box, filter, hits) {\n if (visitMark(mark, box, filter)) {\n const items = mark.items,\n type = mark.marktype,\n n = items.length;\n let i = 0;\n if (type === 'group') {\n for (; i < n; ++i) {\n intersectGroup(items[i], box, filter, hits);\n }\n } else {\n for (const test = Marks[type].isect; i < n; ++i) {\n const item = items[i];\n if (intersectItem(item, box, test)) hits.push(item);\n }\n }\n }\n return hits;\n}\nfunction visitMark(mark, box, filter) {\n // process if bounds intersect and if\n // (1) mark is a group mark (so we must recurse), or\n // (2) mark is interactive and passes filter\n return mark.bounds && box.intersects(mark.bounds) && (mark.marktype === 'group' || mark.interactive !== false && (!filter || filter(mark)));\n}\nfunction intersectGroup(group, box, filter, hits) {\n // test intersect against group\n // skip groups by default unless filter says otherwise\n if (filter && filter(group.mark) && intersectItem(group, box, Marks.group.isect)) {\n hits.push(group);\n }\n\n // recursively test children marks\n // translate box to group coordinate space\n const marks = group.items,\n n = marks && marks.length;\n if (n) {\n const x = group.x || 0,\n y = group.y || 0;\n box.translate(-x, -y);\n for (let i = 0; i < n; ++i) {\n intersectMark(marks[i], box, filter, hits);\n }\n box.translate(x, y);\n }\n return hits;\n}\nfunction intersectItem(item, box, test) {\n // test bounds enclosure, bounds intersection, then detailed test\n const bounds = item.bounds;\n return box.encloses(bounds) || box.intersects(bounds) && test(item, box);\n}\n\nconst clipBounds = new Bounds();\nfunction boundClip (mark) {\n const clip = mark.clip;\n if (isFunction(clip)) {\n clip(boundContext(clipBounds.clear()));\n } else if (clip) {\n clipBounds.set(0, 0, mark.group.width, mark.group.height);\n } else return;\n mark.bounds.intersect(clipBounds);\n}\n\nconst TOLERANCE = 1e-9;\nfunction sceneEqual(a, b, key) {\n return a === b ? true : key === 'path' ? pathEqual(a, b) : a instanceof Date && b instanceof Date ? +a === +b : isNumber(a) && isNumber(b) ? Math.abs(a - b) <= TOLERANCE : !a || !b || !isObject(a) && !isObject(b) ? a == b : objectEqual(a, b);\n}\nfunction pathEqual(a, b) {\n return sceneEqual(parse(a), parse(b));\n}\nfunction objectEqual(a, b) {\n var ka = Object.keys(a),\n kb = Object.keys(b),\n key,\n i;\n if (ka.length !== kb.length) return false;\n ka.sort();\n kb.sort();\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) return false;\n }\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!sceneEqual(a[key], b[key], key)) return false;\n }\n return typeof a === typeof b;\n}\n\nfunction resetSVGDefIds() {\n resetSVGClipId();\n resetSVGGradientId();\n}\n\nexport { Bounds, CanvasHandler, CanvasRenderer, Gradient, GroupItem, Handler, HybridHandler, HybridRenderer, Item, Marks, RenderType, Renderer, ResourceLoader, SVGHandler, SVGRenderer, SVGStringRenderer, Scenegraph, boundClip, boundContext, boundItem, boundMark, boundStroke, domChild, domClear, domCreate, domFind, font, fontFamily, fontSize, intersect, intersectBoxLine, intersectPath, intersectPoint, intersectRule, lineHeight, markup, multiLineOffset, curves as pathCurves, pathEqual, parse as pathParse, vg_rect as pathRectangle, pathRender, symbols as pathSymbols, vg_trail as pathTrail, point, renderModule, resetSVGClipId, resetSVGDefIds, sceneEqual, sceneFromJSON, pickVisit as scenePickVisit, sceneToJSON, visit as sceneVisit, zorder as sceneZOrder, serializeXML, setHybridRendererOptions, textMetrics };\n", "import { Transform, ingest, tupleid, stableCompare } from 'vega-dataflow';\nimport { tickCount, tickFormat, validTicks, tickValues, SymbolLegend, labelFormat, labelValues, GradientLegend, scaleFraction, labelFraction, scale, Sequential, Linear, isContinuous, Time, UTC, Ordinal, scaleImplicit, Log, Sqrt, Pow, Symlog, isLogarithmic, BinOrdinal, isInterpolating, interpolateColors, interpolate, Band, Point, bandSpace, scheme, Threshold, Quantile, Quantize, quantizeInterpolator, interpolateRange, Diverging } from 'vega-scale';\nimport { inherits, isArray, error, fastmap, falsy, isFunction, constant, peek, one, toSet, isString, zoomLog, zoomPow, zoomSymlog, zoomLinear, stringValue } from 'vega-util';\nimport { sum, range } from 'd3-array';\nimport { interpolateRound, interpolate as interpolate$1 } from 'd3-interpolate';\n\n/**\n * Generates axis ticks for visualizing a spatial scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate ticks for.\n * @param {*} [params.count=10] - The approximate number of ticks, or\n * desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {function(*):string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid d3 4.0 format specifier.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nfunction AxisTicks(params) {\n Transform.call(this, null, params);\n}\ninherits(AxisTicks, Transform, {\n transform(_, pulse) {\n if (this.value && !_.modified()) {\n return pulse.StopPropagation;\n }\n var locale = pulse.dataflow.locale(),\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n ticks = this.value,\n scale = _.scale,\n tally = _.count == null ? _.values ? _.values.length : 10 : _.count,\n count = tickCount(scale, tally, _.minstep),\n format = _.format || tickFormat(locale, scale, count, _.formatSpecifier, _.formatType, !!_.values),\n values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count);\n if (ticks) out.rem = ticks;\n ticks = values.map((value, i) => ingest({\n index: i / (values.length - 1 || 1),\n value: value,\n label: format(value)\n }));\n if (_.extra && ticks.length) {\n // add an extra tick pegged to the initial domain value\n // this is used to generate axes with 'binned' domains\n ticks.push(ingest({\n index: -1,\n extra: {\n value: ticks[0].value\n },\n label: ''\n }));\n }\n out.source = ticks;\n out.add = ticks;\n this.value = ticks;\n return out;\n }\n});\n\n/**\n * Joins a set of data elements against a set of visual items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): object} [params.item] - An item generator function.\n * @param {function(object): *} [params.key] - The key field associating data and visual items.\n */\nfunction DataJoin(params) {\n Transform.call(this, null, params);\n}\nfunction defaultItemCreate() {\n return ingest({});\n}\nfunction newMap(key) {\n const map = fastmap().test(t => t.exit);\n map.lookup = t => map.get(key(t));\n return map;\n}\ninherits(DataJoin, Transform, {\n transform(_, pulse) {\n var df = pulse.dataflow,\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n item = _.item || defaultItemCreate,\n key = _.key || tupleid,\n map = this.value;\n\n // prevent transient (e.g., hover) requests from\n // cascading across marks derived from marks\n if (isArray(out.encode)) {\n out.encode = null;\n }\n if (map && (_.modified('key') || pulse.modified(key))) {\n error('DataJoin does not support modified key function or fields.');\n }\n if (!map) {\n pulse = pulse.addAll();\n this.value = map = newMap(key);\n }\n pulse.visit(pulse.ADD, t => {\n const k = key(t);\n let x = map.get(k);\n if (x) {\n if (x.exit) {\n map.empty--;\n out.add.push(x);\n } else {\n out.mod.push(x);\n }\n } else {\n x = item(t);\n map.set(k, x);\n out.add.push(x);\n }\n x.datum = t;\n x.exit = false;\n });\n pulse.visit(pulse.MOD, t => {\n const k = key(t),\n x = map.get(k);\n if (x) {\n x.datum = t;\n out.mod.push(x);\n }\n });\n pulse.visit(pulse.REM, t => {\n const k = key(t),\n x = map.get(k);\n if (t === x.datum && !x.exit) {\n out.rem.push(x);\n x.exit = true;\n ++map.empty;\n }\n });\n if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum');\n if (pulse.clean() || _.clean && map.empty > df.cleanThreshold) {\n df.runAfter(map.clean);\n }\n return out;\n }\n});\n\n/**\n * Invokes encoding functions for visual items.\n * @constructor\n * @param {object} params - The parameters to the encoding functions. This\n * parameter object will be passed through to all invoked encoding functions.\n * @param {object} [params.mod=false] - Flag indicating if tuples in the input\n * mod set that are unmodified by encoders should be included in the output.\n * @param {object} param.encoders - The encoding functions\n * @param {function(object, object): boolean} [param.encoders.update] - Update encoding set\n * @param {function(object, object): boolean} [param.encoders.enter] - Enter encoding set\n * @param {function(object, object): boolean} [param.encoders.exit] - Exit encoding set\n */\nfunction Encode(params) {\n Transform.call(this, null, params);\n}\ninherits(Encode, Transform, {\n transform(_, pulse) {\n var out = pulse.fork(pulse.ADD_REM),\n fmod = _.mod || false,\n encoders = _.encoders,\n encode = pulse.encode;\n\n // if an array, the encode directive includes additional sets\n // that must be defined in order for the primary set to be invoked\n // e.g., only run the update set if the hover set is defined\n if (isArray(encode)) {\n if (out.changed() || encode.every(e => encoders[e])) {\n encode = encode[0];\n out.encode = null; // consume targeted encode directive\n } else {\n return pulse.StopPropagation;\n }\n }\n\n // marshall encoder functions\n var reenter = encode === 'enter',\n update = encoders.update || falsy,\n enter = encoders.enter || falsy,\n exit = encoders.exit || falsy,\n set = (encode && !reenter ? encoders[encode] : update) || falsy;\n if (pulse.changed(pulse.ADD)) {\n pulse.visit(pulse.ADD, t => {\n enter(t, _);\n update(t, _);\n });\n out.modifies(enter.output);\n out.modifies(update.output);\n if (set !== falsy && set !== update) {\n pulse.visit(pulse.ADD, t => {\n set(t, _);\n });\n out.modifies(set.output);\n }\n }\n if (pulse.changed(pulse.REM) && exit !== falsy) {\n pulse.visit(pulse.REM, t => {\n exit(t, _);\n });\n out.modifies(exit.output);\n }\n if (reenter || set !== falsy) {\n const flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0);\n if (reenter) {\n pulse.visit(flag, t => {\n const mod = enter(t, _) || fmod;\n if (set(t, _) || mod) out.mod.push(t);\n });\n if (out.mod.length) out.modifies(enter.output);\n } else {\n pulse.visit(flag, t => {\n if (set(t, _) || fmod) out.mod.push(t);\n });\n }\n if (out.mod.length) out.modifies(set.output);\n }\n return out.changed() ? out : pulse.StopPropagation;\n }\n});\n\n/**\n * Generates legend entries for visualizing a scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate items for.\n * @param {*} [params.count=5] - The approximate number of items, or\n * desired tick interval, to use.\n * @param {*} [params.limit] - The maximum number of entries to\n * include in a symbol legend.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n * These must be legal domain values for the provided scale.\n * If provided, the count argument is ignored.\n * @param {string} [params.formatSpecifier] - A format specifier\n * to use in conjunction with scale.tickFormat. Legal values are\n * any valid D3 format specifier string.\n * @param {function(*):string} [params.format] - The format function to use.\n * If provided, the formatSpecifier argument is ignored.\n */\nfunction LegendEntries(params) {\n Transform.call(this, [], params);\n}\ninherits(LegendEntries, Transform, {\n transform(_, pulse) {\n if (this.value != null && !_.modified()) {\n return pulse.StopPropagation;\n }\n var locale = pulse.dataflow.locale(),\n out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n items = this.value,\n type = _.type || SymbolLegend,\n scale = _.scale,\n limit = +_.limit,\n count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep),\n lskip = !!_.values || type === SymbolLegend,\n format = _.format || labelFormat(locale, scale, count, type, _.formatSpecifier, _.formatType, lskip),\n values = _.values || labelValues(scale, count),\n domain,\n fraction,\n size,\n offset,\n ellipsis;\n if (items) out.rem = items;\n if (type === SymbolLegend) {\n if (limit && values.length > limit) {\n pulse.dataflow.warn('Symbol legend count exceeds limit, filtering items.');\n items = values.slice(0, limit - 1);\n ellipsis = true;\n } else {\n items = values;\n }\n if (isFunction(size = _.size)) {\n // if first value maps to size zero, remove from list (vega#717)\n if (!_.values && scale(items[0]) === 0) {\n items = items.slice(1);\n }\n // compute size offset for legend entries\n offset = items.reduce((max, value) => Math.max(max, size(value, _)), 0);\n } else {\n size = constant(offset = size || 8);\n }\n items = items.map((value, index) => ingest({\n index: index,\n label: format(value, index, items),\n value: value,\n offset: offset,\n size: size(value, _)\n }));\n if (ellipsis) {\n ellipsis = values[items.length];\n items.push(ingest({\n index: items.length,\n label: `\\u2026${values.length - items.length} entries`,\n value: ellipsis,\n offset: offset,\n size: size(ellipsis, _)\n }));\n }\n } else if (type === GradientLegend) {\n domain = scale.domain(), fraction = scaleFraction(scale, domain[0], peek(domain));\n\n // if automatic label generation produces 2 or fewer values,\n // use the domain end points instead (fixes vega/vega#1364)\n if (values.length < 3 && !_.values && domain[0] !== peek(domain)) {\n values = [domain[0], peek(domain)];\n }\n items = values.map((value, index) => ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: fraction(value)\n }));\n } else {\n size = values.length - 1;\n fraction = labelFraction(scale);\n items = values.map((value, index) => ingest({\n index: index,\n label: format(value, index, values),\n value: value,\n perc: index ? fraction(value) : 0,\n perc2: index === size ? 1 : fraction(values[index + 1])\n }));\n }\n out.source = items;\n out.add = items;\n this.value = items;\n return out;\n }\n});\n\nconst sourceX = t => t.source.x;\nconst sourceY = t => t.source.y;\nconst targetX = t => t.target.x;\nconst targetY = t => t.target.y;\n\n/**\n * Layout paths linking source and target elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction LinkPath(params) {\n Transform.call(this, {}, params);\n}\nLinkPath.Definition = {\n 'type': 'LinkPath',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'sourceX',\n 'type': 'field',\n 'default': 'source.x'\n }, {\n 'name': 'sourceY',\n 'type': 'field',\n 'default': 'source.y'\n }, {\n 'name': 'targetX',\n 'type': 'field',\n 'default': 'target.x'\n }, {\n 'name': 'targetY',\n 'type': 'field',\n 'default': 'target.y'\n }, {\n 'name': 'orient',\n 'type': 'enum',\n 'default': 'vertical',\n 'values': ['horizontal', 'vertical', 'radial']\n }, {\n 'name': 'shape',\n 'type': 'enum',\n 'default': 'line',\n 'values': ['line', 'arc', 'curve', 'diagonal', 'orthogonal']\n }, {\n 'name': 'require',\n 'type': 'signal'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'path'\n }]\n};\ninherits(LinkPath, Transform, {\n transform(_, pulse) {\n var sx = _.sourceX || sourceX,\n sy = _.sourceY || sourceY,\n tx = _.targetX || targetX,\n ty = _.targetY || targetY,\n as = _.as || 'path',\n orient = _.orient || 'vertical',\n shape = _.shape || 'line',\n path = Paths.get(shape + '-' + orient) || Paths.get(shape);\n if (!path) {\n error('LinkPath unsupported type: ' + _.shape + (_.orient ? '-' + _.orient : ''));\n }\n pulse.visit(pulse.SOURCE, t => {\n t[as] = path(sx(t), sy(t), tx(t), ty(t));\n });\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\nconst line = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'L' + tx + ',' + ty;\nconst lineR = (sa, sr, ta, tr) => line(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\nconst arc = (sx, sy, tx, ty) => {\n var dx = tx - sx,\n dy = ty - sy,\n rr = Math.hypot(dx, dy) / 2,\n ra = 180 * Math.atan2(dy, dx) / Math.PI;\n return 'M' + sx + ',' + sy + 'A' + rr + ',' + rr + ' ' + ra + ' 0 1' + ' ' + tx + ',' + ty;\n};\nconst arcR = (sa, sr, ta, tr) => arc(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\nconst curve = (sx, sy, tx, ty) => {\n const dx = tx - sx,\n dy = ty - sy,\n ix = 0.2 * (dx + dy),\n iy = 0.2 * (dy - dx);\n return 'M' + sx + ',' + sy + 'C' + (sx + ix) + ',' + (sy + iy) + ' ' + (tx + iy) + ',' + (ty - ix) + ' ' + tx + ',' + ty;\n};\nconst curveR = (sa, sr, ta, tr) => curve(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\nconst orthoX = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'V' + ty + 'H' + tx;\nconst orthoY = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'H' + tx + 'V' + ty;\nconst orthoR = (sa, sr, ta, tr) => {\n const sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa;\n return 'M' + sr * sc + ',' + sr * ss + 'A' + sr + ',' + sr + ' 0 0,' + (sf ? 1 : 0) + ' ' + sr * tc + ',' + sr * ts + 'L' + tr * tc + ',' + tr * ts;\n};\nconst diagonalX = (sx, sy, tx, ty) => {\n const m = (sx + tx) / 2;\n return 'M' + sx + ',' + sy + 'C' + m + ',' + sy + ' ' + m + ',' + ty + ' ' + tx + ',' + ty;\n};\nconst diagonalY = (sx, sy, tx, ty) => {\n const m = (sy + ty) / 2;\n return 'M' + sx + ',' + sy + 'C' + sx + ',' + m + ' ' + tx + ',' + m + ' ' + tx + ',' + ty;\n};\nconst diagonalR = (sa, sr, ta, tr) => {\n const sc = Math.cos(sa),\n ss = Math.sin(sa),\n tc = Math.cos(ta),\n ts = Math.sin(ta),\n mr = (sr + tr) / 2;\n return 'M' + sr * sc + ',' + sr * ss + 'C' + mr * sc + ',' + mr * ss + ' ' + mr * tc + ',' + mr * ts + ' ' + tr * tc + ',' + tr * ts;\n};\nconst Paths = fastmap({\n 'line': line,\n 'line-radial': lineR,\n 'arc': arc,\n 'arc-radial': arcR,\n 'curve': curve,\n 'curve-radial': curveR,\n 'orthogonal-horizontal': orthoX,\n 'orthogonal-vertical': orthoY,\n 'orthogonal-radial': orthoR,\n 'diagonal-horizontal': diagonalX,\n 'diagonal-vertical': diagonalY,\n 'diagonal-radial': diagonalR\n});\n\n/**\n * Pie and donut chart layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size pie segments.\n * @param {number} [params.startAngle=0] - The start angle (in radians) of the layout.\n * @param {number} [params.endAngle=2\u03C0] - The end angle (in radians) of the layout.\n * @param {boolean} [params.sort] - Boolean flag for sorting sectors by value.\n */\nfunction Pie(params) {\n Transform.call(this, null, params);\n}\nPie.Definition = {\n 'type': 'Pie',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'startAngle',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'endAngle',\n 'type': 'number',\n 'default': 6.283185307179586\n }, {\n 'name': 'sort',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['startAngle', 'endAngle']\n }]\n};\ninherits(Pie, Transform, {\n transform(_, pulse) {\n var as = _.as || ['startAngle', 'endAngle'],\n startAngle = as[0],\n endAngle = as[1],\n field = _.field || one,\n start = _.startAngle || 0,\n stop = _.endAngle != null ? _.endAngle : 2 * Math.PI,\n data = pulse.source,\n values = data.map(field),\n n = values.length,\n a = start,\n k = (stop - start) / sum(values),\n index = range(n),\n i,\n t,\n v;\n if (_.sort) {\n index.sort((a, b) => values[a] - values[b]);\n }\n for (i = 0; i < n; ++i) {\n v = values[index[i]];\n t = data[index[i]];\n t[startAngle] = a;\n t[endAngle] = a += v * k;\n }\n this.value = values;\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\n\nconst DEFAULT_COUNT = 5;\nfunction includeZero(scale) {\n const type = scale.type;\n return !scale.bins && (type === Linear || type === Pow || type === Sqrt);\n}\nfunction includePad(type) {\n return isContinuous(type) && type !== Sequential;\n}\nconst SKIP = toSet(['set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount', 'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins', 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma']);\n\n/**\n * Maintains a scale function mapping data values to visual channels.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Scale(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Scale, Transform, {\n transform(_, pulse) {\n var df = pulse.dataflow,\n scale$1 = this.value,\n key = scaleKey(_);\n if (!scale$1 || key !== scale$1.type) {\n this.value = scale$1 = scale(key)();\n }\n for (key in _) if (!SKIP[key]) {\n // padding is a scale property for band/point but not others\n if (key === 'padding' && includePad(scale$1.type)) continue;\n // invoke scale property setter, raise warning if not found\n isFunction(scale$1[key]) ? scale$1[key](_[key]) : df.warn('Unsupported scale property: ' + key);\n }\n configureRange(scale$1, _, configureBins(scale$1, _, configureDomain(scale$1, _, df)));\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n }\n});\nfunction scaleKey(_) {\n var t = _.type,\n d = '',\n n;\n\n // backwards compatibility pre Vega 5.\n if (t === Sequential) return Sequential + '-' + Linear;\n if (isContinuousColor(_)) {\n n = _.rawDomain ? _.rawDomain.length : _.domain ? _.domain.length + +(_.domainMid != null) : 0;\n d = n === 2 ? Sequential + '-' : n === 3 ? Diverging + '-' : '';\n }\n return (d + t || Linear).toLowerCase();\n}\nfunction isContinuousColor(_) {\n const t = _.type;\n return isContinuous(t) && t !== Time && t !== UTC && (_.scheme || _.range && _.range.length && _.range.every(isString));\n}\nfunction configureDomain(scale, _, df) {\n // check raw domain, if provided use that and exit early\n const raw = rawDomain(scale, _.domainRaw, df);\n if (raw > -1) return raw;\n var domain = _.domain,\n type = scale.type,\n zero = _.zero || _.zero === undefined && includeZero(scale),\n n,\n mid;\n if (!domain) return 0;\n\n // adjust continuous domain for minimum pixel padding\n if (includePad(type) && _.padding && domain[0] !== peek(domain)) {\n domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant);\n }\n\n // adjust domain based on zero, min, max settings\n if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) {\n n = (domain = domain.slice()).length - 1 || 1;\n if (zero) {\n if (domain[0] > 0) domain[0] = 0;\n if (domain[n] < 0) domain[n] = 0;\n }\n if (_.domainMin != null) domain[0] = _.domainMin;\n if (_.domainMax != null) domain[n] = _.domainMax;\n if (_.domainMid != null) {\n mid = _.domainMid;\n const i = mid > domain[n] ? n + 1 : mid < domain[0] ? 0 : n;\n if (i !== n) df.warn('Scale domainMid exceeds domain min or max.', mid);\n domain.splice(i, 0, mid);\n }\n }\n\n // set the scale domain\n scale.domain(domainCheck(type, domain, df));\n\n // if ordinal scale domain is defined, prevent implicit\n // domain construction as side-effect of scale lookup\n if (type === Ordinal) {\n scale.unknown(_.domainImplicit ? scaleImplicit : undefined);\n }\n\n // perform 'nice' adjustment as requested\n if (_.nice && scale.nice) {\n scale.nice(_.nice !== true && tickCount(scale, _.nice) || null);\n }\n\n // return the cardinality of the domain\n return domain.length;\n}\nfunction rawDomain(scale, raw, df) {\n if (raw) {\n scale.domain(domainCheck(scale.type, raw, df));\n return raw.length;\n } else {\n return -1;\n }\n}\nfunction padDomain(type, domain, range, pad, exponent, constant) {\n var span = Math.abs(peek(range) - range[0]),\n frac = span / (span - 2 * pad),\n d = type === Log ? zoomLog(domain, null, frac) : type === Sqrt ? zoomPow(domain, null, frac, 0.5) : type === Pow ? zoomPow(domain, null, frac, exponent || 1) : type === Symlog ? zoomSymlog(domain, null, frac, constant || 1) : zoomLinear(domain, null, frac);\n domain = domain.slice();\n domain[0] = d[0];\n domain[domain.length - 1] = d[1];\n return domain;\n}\nfunction domainCheck(type, domain, df) {\n if (isLogarithmic(type)) {\n // sum signs of domain values\n // if all pos or all neg, abs(sum) === domain.length\n var s = Math.abs(domain.reduce((s, v) => s + (v < 0 ? -1 : v > 0 ? 1 : 0), 0));\n if (s !== domain.length) {\n df.warn('Log scale domain includes zero: ' + stringValue(domain));\n }\n }\n return domain;\n}\nfunction configureBins(scale, _, count) {\n let bins = _.bins;\n if (bins && !isArray(bins)) {\n // generate bin boundary array\n const domain = scale.domain(),\n lo = domain[0],\n hi = peek(domain),\n step = bins.step;\n let start = bins.start == null ? lo : bins.start,\n stop = bins.stop == null ? hi : bins.stop;\n if (!step) error('Scale bins parameter missing step property.');\n if (start < lo) start = step * Math.ceil(lo / step);\n if (stop > hi) stop = step * Math.floor(hi / step);\n bins = range(start, stop + step / 2, step);\n }\n if (bins) {\n // assign bin boundaries to scale instance\n scale.bins = bins;\n } else if (scale.bins) {\n // no current bins, remove bins if previously set\n delete scale.bins;\n }\n\n // special handling for bin-ordinal scales\n if (scale.type === BinOrdinal) {\n if (!bins) {\n // the domain specifies the bins\n scale.bins = scale.domain();\n } else if (!_.domain && !_.domainRaw) {\n // the bins specify the domain\n scale.domain(bins);\n count = bins.length;\n }\n }\n\n // return domain cardinality\n return count;\n}\nfunction configureRange(scale, _, count) {\n var type = scale.type,\n round = _.round || false,\n range = _.range;\n\n // if range step specified, calculate full range extent\n if (_.rangeStep != null) {\n range = configureRangeStep(type, _, count);\n }\n\n // else if a range scheme is defined, use that\n else if (_.scheme) {\n range = configureScheme(type, _, count);\n if (isFunction(range)) {\n if (scale.interpolator) {\n return scale.interpolator(range);\n } else {\n error(`Scale type ${type} does not support interpolating color schemes.`);\n }\n }\n }\n\n // given a range array for an interpolating scale, convert to interpolator\n if (range && isInterpolating(type)) {\n return scale.interpolator(interpolateColors(flip(range, _.reverse), _.interpolate, _.interpolateGamma));\n }\n\n // configure rounding / interpolation\n if (range && _.interpolate && scale.interpolate) {\n scale.interpolate(interpolate(_.interpolate, _.interpolateGamma));\n } else if (isFunction(scale.round)) {\n scale.round(round);\n } else if (isFunction(scale.rangeRound)) {\n scale.interpolate(round ? interpolateRound : interpolate$1);\n }\n if (range) scale.range(flip(range, _.reverse));\n}\nfunction configureRangeStep(type, _, count) {\n if (type !== Band && type !== Point) {\n error('Only band and point scales support rangeStep.');\n }\n\n // calculate full range based on requested step size and padding\n var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,\n inner = type === Point ? 1 : (_.paddingInner != null ? _.paddingInner : _.padding) || 0;\n return [0, _.rangeStep * bandSpace(count, inner, outer)];\n}\nfunction configureScheme(type, _, count) {\n var extent = _.schemeExtent,\n name,\n scheme$1;\n if (isArray(_.scheme)) {\n scheme$1 = interpolateColors(_.scheme, _.interpolate, _.interpolateGamma);\n } else {\n name = _.scheme.toLowerCase();\n scheme$1 = scheme(name);\n if (!scheme$1) error(`Unrecognized scheme name: ${_.scheme}`);\n }\n\n // determine size for potential discrete range\n count = type === Threshold ? count + 1 : type === BinOrdinal ? count - 1 : type === Quantile || type === Quantize ? +_.schemeCount || DEFAULT_COUNT : count;\n\n // adjust and/or quantize scheme as appropriate\n return isInterpolating(type) ? adjustScheme(scheme$1, extent, _.reverse) : isFunction(scheme$1) ? quantizeInterpolator(adjustScheme(scheme$1, extent), count) : type === Ordinal ? scheme$1 : scheme$1.slice(0, count);\n}\nfunction adjustScheme(scheme, extent, reverse) {\n return isFunction(scheme) && (extent || reverse) ? interpolateRange(scheme, flip(extent || [0, 1], reverse)) : scheme;\n}\nfunction flip(array, reverse) {\n return reverse ? array.slice().reverse() : array;\n}\n\n/**\n * Sorts scenegraph items in the pulse source array.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n * function for sorting tuples.\n */\nfunction SortItems(params) {\n Transform.call(this, null, params);\n}\ninherits(SortItems, Transform, {\n transform(_, pulse) {\n const mod = _.modified('sort') || pulse.changed(pulse.ADD) || pulse.modified(_.sort.fields) || pulse.modified('datum');\n if (mod) pulse.source.sort(stableCompare(_.sort));\n this.modified(mod);\n return pulse;\n }\n});\n\nconst Zero = 'zero',\n Center = 'center',\n Normalize = 'normalize',\n DefOutput = ['y0', 'y1'];\n\n/**\n * Stack layout for visualization elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to stack.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {function(object,object): number} [params.sort] - A comparator for stack sorting.\n * @param {string} [offset='zero'] - Stack baseline offset. One of 'zero', 'center', 'normalize'.\n */\nfunction Stack(params) {\n Transform.call(this, null, params);\n}\nStack.Definition = {\n 'type': 'Stack',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'offset',\n 'type': 'enum',\n 'default': Zero,\n 'values': [Zero, Center, Normalize]\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': DefOutput\n }]\n};\ninherits(Stack, Transform, {\n transform(_, pulse) {\n var as = _.as || DefOutput,\n y0 = as[0],\n y1 = as[1],\n sort = stableCompare(_.sort),\n field = _.field || one,\n stack = _.offset === Center ? stackCenter : _.offset === Normalize ? stackNormalize : stackZero,\n groups,\n i,\n n,\n max;\n\n // partition, sum, and sort the stack groups\n groups = partition(pulse.source, _.groupby, sort, field);\n\n // compute stack layouts per group\n for (i = 0, n = groups.length, max = groups.max; i < n; ++i) {\n stack(groups[i], max, field, y0, y1);\n }\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\nfunction stackCenter(group, max, field, y0, y1) {\n var last = (max - group.sum) / 2,\n m = group.length,\n j = 0,\n t;\n for (; j < m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = last += Math.abs(field(t));\n }\n}\nfunction stackNormalize(group, max, field, y0, y1) {\n var scale = 1 / group.sum,\n last = 0,\n m = group.length,\n j = 0,\n v = 0,\n t;\n for (; j < m; ++j) {\n t = group[j];\n t[y0] = last;\n t[y1] = last = scale * (v += Math.abs(field(t)));\n }\n}\nfunction stackZero(group, max, field, y0, y1) {\n var lastPos = 0,\n lastNeg = 0,\n m = group.length,\n j = 0,\n v,\n t;\n for (; j < m; ++j) {\n t = group[j];\n v = +field(t);\n if (v < 0) {\n t[y0] = lastNeg;\n t[y1] = lastNeg += v;\n } else {\n t[y0] = lastPos;\n t[y1] = lastPos += v;\n }\n }\n}\nfunction partition(data, groupby, sort, field) {\n var groups = [],\n get = f => f(t),\n map,\n i,\n n,\n m,\n t,\n k,\n g,\n s,\n max;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data.slice());\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n groups.push(g);\n }\n g.push(t);\n }\n }\n\n // compute sums of groups, sort groups as needed\n for (k = 0, max = 0, m = groups.length; k < m; ++k) {\n g = groups[k];\n for (i = 0, s = 0, n = g.length; i < n; ++i) {\n s += Math.abs(field(g[i]));\n }\n g.sum = s;\n if (s > max) max = s;\n if (sort) g.sort(sort);\n }\n groups.max = max;\n return groups;\n}\n\nexport { AxisTicks as axisticks, DataJoin as datajoin, Encode as encode, LegendEntries as legendentries, LinkPath as linkpath, Pie as pie, Scale as scale, SortItems as sortitems, Stack as stack };\n", "import { Transform, rederive, ingest, replace } from 'vega-dataflow';\nimport { error, extent, inherits, identity, isArray, isFunction, isNumber, array, constant, one, accessorName, accessorFields, field, extend, toSet, zero } from 'vega-util';\nimport { tickStep, range, max, sum } from 'd3-array';\nimport { bandwidthNRD } from 'vega-statistics';\nimport { getProjectionPath, projectionProperties, projection } from 'vega-projection';\nimport { geoGraticule } from 'd3-geo';\nimport { rgb } from 'd3-color';\nimport { canvas } from 'vega-canvas';\n\nfunction noop() {}\nconst cases = [[], [[[1.0, 1.5], [0.5, 1.0]]], [[[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [0.5, 1.0]]], [[[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 0.5], [1.0, 1.5]]], [[[1.0, 0.5], [0.5, 1.0]]], [[[0.5, 1.0], [1.0, 0.5]]], [[[1.0, 1.5], [1.0, 0.5]]], [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [1.0, 0.5]]], [[[0.5, 1.0], [1.5, 1.0]]], [[[1.0, 1.5], [1.5, 1.0]]], [[[0.5, 1.0], [1.0, 1.5]]], []];\n\n// Implementation adapted from d3/d3-contour. Thanks!\nfunction contours () {\n var dx = 1,\n dy = 1,\n smooth = smoothLinear;\n function contours(values, tz) {\n return tz.map(value => contour(values, value));\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n isorings(values, value, ring => {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);else holes.push(ring);\n });\n holes.forEach(hole => {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n return {\n type: 'MultiPolygon',\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array(),\n fragmentByEnd = new Array(),\n x,\n y,\n t0,\n t1,\n t2,\n t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f,\n g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {\n start: f.start,\n end: g.end,\n ring: f.ring.concat(g.ring)\n };\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {\n start: g.start,\n end: f.end,\n ring: g.ring.concat(f.ring)\n };\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {\n start: startIndex,\n end: endIndex,\n ring: [start, end]\n };\n }\n }\n }\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n function smoothLinear(ring, values, value) {\n ring.forEach(point => {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n contours.contour = contour;\n contours.size = function (_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.floor(_[0]),\n _1 = Math.floor(_[1]);\n if (!(_0 >= 0 && _1 >= 0)) error('invalid size');\n return dx = _0, dy = _1, contours;\n };\n contours.smooth = function (_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n return contours;\n}\nfunction area(ring) {\n var i = 0,\n n = ring.length,\n area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\nfunction contains(ring, hole) {\n var i = -1,\n n = hole.length,\n c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\nfunction ringContains(ring, point) {\n var x = point[0],\n y = point[1],\n contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i],\n xi = pi[0],\n yi = pi[1],\n pj = ring[j],\n xj = pj[0],\n yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) contains = -contains;\n }\n return contains;\n}\nfunction segmentContains(a, b, c) {\n var i;\n return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n\nfunction quantize (k, nice, zero) {\n return function (values) {\n var ex = extent(values),\n start = zero ? Math.min(ex[0], 0) : ex[0],\n stop = ex[1],\n span = stop - start,\n step = nice ? tickStep(start, stop, k) : span / (k + 1);\n return range(start + step, stop, step);\n };\n}\n\n/**\n * Generate isocontours (level sets) based on input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n * data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {Array<number>} [params.thresholds] - Contour threshold array. If\n * specified, the levels, nice, resolve, and zero parameters are ignored.\n * @param {number} [params.levels] - The desired number of contour levels.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n * threshold values should be automatically aligned to \"nice\"\n * human-friendly values. Setting this flag may cause the number of\n * thresholds to deviate from the specified levels.\n * @param {string} [params.resolve] - The method for resolving thresholds\n * across multiple input grids. If 'independent' (the default), threshold\n * calculation will be performed separately for each grid. If 'shared', a\n * single set of threshold values will be used for all input grids.\n * @param {boolean} [params.zero] - Boolean flag indicating if the contour\n * threshold values should include zero.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n * polygons should be smoothed using linear interpolation. The default is\n * true. The parameter is ignored when using density estimation.\n * @param {boolean} [params.scale] - Optional numerical value by which to\n * scale the output isocontour coordinates. This parameter can be useful\n * to scale the contours to match a desired output resolution.\n * @param {string} [params.as='contour'] - The output field in which to store\n * the generated isocontour data (default 'contour').\n */\nfunction Isocontour(params) {\n Transform.call(this, null, params);\n}\nIsocontour.Definition = {\n 'type': 'Isocontour',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'thresholds',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'levels',\n 'type': 'number'\n }, {\n 'name': 'nice',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'resolve',\n 'type': 'enum',\n 'values': ['shared', 'independent'],\n 'default': 'independent'\n }, {\n 'name': 'zero',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'smooth',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'scale',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'translate',\n 'type': 'number',\n 'array': true,\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'null': true,\n 'default': 'contour'\n }]\n};\ninherits(Isocontour, Transform, {\n transform(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified()) {\n return pulse.StopPropagation;\n }\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n source = pulse.materialize(pulse.SOURCE).source,\n field = _.field || identity,\n contour = contours().smooth(_.smooth !== false),\n tz = _.thresholds || levels(source, field, _),\n as = _.as === null ? null : _.as || 'contour',\n values = [];\n source.forEach(t => {\n const grid = field(t);\n\n // generate contour paths in GeoJSON format\n const paths = contour.size([grid.width, grid.height])(grid.values, isArray(tz) ? tz : tz(grid.values));\n\n // adjust contour path coordinates as needed\n transformPaths(paths, grid, t, _);\n\n // ingest; copy source data properties to output\n paths.forEach(p => {\n values.push(rederive(t, ingest(as != null ? {\n [as]: p\n } : p)));\n });\n });\n if (this.value) out.rem = this.value;\n this.value = out.source = out.add = values;\n return out;\n }\n});\nfunction levels(values, f, _) {\n const q = quantize(_.levels || 10, _.nice, _.zero !== false);\n return _.resolve !== 'shared' ? q : q(values.map(t => max(f(t).values)));\n}\nfunction transformPaths(paths, grid, datum, _) {\n let s = _.scale || grid.scale,\n t = _.translate || grid.translate;\n if (isFunction(s)) s = s(datum, _);\n if (isFunction(t)) t = t(datum, _);\n if ((s === 1 || s == null) && !t) return;\n const sx = (isNumber(s) ? s : s[0]) || 1,\n sy = (isNumber(s) ? s : s[1]) || 1,\n tx = t && t[0] || 0,\n ty = t && t[1] || 0;\n paths.forEach(transform(grid, sx, sy, tx, ty));\n}\nfunction transform(grid, sx, sy, tx, ty) {\n const x1 = grid.x1 || 0,\n y1 = grid.y1 || 0,\n flip = sx * sy < 0;\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n function transformRing(coordinates) {\n if (flip) coordinates.reverse(); // maintain winding order\n coordinates.forEach(transformPoint);\n }\n function transformPoint(coordinates) {\n coordinates[0] = (coordinates[0] - x1) * sx + tx;\n coordinates[1] = (coordinates[1] - y1) * sy + ty;\n }\n return function (geometry) {\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n };\n}\n\nfunction radius(bw, data, f) {\n const v = bw >= 0 ? bw : bandwidthNRD(data, f);\n return Math.round((Math.sqrt(4 * v * v + 1) - 1) / 2);\n}\nfunction number(_) {\n return isFunction(_) ? _ : constant(+_);\n}\n\n// Implementation adapted from d3/d3-contour. Thanks!\nfunction density2D () {\n var x = d => d[0],\n y = d => d[1],\n weight = one,\n bandwidth = [-1, -1],\n dx = 960,\n dy = 500,\n k = 2; // log2(cellSize)\n\n function density(data, counts) {\n const rx = radius(bandwidth[0], data, x) >> k,\n // blur x-radius\n ry = radius(bandwidth[1], data, y) >> k,\n // blur y-radius\n ox = rx ? rx + 2 : 0,\n // x-offset padding for blur\n oy = ry ? ry + 2 : 0,\n // y-offset padding for blur\n n = 2 * ox + (dx >> k),\n // grid width\n m = 2 * oy + (dy >> k),\n // grid height\n values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n let values = values0;\n data.forEach(d => {\n const xi = ox + (+x(d) >> k),\n yi = oy + (+y(d) >> k);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += +weight(d);\n }\n });\n if (rx > 0 && ry > 0) {\n blurX(n, m, values0, values1, rx);\n blurY(n, m, values1, values0, ry);\n blurX(n, m, values0, values1, rx);\n blurY(n, m, values1, values0, ry);\n blurX(n, m, values0, values1, rx);\n blurY(n, m, values1, values0, ry);\n } else if (rx > 0) {\n blurX(n, m, values0, values1, rx);\n blurX(n, m, values1, values0, rx);\n blurX(n, m, values0, values1, rx);\n values = values1;\n } else if (ry > 0) {\n blurY(n, m, values0, values1, ry);\n blurY(n, m, values1, values0, ry);\n blurY(n, m, values0, values1, ry);\n values = values1;\n }\n\n // scale density estimates\n // density in points per square pixel or probability density\n const s = counts ? Math.pow(2, -2 * k) : 1 / sum(values);\n for (let i = 0, sz = n * m; i < sz; ++i) values[i] *= s;\n return {\n values: values,\n scale: 1 << k,\n width: n,\n height: m,\n x1: ox,\n y1: oy,\n x2: ox + (dx >> k),\n y2: oy + (dy >> k)\n };\n }\n density.x = function (_) {\n return arguments.length ? (x = number(_), density) : x;\n };\n density.y = function (_) {\n return arguments.length ? (y = number(_), density) : y;\n };\n density.weight = function (_) {\n return arguments.length ? (weight = number(_), density) : weight;\n };\n density.size = function (_) {\n if (!arguments.length) return [dx, dy];\n var _0 = +_[0],\n _1 = +_[1];\n if (!(_0 >= 0 && _1 >= 0)) error('invalid size');\n return dx = _0, dy = _1, density;\n };\n density.cellSize = function (_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) error('invalid cell size');\n k = Math.floor(Math.log(_) / Math.LN2);\n return density;\n };\n density.bandwidth = function (_) {\n if (!arguments.length) return bandwidth;\n _ = array(_);\n if (_.length === 1) _ = [+_[0], +_[0]];\n if (_.length !== 2) error('invalid bandwidth');\n return bandwidth = _, density;\n };\n return density;\n}\nfunction blurX(n, m, source, target, r) {\n const w = (r << 1) + 1;\n for (let j = 0; j < m; ++j) {\n for (let i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source[i - w + j * n];\n }\n target[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\nfunction blurY(n, m, source, target, r) {\n const w = (r << 1) + 1;\n for (let i = 0; i < n; ++i) {\n for (let j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source[i + (j - w) * n];\n }\n target[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n\n/**\n * Perform 2D kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The [width, height] extent (in\n * units of input pixels) over which to perform density estimation.\n * @param {function(object): number} params.x - The x-coordinate accessor.\n * @param {function(object): number} params.y - The y-coordinate accessor.\n * @param {function(object): number} [params.weight] - The weight accessor.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n * to groupby.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * This parameter determines the level of spatial approximation. For example,\n * the default value of 4 maps to 2x reductions in both x- and y- dimensions.\n * A value of 1 will result in an output raster grid whose dimensions exactly\n * matches the size parameter.\n * @param {Array<number>} [params.bandwidth] - The KDE kernel bandwidths,\n * in pixels. The input can be a two-element array specifying separate\n * x and y bandwidths, or a single-element array specifying both. If the\n * bandwidth is unspecified or less than zero, the bandwidth will be\n * automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n * output values should be probability estimates (false, default) or\n * smoothed counts (true).\n * @param {string} [params.as='grid'] - The output field in which to store\n * the generated raster grid (default 'grid').\n */\nfunction KDE2D(params) {\n Transform.call(this, null, params);\n}\nKDE2D.Definition = {\n 'type': 'KDE2D',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'required': true\n }, {\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'weight',\n 'type': 'field'\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'cellSize',\n 'type': 'number'\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'counts',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'grid'\n }]\n};\nconst PARAMS = ['x', 'y', 'weight', 'size', 'cellSize', 'bandwidth'];\nfunction params(obj, _) {\n PARAMS.forEach(param => _[param] != null ? obj[param](_[param]) : 0);\n return obj;\n}\ninherits(KDE2D, Transform, {\n transform(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified()) return pulse.StopPropagation;\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n kde = params(density2D(), _),\n as = _.as || 'grid',\n values = [];\n function set(t, vals) {\n for (let i = 0; i < names.length; ++i) t[names[i]] = vals[i];\n return t;\n }\n\n // generate density raster grids\n values = groups.map(g => ingest(set({\n [as]: kde(g, _.counts)\n }, g.dims)));\n if (this.value) out.rem = this.value;\n this.value = out.source = out.add = values;\n return out;\n }\n});\nfunction partition(data, groupby) {\n var groups = [],\n get = f => f(t),\n map,\n i,\n n,\n t,\n k,\n g;\n\n // partition data points into groups\n if (groupby == null) {\n groups.push(data);\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n g.dims = k;\n groups.push(g);\n }\n g.push(t);\n }\n }\n return groups;\n}\n\n/**\n * Generate contours based on kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The dimensions [width, height] over which to compute contours.\n * If the values parameter is provided, this must be the dimensions of the input data.\n * If density estimation is performed, this is the output view dimensions in pixels.\n * @param {Array<number>} [params.values] - An array of numeric values representing an\n * width x height grid of values over which to compute contours. If unspecified, this\n * transform will instead attempt to compute contours for the kernel density estimate\n * using values drawn from data tuples in the input pulse.\n * @param {function(object): number} [params.x] - The pixel x-coordinate accessor for density estimation.\n * @param {function(object): number} [params.y] - The pixel y-coordinate accessor for density estimation.\n * @param {function(object): number} [params.weight] - The data point weight accessor for density estimation.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * @param {number} [params.bandwidth] - Kernel density estimation bandwidth.\n * @param {Array<number>} [params.thresholds] - Contour threshold array. If\n * this parameter is set, the count and nice parameters will be ignored.\n * @param {number} [params.count] - The desired number of contours.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n * threshold values should be automatically aligned to \"nice\"\n * human-friendly values. Setting this flag may cause the number of\n * thresholds to deviate from the specified count.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n * polygons should be smoothed using linear interpolation. The default is\n * true. The parameter is ignored when using density estimation.\n */\nfunction Contour(params) {\n Transform.call(this, null, params);\n}\nContour.Definition = {\n 'type': 'Contour',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'required': true\n }, {\n 'name': 'values',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'x',\n 'type': 'field'\n }, {\n 'name': 'y',\n 'type': 'field'\n }, {\n 'name': 'weight',\n 'type': 'field'\n }, {\n 'name': 'cellSize',\n 'type': 'number'\n }, {\n 'name': 'bandwidth',\n 'type': 'number'\n }, {\n 'name': 'count',\n 'type': 'number'\n }, {\n 'name': 'nice',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'thresholds',\n 'type': 'number',\n 'array': true\n }, {\n 'name': 'smooth',\n 'type': 'boolean',\n 'default': true\n }]\n};\ninherits(Contour, Transform, {\n transform(_, pulse) {\n if (this.value && !pulse.changed() && !_.modified()) {\n return pulse.StopPropagation;\n }\n var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n contour = contours().smooth(_.smooth !== false),\n values = _.values,\n thresh = _.thresholds || quantize(_.count || 10, _.nice, !!values),\n size = _.size,\n grid,\n post;\n if (!values) {\n values = pulse.materialize(pulse.SOURCE).source;\n grid = params(density2D(), _)(values, true);\n post = transform(grid, grid.scale || 1, grid.scale || 1, 0, 0);\n size = [grid.width, grid.height];\n values = grid.values;\n }\n thresh = isArray(thresh) ? thresh : thresh(values);\n values = contour.size(size)(values, thresh);\n if (post) values.forEach(post);\n if (this.value) out.rem = this.value;\n this.value = out.source = out.add = (values || []).map(ingest);\n return out;\n }\n});\n\nconst Feature = 'Feature';\nconst FeatureCollection = 'FeatureCollection';\nconst MultiPoint = 'MultiPoint';\n\n/**\n * Consolidate an array of [longitude, latitude] points or GeoJSON features\n * into a combined GeoJSON object. This transform is particularly useful for\n * combining geo data for a Projection's fit argument. The resulting GeoJSON\n * data is available as this transform's value. Input pulses are unchanged.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.fields] - A two-element array\n * of field accessors for the longitude and latitude values.\n * @param {function(object): *} params.geojson - A field accessor for\n * retrieving GeoJSON feature data.\n */\nfunction GeoJSON(params) {\n Transform.call(this, null, params);\n}\nGeoJSON.Definition = {\n 'type': 'GeoJSON',\n 'metadata': {},\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'geojson',\n 'type': 'field'\n }]\n};\ninherits(GeoJSON, Transform, {\n transform(_, pulse) {\n var features = this._features,\n points = this._points,\n fields = _.fields,\n lon = fields && fields[0],\n lat = fields && fields[1],\n geojson = _.geojson || !fields && identity,\n flag = pulse.ADD,\n mod;\n mod = _.modified() || pulse.changed(pulse.REM) || pulse.modified(accessorFields(geojson)) || lon && pulse.modified(accessorFields(lon)) || lat && pulse.modified(accessorFields(lat));\n if (!this.value || mod) {\n flag = pulse.SOURCE;\n this._features = features = [];\n this._points = points = [];\n }\n if (geojson) {\n pulse.visit(flag, t => features.push(geojson(t)));\n }\n if (lon && lat) {\n pulse.visit(flag, t => {\n var x = lon(t),\n y = lat(t);\n if (x != null && y != null && (x = +x) === x && (y = +y) === y) {\n points.push([x, y]);\n }\n });\n features = features.concat({\n type: Feature,\n geometry: {\n type: MultiPoint,\n coordinates: points\n }\n });\n }\n this.value = {\n type: FeatureCollection,\n features: features\n };\n }\n});\n\n/**\n * Map GeoJSON data to an SVG path string.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='path'] - The output field in which to store\n * the generated path data (default 'path').\n */\nfunction GeoPath(params) {\n Transform.call(this, null, params);\n}\nGeoPath.Definition = {\n 'type': 'GeoPath',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'projection',\n 'type': 'projection'\n }, {\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'pointRadius',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'path'\n }]\n};\ninherits(GeoPath, Transform, {\n transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n path = this.value,\n field = _.field || identity,\n as = _.as || 'path',\n flag = out.SOURCE;\n if (!path || _.modified()) {\n // parameters updated, reset and reflow\n this.value = path = getProjectionPath(_.projection);\n out.materialize().reflow();\n } else {\n flag = field === identity || pulse.modified(field.fields) ? out.ADD_MOD : out.ADD;\n }\n const prev = initPath(path, _.pointRadius);\n out.visit(flag, t => t[as] = path(field(t)));\n path.pointRadius(prev);\n return out.modifies(as);\n }\n});\nfunction initPath(path, pointRadius) {\n const prev = path.pointRadius();\n path.context(null);\n if (pointRadius != null) {\n path.pointRadius(pointRadius);\n }\n return prev;\n}\n\n/**\n * Geo-code a longitude/latitude point to an x/y coordinate.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {Array<function(object): *>} params.fields - A two-element array of\n * field accessors for the longitude and latitude values.\n * @param {Array<string>} [params.as] - A two-element array of field names\n * under which to store the result. Defaults to ['x','y'].\n */\nfunction GeoPoint(params) {\n Transform.call(this, null, params);\n}\nGeoPoint.Definition = {\n 'type': 'GeoPoint',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'projection',\n 'type': 'projection',\n 'required': true\n }, {\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 2,\n 'default': ['x', 'y']\n }]\n};\ninherits(GeoPoint, Transform, {\n transform(_, pulse) {\n var proj = _.projection,\n lon = _.fields[0],\n lat = _.fields[1],\n as = _.as || ['x', 'y'],\n x = as[0],\n y = as[1],\n mod;\n function set(t) {\n const xy = proj([lon(t), lat(t)]);\n if (xy) {\n t[x] = xy[0];\n t[y] = xy[1];\n } else {\n t[x] = undefined;\n t[y] = undefined;\n }\n }\n if (_.modified()) {\n // parameters updated, reflow\n pulse = pulse.materialize().reflow(true).visit(pulse.SOURCE, set);\n } else {\n mod = pulse.modified(lon.fields) || pulse.modified(lat.fields);\n pulse.visit(mod ? pulse.ADD_MOD : pulse.ADD, set);\n }\n return pulse.modifies(as);\n }\n});\n\n/**\n * Annotate items with a geopath shape generator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n * projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n * or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='shape'] - The output field in which to store\n * the generated path data (default 'shape').\n */\nfunction GeoShape(params) {\n Transform.call(this, null, params);\n}\nGeoShape.Definition = {\n 'type': 'GeoShape',\n 'metadata': {\n 'modifies': true,\n 'nomod': true\n },\n 'params': [{\n 'name': 'projection',\n 'type': 'projection'\n }, {\n 'name': 'field',\n 'type': 'field',\n 'default': 'datum'\n }, {\n 'name': 'pointRadius',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'shape'\n }]\n};\ninherits(GeoShape, Transform, {\n transform(_, pulse) {\n var out = pulse.fork(pulse.ALL),\n shape = this.value,\n as = _.as || 'shape',\n flag = out.ADD;\n if (!shape || _.modified()) {\n // parameters updated, reset and reflow\n this.value = shape = shapeGenerator(getProjectionPath(_.projection), _.field || field('datum'), _.pointRadius);\n out.materialize().reflow();\n flag = out.SOURCE;\n }\n out.visit(flag, t => t[as] = shape);\n return out.modifies(as);\n }\n});\nfunction shapeGenerator(path, field, pointRadius) {\n const shape = pointRadius == null ? _ => path(field(_)) : _ => {\n var prev = path.pointRadius(),\n value = path.pointRadius(pointRadius)(field(_));\n path.pointRadius(prev);\n return value;\n };\n shape.context = _ => {\n path.context(_);\n return shape;\n };\n return shape;\n}\n\n/**\n * GeoJSON feature generator for creating graticules.\n * @constructor\n */\nfunction Graticule(params) {\n Transform.call(this, [], params);\n this.generator = geoGraticule();\n}\nGraticule.Definition = {\n 'type': 'Graticule',\n 'metadata': {\n 'changes': true,\n 'generates': true\n },\n 'params': [{\n 'name': 'extent',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'extentMajor',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'extentMinor',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'step',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'stepMajor',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'default': [90, 360]\n }, {\n 'name': 'stepMinor',\n 'type': 'number',\n 'array': true,\n 'length': 2,\n 'default': [10, 10]\n }, {\n 'name': 'precision',\n 'type': 'number',\n 'default': 2.5\n }]\n};\ninherits(Graticule, Transform, {\n transform(_, pulse) {\n var src = this.value,\n gen = this.generator,\n t;\n if (!src.length || _.modified()) {\n for (const prop in _) {\n if (isFunction(gen[prop])) {\n gen[prop](_[prop]);\n }\n }\n }\n t = gen();\n if (src.length) {\n pulse.mod.push(replace(src[0], t));\n } else {\n pulse.add.push(ingest(t));\n }\n src[0] = t;\n return pulse;\n }\n});\n\n/**\n * Render a heatmap image for input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n * data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {string} [params.color] - A constant color value or function for\n * individual pixel color. If a function, it will be invoked with an input\n * object that includes $x, $y, $value, and $max fields for the grid.\n * @param {number} [params.opacity] - A constant opacity value or function for\n * individual pixel opacity. If a function, it will be invoked with an input\n * object that includes $x, $y, $value, and $max fields for the grid.\n * @param {string} [params.resolve] - The method for resolving maximum values\n * across multiple input grids. If 'independent' (the default), maximum\n * calculation will be performed separately for each grid. If 'shared',\n * a single global maximum will be used for all input grids.\n * @param {string} [params.as='image'] - The output field in which to store\n * the generated bitmap canvas images (default 'image').\n */\nfunction Heatmap(params) {\n Transform.call(this, null, params);\n}\nHeatmap.Definition = {\n 'type': 'heatmap',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'color',\n 'type': 'string',\n 'expr': true\n }, {\n 'name': 'opacity',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'resolve',\n 'type': 'enum',\n 'values': ['shared', 'independent'],\n 'default': 'independent'\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'image'\n }]\n};\ninherits(Heatmap, Transform, {\n transform(_, pulse) {\n if (!pulse.changed() && !_.modified()) {\n return pulse.StopPropagation;\n }\n var source = pulse.materialize(pulse.SOURCE).source,\n shared = _.resolve === 'shared',\n field = _.field || identity,\n opacity = opacity_(_.opacity, _),\n color = color_(_.color, _),\n as = _.as || 'image',\n obj = {\n $x: 0,\n $y: 0,\n $value: 0,\n $max: shared ? max(source.map(t => max(field(t).values))) : 0\n };\n source.forEach(t => {\n const v = field(t);\n\n // build proxy data object\n const o = extend({}, t, obj);\n // set maximum value if not globally shared\n if (!shared) o.$max = max(v.values || []);\n\n // generate canvas image\n // optimize color/opacity if not pixel-dependent\n t[as] = toCanvas(v, o, color.dep ? color : constant(color(o)), opacity.dep ? opacity : constant(opacity(o)));\n });\n return pulse.reflow(true).modifies(as);\n }\n});\n\n// get image color function\nfunction color_(color, _) {\n let f;\n if (isFunction(color)) {\n f = obj => rgb(color(obj, _));\n f.dep = dependency(color);\n } else {\n // default to mid-grey\n f = constant(rgb(color || '#888'));\n }\n return f;\n}\n\n// get image opacity function\nfunction opacity_(opacity, _) {\n let f;\n if (isFunction(opacity)) {\n f = obj => opacity(obj, _);\n f.dep = dependency(opacity);\n } else if (opacity) {\n f = constant(opacity);\n } else {\n // default to [0, max] opacity gradient\n f = obj => obj.$value / obj.$max || 0;\n f.dep = true;\n }\n return f;\n}\n\n// check if function depends on individual pixel data\nfunction dependency(f) {\n if (!isFunction(f)) return false;\n const set = toSet(accessorFields(f));\n return set.$x || set.$y || set.$value || set.$max;\n}\n\n// render raster grid to canvas\nfunction toCanvas(grid, obj, color, opacity) {\n const n = grid.width,\n m = grid.height,\n x1 = grid.x1 || 0,\n y1 = grid.y1 || 0,\n x2 = grid.x2 || n,\n y2 = grid.y2 || m,\n val = grid.values,\n value = val ? i => val[i] : zero,\n can = canvas(x2 - x1, y2 - y1),\n ctx = can.getContext('2d'),\n img = ctx.getImageData(0, 0, x2 - x1, y2 - y1),\n pix = img.data;\n for (let j = y1, k = 0; j < y2; ++j) {\n obj.$y = j - y1;\n for (let i = x1, r = j * n; i < x2; ++i, k += 4) {\n obj.$x = i - x1;\n obj.$value = value(i + r);\n const v = color(obj);\n pix[k + 0] = v.r;\n pix[k + 1] = v.g;\n pix[k + 2] = v.b;\n pix[k + 3] = ~~(255 * opacity(obj));\n }\n }\n ctx.putImageData(img, 0, 0);\n return can;\n}\n\n/**\n * Maintains a cartographic projection.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Projection(params) {\n Transform.call(this, null, params);\n this.modified(true); // always treat as modified\n}\n\ninherits(Projection, Transform, {\n transform(_, pulse) {\n let proj = this.value;\n if (!proj || _.modified('type')) {\n this.value = proj = create(_.type);\n projectionProperties.forEach(prop => {\n if (_[prop] != null) set(proj, prop, _[prop]);\n });\n } else {\n projectionProperties.forEach(prop => {\n if (_.modified(prop)) set(proj, prop, _[prop]);\n });\n }\n if (_.pointRadius != null) proj.path.pointRadius(_.pointRadius);\n if (_.fit) fit(proj, _);\n return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n }\n});\nfunction fit(proj, _) {\n const data = collectGeoJSON(_.fit);\n _.extent ? proj.fitExtent(_.extent, data) : _.size ? proj.fitSize(_.size, data) : 0;\n}\nfunction create(type) {\n const constructor = projection((type || 'mercator').toLowerCase());\n if (!constructor) error('Unrecognized projection type: ' + type);\n return constructor();\n}\nfunction set(proj, key, value) {\n if (isFunction(proj[key])) proj[key](value);\n}\nfunction collectGeoJSON(data) {\n data = array(data);\n return data.length === 1 ? data[0] : {\n type: FeatureCollection,\n features: data.reduce((a, f) => a.concat(featurize(f)), [])\n };\n}\nfunction featurize(f) {\n return f.type === FeatureCollection ? f.features : array(f).filter(d => d != null).map(d => d.type === Feature ? d : {\n type: Feature,\n geometry: d\n });\n}\n\nexport { Contour as contour, GeoJSON as geojson, GeoPath as geopath, GeoPoint as geopoint, GeoShape as geoshape, Graticule as graticule, Heatmap as heatmap, Isocontour as isocontour, KDE2D as kde2d, Projection as projection };\n", "export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n", "export default function noop() {}\n", "function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n", "import {Adder} from \"d3-array\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum = new Adder();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli\u2019s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum = new Adder();\n stream(object, areaStream);\n return areaSum * 2;\n}\n", "import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n", "import {Adder} from \"d3-array\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum,\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum = new Adder();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360\u00B0) % 360\u00B0, except that we want\n// the distance between \u00B1180\u00B0 to be 360\u00B0.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n", "import {Adder} from \"d3-array\";\nimport {asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = hypot(cx, cy, cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2.add(v * cx);\n Y2.add(v * cy);\n Z2.add(v * cz);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 = 0;\n X2 = new Adder();\n Y2 = new Adder();\n Z2 = new Adder();\n stream(object, centroidStream);\n\n var x = +X2,\n y = +Y2,\n z = +Z2,\n m = hypot(x, y, z);\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = hypot(x, y, z);\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}\n", "export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n", "import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n lambda += deltaLambda;\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n", "import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0\u00B0, 0\u00B0], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n", "import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n", "import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n", "import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n", "import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new Adder();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point\u2019s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n", "import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n", "import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n", "import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 \u2A2F n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n", "export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n", "import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon\u2019s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n", "import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n", "export default x => x;\n", "import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n", "import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n", "import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n", "import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n", "import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n", "// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nexport default class PathString {\n constructor(digits) {\n this._append = digits == null ? append : appendRound(digits);\n this._radius = 4.5;\n this._ = \"\";\n }\n pointRadius(_) {\n this._radius = +_;\n return this;\n }\n polygonStart() {\n this._line = 0;\n }\n polygonEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line === 0) this._ += \"Z\";\n this._point = NaN;\n }\n point(x, y) {\n switch (this._point) {\n case 0: {\n this._append`M${x},${y}`;\n this._point = 1;\n break;\n }\n case 1: {\n this._append`L${x},${y}`;\n break;\n }\n default: {\n this._append`M${x},${y}`;\n if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n const r = this._radius;\n const s = this._;\n this._ = \"\"; // stash the old string so we can cache the circle path fragment\n this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n cacheRadius = r;\n cacheAppend = this._append;\n cacheCircle = this._;\n this._ = s;\n }\n this._ += cacheCircle;\n break;\n }\n }\n }\n result() {\n const result = this._;\n this._ = \"\";\n return result.length ? result : null;\n }\n}\n\nfunction append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n const d = Math.floor(digits);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`);\n if (d > 15) return append;\n if (d !== cacheDigits) {\n const k = 10 ** d;\n cacheDigits = d;\n cacheAppend = function append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n }\n return cacheAppend;\n}\n", "import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n let digits = 3,\n pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n return path;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n path.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) digits = null;\n else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n if (context === null) contextStream = new PathString(digits);\n return path;\n };\n\n return path.projection(projection).digits(digits).context(context);\n}\n", "export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n", "import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n", "import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n", "import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n", "import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n", "import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n", "import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n", "import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n", "import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960\u00D7500. The projection also works quite well at 960\u00D7600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n", "import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n", "import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n", "import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n", "import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n", "import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0)\n l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n", "import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n", "import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0)\n l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n", "import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n", "import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n", "import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n", "import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n", "import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n", "import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n", "import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n", "export var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var ceil = Math.ceil;\nexport var cos = Math.cos;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var pow = Math.pow;\nexport var round = Math.round;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sin = Math.sin;\nexport var tan = Math.tan;\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var sqrt1_2 = Math.SQRT1_2;\nexport var sqrt2 = sqrt(2);\nexport var sqrtPi = sqrt(pi);\nexport var tau = pi * 2;\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport function sinci(x) {\n return x ? x / Math.sin(x) : 1;\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function sqrt(x) {\n return x > 0 ? Math.sqrt(x) : 0;\n}\n\nexport function tanh(x) {\n x = exp(2 * x);\n return (x - 1) / (x + 1);\n}\n\nexport function sinh(x) {\n return (exp(x) - exp(-x)) / 2;\n}\n\nexport function cosh(x) {\n return (exp(x) + exp(-x)) / 2;\n}\n\nexport function arsinh(x) {\n return log(x + sqrt(x * x + 1));\n}\n\nexport function arcosh(x) {\n return log(x + sqrt(x * x - 1));\n}\n", "import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, cos, epsilon, halfPi, pi, sin, sqrt2} from \"./math.js\";\n\nexport function mollweideBromleyTheta(cp, phi) {\n var cpsinPhi = cp * sin(phi), i = 30, delta;\n do phi -= delta = (phi + sin(phi) - cpsinPhi) / (1 + cos(phi));\n while (abs(delta) > epsilon && --i > 0);\n return phi / 2;\n}\n\nexport function mollweideBromleyRaw(cx, cy, cp) {\n\n function forward(lambda, phi) {\n return [cx * lambda * cos(phi = mollweideBromleyTheta(cp, phi)), cy * sin(phi)];\n }\n\n forward.invert = function(x, y) {\n return y = asin(y / cy), [x / (cx * cos(y)), asin((2 * y + sin(2 * y)) / cp)];\n };\n\n return forward;\n}\n\nexport var mollweideRaw = mollweideBromleyRaw(sqrt2 / halfPi, sqrt2, pi);\n\nexport default function() {\n return projection(mollweideRaw)\n .scale(169.529);\n}\n", "import { geoPath, geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEquidistant, geoConicConformal, geoConicEqualArea, geoConicEquidistant, geoEqualEarth, geoEquirectangular, geoGnomonic, geoIdentity, geoMercator, geoNaturalEarth1, geoOrthographic, geoStereographic, geoTransverseMercator } from 'd3-geo';\nimport { geoMollweide } from 'd3-geo-projection';\nimport { registerScale } from 'vega-scale';\n\nconst defaultPath = geoPath();\nconst projectionProperties = [\n// standard properties in d3-geo\n'clipAngle', 'clipExtent', 'scale', 'translate', 'center', 'rotate', 'parallels', 'precision', 'reflectX', 'reflectY',\n// extended properties in d3-geo-projections\n'coefficient', 'distance', 'fraction', 'lobes', 'parallel', 'radius', 'ratio', 'spacing', 'tilt'];\n\n/**\n * Augment projections with their type and a copy method.\n */\nfunction create(type, constructor) {\n return function projection() {\n const p = constructor();\n p.type = type;\n p.path = geoPath().projection(p);\n p.copy = p.copy || function () {\n const c = projection();\n projectionProperties.forEach(prop => {\n if (p[prop]) c[prop](p[prop]());\n });\n c.path.pointRadius(p.path.pointRadius());\n return c;\n };\n return registerScale(p);\n };\n}\nfunction projection(type, proj) {\n if (!type || typeof type !== 'string') {\n throw new Error('Projection type must be a name string.');\n }\n type = type.toLowerCase();\n if (arguments.length > 1) {\n projections[type] = create(type, proj);\n return this;\n } else {\n return projections[type] || null;\n }\n}\nfunction getProjectionPath(proj) {\n return proj && proj.path || defaultPath;\n}\nconst projections = {\n // base d3-geo projection types\n albers: geoAlbers,\n albersusa: geoAlbersUsa,\n azimuthalequalarea: geoAzimuthalEqualArea,\n azimuthalequidistant: geoAzimuthalEquidistant,\n conicconformal: geoConicConformal,\n conicequalarea: geoConicEqualArea,\n conicequidistant: geoConicEquidistant,\n equalEarth: geoEqualEarth,\n equirectangular: geoEquirectangular,\n gnomonic: geoGnomonic,\n identity: geoIdentity,\n mercator: geoMercator,\n mollweide: geoMollweide,\n naturalEarth1: geoNaturalEarth1,\n orthographic: geoOrthographic,\n stereographic: geoStereographic,\n transversemercator: geoTransverseMercator\n};\nfor (const key in projections) {\n projection(key, projections[key]);\n}\n\nexport { getProjectionPath, projection, projectionProperties };\n", "import { Transform } from 'vega-dataflow';\nimport { inherits, array, isFunction, accessorFields, hasOwnProperty, error } from 'vega-util';\nimport { forceSimulation, forceCenter, forceCollide, forceManyBody, forceLink, forceX, forceY } from 'd3-force';\n\nconst ForceMap = {\n center: forceCenter,\n collide: forceCollide,\n nbody: forceManyBody,\n link: forceLink,\n x: forceX,\n y: forceY\n};\nconst Forces = 'forces',\n ForceParams = ['alpha', 'alphaMin', 'alphaTarget', 'velocityDecay', 'forces'],\n ForceConfig = ['static', 'iterations'],\n ForceOutput = ['x', 'y', 'vx', 'vy'];\n\n/**\n * Force simulation layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<object>} params.forces - The forces to apply.\n */\nfunction Force(params) {\n Transform.call(this, null, params);\n}\nForce.Definition = {\n 'type': 'Force',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'static',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'restart',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'iterations',\n 'type': 'number',\n 'default': 300\n }, {\n 'name': 'alpha',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'alphaMin',\n 'type': 'number',\n 'default': 0.001\n }, {\n 'name': 'alphaTarget',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'velocityDecay',\n 'type': 'number',\n 'default': 0.4\n }, {\n 'name': 'forces',\n 'type': 'param',\n 'array': true,\n 'params': [{\n 'key': {\n 'force': 'center'\n },\n 'params': [{\n 'name': 'x',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'y',\n 'type': 'number',\n 'default': 0\n }]\n }, {\n 'key': {\n 'force': 'collide'\n },\n 'params': [{\n 'name': 'radius',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'strength',\n 'type': 'number',\n 'default': 0.7\n }, {\n 'name': 'iterations',\n 'type': 'number',\n 'default': 1\n }]\n }, {\n 'key': {\n 'force': 'nbody'\n },\n 'params': [{\n 'name': 'strength',\n 'type': 'number',\n 'default': -30,\n 'expr': true\n }, {\n 'name': 'theta',\n 'type': 'number',\n 'default': 0.9\n }, {\n 'name': 'distanceMin',\n 'type': 'number',\n 'default': 1\n }, {\n 'name': 'distanceMax',\n 'type': 'number'\n }]\n }, {\n 'key': {\n 'force': 'link'\n },\n 'params': [{\n 'name': 'links',\n 'type': 'data'\n }, {\n 'name': 'id',\n 'type': 'field'\n }, {\n 'name': 'distance',\n 'type': 'number',\n 'default': 30,\n 'expr': true\n }, {\n 'name': 'strength',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'iterations',\n 'type': 'number',\n 'default': 1\n }]\n }, {\n 'key': {\n 'force': 'x'\n },\n 'params': [{\n 'name': 'strength',\n 'type': 'number',\n 'default': 0.1\n }, {\n 'name': 'x',\n 'type': 'field'\n }]\n }, {\n 'key': {\n 'force': 'y'\n },\n 'params': [{\n 'name': 'strength',\n 'type': 'number',\n 'default': 0.1\n }, {\n 'name': 'y',\n 'type': 'field'\n }]\n }]\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'modify': false,\n 'default': ForceOutput\n }]\n};\ninherits(Force, Transform, {\n transform(_, pulse) {\n var sim = this.value,\n change = pulse.changed(pulse.ADD_REM),\n params = _.modified(ForceParams),\n iters = _.iterations || 300;\n\n // configure simulation\n if (!sim) {\n this.value = sim = simulation(pulse.source, _);\n sim.on('tick', rerun(pulse.dataflow, this));\n if (!_.static) {\n change = true;\n sim.tick(); // ensure we run on init\n }\n\n pulse.modifies('index');\n } else {\n if (change) {\n pulse.modifies('index');\n sim.nodes(pulse.source);\n }\n if (params || pulse.changed(pulse.MOD)) {\n setup(sim, _, 0, pulse);\n }\n }\n\n // run simulation\n if (params || change || _.modified(ForceConfig) || pulse.changed() && _.restart) {\n sim.alpha(Math.max(sim.alpha(), _.alpha || 1)).alphaDecay(1 - Math.pow(sim.alphaMin(), 1 / iters));\n if (_.static) {\n for (sim.stop(); --iters >= 0;) sim.tick();\n } else {\n if (sim.stopped()) sim.restart();\n if (!change) return pulse.StopPropagation; // defer to sim ticks\n }\n }\n\n return this.finish(_, pulse);\n },\n finish(_, pulse) {\n const dataflow = pulse.dataflow;\n\n // inspect dependencies, touch link source data\n for (let args = this._argops, j = 0, m = args.length, arg; j < m; ++j) {\n arg = args[j];\n if (arg.name !== Forces || arg.op._argval.force !== 'link') {\n continue;\n }\n for (var ops = arg.op._argops, i = 0, n = ops.length, op; i < n; ++i) {\n if (ops[i].name === 'links' && (op = ops[i].op.source)) {\n dataflow.pulse(op, dataflow.changeset().reflow());\n break;\n }\n }\n }\n\n // reflow all nodes\n return pulse.reflow(_.modified()).modifies(ForceOutput);\n }\n});\nfunction rerun(df, op) {\n return () => df.touch(op).run();\n}\nfunction simulation(nodes, _) {\n const sim = forceSimulation(nodes),\n stop = sim.stop,\n restart = sim.restart;\n let stopped = false;\n sim.stopped = () => stopped;\n sim.restart = () => (stopped = false, restart());\n sim.stop = () => (stopped = true, stop());\n return setup(sim, _, true).on('end', () => stopped = true);\n}\nfunction setup(sim, _, init, pulse) {\n var f = array(_.forces),\n i,\n n,\n p,\n name;\n for (i = 0, n = ForceParams.length; i < n; ++i) {\n p = ForceParams[i];\n if (p !== Forces && _.modified(p)) sim[p](_[p]);\n }\n for (i = 0, n = f.length; i < n; ++i) {\n name = Forces + i;\n p = init || _.modified(Forces, i) ? getForce(f[i]) : pulse && modified(f[i], pulse) ? sim.force(name) : null;\n if (p) sim.force(name, p);\n }\n for (n = sim.numForces || 0; i < n; ++i) {\n sim.force(Forces + i, null); // remove\n }\n\n sim.numForces = f.length;\n return sim;\n}\nfunction modified(f, pulse) {\n var k, v;\n for (k in f) {\n if (isFunction(v = f[k]) && pulse.modified(accessorFields(v))) return 1;\n }\n return 0;\n}\nfunction getForce(_) {\n var f, p;\n if (!hasOwnProperty(ForceMap, _.force)) {\n error('Unrecognized force: ' + _.force);\n }\n f = ForceMap[_.force]();\n for (p in _) {\n if (isFunction(f[p])) setForceParam(f[p], _[p], _);\n }\n return f;\n}\nfunction setForceParam(f, v, _) {\n f(isFunction(v) ? d => v(d, _) : v);\n}\n\nexport { Force as force };\n", "export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n", "export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n", "export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don\u2019t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n", "export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n", "export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n", "export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n", "import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can\u2019t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn\u2019t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n", "export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n", "export default function() {\n return this._root;\n}\n", "export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n", "import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n", "import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n", "export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n", "export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n", "import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n", "export default function(x) {\n return function() {\n return x;\n };\n}\n", "export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n", "import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n", "import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n", "var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n", "var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we\u2019ve set an alarm, if we haven\u2019t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n", "import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n t._restart = t.restart;\n t.restart = function(callback, delay, time) {\n delay = +delay, time = time == null ? now() : +time;\n t._restart(function tick(elapsed) {\n elapsed += total;\n t._restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n }\n t.restart(callback, delay, time);\n return t;\n}\n", "// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n", "import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n", "import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n", "import constant from \"./constant.js\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n", "import constant from \"./constant.js\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n", "import { Transform, isTuple, ingest, tupleid, stableCompare } from 'vega-dataflow';\nimport { inherits, error, array, one, truthy, hasOwnProperty } from 'vega-util';\nimport { hierarchy, pack, partition, stratify, tree, cluster, treemap, treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify } from 'd3-hierarchy';\n\n// Build lookup table mapping tuple keys to tree node instances\nfunction lookup (tree, key, filter) {\n const map = {};\n tree.each(node => {\n const t = node.data;\n if (filter(t)) map[key(t)] = node;\n });\n tree.lookup = map;\n return tree;\n}\n\n/**\n * Nest tuples into a tree structure, grouped by key values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.keys - The key fields to nest by, in order.\n * @param {boolean} [params.generate=false] - A boolean flag indicating if\n * non-leaf nodes generated by this transform should be included in the\n * output. The default (false) includes only the input data (leaf nodes)\n * in the data stream.\n */\nfunction Nest(params) {\n Transform.call(this, null, params);\n}\nNest.Definition = {\n 'type': 'Nest',\n 'metadata': {\n 'treesource': true,\n 'changes': true\n },\n 'params': [{\n 'name': 'keys',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'generate',\n 'type': 'boolean'\n }]\n};\nconst children = n => n.values;\ninherits(Nest, Transform, {\n transform(_, pulse) {\n if (!pulse.source) {\n error('Nest transform requires an upstream data source.');\n }\n var gen = _.generate,\n mod = _.modified(),\n out = pulse.clone(),\n tree = this.value;\n if (!tree || mod || pulse.changed()) {\n // collect nodes to remove\n if (tree) {\n tree.each(node => {\n if (node.children && isTuple(node.data)) {\n out.rem.push(node.data);\n }\n });\n }\n\n // generate new tree structure\n this.value = tree = hierarchy({\n values: array(_.keys).reduce((n, k) => {\n n.key(k);\n return n;\n }, nest()).entries(out.source)\n }, children);\n\n // collect nodes to add\n if (gen) {\n tree.each(node => {\n if (node.children) {\n node = ingest(node.data);\n out.add.push(node);\n out.source.push(node);\n }\n });\n }\n\n // build lookup table\n lookup(tree, tupleid, tupleid);\n }\n out.source.root = tree;\n return out;\n }\n});\nfunction nest() {\n const keys = [],\n nest = {\n entries: array => entries(apply(array, 0), 0),\n key: d => (keys.push(d), nest)\n };\n function apply(array, depth) {\n if (depth >= keys.length) {\n return array;\n }\n const n = array.length,\n key = keys[depth++],\n valuesByKey = {},\n result = {};\n let i = -1,\n keyValue,\n value,\n values;\n while (++i < n) {\n keyValue = key(value = array[i]) + '';\n if (values = valuesByKey[keyValue]) {\n values.push(value);\n } else {\n valuesByKey[keyValue] = [value];\n }\n }\n for (keyValue in valuesByKey) {\n result[keyValue] = apply(valuesByKey[keyValue], depth);\n }\n return result;\n }\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n const array = [];\n for (const key in map) {\n array.push({\n key,\n values: entries(map[key], depth)\n });\n }\n return array;\n }\n return nest;\n}\n\n/**\n * Abstract class for tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction HierarchyLayout(params) {\n Transform.call(this, null, params);\n}\nconst defaultSeparation = (a, b) => a.parent === b.parent ? 1 : 2;\ninherits(HierarchyLayout, Transform, {\n transform(_, pulse) {\n if (!pulse.source || !pulse.source.root) {\n error(this.constructor.name + ' transform requires a backing tree data source.');\n }\n const layout = this.layout(_.method),\n fields = this.fields,\n root = pulse.source.root,\n as = _.as || fields;\n if (_.field) root.sum(_.field);else root.count();\n if (_.sort) root.sort(stableCompare(_.sort, d => d.data));\n setParams(layout, this.params, _);\n if (layout.separation) {\n layout.separation(_.separation !== false ? defaultSeparation : one);\n }\n try {\n this.value = layout(root);\n } catch (err) {\n error(err);\n }\n root.each(node => setFields(node, fields, as));\n return pulse.reflow(_.modified()).modifies(as).modifies('leaf');\n }\n});\nfunction setParams(layout, params, _) {\n for (let p, i = 0, n = params.length; i < n; ++i) {\n p = params[i];\n if (p in _) layout[p](_[p]);\n }\n}\nfunction setFields(node, fields, as) {\n const t = node.data,\n n = fields.length - 1;\n for (let i = 0; i < n; ++i) {\n t[as[i]] = node[fields[i]];\n }\n t[as[n]] = node.children ? node.children.length : 0;\n}\n\nconst Output$3 = ['x', 'y', 'r', 'depth', 'children'];\n\n/**\n * Packed circle tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Pack(params) {\n HierarchyLayout.call(this, params);\n}\nPack.Definition = {\n 'type': 'Pack',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'radius',\n 'type': 'field',\n 'default': null\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$3.length,\n 'default': Output$3\n }]\n};\ninherits(Pack, HierarchyLayout, {\n layout: pack,\n params: ['radius', 'size', 'padding'],\n fields: Output$3\n});\n\nconst Output$2 = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Partition tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Partition(params) {\n HierarchyLayout.call(this, params);\n}\nPartition.Definition = {\n 'type': 'Partition',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'round',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$2.length,\n 'default': Output$2\n }]\n};\ninherits(Partition, HierarchyLayout, {\n layout: partition,\n params: ['size', 'round', 'padding'],\n fields: Output$2\n});\n\n/**\n * Stratify a collection of tuples into a tree structure based on\n * id and parent id fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.key - Unique key field for each tuple.\n * @param {function(object): *} params.parentKey - Field with key for parent tuple.\n */\nfunction Stratify(params) {\n Transform.call(this, null, params);\n}\nStratify.Definition = {\n 'type': 'Stratify',\n 'metadata': {\n 'treesource': true\n },\n 'params': [{\n 'name': 'key',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'parentKey',\n 'type': 'field',\n 'required': true\n }]\n};\ninherits(Stratify, Transform, {\n transform(_, pulse) {\n if (!pulse.source) {\n error('Stratify transform requires an upstream data source.');\n }\n let tree = this.value;\n const mod = _.modified(),\n out = pulse.fork(pulse.ALL).materialize(pulse.SOURCE),\n run = !tree || mod || pulse.changed(pulse.ADD_REM) || pulse.modified(_.key.fields) || pulse.modified(_.parentKey.fields);\n\n // prevent upstream source pollution\n out.source = out.source.slice();\n if (run) {\n tree = out.source.length ? lookup(stratify().id(_.key).parentId(_.parentKey)(out.source), _.key, truthy) : lookup(stratify()([{}]), _.key, _.key);\n }\n out.source.root = this.value = tree;\n return out;\n }\n});\n\nconst Layouts = {\n tidy: tree,\n cluster: cluster\n};\nconst Output$1 = ['x', 'y', 'depth', 'children'];\n\n/**\n * Tree layout. Depending on the method parameter, performs either\n * Reingold-Tilford 'tidy' layout or dendrogram 'cluster' layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Tree(params) {\n HierarchyLayout.call(this, params);\n}\nTree.Definition = {\n 'type': 'Tree',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'method',\n 'type': 'enum',\n 'default': 'tidy',\n 'values': ['tidy', 'cluster']\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'nodeSize',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'separation',\n 'type': 'boolean',\n 'default': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output$1.length,\n 'default': Output$1\n }]\n};\ninherits(Tree, HierarchyLayout, {\n /**\n * Tree layout generator. Supports both 'tidy' and 'cluster' layouts.\n */\n layout(method) {\n const m = method || 'tidy';\n if (hasOwnProperty(Layouts, m)) return Layouts[m]();else error('Unrecognized Tree layout method: ' + m);\n },\n params: ['size', 'nodeSize'],\n fields: Output$1\n});\n\n/**\n * Generate tuples representing links between tree nodes.\n * The resulting tuples will contain 'source' and 'target' fields,\n * which point to parent and child node tuples, respectively.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction TreeLinks(params) {\n Transform.call(this, [], params);\n}\nTreeLinks.Definition = {\n 'type': 'TreeLinks',\n 'metadata': {\n 'tree': true,\n 'generates': true,\n 'changes': true\n },\n 'params': []\n};\ninherits(TreeLinks, Transform, {\n transform(_, pulse) {\n const links = this.value,\n tree = pulse.source && pulse.source.root,\n out = pulse.fork(pulse.NO_SOURCE),\n lut = {};\n if (!tree) error('TreeLinks transform requires a tree data source.');\n if (pulse.changed(pulse.ADD_REM)) {\n // remove previous links\n out.rem = links;\n\n // build lookup table of valid tuples\n pulse.visit(pulse.SOURCE, t => lut[tupleid(t)] = 1);\n\n // generate links for all edges incident on valid tuples\n tree.each(node => {\n const t = node.data,\n p = node.parent && node.parent.data;\n if (p && lut[tupleid(t)] && lut[tupleid(p)]) {\n out.add.push(ingest({\n source: p,\n target: t\n }));\n }\n });\n this.value = out.add;\n } else if (pulse.changed(pulse.MOD)) {\n // build lookup table of modified tuples\n pulse.visit(pulse.MOD, t => lut[tupleid(t)] = 1);\n\n // gather links incident on modified tuples\n links.forEach(link => {\n if (lut[tupleid(link.source)] || lut[tupleid(link.target)]) {\n out.mod.push(link);\n }\n });\n }\n return out;\n }\n});\n\nconst Tiles = {\n binary: treemapBinary,\n dice: treemapDice,\n slice: treemapSlice,\n slicedice: treemapSliceDice,\n squarify: treemapSquarify,\n resquarify: treemapResquarify\n};\nconst Output = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Treemap layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Treemap(params) {\n HierarchyLayout.call(this, params);\n}\nTreemap.Definition = {\n 'type': 'Treemap',\n 'metadata': {\n 'tree': true,\n 'modifies': true\n },\n 'params': [{\n 'name': 'field',\n 'type': 'field'\n }, {\n 'name': 'sort',\n 'type': 'compare'\n }, {\n 'name': 'method',\n 'type': 'enum',\n 'default': 'squarify',\n 'values': ['squarify', 'resquarify', 'binary', 'dice', 'slice', 'slicedice']\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingInner',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingOuter',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingTop',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingRight',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingBottom',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'paddingLeft',\n 'type': 'number',\n 'default': 0\n }, {\n 'name': 'ratio',\n 'type': 'number',\n 'default': 1.618033988749895\n }, {\n 'name': 'round',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': Output.length,\n 'default': Output\n }]\n};\ninherits(Treemap, HierarchyLayout, {\n /**\n * Treemap layout generator. Adds 'method' and 'ratio' parameters\n * to configure the underlying tile method.\n */\n layout() {\n const x = treemap();\n x.ratio = _ => {\n const t = x.tile();\n if (t.ratio) x.tile(t.ratio(_));\n };\n x.method = _ => {\n if (hasOwnProperty(Tiles, _)) x.tile(Tiles[_]);else error('Unrecognized Treemap layout method: ' + _);\n };\n return x;\n },\n params: ['method', 'ratio', 'size', 'round', 'padding', 'paddingInner', 'paddingOuter', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'],\n fields: Output\n});\n\nexport { Nest as nest, Pack as pack, Partition as partition, Stratify as stratify, Tree as tree, TreeLinks as treelinks, Treemap as treemap };\n", "function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n", "function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n", "export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n", "export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n", "export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n", "export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n", "export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n", "export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n", "export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n", "export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n", "export default function() {\n return Array.from(this);\n}\n", "export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n", "export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don\u2019t include the root\u2019s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n", "export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n", "import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n", "export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n", "export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n", "// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n", "export default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array, random) {\n let m = array.length,\n t,\n i;\n\n while (m) {\n i = random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n", "import {shuffle} from \"../array.js\";\nimport lcg from \"../lcg.js\";\n\nexport default function(circles) {\n return packEncloseRandom(circles, lcg());\n}\n\nexport function packEncloseRandom(circles, random) {\n var i = 0, n = (circles = shuffle(Array.from(circles), random)).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n", "import array from \"../array.js\";\nimport lcg from \"../lcg.js\";\nimport {packEncloseRandom} from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packSiblingsRandom(circles, random) {\n if (!(n = (circles = array(circles)).length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle\u2026\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // \u201CCloseness\u201D is determined by linear distance along the front-chain.\n // \u201CAhead\u201D or \u201Cbehind\u201D is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = packEncloseRandom(a, random);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packSiblingsRandom(circles, lcg());\n return circles;\n}\n", "import {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\nimport lcg from \"../lcg.js\";\nimport {packSiblingsRandom} from \"./siblings.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n const random = lcg();\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildrenRandom(padding, 0.5, random))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildrenRandom(constantZero, 1, random))\n .eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildrenRandom(padding, k, random) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packSiblingsRandom(children, random);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n", "export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n", "export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n", "import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n", "import {optional} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n ambiguous = {},\n imputed = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId,\n path;\n\n function stratify(data) {\n var nodes = Array.from(data),\n currentId = id,\n currentParentId = parentId,\n n,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map;\n\n if (path != null) {\n const I = nodes.map((d, i) => normalize(path(d, i, data)));\n const P = I.map(parentof);\n const S = new Set(I).add(\"\");\n for (const i of P) {\n if (!S.has(i)) {\n S.add(i);\n I.push(i);\n P.push(parentof(i));\n nodes.push(imputed);\n }\n }\n currentId = (_, i) => I[i];\n currentParentId = (_, i) => P[i];\n }\n\n for (i = 0, n = nodes.length; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n\n // When imputing internal nodes, only introduce roots if needed.\n // Then replace the imputed marker data with null.\n if (path != null) {\n while (root.data === imputed && root.children.length === 1) {\n root = root.children[0], --n;\n }\n for (let i = nodes.length - 1; i >= 0; --i) {\n node = nodes[i];\n if (node.data !== imputed) break;\n node.data = null;\n }\n }\n\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = optional(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = optional(x), stratify) : parentId;\n };\n\n stratify.path = function(x) {\n return arguments.length ? (path = optional(x), stratify) : path;\n };\n\n return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n path = `${path}`;\n let i = path.length;\n if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n return path[0] === \"/\" ? path : `/${path}`;\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" \u21E5 \"/foo\", \"/foo\" \u21E5 \"/\", \"/\" \u21A6 \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n let i = path.length;\n if (i < 2) return \"\";\n while (--i > 1) if (slash(path, i)) break;\n return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n if (path[i] === \"/\") {\n let k = 0;\n while (i > 0 && path[--i] === \"\\\\\") ++k;\n if ((k & 1) === 0) return true;\n }\n return false;\n}\n", "import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-\u2019s ancestor is a sibling of v, returns vi-\u2019s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.\u2019s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n", "export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n", "import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n", "import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n", "export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n", "import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n", "import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n", "import { Marks, textMetrics } from 'vega-scenegraph';\nimport { canvas } from 'vega-canvas';\nimport { rederive, Transform } from 'vega-dataflow';\nimport { inherits, error, array, isFunction } from 'vega-util';\n\n// bit mask for getting first 2 bytes of alpha value\nconst ALPHA_MASK = 0xff000000;\nfunction baseBitmaps($, data) {\n const bitmap = $.bitmap();\n // when there is no base mark but data points are to be avoided\n (data || []).forEach(d => bitmap.set($(d.boundary[0]), $(d.boundary[3])));\n return [bitmap, undefined];\n}\nfunction markBitmaps($, baseMark, avoidMarks, labelInside, isGroupArea) {\n // create canvas\n const width = $.width,\n height = $.height,\n border = labelInside || isGroupArea,\n context = canvas(width, height).getContext('2d'),\n baseMarkContext = canvas(width, height).getContext('2d'),\n strokeContext = border && canvas(width, height).getContext('2d');\n\n // render all marks to be avoided into canvas\n avoidMarks.forEach(items => draw(context, items, false));\n draw(baseMarkContext, baseMark, false);\n if (border) {\n draw(strokeContext, baseMark, true);\n }\n\n // get canvas buffer, create bitmaps\n const buffer = getBuffer(context, width, height),\n baseMarkBuffer = getBuffer(baseMarkContext, width, height),\n strokeBuffer = border && getBuffer(strokeContext, width, height),\n layer1 = $.bitmap(),\n layer2 = border && $.bitmap();\n\n // populate bitmap layers\n let x, y, u, v, index, alpha, strokeAlpha, baseMarkAlpha;\n for (y = 0; y < height; ++y) {\n for (x = 0; x < width; ++x) {\n index = y * width + x;\n alpha = buffer[index] & ALPHA_MASK;\n baseMarkAlpha = baseMarkBuffer[index] & ALPHA_MASK;\n strokeAlpha = border && strokeBuffer[index] & ALPHA_MASK;\n if (alpha || strokeAlpha || baseMarkAlpha) {\n u = $(x);\n v = $(y);\n if (!isGroupArea && (alpha || baseMarkAlpha)) layer1.set(u, v); // update interior bitmap\n if (border && (alpha || strokeAlpha)) layer2.set(u, v); // update border bitmap\n }\n }\n }\n\n return [layer1, layer2];\n}\nfunction getBuffer(context, width, height) {\n return new Uint32Array(context.getImageData(0, 0, width, height).data.buffer);\n}\nfunction draw(context, items, interior) {\n if (!items.length) return;\n const type = items[0].mark.marktype;\n if (type === 'group') {\n items.forEach(group => {\n group.items.forEach(mark => draw(context, mark.items, interior));\n });\n } else {\n Marks[type].draw(context, {\n items: interior ? items.map(prepare) : items\n });\n }\n}\n\n/**\n * Prepare item before drawing into canvas (setting stroke and opacity)\n * @param {object} source item to be prepared\n * @returns prepared item\n */\nfunction prepare(source) {\n const item = rederive(source, {});\n if (item.stroke && item.strokeOpacity !== 0 || item.fill && item.fillOpacity !== 0) {\n return {\n ...item,\n strokeOpacity: 1,\n stroke: '#000',\n fillOpacity: 0\n };\n }\n return item;\n}\n\nconst DIV = 5,\n // bit shift from x, y index to bit vector array index\n MOD = 31,\n // bit mask for index lookup within a bit vector\n SIZE = 32,\n // individual bit vector size\n RIGHT0 = new Uint32Array(SIZE + 1),\n // left-anchored bit vectors, full -> 0\n RIGHT1 = new Uint32Array(SIZE + 1); // right-anchored bit vectors, 0 -> full\n\nRIGHT1[0] = 0;\nRIGHT0[0] = ~RIGHT1[0];\nfor (let i = 1; i <= SIZE; ++i) {\n RIGHT1[i] = RIGHT1[i - 1] << 1 | 1;\n RIGHT0[i] = ~RIGHT1[i];\n}\nfunction Bitmap (w, h) {\n const array = new Uint32Array(~~((w * h + SIZE) / SIZE));\n function _set(index, mask) {\n array[index] |= mask;\n }\n function _clear(index, mask) {\n array[index] &= mask;\n }\n return {\n array: array,\n get: (x, y) => {\n const index = y * w + x;\n return array[index >>> DIV] & 1 << (index & MOD);\n },\n set: (x, y) => {\n const index = y * w + x;\n _set(index >>> DIV, 1 << (index & MOD));\n },\n clear: (x, y) => {\n const index = y * w + x;\n _clear(index >>> DIV, ~(1 << (index & MOD)));\n },\n getRange: (x, y, x2, y2) => {\n let r = y2,\n start,\n end,\n indexStart,\n indexEnd;\n for (; r >= y; --r) {\n start = r * w + x;\n end = r * w + x2;\n indexStart = start >>> DIV;\n indexEnd = end >>> DIV;\n if (indexStart === indexEnd) {\n if (array[indexStart] & RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]) {\n return true;\n }\n } else {\n if (array[indexStart] & RIGHT0[start & MOD]) return true;\n if (array[indexEnd] & RIGHT1[(end & MOD) + 1]) return true;\n for (let i = indexStart + 1; i < indexEnd; ++i) {\n if (array[i]) return true;\n }\n }\n }\n return false;\n },\n setRange: (x, y, x2, y2) => {\n let start, end, indexStart, indexEnd, i;\n for (; y <= y2; ++y) {\n start = y * w + x;\n end = y * w + x2;\n indexStart = start >>> DIV;\n indexEnd = end >>> DIV;\n if (indexStart === indexEnd) {\n _set(indexStart, RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]);\n } else {\n _set(indexStart, RIGHT0[start & MOD]);\n _set(indexEnd, RIGHT1[(end & MOD) + 1]);\n for (i = indexStart + 1; i < indexEnd; ++i) _set(i, 0xffffffff);\n }\n }\n },\n clearRange: (x, y, x2, y2) => {\n let start, end, indexStart, indexEnd, i;\n for (; y <= y2; ++y) {\n start = y * w + x;\n end = y * w + x2;\n indexStart = start >>> DIV;\n indexEnd = end >>> DIV;\n if (indexStart === indexEnd) {\n _clear(indexStart, RIGHT1[start & MOD] | RIGHT0[(end & MOD) + 1]);\n } else {\n _clear(indexStart, RIGHT1[start & MOD]);\n _clear(indexEnd, RIGHT0[(end & MOD) + 1]);\n for (i = indexStart + 1; i < indexEnd; ++i) _clear(i, 0);\n }\n }\n },\n outOfBounds: (x, y, x2, y2) => x < 0 || y < 0 || y2 >= h || x2 >= w\n };\n}\n\nfunction scaler (width, height, padding) {\n const ratio = Math.max(1, Math.sqrt(width * height / 1e6)),\n w = ~~((width + 2 * padding + ratio) / ratio),\n h = ~~((height + 2 * padding + ratio) / ratio),\n scale = _ => ~~((_ + padding) / ratio);\n scale.invert = _ => _ * ratio - padding;\n scale.bitmap = () => Bitmap(w, h);\n scale.ratio = ratio;\n scale.padding = padding;\n scale.width = width;\n scale.height = height;\n return scale;\n}\n\nfunction placeAreaLabelNaive ($, bitmaps, avoidBaseMark, markIndex) {\n const width = $.width,\n height = $.height;\n\n // try to place a label within an input area mark\n return function (d) {\n const items = d.datum.datum.items[markIndex].items,\n // area points\n n = items.length,\n // number of points\n textHeight = d.datum.fontSize,\n // label width\n textWidth = textMetrics.width(d.datum, d.datum.text); // label height\n\n let maxAreaWidth = 0,\n x1,\n x2,\n y1,\n y2,\n x,\n y,\n areaWidth;\n\n // for each area sample point\n for (let i = 0; i < n; ++i) {\n x1 = items[i].x;\n y1 = items[i].y;\n x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n x = (x1 + x2) / 2;\n y = (y1 + y2) / 2;\n areaWidth = Math.abs(x2 - x1 + y2 - y1);\n if (areaWidth >= maxAreaWidth) {\n maxAreaWidth = areaWidth;\n d.x = x;\n d.y = y;\n }\n }\n x = textWidth / 2;\n y = textHeight / 2;\n x1 = d.x - x;\n x2 = d.x + x;\n y1 = d.y - y;\n y2 = d.y + y;\n d.align = 'center';\n if (x1 < 0 && x2 <= width) {\n d.align = 'left';\n } else if (0 <= x1 && width < x2) {\n d.align = 'right';\n }\n d.baseline = 'middle';\n if (y1 < 0 && y2 <= height) {\n d.baseline = 'top';\n } else if (0 <= y1 && height < y2) {\n d.baseline = 'bottom';\n }\n return true;\n };\n}\n\nfunction outOfBounds(x, y, textWidth, textHeight, width, height) {\n let r = textWidth / 2;\n return x - r < 0 || x + r > width || y - (r = textHeight / 2) < 0 || y + r > height;\n}\nfunction collision($, x, y, textHeight, textWidth, h, bm0, bm1) {\n const w = textWidth * h / (textHeight * 2),\n x1 = $(x - w),\n x2 = $(x + w),\n y1 = $(y - (h = h / 2)),\n y2 = $(y + h);\n return bm0.outOfBounds(x1, y1, x2, y2) || bm0.getRange(x1, y1, x2, y2) || bm1 && bm1.getRange(x1, y1, x2, y2);\n}\n\nfunction placeAreaLabelReducedSearch ($, bitmaps, avoidBaseMark, markIndex) {\n const width = $.width,\n height = $.height,\n bm0 = bitmaps[0],\n // where labels have been placed\n bm1 = bitmaps[1]; // area outlines\n\n function tryLabel(_x, _y, maxSize, textWidth, textHeight) {\n const x = $.invert(_x),\n y = $.invert(_y);\n let lo = maxSize,\n hi = height,\n mid;\n if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n // if the label fits at the current sample point,\n // perform binary search to find the largest font size that fits\n while (hi - lo >= 1) {\n mid = (lo + hi) / 2;\n if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n hi = mid;\n } else {\n lo = mid;\n }\n }\n // place label if current lower bound exceeds prior max font size\n if (lo > maxSize) {\n return [x, y, lo, true];\n }\n }\n }\n\n // try to place a label within an input area mark\n return function (d) {\n const items = d.datum.datum.items[markIndex].items,\n // area points\n n = items.length,\n // number of points\n textHeight = d.datum.fontSize,\n // label width\n textWidth = textMetrics.width(d.datum, d.datum.text); // label height\n\n let maxSize = avoidBaseMark ? textHeight : 0,\n labelPlaced = false,\n labelPlaced2 = false,\n maxAreaWidth = 0,\n x1,\n x2,\n y1,\n y2,\n x,\n y,\n _x,\n _y,\n _x1,\n _xMid,\n _x2,\n _y1,\n _yMid,\n _y2,\n areaWidth,\n result,\n swapTmp;\n\n // for each area sample point\n for (let i = 0; i < n; ++i) {\n x1 = items[i].x;\n y1 = items[i].y;\n x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n if (x1 > x2) {\n swapTmp = x1;\n x1 = x2;\n x2 = swapTmp;\n }\n if (y1 > y2) {\n swapTmp = y1;\n y1 = y2;\n y2 = swapTmp;\n }\n _x1 = $(x1);\n _x2 = $(x2);\n _xMid = ~~((_x1 + _x2) / 2);\n _y1 = $(y1);\n _y2 = $(y2);\n _yMid = ~~((_y1 + _y2) / 2);\n\n // search along the line from mid point between the 2 border to lower border\n for (_x = _xMid; _x >= _x1; --_x) {\n for (_y = _yMid; _y >= _y1; --_y) {\n result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n if (result) {\n [d.x, d.y, maxSize, labelPlaced] = result;\n }\n }\n }\n\n // search along the line from mid point between the 2 border to upper border\n for (_x = _xMid; _x <= _x2; ++_x) {\n for (_y = _yMid; _y <= _y2; ++_y) {\n result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n if (result) {\n [d.x, d.y, maxSize, labelPlaced] = result;\n }\n }\n }\n\n // place label at slice center if not placed through other means\n // and if we're not avoiding overlap with other areas\n if (!labelPlaced && !avoidBaseMark) {\n // one span is zero, hence we can add\n areaWidth = Math.abs(x2 - x1 + y2 - y1);\n x = (x1 + x2) / 2;\n y = (y1 + y2) / 2;\n\n // place label if it fits and improves the max area width\n if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n maxAreaWidth = areaWidth;\n d.x = x;\n d.y = y;\n labelPlaced2 = true;\n }\n }\n }\n\n // record current label placement information, update label bitmap\n if (labelPlaced || labelPlaced2) {\n x = textWidth / 2;\n y = textHeight / 2;\n bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n d.align = 'center';\n d.baseline = 'middle';\n return true;\n } else {\n return false;\n }\n };\n}\n\n// pixel direction offsets for flood fill search\nconst X_DIR = [-1, -1, 1, 1];\nconst Y_DIR = [-1, 1, -1, 1];\nfunction placeAreaLabelFloodFill ($, bitmaps, avoidBaseMark, markIndex) {\n const width = $.width,\n height = $.height,\n bm0 = bitmaps[0],\n // where labels have been placed\n bm1 = bitmaps[1],\n // area outlines\n bm2 = $.bitmap(); // flood-fill visitations\n\n // try to place a label within an input area mark\n return function (d) {\n const items = d.datum.datum.items[markIndex].items,\n // area points\n n = items.length,\n // number of points\n textHeight = d.datum.fontSize,\n // label width\n textWidth = textMetrics.width(d.datum, d.datum.text),\n // label height\n stack = []; // flood fill stack\n\n let maxSize = avoidBaseMark ? textHeight : 0,\n labelPlaced = false,\n labelPlaced2 = false,\n maxAreaWidth = 0,\n x1,\n x2,\n y1,\n y2,\n x,\n y,\n _x,\n _y,\n lo,\n hi,\n mid,\n areaWidth;\n\n // for each area sample point\n for (let i = 0; i < n; ++i) {\n x1 = items[i].x;\n y1 = items[i].y;\n x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n\n // add scaled center point to stack\n stack.push([$((x1 + x2) / 2), $((y1 + y2) / 2)]);\n\n // perform flood fill, visit points\n while (stack.length) {\n [_x, _y] = stack.pop();\n\n // exit if point already marked\n if (bm0.get(_x, _y) || bm1.get(_x, _y) || bm2.get(_x, _y)) continue;\n\n // mark point in flood fill bitmap\n // add search points for all (in bound) directions\n bm2.set(_x, _y);\n for (let j = 0; j < 4; ++j) {\n x = _x + X_DIR[j];\n y = _y + Y_DIR[j];\n if (!bm2.outOfBounds(x, y, x, y)) stack.push([x, y]);\n }\n\n // unscale point back to x, y space\n x = $.invert(_x);\n y = $.invert(_y);\n lo = maxSize;\n hi = height; // TODO: make this bound smaller\n\n if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n // if the label fits at the current sample point,\n // perform binary search to find the largest font size that fits\n while (hi - lo >= 1) {\n mid = (lo + hi) / 2;\n if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n hi = mid;\n } else {\n lo = mid;\n }\n }\n // place label if current lower bound exceeds prior max font size\n if (lo > maxSize) {\n d.x = x;\n d.y = y;\n maxSize = lo;\n labelPlaced = true;\n }\n }\n }\n\n // place label at slice center if not placed through other means\n // and if we're not avoiding overlap with other areas\n if (!labelPlaced && !avoidBaseMark) {\n // one span is zero, hence we can add\n areaWidth = Math.abs(x2 - x1 + y2 - y1);\n x = (x1 + x2) / 2;\n y = (y1 + y2) / 2;\n\n // place label if it fits and improves the max area width\n if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n maxAreaWidth = areaWidth;\n d.x = x;\n d.y = y;\n labelPlaced2 = true;\n }\n }\n }\n\n // record current label placement information, update label bitmap\n if (labelPlaced || labelPlaced2) {\n x = textWidth / 2;\n y = textHeight / 2;\n bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n d.align = 'center';\n d.baseline = 'middle';\n return true;\n } else {\n return false;\n }\n };\n}\n\nconst Aligns = ['right', 'center', 'left'],\n Baselines = ['bottom', 'middle', 'top'];\nfunction placeMarkLabel ($, bitmaps, anchors, offsets) {\n const width = $.width,\n height = $.height,\n bm0 = bitmaps[0],\n bm1 = bitmaps[1],\n n = offsets.length;\n return function (d) {\n const boundary = d.boundary,\n textHeight = d.datum.fontSize;\n\n // can not be placed if the mark is not visible in the graph bound\n if (boundary[2] < 0 || boundary[5] < 0 || boundary[0] > width || boundary[3] > height) {\n return false;\n }\n let textWidth = d.textWidth ?? 0,\n dx,\n dy,\n isInside,\n sizeFactor,\n insideFactor,\n x1,\n x2,\n y1,\n y2,\n xc,\n yc,\n _x1,\n _x2,\n _y1,\n _y2;\n\n // for each anchor and offset\n for (let i = 0; i < n; ++i) {\n dx = (anchors[i] & 0x3) - 1;\n dy = (anchors[i] >>> 0x2 & 0x3) - 1;\n isInside = dx === 0 && dy === 0 || offsets[i] < 0;\n sizeFactor = dx && dy ? Math.SQRT1_2 : 1;\n insideFactor = offsets[i] < 0 ? -1 : 1;\n x1 = boundary[1 + dx] + offsets[i] * dx * sizeFactor;\n yc = boundary[4 + dy] + insideFactor * textHeight * dy / 2 + offsets[i] * dy * sizeFactor;\n y1 = yc - textHeight / 2;\n y2 = yc + textHeight / 2;\n _x1 = $(x1);\n _y1 = $(y1);\n _y2 = $(y2);\n if (!textWidth) {\n // to avoid finding width of text label,\n if (!test(_x1, _x1, _y1, _y2, bm0, bm1, x1, x1, y1, y2, boundary, isInside)) {\n // skip this anchor/offset option if we fail to place a label with 1px width\n continue;\n } else {\n // Otherwise, find the label width\n textWidth = textMetrics.width(d.datum, d.datum.text);\n }\n }\n xc = x1 + insideFactor * textWidth * dx / 2;\n x1 = xc - textWidth / 2;\n x2 = xc + textWidth / 2;\n _x1 = $(x1);\n _x2 = $(x2);\n if (test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside)) {\n // place label if the position is placeable\n d.x = !dx ? xc : dx * insideFactor < 0 ? x2 : x1;\n d.y = !dy ? yc : dy * insideFactor < 0 ? y2 : y1;\n d.align = Aligns[dx * insideFactor + 1];\n d.baseline = Baselines[dy * insideFactor + 1];\n bm0.setRange(_x1, _y1, _x2, _y2);\n return true;\n }\n }\n return false;\n };\n}\n\n// Test if a label with the given dimensions can be added without overlap\nfunction test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside) {\n return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 || bm0).getRange(_x1, _y1, _x2, _y2));\n}\n\n// 8-bit representation of anchors\nconst TOP = 0x0,\n MIDDLE = 0x4,\n BOTTOM = 0x8,\n LEFT = 0x0,\n CENTER = 0x1,\n RIGHT = 0x2;\n\n// Mapping from text anchor to number representation\nconst anchorCode = {\n 'top-left': TOP + LEFT,\n 'top': TOP + CENTER,\n 'top-right': TOP + RIGHT,\n 'left': MIDDLE + LEFT,\n 'middle': MIDDLE + CENTER,\n 'right': MIDDLE + RIGHT,\n 'bottom-left': BOTTOM + LEFT,\n 'bottom': BOTTOM + CENTER,\n 'bottom-right': BOTTOM + RIGHT\n};\nconst placeAreaLabel = {\n 'naive': placeAreaLabelNaive,\n 'reduced-search': placeAreaLabelReducedSearch,\n 'floodfill': placeAreaLabelFloodFill\n};\nfunction labelLayout (texts, size, compare, offset, anchor, avoidMarks, avoidBaseMark, lineAnchor, markIndex, padding, method) {\n // early exit for empty data\n if (!texts.length) return texts;\n const positions = Math.max(offset.length, anchor.length),\n offsets = getOffsets(offset, positions),\n anchors = getAnchors(anchor, positions),\n marktype = markType(texts[0].datum),\n grouptype = marktype === 'group' && texts[0].datum.items[markIndex].marktype,\n isGroupArea = grouptype === 'area',\n boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex),\n infPadding = padding === null || padding === Infinity,\n isNaiveGroupArea = isGroupArea && method === 'naive';\n let maxTextWidth = -1,\n maxTextHeight = -1;\n\n // prepare text mark data for placing\n const data = texts.map(d => {\n const textWidth = infPadding ? textMetrics.width(d, d.text) : undefined;\n maxTextWidth = Math.max(maxTextWidth, textWidth);\n maxTextHeight = Math.max(maxTextHeight, d.fontSize);\n return {\n datum: d,\n opacity: 0,\n x: undefined,\n y: undefined,\n align: undefined,\n baseline: undefined,\n boundary: boundary(d),\n textWidth\n };\n });\n padding = padding === null || padding === Infinity ? Math.max(maxTextWidth, maxTextHeight) + Math.max(...offset) : padding;\n const $ = scaler(size[0], size[1], padding);\n let bitmaps;\n if (!isNaiveGroupArea) {\n // sort labels in priority order, if comparator is provided\n if (compare) {\n data.sort((a, b) => compare(a.datum, b.datum));\n }\n\n // flag indicating if label can be placed inside its base mark\n let labelInside = false;\n for (let i = 0; i < anchors.length && !labelInside; ++i) {\n // label inside if anchor is at center\n // label inside if offset to be inside the mark bound\n labelInside = anchors[i] === 0x5 || offsets[i] < 0;\n }\n\n // extract data information from base mark when base mark is to be avoided\n // base mark is implicitly avoided if it is a group area\n const baseMark = (marktype && avoidBaseMark || isGroupArea) && texts.map(d => d.datum);\n\n // generate bitmaps for layout calculation\n bitmaps = avoidMarks.length || baseMark ? markBitmaps($, baseMark || [], avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data);\n }\n\n // generate label placement function\n const place = isGroupArea ? placeAreaLabel[method]($, bitmaps, avoidBaseMark, markIndex) : placeMarkLabel($, bitmaps, anchors, offsets);\n\n // place all labels\n data.forEach(d => d.opacity = +place(d));\n return data;\n}\nfunction getOffsets(_, count) {\n const offsets = new Float64Array(count),\n n = _.length;\n for (let i = 0; i < n; ++i) offsets[i] = _[i] || 0;\n for (let i = n; i < count; ++i) offsets[i] = offsets[n - 1];\n return offsets;\n}\nfunction getAnchors(_, count) {\n const anchors = new Int8Array(count),\n n = _.length;\n for (let i = 0; i < n; ++i) anchors[i] |= anchorCode[_[i]];\n for (let i = n; i < count; ++i) anchors[i] = anchors[n - 1];\n return anchors;\n}\nfunction markType(item) {\n return item && item.mark && item.mark.marktype;\n}\n\n/**\n * Factory function for function for getting base mark boundary, depending\n * on mark and group type. When mark type is undefined, line or area: boundary\n * is the coordinate of each data point. When base mark is grouped line,\n * boundary is either at the start or end of the line depending on the\n * value of lineAnchor. Otherwise, use bounds of base mark.\n */\nfunction markBoundary(marktype, grouptype, lineAnchor, markIndex) {\n const xy = d => [d.x, d.x, d.x, d.y, d.y, d.y];\n if (!marktype) {\n return xy; // no reactive geometry\n } else if (marktype === 'line' || marktype === 'area') {\n return d => xy(d.datum);\n } else if (grouptype === 'line') {\n return d => {\n const items = d.datum.items[markIndex].items;\n return xy(items.length ? items[lineAnchor === 'start' ? 0 : items.length - 1] : {\n x: NaN,\n y: NaN\n });\n };\n } else {\n return d => {\n const b = d.datum.bounds;\n return [b.x1, (b.x1 + b.x2) / 2, b.x2, b.y1, (b.y1 + b.y2) / 2, b.y2];\n };\n }\n}\n\nconst Output = ['x', 'y', 'opacity', 'align', 'baseline'];\nconst Anchors = ['top-left', 'left', 'bottom-left', 'top', 'bottom', 'top-right', 'right', 'bottom-right'];\n\n/**\n * Compute text label layout to annotate marks.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The size of the layout, provided as a [width, height] array.\n * @param {function(*,*): number} [params.sort] - An optional\n * comparator function for sorting label data in priority order.\n * @param {Array<string>} [params.anchor] - Label anchor points relative to the base mark bounding box.\n * The available options are 'top-left', 'left', 'bottom-left', 'top',\n * 'bottom', 'top-right', 'right', 'bottom-right', 'middle'.\n * @param {Array<number>} [params.offset] - Label offsets (in pixels) from the base mark bounding box.\n * This parameter is parallel to the list of anchor points.\n * @param {number | null} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size.\n * If this parameter is null, a label may exceed the layout size without any boundary.\n * @param {string} [params.lineAnchor='end'] - For group line mark labels only, indicates the anchor\n * position for labels. One of 'start' or 'end'.\n * @param {string} [params.markIndex=0] - For group mark labels only, an index indicating\n * which mark within the group should be labeled.\n * @param {Array<number>} [params.avoidMarks] - A list of additional mark names for which the label\n * layout should avoid overlap.\n * @param {boolean} [params.avoidBaseMark=true] - Boolean flag indicating if labels should avoid\n * overlap with the underlying base mark being labeled.\n * @param {string} [params.method='naive'] - For area make labels only, a method for\n * place labels. One of 'naive', 'reduced-search', or 'floodfill'.\n * @param {Array<string>} [params.as] - The output fields written by the transform.\n * The default is ['x', 'y', 'opacity', 'align', 'baseline'].\n */\nfunction Label(params) {\n Transform.call(this, null, params);\n}\nLabel.Definition = {\n type: 'Label',\n metadata: {\n modifies: true\n },\n params: [{\n name: 'size',\n type: 'number',\n array: true,\n length: 2,\n required: true\n }, {\n name: 'sort',\n type: 'compare'\n }, {\n name: 'anchor',\n type: 'string',\n array: true,\n default: Anchors\n }, {\n name: 'offset',\n type: 'number',\n array: true,\n default: [1]\n }, {\n name: 'padding',\n type: 'number',\n default: 0,\n null: true\n }, {\n name: 'lineAnchor',\n type: 'string',\n values: ['start', 'end'],\n default: 'end'\n }, {\n name: 'markIndex',\n type: 'number',\n default: 0\n }, {\n name: 'avoidBaseMark',\n type: 'boolean',\n default: true\n }, {\n name: 'avoidMarks',\n type: 'data',\n array: true\n }, {\n name: 'method',\n type: 'string',\n default: 'naive'\n }, {\n name: 'as',\n type: 'string',\n array: true,\n length: Output.length,\n default: Output\n }]\n};\ninherits(Label, Transform, {\n transform(_, pulse) {\n function modp(param) {\n const p = _[param];\n return isFunction(p) && pulse.modified(p.fields);\n }\n const mod = _.modified();\n if (!(mod || pulse.changed(pulse.ADD_REM) || modp('sort'))) return;\n if (!_.size || _.size.length !== 2) {\n error('Size parameter should be specified as a [width, height] array.');\n }\n const as = _.as || Output;\n\n // run label layout\n labelLayout(pulse.materialize(pulse.SOURCE).source || [], _.size, _.sort, array(_.offset == null ? 1 : _.offset), array(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark !== false, _.lineAnchor || 'end', _.markIndex || 0, _.padding === undefined ? 0 : _.padding, _.method || 'naive').forEach(l => {\n // write layout results to data stream\n const t = l.datum;\n t[as[0]] = l.x;\n t[as[1]] = l.y;\n t[as[2]] = l.opacity;\n t[as[3]] = l.align;\n t[as[4]] = l.baseline;\n });\n return pulse.reflow(mod).modifies(as);\n }\n});\n\nexport { Label as label };\n", "import { regressionLoess, sampleCurve, regressionConstant, regressionLinear, regressionLog, regressionExp, regressionPow, regressionQuad, regressionPoly } from 'vega-statistics';\nimport { Transform, ingest } from 'vega-dataflow';\nimport { inherits, accessorName, hasOwnProperty, error, extent } from 'vega-util';\n\nfunction partition (data, groupby) {\n var groups = [],\n get = function (f) {\n return f(t);\n },\n map,\n i,\n n,\n t,\n k,\n g;\n\n // partition data points into stack groups\n if (groupby == null) {\n groups.push(data);\n } else {\n for (map = {}, i = 0, n = data.length; i < n; ++i) {\n t = data[i];\n k = groupby.map(get);\n g = map[k];\n if (!g) {\n map[k] = g = [];\n g.dims = k;\n groups.push(g);\n }\n g.push(t);\n }\n }\n return groups;\n}\n\n/**\n * Compute locally-weighted regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.bandwidth=0.3] - The loess bandwidth.\n */\nfunction Loess(params) {\n Transform.call(this, null, params);\n}\nLoess.Definition = {\n 'type': 'Loess',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'bandwidth',\n 'type': 'number',\n 'default': 0.3\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }]\n};\ninherits(Loess, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n m = names.length,\n as = _.as || [accessorName(_.x), accessorName(_.y)],\n values = [];\n groups.forEach(g => {\n regressionLoess(g, _.x, _.y, _.bandwidth || 0.3).forEach(p => {\n const t = {};\n for (let i = 0; i < m; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[0];\n t[as[1]] = p[1];\n values.push(ingest(t));\n });\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\n\nconst Methods = {\n constant: regressionConstant,\n linear: regressionLinear,\n log: regressionLog,\n exp: regressionExp,\n pow: regressionPow,\n quad: regressionQuad,\n poly: regressionPoly\n};\nconst degreesOfFreedom = (method, order) => method === 'poly' ? order : method === 'quad' ? 2 : 1;\n\n/**\n * Compute regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {string} [params.method='linear'] - The regression method to apply.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {Array<number>} [params.extent] - The domain extent over which to plot the regression line.\n * @param {number} [params.order=3] - The polynomial order. Only applies to the 'poly' method.\n */\nfunction Regression(params) {\n Transform.call(this, null, params);\n}\nRegression.Definition = {\n 'type': 'Regression',\n 'metadata': {\n 'generates': true\n },\n 'params': [{\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'groupby',\n 'type': 'field',\n 'array': true\n }, {\n 'name': 'method',\n 'type': 'string',\n 'default': 'linear',\n 'values': Object.keys(Methods)\n }, {\n 'name': 'order',\n 'type': 'number',\n 'default': 3\n }, {\n 'name': 'extent',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'params',\n 'type': 'boolean',\n 'default': false\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true\n }]\n};\ninherits(Regression, Transform, {\n transform(_, pulse) {\n const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n if (!this.value || pulse.changed() || _.modified()) {\n const source = pulse.materialize(pulse.SOURCE).source,\n groups = partition(source, _.groupby),\n names = (_.groupby || []).map(accessorName),\n method = _.method || 'linear',\n order = _.order == null ? 3 : _.order,\n dof = degreesOfFreedom(method, order),\n as = _.as || [accessorName(_.x), accessorName(_.y)],\n fit = Methods[method],\n values = [];\n let domain = _.extent;\n if (!hasOwnProperty(Methods, method)) {\n error('Invalid regression method: ' + method);\n }\n if (domain != null) {\n if (method === 'log' && domain[0] <= 0) {\n pulse.dataflow.warn('Ignoring extent with values <= 0 for log regression.');\n domain = null;\n }\n }\n groups.forEach(g => {\n const n = g.length;\n if (n <= dof) {\n pulse.dataflow.warn('Skipping regression with more parameters than data points.');\n return;\n }\n const model = fit(g, _.x, _.y, order);\n if (_.params) {\n // if parameter vectors requested return those\n values.push(ingest({\n keys: g.dims,\n coef: model.coef,\n rSquared: model.rSquared\n }));\n return;\n }\n const dom = domain || extent(g, _.x),\n add = p => {\n const t = {};\n for (let i = 0; i < names.length; ++i) {\n t[names[i]] = g.dims[i];\n }\n t[as[0]] = p[0];\n t[as[1]] = p[1];\n values.push(ingest(t));\n };\n if (method === 'linear' || method === 'constant') {\n // for linear or constant regression we only need the end points\n dom.forEach(x => add([x, model.predict(x)]));\n } else {\n // otherwise return trend line sample points\n sampleCurve(model.predict, dom, 25, 200).forEach(add);\n }\n });\n if (this.value) out.rem = this.value;\n this.value = out.add = out.source = values;\n }\n return out;\n }\n});\n\nexport { Loess as loess, Regression as regression };\n", "import { Transform } from 'vega-dataflow';\nimport { inherits } from 'vega-util';\nimport { Delaunay } from 'd3-delaunay';\n\nfunction Voronoi(params) {\n Transform.call(this, null, params);\n}\nVoronoi.Definition = {\n 'type': 'Voronoi',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'x',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'y',\n 'type': 'field',\n 'required': true\n }, {\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'extent',\n 'type': 'array',\n 'array': true,\n 'length': 2,\n 'default': [[-1e5, -1e5], [1e5, 1e5]],\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }, {\n 'name': 'as',\n 'type': 'string',\n 'default': 'path'\n }]\n};\nconst defaultExtent = [-1e5, -1e5, 1e5, 1e5];\ninherits(Voronoi, Transform, {\n transform(_, pulse) {\n const as = _.as || 'path',\n data = pulse.source;\n\n // nothing to do if no data\n if (!data || !data.length) return pulse;\n\n // configure and construct voronoi diagram\n let s = _.size;\n s = s ? [0, 0, s[0], s[1]] : (s = _.extent) ? [s[0][0], s[0][1], s[1][0], s[1][1]] : defaultExtent;\n const voronoi = this.value = Delaunay.from(data, _.x, _.y).voronoi(s);\n\n // map polygons to paths\n for (let i = 0, n = data.length; i < n; ++i) {\n const polygon = voronoi.cellPolygon(i);\n data[i][as] = polygon && !isPoint(polygon) ? toPathString(polygon) : null;\n }\n return pulse.reflow(_.modified()).modifies(as);\n }\n});\n\n// suppress duplicated end point vertices\nfunction toPathString(p) {\n const x = p[0][0],\n y = p[0][1];\n let n = p.length - 1;\n for (; p[n][0] === x && p[n][1] === y; --n);\n return 'M' + p.slice(0, n + 1).join('L') + 'Z';\n}\nfunction isPoint(p) {\n return p.length === 2 && p[0][0] === p[1][0] && p[0][1] === p[1][1];\n}\n\nexport { Voronoi as voronoi };\n", "export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nexport function estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nexport function vec(n) {\n return new Float64Array(n);\n}\n", "import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = sum(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = sum(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = sum(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n", "import {epsilon, splitter, resulterrbound, estimate, vec, sum, scale} from './util.js';\n\nconst o3derrboundA = (7 + 56 * epsilon) * epsilon;\nconst o3derrboundB = (3 + 28 * epsilon) * epsilon;\nconst o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst at_b = vec(4);\nconst at_c = vec(4);\nconst bt_c = vec(4);\nconst bt_a = vec(4);\nconst ct_a = vec(4);\nconst ct_b = vec(4);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abt = vec(8);\nconst u = vec(4);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _16 = vec(8);\nconst _12 = vec(12);\n\nlet fin = vec(192);\nlet fin2 = vec(192);\n\nfunction finadd(finlen, alen, a) {\n finlen = sum(finlen, fin, alen, a, fin2);\n const tmp = fin; fin = fin2; fin2 = tmp;\n return finlen;\n}\n\nfunction tailinit(xtail, ytail, ax, ay, bx, by, a, b) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate;\n if (xtail === 0) {\n if (ytail === 0) {\n a[0] = 0;\n b[0] = 0;\n return 1;\n } else {\n negate = -ytail;\n s1 = negate * ax;\n c = splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n s1 = ytail * bx;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n }\n } else {\n if (ytail === 0) {\n s1 = xtail * ay;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n negate = -xtail;\n s1 = negate * by;\n c = splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n } else {\n s1 = xtail * ay;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ytail * ax;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n a[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n a[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n a[2] = _j - (u3 - bvirt) + (_i - bvirt);\n a[3] = u3;\n s1 = ytail * bx;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = xtail * by;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n b[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n b[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n b[2] = _j - (u3 - bvirt) + (_i - bvirt);\n b[3] = u3;\n return 4;\n }\n }\n}\n\nfunction tailadd(finlen, a, b, k, z) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;\n s1 = a * b;\n c = splitter * a;\n ahi = c - (c - a);\n alo = a - ahi;\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n c = splitter * k;\n bhi = c - (c - k);\n blo = k - bhi;\n _i = s0 * k;\n c = splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * k;\n c = splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n if (z !== 0) {\n c = splitter * z;\n bhi = c - (c - z);\n blo = z - bhi;\n _i = s0 * z;\n c = splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * z;\n c = splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n }\n return finlen;\n}\n\nfunction orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {\n let finlen;\n let adxtail, bdxtail, cdxtail;\n let adytail, bdytail, cdytail;\n let adztail, bdztail, cdztail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3;\n\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n s1 = bdx * cdy;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n\n finlen = sum(\n sum(\n scale(4, bc, adz, _8), _8,\n scale(4, ca, bdz, _8b), _8b, _16), _16,\n scale(4, ab, cdz, _8), _8, fin);\n\n let det = estimate(finlen, fin);\n let errbound = o3derrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n bvirt = az - adz;\n adztail = az - (adz + bvirt) + (bvirt - dz);\n bvirt = bz - bdz;\n bdztail = bz - (bdz + bvirt) + (bvirt - dz);\n bvirt = cz - cdz;\n cdztail = cz - (cdz + bvirt) + (bvirt - dz);\n\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 &&\n adytail === 0 && bdytail === 0 && cdytail === 0 &&\n adztail === 0 && bdztail === 0 && cdztail === 0) {\n return det;\n }\n\n errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det);\n det +=\n adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) +\n bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) +\n cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);\n const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);\n const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);\n\n const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct);\n finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16);\n\n const catlen = sum(ct_len, ct_a, at_len, at_c, cat);\n finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16);\n\n const abtlen = sum(at_len, at_b, bt_len, bt_a, abt);\n finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16);\n\n if (adztail !== 0) {\n finlen = finadd(finlen, scale(4, bc, adztail, _12), _12);\n finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16);\n }\n if (bdztail !== 0) {\n finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12);\n finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16);\n }\n if (cdztail !== 0) {\n finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12);\n finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16);\n }\n\n if (adxtail !== 0) {\n if (bdytail !== 0) {\n finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);\n }\n if (cdytail !== 0) {\n finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);\n }\n }\n if (bdxtail !== 0) {\n if (cdytail !== 0) {\n finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);\n }\n if (adytail !== 0) {\n finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);\n }\n }\n if (cdxtail !== 0) {\n if (adytail !== 0) {\n finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);\n }\n if (bdytail !== 0) {\n finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);\n }\n }\n\n return fin[finlen - 1];\n}\n\nexport function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n const bdxcdy = bdx * cdy;\n const cdxbdy = cdx * bdy;\n\n const cdxady = cdx * ady;\n const adxcdy = adx * cdy;\n\n const adxbdy = adx * bdy;\n const bdxady = bdx * ady;\n\n const det =\n adz * (bdxcdy - cdxbdy) +\n bdz * (cdxady - adxcdy) +\n cdz * (adxbdy - bdxady);\n\n const permanent =\n (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) +\n (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) +\n (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);\n\n const errbound = o3derrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n\n return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);\n}\n\nexport function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n return adx * (bdy * cdz - bdz * cdy) +\n bdx * (cdy * adz - cdz * ady) +\n cdx * (ady * bdz - adz * bdy);\n}\n", "import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale} from './util.js';\n\nconst iccerrboundA = (10 + 96 * epsilon) * epsilon;\nconst iccerrboundB = (4 + 48 * epsilon) * epsilon;\nconst iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst aa = vec(4);\nconst bb = vec(4);\nconst cc = vec(4);\nconst u = vec(4);\nconst v = vec(4);\nconst axtbc = vec(8);\nconst aytbc = vec(8);\nconst bxtca = vec(8);\nconst bytca = vec(8);\nconst cxtab = vec(8);\nconst cytab = vec(8);\nconst abt = vec(8);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abtt = vec(4);\nconst bctt = vec(4);\nconst catt = vec(4);\n\nconst _8 = vec(8);\nconst _16 = vec(16);\nconst _16b = vec(16);\nconst _16c = vec(16);\nconst _32 = vec(32);\nconst _32b = vec(32);\nconst _48 = vec(48);\nconst _64 = vec(64);\n\nlet fin = vec(1152);\nlet fin2 = vec(1152);\n\nfunction finadd(finlen, a, alen) {\n finlen = sum(finlen, fin, a, alen, fin2);\n const tmp = fin; fin = fin2; fin2 = tmp;\n return finlen;\n}\n\nfunction incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {\n let finlen;\n let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;\n let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;\n let abtlen, bctlen, catlen;\n let abttlen, bcttlen, cattlen;\n let n1, n0;\n\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n\n s1 = bdx * cdy;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n\n finlen = sum(\n sum(\n sum(\n scale(scale(4, bc, adx, _8), _8, adx, _16), _16,\n scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,\n sum(\n scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16,\n scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,\n sum(\n scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16,\n scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);\n\n let det = estimate(finlen, fin);\n let errbound = iccerrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {\n return det;\n }\n\n errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det);\n det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) +\n 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx)) +\n ((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) +\n 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) +\n ((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) +\n 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));\n\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = adx * adx;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = ady * ady;\n c = splitter * ady;\n ahi = c - (c - ady);\n alo = ady - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n aa[2] = _j - (u3 - bvirt) + (_i - bvirt);\n aa[3] = u3;\n }\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = bdx * bdx;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = bdy * bdy;\n c = splitter * bdy;\n ahi = c - (c - bdy);\n alo = bdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bb[3] = u3;\n }\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = cdx * cdx;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = cdy * cdy;\n c = splitter * cdy;\n ahi = c - (c - cdy);\n alo = cdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cc[3] = u3;\n }\n\n if (adxtail !== 0) {\n axtbclen = scale(4, bc, adxtail, axtbc);\n finlen = finadd(finlen, sum_three(\n scale(axtbclen, axtbc, 2 * adx, _16), _16,\n scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b,\n scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);\n }\n if (adytail !== 0) {\n aytbclen = scale(4, bc, adytail, aytbc);\n finlen = finadd(finlen, sum_three(\n scale(aytbclen, aytbc, 2 * ady, _16), _16,\n scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b,\n scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);\n }\n if (bdxtail !== 0) {\n bxtcalen = scale(4, ca, bdxtail, bxtca);\n finlen = finadd(finlen, sum_three(\n scale(bxtcalen, bxtca, 2 * bdx, _16), _16,\n scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,\n scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);\n }\n if (bdytail !== 0) {\n bytcalen = scale(4, ca, bdytail, bytca);\n finlen = finadd(finlen, sum_three(\n scale(bytcalen, bytca, 2 * bdy, _16), _16,\n scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b,\n scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);\n }\n if (cdxtail !== 0) {\n cxtablen = scale(4, ab, cdxtail, cxtab);\n finlen = finadd(finlen, sum_three(\n scale(cxtablen, cxtab, 2 * cdx, _16), _16,\n scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b,\n scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);\n }\n if (cdytail !== 0) {\n cytablen = scale(4, ab, cdytail, cytab);\n finlen = finadd(finlen, sum_three(\n scale(cytablen, cytab, 2 * cdy, _16), _16,\n scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b,\n scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);\n }\n\n if (adxtail !== 0 || adytail !== 0) {\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = bdxtail * cdy;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * cdytail;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n s1 = cdxtail * -bdy;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * -bdy;\n bhi = c - (c - -bdy);\n blo = -bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * -bdytail;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * -bdytail;\n bhi = c - (c - -bdytail);\n blo = -bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n bctlen = sum(4, u, 4, v, bct);\n s1 = bdxtail * cdytail;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdxtail * bdytail;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bctt[3] = u3;\n bcttlen = 4;\n } else {\n bct[0] = 0;\n bctlen = 1;\n bctt[0] = 0;\n bcttlen = 1;\n }\n if (adxtail !== 0) {\n const len = scale(bctlen, bct, adxtail, _16c);\n finlen = finadd(finlen, sum(\n scale(axtbclen, axtbc, adxtail, _16), _16,\n scale(len, _16c, 2 * adx, _32), _32, _48), _48);\n\n const len2 = scale(bcttlen, bctt, adxtail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * adx, _16), _16,\n scale(len2, _8, adxtail, _16b), _16b,\n scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);\n\n if (bdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);\n }\n if (cdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);\n }\n }\n if (adytail !== 0) {\n const len = scale(bctlen, bct, adytail, _16c);\n finlen = finadd(finlen, sum(\n scale(aytbclen, aytbc, adytail, _16), _16,\n scale(len, _16c, 2 * ady, _32), _32, _48), _48);\n\n const len2 = scale(bcttlen, bctt, adytail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * ady, _16), _16,\n scale(len2, _8, adytail, _16b), _16b,\n scale(len, _16c, adytail, _32), _32, _32b, _64), _64);\n }\n }\n if (bdxtail !== 0 || bdytail !== 0) {\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = cdxtail * ady;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * adytail;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -cdy;\n n0 = -cdytail;\n s1 = adxtail * n1;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * n0;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n catlen = sum(4, u, 4, v, cat);\n s1 = cdxtail * adytail;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adxtail * cdytail;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n catt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n catt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n catt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n catt[3] = u3;\n cattlen = 4;\n } else {\n cat[0] = 0;\n catlen = 1;\n catt[0] = 0;\n cattlen = 1;\n }\n if (bdxtail !== 0) {\n const len = scale(catlen, cat, bdxtail, _16c);\n finlen = finadd(finlen, sum(\n scale(bxtcalen, bxtca, bdxtail, _16), _16,\n scale(len, _16c, 2 * bdx, _32), _32, _48), _48);\n\n const len2 = scale(cattlen, catt, bdxtail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * bdx, _16), _16,\n scale(len2, _8, bdxtail, _16b), _16b,\n scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);\n\n if (cdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);\n }\n if (adytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);\n }\n }\n if (bdytail !== 0) {\n const len = scale(catlen, cat, bdytail, _16c);\n finlen = finadd(finlen, sum(\n scale(bytcalen, bytca, bdytail, _16), _16,\n scale(len, _16c, 2 * bdy, _32), _32, _48), _48);\n\n const len2 = scale(cattlen, catt, bdytail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * bdy, _16), _16,\n scale(len2, _8, bdytail, _16b), _16b,\n scale(len, _16c, bdytail, _32), _32, _32b, _64), _64);\n }\n }\n if (cdxtail !== 0 || cdytail !== 0) {\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = adxtail * bdy;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * bdytail;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -ady;\n n0 = -adytail;\n s1 = bdxtail * n1;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * n0;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n abtlen = sum(4, u, 4, v, abt);\n s1 = adxtail * bdytail;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdxtail * adytail;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n abtt[3] = u3;\n abttlen = 4;\n } else {\n abt[0] = 0;\n abtlen = 1;\n abtt[0] = 0;\n abttlen = 1;\n }\n if (cdxtail !== 0) {\n const len = scale(abtlen, abt, cdxtail, _16c);\n finlen = finadd(finlen, sum(\n scale(cxtablen, cxtab, cdxtail, _16), _16,\n scale(len, _16c, 2 * cdx, _32), _32, _48), _48);\n\n const len2 = scale(abttlen, abtt, cdxtail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * cdx, _16), _16,\n scale(len2, _8, cdxtail, _16b), _16b,\n scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);\n\n if (adytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);\n }\n if (bdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);\n }\n }\n if (cdytail !== 0) {\n const len = scale(abtlen, abt, cdytail, _16c);\n finlen = finadd(finlen, sum(\n scale(cytablen, cytab, cdytail, _16), _16,\n scale(len, _16c, 2 * cdy, _32), _32, _48), _48);\n\n const len2 = scale(abttlen, abtt, cdytail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * cdy, _16), _16,\n scale(len2, _8, cdytail, _16b), _16b,\n scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);\n }\n }\n\n return fin[finlen - 1];\n}\n\nexport function incircle(ax, ay, bx, by, cx, cy, dx, dy) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n\n const bdxcdy = bdx * cdy;\n const cdxbdy = cdx * bdy;\n const alift = adx * adx + ady * ady;\n\n const cdxady = cdx * ady;\n const adxcdy = adx * cdy;\n const blift = bdx * bdx + bdy * bdy;\n\n const adxbdy = adx * bdy;\n const bdxady = bdx * ady;\n const clift = cdx * cdx + cdy * cdy;\n\n const det =\n alift * (bdxcdy - cdxbdy) +\n blift * (cdxady - adxcdy) +\n clift * (adxbdy - bdxady);\n\n const permanent =\n (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift +\n (Math.abs(cdxady) + Math.abs(adxcdy)) * blift +\n (Math.abs(adxbdy) + Math.abs(bdxady)) * clift;\n\n const errbound = iccerrboundA * permanent;\n\n if (det > errbound || -det > errbound) {\n return det;\n }\n return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);\n}\n\nexport function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {\n const adx = ax - dx;\n const ady = ay - dy;\n const bdx = bx - dx;\n const bdy = by - dy;\n const cdx = cx - dx;\n const cdy = cy - dy;\n\n const abdet = adx * bdy - bdx * ady;\n const bcdet = bdx * cdy - cdx * bdy;\n const cadet = cdx * ady - adx * cdy;\n const alift = adx * adx + ady * ady;\n const blift = bdx * bdx + bdy * bdy;\n const clift = cdx * cdx + cdy * cdy;\n\n return alift * bcdet + blift * cadet + clift * abdet;\n}\n", "import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale, negate} from './util.js';\n\nconst isperrboundA = (16 + 224 * epsilon) * epsilon;\nconst isperrboundB = (5 + 72 * epsilon) * epsilon;\nconst isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;\n\nconst ab = vec(4);\nconst bc = vec(4);\nconst cd = vec(4);\nconst de = vec(4);\nconst ea = vec(4);\nconst ac = vec(4);\nconst bd = vec(4);\nconst ce = vec(4);\nconst da = vec(4);\nconst eb = vec(4);\n\nconst abc = vec(24);\nconst bcd = vec(24);\nconst cde = vec(24);\nconst dea = vec(24);\nconst eab = vec(24);\nconst abd = vec(24);\nconst bce = vec(24);\nconst cda = vec(24);\nconst deb = vec(24);\nconst eac = vec(24);\n\nconst adet = vec(1152);\nconst bdet = vec(1152);\nconst cdet = vec(1152);\nconst ddet = vec(1152);\nconst edet = vec(1152);\nconst abdet = vec(2304);\nconst cddet = vec(2304);\nconst cdedet = vec(3456);\nconst deter = vec(5760);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _8c = vec(8);\nconst _16 = vec(16);\nconst _24 = vec(24);\nconst _48 = vec(48);\nconst _48b = vec(48);\nconst _96 = vec(96);\nconst _192 = vec(192);\nconst _384x = vec(384);\nconst _384y = vec(384);\nconst _384z = vec(384);\nconst _768 = vec(768);\n\nfunction sum_three_scale(a, b, c, az, bz, cz, out) {\n return sum_three(\n scale(4, a, az, _8), _8,\n scale(4, b, bz, _8b), _8b,\n scale(4, c, cz, _8c), _8c, _16, out);\n}\n\nfunction liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {\n const len = sum(\n sum(alen, a, blen, b, _48), _48,\n negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);\n\n return sum_three(\n scale(scale(len, _96, x, _192), _192, x, _384x), _384x,\n scale(scale(len, _96, y, _192), _192, y, _384y), _384y,\n scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);\n}\n\nfunction insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n s1 = ax * by;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ay;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n s1 = bx * cy;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * by;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cx * dy;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * cy;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cd[3] = u3;\n s1 = dx * ey;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * dy;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n de[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n de[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n de[2] = _j - (u3 - bvirt) + (_i - bvirt);\n de[3] = u3;\n s1 = ex * ay;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * ey;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ea[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ea[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ea[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ea[3] = u3;\n s1 = ax * cy;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * ay;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ac[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ac[3] = u3;\n s1 = bx * dy;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * by;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bd[3] = u3;\n s1 = cx * ey;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * cy;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ce[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ce[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ce[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ce[3] = u3;\n s1 = dx * ay;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * dy;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n da[2] = _j - (u3 - bvirt) + (_i - bvirt);\n da[3] = u3;\n s1 = ex * by;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ey;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n eb[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n eb[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n eb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n eb[3] = u3;\n\n const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);\n const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);\n const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);\n const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);\n const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);\n const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);\n const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);\n const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);\n const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);\n const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);\n\n const deterlen = sum_three(\n liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,\n liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,\n sum_three(\n liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,\n liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,\n liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);\n\n return deter[deterlen - 1];\n}\n\nconst xdet = vec(96);\nconst ydet = vec(96);\nconst zdet = vec(96);\nconst fin = vec(1152);\n\nfunction liftadapt(a, b, c, az, bz, cz, x, y, z, out) {\n const len = sum_three_scale(a, b, c, az, bz, cz, _24);\n return sum_three(\n scale(scale(len, _24, x, _48), _48, x, xdet), xdet,\n scale(scale(len, _24, y, _48), _48, y, ydet), ydet,\n scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);\n}\n\nfunction insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {\n let ab3, bc3, cd3, da3, ac3, bd3;\n\n let aextail, bextail, cextail, dextail;\n let aeytail, beytail, ceytail, deytail;\n let aeztail, beztail, ceztail, deztail;\n\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;\n\n const aex = ax - ex;\n const bex = bx - ex;\n const cex = cx - ex;\n const dex = dx - ex;\n const aey = ay - ey;\n const bey = by - ey;\n const cey = cy - ey;\n const dey = dy - ey;\n const aez = az - ez;\n const bez = bz - ez;\n const cez = cz - ez;\n const dez = dz - ez;\n\n s1 = aex * bey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bex * aey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ab3 = _j + _i;\n bvirt = ab3 - _j;\n ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);\n ab[3] = ab3;\n s1 = bex * cey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * bey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bc3 = _j + _i;\n bvirt = bc3 - _j;\n bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);\n bc[3] = bc3;\n s1 = cex * dey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * cey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n cd3 = _j + _i;\n bvirt = cd3 - _j;\n cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);\n cd[3] = cd3;\n s1 = dex * aey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = aex * dey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n da3 = _j + _i;\n bvirt = da3 - _j;\n da[2] = _j - (da3 - bvirt) + (_i - bvirt);\n da[3] = da3;\n s1 = aex * cey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * aey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ac3 = _j + _i;\n bvirt = ac3 - _j;\n ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);\n ac[3] = ac3;\n s1 = bex * dey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * bey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bd3 = _j + _i;\n bvirt = bd3 - _j;\n bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);\n bd[3] = bd3;\n\n const finlen = sum(\n sum(\n negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,\n liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,\n sum(\n negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,\n liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);\n\n let det = estimate(finlen, fin);\n let errbound = isperrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - aex;\n aextail = ax - (aex + bvirt) + (bvirt - ex);\n bvirt = ay - aey;\n aeytail = ay - (aey + bvirt) + (bvirt - ey);\n bvirt = az - aez;\n aeztail = az - (aez + bvirt) + (bvirt - ez);\n bvirt = bx - bex;\n bextail = bx - (bex + bvirt) + (bvirt - ex);\n bvirt = by - bey;\n beytail = by - (bey + bvirt) + (bvirt - ey);\n bvirt = bz - bez;\n beztail = bz - (bez + bvirt) + (bvirt - ez);\n bvirt = cx - cex;\n cextail = cx - (cex + bvirt) + (bvirt - ex);\n bvirt = cy - cey;\n ceytail = cy - (cey + bvirt) + (bvirt - ey);\n bvirt = cz - cez;\n ceztail = cz - (cez + bvirt) + (bvirt - ez);\n bvirt = dx - dex;\n dextail = dx - (dex + bvirt) + (bvirt - ex);\n bvirt = dy - dey;\n deytail = dy - (dey + bvirt) + (bvirt - ey);\n bvirt = dz - dez;\n deztail = dz - (dez + bvirt) + (bvirt - ez);\n if (aextail === 0 && aeytail === 0 && aeztail === 0 &&\n bextail === 0 && beytail === 0 && beztail === 0 &&\n cextail === 0 && ceytail === 0 && ceztail === 0 &&\n dextail === 0 && deytail === 0 && deztail === 0) {\n return det;\n }\n\n errbound = isperrboundC * permanent + resulterrbound * Math.abs(det);\n\n const abeps = (aex * beytail + bey * aextail) - (aey * bextail + bex * aeytail);\n const bceps = (bex * ceytail + cey * bextail) - (bey * cextail + cex * beytail);\n const cdeps = (cex * deytail + dey * cextail) - (cey * dextail + dex * ceytail);\n const daeps = (dex * aeytail + aey * dextail) - (dey * aextail + aex * deytail);\n const aceps = (aex * ceytail + cey * aextail) - (aey * cextail + cex * aeytail);\n const bdeps = (bex * deytail + dey * bextail) - (bey * dextail + dex * beytail);\n det +=\n (((bex * bex + bey * bey + bez * bez) * ((cez * daeps + dez * aceps + aez * cdeps) +\n (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) *\n ((aez * bceps - bez * aceps + cez * abeps) + (aeztail * bc3 - beztail * ac3 + ceztail * ab3))) -\n ((aex * aex + aey * aey + aez * aez) * ((bez * cdeps - cez * bdeps + dez * bceps) +\n (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) *\n ((dez * abeps + aez * bdeps + bez * daeps) + (deztail * ab3 + aeztail * bd3 + beztail * da3)))) +\n 2 * (((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) +\n (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3)) -\n ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) +\n (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));\n\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);\n}\n\nexport function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n const aex = ax - ex;\n const bex = bx - ex;\n const cex = cx - ex;\n const dex = dx - ex;\n const aey = ay - ey;\n const bey = by - ey;\n const cey = cy - ey;\n const dey = dy - ey;\n const aez = az - ez;\n const bez = bz - ez;\n const cez = cz - ez;\n const dez = dz - ez;\n\n const aexbey = aex * bey;\n const bexaey = bex * aey;\n const ab = aexbey - bexaey;\n const bexcey = bex * cey;\n const cexbey = cex * bey;\n const bc = bexcey - cexbey;\n const cexdey = cex * dey;\n const dexcey = dex * cey;\n const cd = cexdey - dexcey;\n const dexaey = dex * aey;\n const aexdey = aex * dey;\n const da = dexaey - aexdey;\n const aexcey = aex * cey;\n const cexaey = cex * aey;\n const ac = aexcey - cexaey;\n const bexdey = bex * dey;\n const dexbey = dex * bey;\n const bd = bexdey - dexbey;\n\n const alift = aex * aex + aey * aey + aez * aez;\n const blift = bex * bex + bey * bey + bez * bez;\n const clift = cex * cex + cey * cey + cez * cez;\n const dlift = dex * dex + dey * dey + dez * dez;\n\n const det =\n (clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab)) +\n (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd));\n\n const aezplus = Math.abs(aez);\n const bezplus = Math.abs(bez);\n const cezplus = Math.abs(cez);\n const dezplus = Math.abs(dez);\n const aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey);\n const bexceyplus = Math.abs(bexcey) + Math.abs(cexbey);\n const cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey);\n const dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey);\n const aexceyplus = Math.abs(aexcey) + Math.abs(cexaey);\n const bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey);\n const permanent =\n (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift +\n (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift +\n (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift +\n (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift;\n\n const errbound = isperrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);\n}\n\nexport function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {\n const aex = pax - pex;\n const bex = pbx - pex;\n const cex = pcx - pex;\n const dex = pdx - pex;\n const aey = pay - pey;\n const bey = pby - pey;\n const cey = pcy - pey;\n const dey = pdy - pey;\n const aez = paz - pez;\n const bez = pbz - pez;\n const cez = pcz - pez;\n const dez = pdz - pez;\n\n const ab = aex * bey - bex * aey;\n const bc = bex * cey - cex * bey;\n const cd = cex * dey - dex * cey;\n const da = dex * aey - aex * dey;\n const ac = aex * cey - cex * aey;\n const bd = bex * dey - dex * bey;\n\n const abc = aez * bc - bez * ac + cez * ab;\n const bcd = bez * cd - cez * bd + dez * bc;\n const cda = cez * da + dez * ac + aez * cd;\n const dab = dez * ab + aez * bd + bez * da;\n\n const alift = aex * aex + aey * aey + aez * aez;\n const blift = bex * bex + bey * bey + bez * bez;\n const clift = cex * cex + cey * cey + cez * cez;\n const dlift = dex * dex + dey * dey + dez * dez;\n\n return (clift * dab - dlift * abc) + (alift * bcd - blift * cda);\n}\n", "\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nimport {orient2d} from 'robust-predicates';\n\nexport default class Delaunator {\n\n static from(points, getX = defaultGetX, getY = defaultGetY) {\n const n = points.length;\n const coords = new Float64Array(n * 2);\n\n for (let i = 0; i < n; i++) {\n const p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n\n return new Delaunator(coords);\n }\n\n constructor(coords) {\n const n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n this.coords = coords;\n\n // arrays that will store the triangulation graph\n const maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3);\n\n // temporary arrays for tracking the edges of the advancing convex hull\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n this._hullNext = new Uint32Array(n); // edge to next edge\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n // temporary arrays for sorting points\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n\n this.update();\n }\n\n update() {\n const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} = this;\n const n = coords.length >> 1;\n\n // populate an array of point indices; calculate input data bbox\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < n; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n this._ids[i] = i;\n }\n const cx = (minX + maxX) / 2;\n const cy = (minY + maxY) / 2;\n\n let minDist = Infinity;\n let i0, i1, i2;\n\n // pick a seed point close to the center\n for (let i = 0; i < n; i++) {\n const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist) {\n i0 = i;\n minDist = d;\n }\n }\n const i0x = coords[2 * i0];\n const i0y = coords[2 * i0 + 1];\n\n minDist = Infinity;\n\n // find the point closest to the seed\n for (let i = 0; i < n; i++) {\n if (i === i0) continue;\n const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist && d > 0) {\n i1 = i;\n minDist = d;\n }\n }\n let i1x = coords[2 * i1];\n let i1y = coords[2 * i1 + 1];\n\n let minRadius = Infinity;\n\n // find the third point which forms the smallest circumcircle with the first two\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n if (r < minRadius) {\n i2 = i;\n minRadius = r;\n }\n }\n let i2x = coords[2 * i2];\n let i2y = coords[2 * i2 + 1];\n\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (let i = 0; i < n; i++) {\n this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n }\n quicksort(this._ids, this._dists, 0, n - 1);\n const hull = new Uint32Array(n);\n let j = 0;\n for (let i = 0, d0 = -Infinity; i < n; i++) {\n const id = this._ids[i];\n if (this._dists[id] > d0) {\n hull[j++] = id;\n d0 = this._dists[id];\n }\n }\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n }\n\n // swap the order of the seed points for counter-clockwise orientation\n if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n const i = i1;\n const x = i1x;\n const y = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = i;\n i2x = x;\n i2y = y;\n }\n\n const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n\n for (let i = 0; i < n; i++) {\n this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n }\n\n // sort the points by distance from the seed triangle circumcenter\n quicksort(this._ids, this._dists, 0, n - 1);\n\n // set up the seed triangle as the starting hull\n this._hullStart = i0;\n let hullSize = 3;\n\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n\n this.trianglesLen = 0;\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n for (let k = 0, xp, yp; k < this._ids.length; k++) {\n const i = this._ids[k];\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n\n // skip near-duplicate points\n if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n xp = x;\n yp = y;\n\n // skip seed triangle points\n if (i === i0 || i === i1 || i === i2) continue;\n\n // find a visible edge on the convex hull using edge hash\n let start = 0;\n for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n start = hullHash[(key + j) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) break;\n }\n\n start = hullPrev[start];\n let e = start, q;\n while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n e = q;\n if (e === start) {\n e = -1;\n break;\n }\n }\n if (e === -1) continue; // likely a near-duplicate point; skip it\n\n // add the first triangle from the point\n let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n // recursively flip triangles from the point until they satisfy the Delaunay condition\n hullTri[i] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n hullSize++;\n\n // walk forward through the hull, adding more triangles and flipping recursively\n let n = hullNext[e];\n while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n hullTri[i] = this._legalize(t + 2);\n hullNext[n] = n; // mark as removed\n hullSize--;\n n = q;\n }\n\n // walk backward from the other side, adding more triangles and flipping\n if (e === start) {\n while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n this._legalize(t + 2);\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n hullSize--;\n e = q;\n }\n }\n\n // update the hull indices\n this._hullStart = hullPrev[i] = e;\n hullNext[e] = hullPrev[n] = i;\n hullNext[i] = n;\n\n // save the two new edges in the hash table\n hullHash[this._hashKey(x, y)] = i;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n\n this.hull = new Uint32Array(hullSize);\n for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n this.hull[i] = e;\n e = hullNext[e];\n }\n\n // trim typed triangle mesh arrays\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n }\n\n _hashKey(x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n }\n\n _legalize(a) {\n const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n let i = 0;\n let ar = 0;\n\n // recursion eliminated with a fixed-size stack\n while (true) {\n const b = halfedges[a];\n\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/ \\a\n * / || \\ / \\\n * / a||b \\ flip /___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\ /br\n * \\||/ \\ /\n * pr pr\n */\n const a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n\n if (b === -1) { // convex hull edge\n if (i === 0) break;\n a = EDGE_STACK[--i];\n continue;\n }\n\n const b0 = b - b % 3;\n const al = a0 + (a + 1) % 3;\n const bl = b0 + (b + 2) % 3;\n\n const p0 = triangles[ar];\n const pr = triangles[a];\n const pl = triangles[al];\n const p1 = triangles[bl];\n\n const illegal = inCircle(\n coords[2 * p0], coords[2 * p0 + 1],\n coords[2 * pr], coords[2 * pr + 1],\n coords[2 * pl], coords[2 * pl + 1],\n coords[2 * p1], coords[2 * p1 + 1]);\n\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n\n const hbl = halfedges[bl];\n\n // edge swapped on the other side of the hull (rare); fix the halfedge reference\n if (hbl === -1) {\n let e = this._hullStart;\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n this._link(a, hbl);\n this._link(b, halfedges[ar]);\n this._link(ar, bl);\n\n const br = b0 + (b + 1) % 3;\n\n // don't worry about hitting the cap: it can only happen on extremely degenerate input\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) break;\n a = EDGE_STACK[--i];\n }\n }\n\n return ar;\n }\n\n _link(a, b) {\n this._halfedges[a] = b;\n if (b !== -1) this._halfedges[b] = a;\n }\n\n // add a new triangle given vertex indices and adjacent half-edge ids\n _addTriangle(i0, i1, i2, a, b, c) {\n const t = this.trianglesLen;\n\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n\n this._link(t, a);\n this._link(t + 1, b);\n this._link(t + 2, c);\n\n this.trianglesLen += 3;\n\n return t;\n }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n const p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n const dx = ax - px;\n const dy = ay - py;\n const ex = bx - px;\n const ey = by - py;\n const fx = cx - px;\n const fy = cy - py;\n\n const ap = dx * dx + dy * dy;\n const bp = ex * ex + ey * ey;\n const cp = fx * fx + fy * fy;\n\n return dx * (ey * cp - bp * fy) -\n dy * (ex * cp - bp * fx) +\n ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = (ey * bl - dy * cl) * d;\n const y = (dx * cl - ex * bl) * d;\n\n return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = ax + (ey * bl - dy * cl) * d;\n const y = ay + (dx * cl - ex * bl) * d;\n\n return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (let i = left + 1; i <= right; i++) {\n const temp = ids[i];\n const tempDist = dists[temp];\n let j = i - 1;\n while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n ids[j + 1] = temp;\n }\n } else {\n const median = (left + right) >> 1;\n let i = left + 1;\n let j = right;\n swap(ids, median, i);\n if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n const temp = ids[i];\n const tempDist = dists[temp];\n while (true) {\n do i++; while (dists[ids[i]] < tempDist);\n do j--; while (dists[ids[j]] > tempDist);\n if (j < i) break;\n swap(ids, i, j);\n }\n ids[left + 1] = ids[j];\n ids[j] = temp;\n\n if (right - i + 1 >= j - left) {\n quicksort(ids, dists, i, right);\n quicksort(ids, dists, left, j - 1);\n } else {\n quicksort(ids, dists, left, j - 1);\n quicksort(ids, dists, i, right);\n }\n }\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n return p[0];\n}\nfunction defaultGetY(p) {\n return p[1];\n}\n", "const epsilon = 1e-6;\n\nexport default class Path {\n constructor() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n }\n moveTo(x, y) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n }\n lineTo(x, y) {\n this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n }\n arc(x, y, r) {\n x = +x, y = +y, r = +r;\n const x0 = x + r;\n const y0 = y;\n if (r < 0) throw new Error(\"negative radius\");\n if (this._x1 === null) this._ += `M${x0},${y0}`;\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n if (!r) return;\n this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n }\n rect(x, y, w, h) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n }\n value() {\n return this._ || null;\n }\n}\n", "export default class Polygon {\n constructor() {\n this._ = [];\n }\n moveTo(x, y) {\n this._.push([x, y]);\n }\n closePath() {\n this._.push(this._[0].slice());\n }\n lineTo(x, y) {\n this._.push([x, y]);\n }\n value() {\n return this._.length ? this._ : null;\n }\n}\n", "import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n this.delaunay = delaunay;\n this._circumcenters = new Float64Array(delaunay.points.length * 2);\n this.vectors = new Float64Array(delaunay.points.length * 2);\n this.xmax = xmax, this.xmin = xmin;\n this.ymax = ymax, this.ymin = ymin;\n this._init();\n }\n update() {\n this.delaunay.update();\n this._init();\n return this;\n }\n _init() {\n const {delaunay: {points, hull, triangles}, vectors} = this;\n let bx, by; // lazily computed barycenter of the hull\n\n // Compute circumcenters.\n const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n const t1 = triangles[i] * 2;\n const t2 = triangles[i + 1] * 2;\n const t3 = triangles[i + 2] * 2;\n const x1 = points[t1];\n const y1 = points[t1 + 1];\n const x2 = points[t2];\n const y2 = points[t2 + 1];\n const x3 = points[t3];\n const y3 = points[t3 + 1];\n\n const dx = x2 - x1;\n const dy = y2 - y1;\n const ex = x3 - x1;\n const ey = y3 - y1;\n const ab = (dx * ey - dy * ex) * 2;\n\n if (Math.abs(ab) < 1e-9) {\n // For a degenerate triangle, the circumcenter is at the infinity, in a\n // direction orthogonal to the halfedge and away from the \u201Ccenter\u201D of\n // the diagram <bx, by>, defined as the hull\u2019s barycenter.\n if (bx === undefined) {\n bx = by = 0;\n for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1];\n bx /= hull.length, by /= hull.length;\n }\n const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex);\n x = (x1 + x3) / 2 - a * ey;\n y = (y1 + y3) / 2 + a * ex;\n } else {\n const d = 1 / ab;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n x = x1 + (ey * bl - dy * cl) * d;\n y = y1 + (dx * cl - ex * bl) * d;\n }\n circumcenters[j] = x;\n circumcenters[j + 1] = y;\n }\n\n // Compute exterior cell rays.\n let h = hull[hull.length - 1];\n let p0, p1 = h * 4;\n let x0, x1 = points[2 * h];\n let y0, y1 = points[2 * h + 1];\n vectors.fill(0);\n for (let i = 0; i < hull.length; ++i) {\n h = hull[i];\n p0 = p1, x0 = x1, y0 = y1;\n p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n vectors[p0 + 2] = vectors[p1] = y0 - y1;\n vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n }\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n if (hull.length <= 1) return null;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = Math.floor(i / 3) * 2;\n const tj = Math.floor(j / 3) * 2;\n const xi = circumcenters[ti];\n const yi = circumcenters[ti + 1];\n const xj = circumcenters[tj];\n const yj = circumcenters[tj + 1];\n this._renderSegment(xi, yi, xj, yj, context);\n }\n let h0, h1 = hull[hull.length - 1];\n for (let i = 0; i < hull.length; ++i) {\n h0 = h1, h1 = hull[i];\n const t = Math.floor(inedges[h1] / 3) * 2;\n const x = circumcenters[t];\n const y = circumcenters[t + 1];\n const v = h0 * 4;\n const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n if (p) this._renderSegment(x, y, p[0], p[1], context);\n }\n return buffer && buffer.value();\n }\n renderBounds(context) {\n const buffer = context == null ? context = new Path : undefined;\n context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n return buffer && buffer.value();\n }\n renderCell(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const points = this._clip(i);\n if (points === null || !points.length) return;\n context.moveTo(points[0], points[1]);\n let n = points.length;\n while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n for (let i = 2; i < n; i += 2) {\n if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n context.lineTo(points[i], points[i + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n *cellPolygons() {\n const {delaunay: {points}} = this;\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const cell = this.cellPolygon(i);\n if (cell) cell.index = i, yield cell;\n }\n }\n cellPolygon(i) {\n const polygon = new Polygon;\n this.renderCell(i, polygon);\n return polygon.value();\n }\n _renderSegment(x0, y0, x1, y1, context) {\n let S;\n const c0 = this._regioncode(x0, y0);\n const c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n context.moveTo(S[0], S[1]);\n context.lineTo(S[2], S[3]);\n }\n }\n contains(i, x, y) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n return this.delaunay._step(i, x, y) === i;\n }\n *neighbors(i) {\n const ci = this._clip(i);\n if (ci) for (const j of this.delaunay.neighbors(i)) {\n const cj = this._clip(j);\n // find the common edge\n if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n if (ci[ai] === cj[aj]\n && ci[ai + 1] === cj[aj + 1]\n && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj]\n && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) {\n yield j;\n break loop;\n }\n }\n }\n }\n }\n _cell(i) {\n const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n const e0 = inedges[i];\n if (e0 === -1) return null; // coincident point\n const points = [];\n let e = e0;\n do {\n const t = Math.floor(e / 3);\n points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n } while (e !== e0 && e !== -1);\n return points;\n }\n _clip(i) {\n // degenerate case (1 valid point: return the box)\n if (i === 0 && this.delaunay.hull.length === 1) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n const points = this._cell(i);\n if (points === null) return null;\n const {vectors: V} = this;\n const v = i * 4;\n return this._simplify(V[v] || V[v + 1]\n ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n : this._clipFinite(i, points));\n }\n _clipFinite(i, points) {\n const n = points.length;\n let P = null;\n let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n let c0, c1 = this._regioncode(x1, y1);\n let e0, e1 = 0;\n for (let j = 0; j < n; j += 2) {\n x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n c0 = c1, c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n e0 = e1, e1 = 0;\n if (P) P.push(x1, y1);\n else P = [x1, y1];\n } else {\n let S, sx0, sy0, sx1, sy1;\n if (c0 === 0) {\n if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n [sx0, sy0, sx1, sy1] = S;\n } else {\n if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n [sx1, sy1, sx0, sy0] = S;\n e0 = e1, e1 = this._edgecode(sx0, sy0);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx0, sy0);\n else P = [sx0, sy0];\n }\n e0 = e1, e1 = this._edgecode(sx1, sy1);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx1, sy1);\n else P = [sx1, sy1];\n }\n }\n if (P) {\n e0 = e1, e1 = this._edgecode(P[0], P[1]);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n return P;\n }\n _clipSegment(x0, y0, x1, y1, c0, c1) {\n // for more robustness, always consider the segment in the same order\n const flip = c0 < c1;\n if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0];\n while (true) {\n if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1];\n if (c0 & c1) return null;\n let x, y, c = c0 || c1;\n if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n }\n }\n _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n let P = Array.from(points), p;\n if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n if (P = this._clipFinite(i, P)) {\n for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n }\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n }\n return P;\n }\n _edge(i, e0, e1, P, j) {\n while (e0 !== e1) {\n let x, y;\n switch (e0) {\n case 0b0101: e0 = 0b0100; continue; // top-left\n case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n case 0b0110: e0 = 0b0010; continue; // top-right\n case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n case 0b1010: e0 = 0b1000; continue; // bottom-right\n case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n case 0b1001: e0 = 0b0001; continue; // bottom-left\n case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n }\n // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n // undefined, the conditional statement will be executed.\n if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n P.splice(j, 0, x, y), j += 2;\n }\n }\n return j;\n }\n _project(x0, y0, vx, vy) {\n let t = Infinity, c, x, y;\n if (vy < 0) { // top\n if (y0 <= this.ymin) return null;\n if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n } else if (vy > 0) { // bottom\n if (y0 >= this.ymax) return null;\n if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n }\n if (vx > 0) { // right\n if (x0 >= this.xmax) return null;\n if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n } else if (vx < 0) { // left\n if (x0 <= this.xmin) return null;\n if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n }\n return [x, y];\n }\n _edgecode(x, y) {\n return (x === this.xmin ? 0b0001\n : x === this.xmax ? 0b0010 : 0b0000)\n | (y === this.ymin ? 0b0100\n : y === this.ymax ? 0b1000 : 0b0000);\n }\n _regioncode(x, y) {\n return (x < this.xmin ? 0b0001\n : x > this.xmax ? 0b0010 : 0b0000)\n | (y < this.ymin ? 0b0100\n : y > this.ymax ? 0b1000 : 0b0000);\n }\n _simplify(P) {\n if (P && P.length > 4) {\n for (let i = 0; i < P.length; i+= 2) {\n const j = (i + 2) % P.length, k = (i + 4) % P.length;\n if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) {\n P.splice(j, 2), i -= 2;\n }\n }\n if (!P.length) P = null;\n }\n return P;\n }\n}\n", "import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n return p[0];\n}\n\nfunction pointY(p) {\n return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n const {triangles, coords} = d;\n for (let i = 0; i < triangles.length; i += 3) {\n const a = 2 * triangles[i],\n b = 2 * triangles[i + 1],\n c = 2 * triangles[i + 2],\n cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n if (cross > 1e-10) return false;\n }\n return true;\n}\n\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n static from(points, fx = pointX, fy = pointY, that) {\n return new Delaunay(\"length\" in points\n ? flatArray(points, fx, fy, that)\n : Float64Array.from(flatIterable(points, fx, fy, that)));\n }\n constructor(points) {\n this._delaunator = new Delaunator(points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = this._delaunator.coords;\n this._init();\n }\n update() {\n this._delaunator.update();\n this._init();\n return this;\n }\n _init() {\n const d = this._delaunator, points = this.points;\n\n // check for collinear\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n this._delaunator = new Delaunator(points);\n } else {\n delete this.collinear;\n }\n\n const halfedges = this.halfedges = this._delaunator.halfedges;\n const hull = this.hull = this._delaunator.hull;\n const triangles = this.triangles = this._delaunator.triangles;\n const inedges = this.inedges.fill(-1);\n const hullIndex = this._hullIndex.fill(-1);\n\n // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n for (let e = 0, n = halfedges.length; e < n; ++e) {\n const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n }\n for (let i = 0, n = hull.length; i < n; ++i) {\n hullIndex[hull[i]] = i;\n }\n\n // degenerate case: 1 or 2 (distinct) points\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n inedges[hull[0]] = 1;\n if (hull.length === 2) {\n inedges[hull[1]] = 0;\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n }\n }\n }\n voronoi(bounds) {\n return new Voronoi(this, bounds);\n }\n *neighbors(i) {\n const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n // degenerate case with several collinear points\n if (collinear) {\n const l = collinear.indexOf(i);\n if (l > 0) yield collinear[l - 1];\n if (l < collinear.length - 1) yield collinear[l + 1];\n return;\n }\n\n const e0 = inedges[i];\n if (e0 === -1) return; // coincident point\n let e = e0, p0 = -1;\n do {\n yield p0 = triangles[e];\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) return; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n const p = hull[(_hullIndex[i] + 1) % hull.length];\n if (p !== p0) yield p;\n return;\n }\n } while (e !== e0);\n }\n find(x, y, i = 0) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n const i0 = i;\n let c;\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n return c;\n }\n _step(i, x, y) {\n const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n let c = i;\n let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n const e0 = inedges[i];\n let e = e0;\n do {\n let t = triangles[e];\n const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n if (dt < dc) dc = dt, c = t;\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n e = hull[(_hullIndex[i] + 1) % hull.length];\n if (e !== t) {\n if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n }\n break;\n }\n } while (e !== e0);\n return c;\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, halfedges, triangles} = this;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = triangles[i] * 2;\n const tj = triangles[j] * 2;\n context.moveTo(points[ti], points[ti + 1]);\n context.lineTo(points[tj], points[tj + 1]);\n }\n this.renderHull(context);\n return buffer && buffer.value();\n }\n renderPoints(context, r) {\n if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n r = r == undefined ? 2 : +r;\n const buffer = context == null ? context = new Path : undefined;\n const {points} = this;\n for (let i = 0, n = points.length; i < n; i += 2) {\n const x = points[i], y = points[i + 1];\n context.moveTo(x + r, y);\n context.arc(x, y, r, 0, tau);\n }\n return buffer && buffer.value();\n }\n renderHull(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {hull, points} = this;\n const h = hull[0] * 2, n = hull.length;\n context.moveTo(points[h], points[h + 1]);\n for (let i = 1; i < n; ++i) {\n const h = 2 * hull[i];\n context.lineTo(points[h], points[h + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n hullPolygon() {\n const polygon = new Polygon;\n this.renderHull(polygon);\n return polygon.value();\n }\n renderTriangle(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, triangles} = this;\n const t0 = triangles[i *= 3] * 2;\n const t1 = triangles[i + 1] * 2;\n const t2 = triangles[i + 2] * 2;\n context.moveTo(points[t0], points[t0 + 1]);\n context.lineTo(points[t1], points[t1 + 1]);\n context.lineTo(points[t2], points[t2 + 1]);\n context.closePath();\n return buffer && buffer.value();\n }\n *trianglePolygons() {\n const {triangles} = this;\n for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n yield this.trianglePolygon(i);\n }\n }\n trianglePolygon(i) {\n const polygon = new Polygon;\n this.renderTriangle(i, polygon);\n return polygon.value();\n }\n}\n\nfunction flatArray(points, fx, fy, that) {\n const n = points.length;\n const array = new Float64Array(n * 2);\n for (let i = 0; i < n; ++i) {\n const p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n let i = 0;\n for (const p of points) {\n yield fx.call(that, p, i, points);\n yield fy.call(that, p, i, points);\n ++i;\n }\n}\n", "import { canvas } from 'vega-canvas';\nimport { Transform } from 'vega-dataflow';\nimport { inherits, error, isFunction, constant, extent } from 'vega-util';\nimport { scale } from 'vega-scale';\nimport { random } from 'vega-statistics';\n\n/*\nCopyright (c) 2013, Jason Davies.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n * The name Jason Davies may not be used to endorse or promote products\n derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL JASON DAVIES BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nvar cloudRadians = Math.PI / 180,\n cw = 1 << 11 >> 5,\n ch = 1 << 11;\nfunction cloud () {\n var size = [256, 256],\n text,\n font,\n fontSize,\n fontStyle,\n fontWeight,\n rotate,\n padding,\n spiral = archimedeanSpiral,\n words = [],\n random = Math.random,\n cloud = {};\n cloud.layout = function () {\n var contextAndRatio = getContext(canvas()),\n board = zeroArray((size[0] >> 5) * size[1]),\n bounds = null,\n n = words.length,\n i = -1,\n tags = [],\n data = words.map(d => ({\n text: text(d),\n font: font(d),\n style: fontStyle(d),\n weight: fontWeight(d),\n rotate: rotate(d),\n size: ~~(fontSize(d) + 1e-14),\n padding: padding(d),\n xoff: 0,\n yoff: 0,\n x1: 0,\n y1: 0,\n x0: 0,\n y0: 0,\n hasText: false,\n sprite: null,\n datum: d\n })).sort((a, b) => b.size - a.size);\n while (++i < n) {\n var d = data[i];\n d.x = size[0] * (random() + .5) >> 1;\n d.y = size[1] * (random() + .5) >> 1;\n cloudSprite(contextAndRatio, d, data, i);\n if (d.hasText && place(board, d, bounds)) {\n tags.push(d);\n if (bounds) cloudBounds(bounds, d);else bounds = [{\n x: d.x + d.x0,\n y: d.y + d.y0\n }, {\n x: d.x + d.x1,\n y: d.y + d.y1\n }];\n // Temporary hack\n d.x -= size[0] >> 1;\n d.y -= size[1] >> 1;\n }\n }\n return tags;\n };\n function getContext(canvas) {\n canvas.width = canvas.height = 1;\n var ratio = Math.sqrt(canvas.getContext('2d').getImageData(0, 0, 1, 1).data.length >> 2);\n canvas.width = (cw << 5) / ratio;\n canvas.height = ch / ratio;\n var context = canvas.getContext('2d');\n context.fillStyle = context.strokeStyle = 'red';\n context.textAlign = 'center';\n return {\n context: context,\n ratio: ratio\n };\n }\n function place(board, tag, bounds) {\n var startX = tag.x,\n startY = tag.y,\n maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n s = spiral(size),\n dt = random() < .5 ? 1 : -1,\n t = -dt,\n dxdy,\n dx,\n dy;\n while (dxdy = s(t += dt)) {\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n tag.x = startX + dx;\n tag.y = startY + dy;\n if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n // TODO only check for collisions within current bounds.\n if (!bounds || !cloudCollide(tag, board, size[0])) {\n if (!bounds || collideRects(tag, bounds)) {\n var sprite = tag.sprite,\n w = tag.width >> 5,\n sw = size[0] >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n board[x + i] |= last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n }\n x += sw;\n }\n tag.sprite = null;\n return true;\n }\n }\n }\n return false;\n }\n cloud.words = function (_) {\n if (arguments.length) {\n words = _;\n return cloud;\n } else {\n return words;\n }\n };\n cloud.size = function (_) {\n if (arguments.length) {\n size = [+_[0], +_[1]];\n return cloud;\n } else {\n return size;\n }\n };\n cloud.font = function (_) {\n if (arguments.length) {\n font = functor(_);\n return cloud;\n } else {\n return font;\n }\n };\n cloud.fontStyle = function (_) {\n if (arguments.length) {\n fontStyle = functor(_);\n return cloud;\n } else {\n return fontStyle;\n }\n };\n cloud.fontWeight = function (_) {\n if (arguments.length) {\n fontWeight = functor(_);\n return cloud;\n } else {\n return fontWeight;\n }\n };\n cloud.rotate = function (_) {\n if (arguments.length) {\n rotate = functor(_);\n return cloud;\n } else {\n return rotate;\n }\n };\n cloud.text = function (_) {\n if (arguments.length) {\n text = functor(_);\n return cloud;\n } else {\n return text;\n }\n };\n cloud.spiral = function (_) {\n if (arguments.length) {\n spiral = spirals[_] || _;\n return cloud;\n } else {\n return spiral;\n }\n };\n cloud.fontSize = function (_) {\n if (arguments.length) {\n fontSize = functor(_);\n return cloud;\n } else {\n return fontSize;\n }\n };\n cloud.padding = function (_) {\n if (arguments.length) {\n padding = functor(_);\n return cloud;\n } else {\n return padding;\n }\n };\n cloud.random = function (_) {\n if (arguments.length) {\n random = _;\n return cloud;\n } else {\n return random;\n }\n };\n return cloud;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n if (d.sprite) return;\n var c = contextAndRatio.context,\n ratio = contextAndRatio.ratio;\n c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n var x = 0,\n y = 0,\n maxh = 0,\n n = data.length,\n w,\n w32,\n h,\n i,\n j;\n --di;\n while (++di < n) {\n d = data[di];\n c.save();\n c.font = d.style + ' ' + d.weight + ' ' + ~~((d.size + 1) / ratio) + 'px ' + d.font;\n w = c.measureText(d.text + 'm').width * ratio;\n h = d.size << 1;\n if (d.rotate) {\n var sr = Math.sin(d.rotate * cloudRadians),\n cr = Math.cos(d.rotate * cloudRadians),\n wcr = w * cr,\n wsr = w * sr,\n hcr = h * cr,\n hsr = h * sr;\n w = Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f >> 5 << 5;\n h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n } else {\n w = w + 0x1f >> 5 << 5;\n }\n if (h > maxh) maxh = h;\n if (x + w >= cw << 5) {\n x = 0;\n y += maxh;\n maxh = 0;\n }\n if (y + h >= ch) break;\n c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n if (d.rotate) c.rotate(d.rotate * cloudRadians);\n c.fillText(d.text, 0, 0);\n if (d.padding) {\n c.lineWidth = 2 * d.padding;\n c.strokeText(d.text, 0, 0);\n }\n c.restore();\n d.width = w;\n d.height = h;\n d.xoff = x;\n d.yoff = y;\n d.x1 = w >> 1;\n d.y1 = h >> 1;\n d.x0 = -d.x1;\n d.y0 = -d.y1;\n d.hasText = true;\n x += w;\n }\n var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n sprite = [];\n while (--di >= 0) {\n d = data[di];\n if (!d.hasText) continue;\n w = d.width;\n w32 = w >> 5;\n h = d.y1 - d.y0;\n // Zero the buffer\n for (i = 0; i < h * w32; i++) sprite[i] = 0;\n x = d.xoff;\n if (x == null) return;\n y = d.yoff;\n var seen = 0,\n seenRow = -1;\n for (j = 0; j < h; j++) {\n for (i = 0; i < w; i++) {\n var k = w32 * j + (i >> 5),\n m = pixels[(y + j) * (cw << 5) + (x + i) << 2] ? 1 << 31 - i % 32 : 0;\n sprite[k] |= m;\n seen |= m;\n }\n if (seen) seenRow = j;else {\n d.y0++;\n h--;\n j--;\n y++;\n }\n }\n d.y1 = d.y0 + seenRow;\n d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n sw >>= 5;\n var sprite = tag.sprite,\n w = tag.width >> 5,\n lx = tag.x - (w << 4),\n sx = lx & 0x7f,\n msx = 32 - sx,\n h = tag.y1 - tag.y0,\n x = (tag.y + tag.y0) * sw + (lx >> 5),\n last;\n for (var j = 0; j < h; j++) {\n last = 0;\n for (var i = 0; i <= w; i++) {\n if ((last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) & board[x + i]) return true;\n }\n x += sw;\n }\n return false;\n}\nfunction cloudBounds(bounds, d) {\n var b0 = bounds[0],\n b1 = bounds[1];\n if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\nfunction collideRects(a, b) {\n return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\nfunction archimedeanSpiral(size) {\n var e = size[0] / size[1];\n return function (t) {\n return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n };\n}\nfunction rectangularSpiral(size) {\n var dy = 4,\n dx = dy * size[0] / size[1],\n x = 0,\n y = 0;\n return function (t) {\n var sign = t < 0 ? -1 : 1;\n // See triangular numbers: T_n = n * (n + 1) / 2.\n switch (Math.sqrt(1 + 4 * sign * t) - sign & 3) {\n case 0:\n x += dx;\n break;\n case 1:\n y += dy;\n break;\n case 2:\n x -= dx;\n break;\n default:\n y -= dy;\n break;\n }\n return [x, y];\n };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n var a = [],\n i = -1;\n while (++i < n) a[i] = 0;\n return a;\n}\nfunction functor(d) {\n return typeof d === 'function' ? d : function () {\n return d;\n };\n}\nvar spirals = {\n archimedean: archimedeanSpiral,\n rectangular: rectangularSpiral\n};\n\nconst Output = ['x', 'y', 'font', 'fontSize', 'fontStyle', 'fontWeight', 'angle'];\nconst Params = ['text', 'font', 'rotate', 'fontSize', 'fontStyle', 'fontWeight'];\nfunction Wordcloud(params) {\n Transform.call(this, cloud(), params);\n}\nWordcloud.Definition = {\n 'type': 'Wordcloud',\n 'metadata': {\n 'modifies': true\n },\n 'params': [{\n 'name': 'size',\n 'type': 'number',\n 'array': true,\n 'length': 2\n }, {\n 'name': 'font',\n 'type': 'string',\n 'expr': true,\n 'default': 'sans-serif'\n }, {\n 'name': 'fontStyle',\n 'type': 'string',\n 'expr': true,\n 'default': 'normal'\n }, {\n 'name': 'fontWeight',\n 'type': 'string',\n 'expr': true,\n 'default': 'normal'\n }, {\n 'name': 'fontSize',\n 'type': 'number',\n 'expr': true,\n 'default': 14\n }, {\n 'name': 'fontSizeRange',\n 'type': 'number',\n 'array': 'nullable',\n 'default': [10, 50]\n }, {\n 'name': 'rotate',\n 'type': 'number',\n 'expr': true,\n 'default': 0\n }, {\n 'name': 'text',\n 'type': 'field'\n }, {\n 'name': 'spiral',\n 'type': 'string',\n 'values': ['archimedean', 'rectangular']\n }, {\n 'name': 'padding',\n 'type': 'number',\n 'expr': true\n }, {\n 'name': 'as',\n 'type': 'string',\n 'array': true,\n 'length': 7,\n 'default': Output\n }]\n};\ninherits(Wordcloud, Transform, {\n transform(_, pulse) {\n if (_.size && !(_.size[0] && _.size[1])) {\n error('Wordcloud size dimensions must be non-zero.');\n }\n function modp(param) {\n const p = _[param];\n return isFunction(p) && pulse.modified(p.fields);\n }\n const mod = _.modified();\n if (!(mod || pulse.changed(pulse.ADD_REM) || Params.some(modp))) return;\n const data = pulse.materialize(pulse.SOURCE).source,\n layout = this.value,\n as = _.as || Output;\n let fontSize = _.fontSize || 14,\n range;\n isFunction(fontSize) ? range = _.fontSizeRange : fontSize = constant(fontSize);\n\n // create font size scaling function as needed\n if (range) {\n const fsize = fontSize,\n sizeScale = scale('sqrt')().domain(extent(data, fsize)).range(range);\n fontSize = x => sizeScale(fsize(x));\n }\n data.forEach(t => {\n t[as[0]] = NaN;\n t[as[1]] = NaN;\n t[as[3]] = 0;\n });\n\n // configure layout\n const words = layout.words(data).text(_.text).size(_.size || [500, 500]).padding(_.padding || 1).spiral(_.spiral || 'archimedean').rotate(_.rotate || 0).font(_.font || 'sans-serif').fontStyle(_.fontStyle || 'normal').fontWeight(_.fontWeight || 'normal').fontSize(fontSize).random(random).layout();\n const size = layout.size(),\n dx = size[0] >> 1,\n dy = size[1] >> 1,\n n = words.length;\n for (let i = 0, w, t; i < n; ++i) {\n w = words[i];\n t = w.datum;\n t[as[0]] = w.x + dx;\n t[as[1]] = w.y + dy;\n t[as[2]] = w.font;\n t[as[3]] = w.size;\n t[as[4]] = w.style;\n t[as[5]] = w.weight;\n t[as[6]] = w.rotate;\n }\n return pulse.reflow(mod).modifies(as);\n }\n});\n\nexport { Wordcloud as wordcloud };\n", "import { bisectLeft, bisectRight, permute } from 'd3-array';\nimport { Transform } from 'vega-dataflow';\nimport { inherits } from 'vega-util';\n\nconst array8 = n => new Uint8Array(n);\nconst array16 = n => new Uint16Array(n);\nconst array32 = n => new Uint32Array(n);\n\n/**\n * Maintains CrossFilter state.\n */\nfunction Bitmaps() {\n let width = 8,\n data = [],\n seen = array32(0),\n curr = array(0, width),\n prev = array(0, width);\n return {\n data: () => data,\n seen: () => seen = lengthen(seen, data.length),\n add(array) {\n for (let i = 0, j = data.length, n = array.length, t; i < n; ++i) {\n t = array[i];\n t._index = j++;\n data.push(t);\n }\n },\n remove(num, map) {\n // map: index -> boolean (true => remove)\n const n = data.length,\n copy = Array(n - num),\n reindex = data; // reuse old data array for index map\n let t, i, j;\n\n // seek forward to first removal\n for (i = 0; !map[i] && i < n; ++i) {\n copy[i] = data[i];\n reindex[i] = i;\n }\n\n // condense arrays\n for (j = i; i < n; ++i) {\n t = data[i];\n if (!map[i]) {\n reindex[i] = j;\n curr[j] = curr[i];\n prev[j] = prev[i];\n copy[j] = t;\n t._index = j++;\n } else {\n reindex[i] = -1;\n }\n curr[i] = 0; // clear unused bits\n }\n\n data = copy;\n return reindex;\n },\n size: () => data.length,\n curr: () => curr,\n prev: () => prev,\n reset: k => prev[k] = curr[k],\n all: () => width < 0x101 ? 0xff : width < 0x10001 ? 0xffff : 0xffffffff,\n set(k, one) {\n curr[k] |= one;\n },\n clear(k, one) {\n curr[k] &= ~one;\n },\n resize(n, m) {\n const k = curr.length;\n if (n > k || m > width) {\n width = Math.max(m, width);\n curr = array(n, width, curr);\n prev = array(n, width);\n }\n }\n };\n}\nfunction lengthen(array, length, copy) {\n if (array.length >= length) return array;\n copy = copy || new array.constructor(length);\n copy.set(array);\n return copy;\n}\nfunction array(n, m, array) {\n const copy = (m < 0x101 ? array8 : m < 0x10001 ? array16 : array32)(n);\n if (array) copy.set(array);\n return copy;\n}\n\nfunction Dimension (index, i, query) {\n const bit = 1 << i;\n return {\n one: bit,\n zero: ~bit,\n range: query.slice(),\n bisect: index.bisect,\n index: index.index,\n size: index.size,\n onAdd(added, curr) {\n const dim = this,\n range = dim.bisect(dim.range, added.value),\n idx = added.index,\n lo = range[0],\n hi = range[1],\n n1 = idx.length;\n let i;\n for (i = 0; i < lo; ++i) curr[idx[i]] |= bit;\n for (i = hi; i < n1; ++i) curr[idx[i]] |= bit;\n return dim;\n }\n };\n}\n\n/**\n * Maintains a list of values, sorted by key.\n */\nfunction SortedIndex() {\n let index = array32(0),\n value = [],\n size = 0;\n function insert(key, data, base) {\n if (!data.length) return [];\n const n0 = size,\n n1 = data.length,\n addi = array32(n1);\n let addv = Array(n1),\n oldv,\n oldi,\n i;\n for (i = 0; i < n1; ++i) {\n addv[i] = key(data[i]);\n addi[i] = i;\n }\n addv = sort(addv, addi);\n if (n0) {\n oldv = value;\n oldi = index;\n value = Array(n0 + n1);\n index = array32(n0 + n1);\n merge(base, oldv, oldi, n0, addv, addi, n1, value, index);\n } else {\n if (base > 0) for (i = 0; i < n1; ++i) {\n addi[i] += base;\n }\n value = addv;\n index = addi;\n }\n size = n0 + n1;\n return {\n index: addi,\n value: addv\n };\n }\n function remove(num, map) {\n // map: index -> remove\n const n = size;\n let idx, i, j;\n\n // seek forward to first removal\n for (i = 0; !map[index[i]] && i < n; ++i);\n\n // condense index and value arrays\n for (j = i; i < n; ++i) {\n if (!map[idx = index[i]]) {\n index[j] = idx;\n value[j] = value[i];\n ++j;\n }\n }\n size = n - num;\n }\n function reindex(map) {\n for (let i = 0, n = size; i < n; ++i) {\n index[i] = map[index[i]];\n }\n }\n function bisect(range, array) {\n let n;\n if (array) {\n n = array.length;\n } else {\n array = value;\n n = size;\n }\n return [bisectLeft(array, range[0], 0, n), bisectRight(array, range[1], 0, n)];\n }\n return {\n insert: insert,\n remove: remove,\n bisect: bisect,\n reindex: reindex,\n index: () => index,\n size: () => size\n };\n}\nfunction sort(values, index) {\n values.sort.call(index, (a, b) => {\n const x = values[a],\n y = values[b];\n return x < y ? -1 : x > y ? 1 : 0;\n });\n return permute(values, index);\n}\nfunction merge(base, value0, index0, n0, value1, index1, n1, value, index) {\n let i0 = 0,\n i1 = 0,\n i;\n for (i = 0; i0 < n0 && i1 < n1; ++i) {\n if (value0[i0] < value1[i1]) {\n value[i] = value0[i0];\n index[i] = index0[i0++];\n } else {\n value[i] = value1[i1];\n index[i] = index1[i1++] + base;\n }\n }\n for (; i0 < n0; ++i0, ++i) {\n value[i] = value0[i0];\n index[i] = index0[i0];\n }\n for (; i1 < n1; ++i1, ++i) {\n value[i] = value1[i1];\n index[i] = index1[i1] + base;\n }\n}\n\n/**\n * An indexed multi-dimensional filter.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.fields - An array of dimension accessors to filter.\n * @param {Array} params.query - An array of per-dimension range queries.\n */\nfunction CrossFilter(params) {\n Transform.call(this, Bitmaps(), params);\n this._indices = null;\n this._dims = null;\n}\nCrossFilter.Definition = {\n 'type': 'CrossFilter',\n 'metadata': {},\n 'params': [{\n 'name': 'fields',\n 'type': 'field',\n 'array': true,\n 'required': true\n }, {\n 'name': 'query',\n 'type': 'array',\n 'array': true,\n 'required': true,\n 'content': {\n 'type': 'number',\n 'array': true,\n 'length': 2\n }\n }]\n};\ninherits(CrossFilter, Transform, {\n transform(_, pulse) {\n if (!this._dims) {\n return this.init(_, pulse);\n } else {\n var init = _.modified('fields') || _.fields.some(f => pulse.modified(f.fields));\n return init ? this.reinit(_, pulse) : this.eval(_, pulse);\n }\n },\n init(_, pulse) {\n const fields = _.fields,\n query = _.query,\n indices = this._indices = {},\n dims = this._dims = [],\n m = query.length;\n let i = 0,\n key,\n index;\n\n // instantiate indices and dimensions\n for (; i < m; ++i) {\n key = fields[i].fname;\n index = indices[key] || (indices[key] = SortedIndex());\n dims.push(Dimension(index, i, query[i]));\n }\n return this.eval(_, pulse);\n },\n reinit(_, pulse) {\n const output = pulse.materialize().fork(),\n fields = _.fields,\n query = _.query,\n indices = this._indices,\n dims = this._dims,\n bits = this.value,\n curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all(),\n out = output.rem = output.add,\n mod = output.mod,\n m = query.length,\n adds = {};\n let add, index, key, mods, remMap, modMap, i, n, f;\n\n // set prev to current state\n prev.set(curr);\n\n // if pulse has remove tuples, process them first\n if (pulse.rem.length) {\n remMap = this.remove(_, pulse, output);\n }\n\n // if pulse has added tuples, add them to state\n if (pulse.add.length) {\n bits.add(pulse.add);\n }\n\n // if pulse has modified tuples, create an index map\n if (pulse.mod.length) {\n modMap = {};\n for (mods = pulse.mod, i = 0, n = mods.length; i < n; ++i) {\n modMap[mods[i]._index] = 1;\n }\n }\n\n // re-initialize indices as needed, update curr bitmap\n for (i = 0; i < m; ++i) {\n f = fields[i];\n if (!dims[i] || _.modified('fields', i) || pulse.modified(f.fields)) {\n key = f.fname;\n if (!(add = adds[key])) {\n indices[key] = index = SortedIndex();\n adds[key] = add = index.insert(f, pulse.source, 0);\n }\n dims[i] = Dimension(index, i, query[i]).onAdd(add, curr);\n }\n }\n\n // visit each tuple\n // if filter state changed, push index to add/rem\n // else if in mod and passes a filter, push index to mod\n for (i = 0, n = bits.data().length; i < n; ++i) {\n if (remMap[i]) {\n // skip if removed tuple\n continue;\n } else if (prev[i] !== curr[i]) {\n // add if state changed\n out.push(i);\n } else if (modMap[i] && curr[i] !== all) {\n // otherwise, pass mods through\n mod.push(i);\n }\n }\n bits.mask = (1 << m) - 1;\n return output;\n },\n eval(_, pulse) {\n const output = pulse.materialize().fork(),\n m = this._dims.length;\n let mask = 0;\n if (pulse.rem.length) {\n this.remove(_, pulse, output);\n mask |= (1 << m) - 1;\n }\n if (_.modified('query') && !_.modified('fields')) {\n mask |= this.update(_, pulse, output);\n }\n if (pulse.add.length) {\n this.insert(_, pulse, output);\n mask |= (1 << m) - 1;\n }\n if (pulse.mod.length) {\n this.modify(pulse, output);\n mask |= (1 << m) - 1;\n }\n this.value.mask = mask;\n return output;\n },\n insert(_, pulse, output) {\n const tuples = pulse.add,\n bits = this.value,\n dims = this._dims,\n indices = this._indices,\n fields = _.fields,\n adds = {},\n out = output.add,\n n = bits.size() + tuples.length,\n m = dims.length;\n let k = bits.size(),\n j,\n key,\n add;\n\n // resize bitmaps and add tuples as needed\n bits.resize(n, m);\n bits.add(tuples);\n const curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all();\n\n // add to dimensional indices\n for (j = 0; j < m; ++j) {\n key = fields[j].fname;\n add = adds[key] || (adds[key] = indices[key].insert(fields[j], tuples, k));\n dims[j].onAdd(add, curr);\n }\n\n // set previous filters, output if passes at least one filter\n for (; k < n; ++k) {\n prev[k] = all;\n if (curr[k] !== all) out.push(k);\n }\n },\n modify(pulse, output) {\n const out = output.mod,\n bits = this.value,\n curr = bits.curr(),\n all = bits.all(),\n tuples = pulse.mod;\n let i, n, k;\n for (i = 0, n = tuples.length; i < n; ++i) {\n k = tuples[i]._index;\n if (curr[k] !== all) out.push(k);\n }\n },\n remove(_, pulse, output) {\n const indices = this._indices,\n bits = this.value,\n curr = bits.curr(),\n prev = bits.prev(),\n all = bits.all(),\n map = {},\n out = output.rem,\n tuples = pulse.rem;\n let i, n, k, f;\n\n // process tuples, output if passes at least one filter\n for (i = 0, n = tuples.length; i < n; ++i) {\n k = tuples[i]._index;\n map[k] = 1; // build index map\n prev[k] = f = curr[k];\n curr[k] = all;\n if (f !== all) out.push(k);\n }\n\n // remove from dimensional indices\n for (k in indices) {\n indices[k].remove(n, map);\n }\n this.reindex(pulse, n, map);\n return map;\n },\n // reindex filters and indices after propagation completes\n reindex(pulse, num, map) {\n const indices = this._indices,\n bits = this.value;\n pulse.runAfter(() => {\n const indexMap = bits.remove(num, map);\n for (const key in indices) indices[key].reindex(indexMap);\n });\n },\n update(_, pulse, output) {\n const dims = this._dims,\n query = _.query,\n stamp = pulse.stamp,\n m = dims.length;\n let mask = 0,\n i,\n q;\n\n // survey how many queries have changed\n output.filters = 0;\n for (q = 0; q < m; ++q) {\n if (_.modified('query', q)) {\n i = q;\n ++mask;\n }\n }\n if (mask === 1) {\n // only one query changed, use more efficient update\n mask = dims[i].one;\n this.incrementOne(dims[i], query[i], output.add, output.rem);\n } else {\n // multiple queries changed, perform full record keeping\n for (q = 0, mask = 0; q < m; ++q) {\n if (!_.modified('query', q)) continue;\n mask |= dims[q].one;\n this.incrementAll(dims[q], query[q], stamp, output.add);\n output.rem = output.add; // duplicate add/rem for downstream resolve\n }\n }\n\n return mask;\n },\n incrementAll(dim, query, stamp, out) {\n const bits = this.value,\n seen = bits.seen(),\n curr = bits.curr(),\n prev = bits.prev(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one;\n let i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n if (seen[k] !== stamp) {\n prev[k] = curr[k];\n seen[k] = stamp;\n out.push(k);\n }\n curr[k] ^= one;\n }\n }\n dim.range = query.slice();\n },\n incrementOne(dim, query, add, rem) {\n const bits = this.value,\n curr = bits.curr(),\n index = dim.index(),\n old = dim.bisect(dim.range),\n range = dim.bisect(query),\n lo1 = range[0],\n hi1 = range[1],\n lo0 = old[0],\n hi0 = old[1],\n one = dim.one;\n let i, j, k;\n\n // Fast incremental update based on previous lo index.\n if (lo1 < lo0) {\n for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (lo1 > lo0) {\n for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n\n // Fast incremental update based on previous hi index.\n if (hi1 > hi0) {\n for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n add.push(k);\n }\n } else if (hi1 < hi0) {\n for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n k = index[i];\n curr[k] ^= one;\n rem.push(k);\n }\n }\n dim.range = query.slice();\n }\n});\n\n/**\n * Selectively filters tuples by resolving against a filter bitmap.\n * Useful for processing the output of a cross-filter transform.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.ignore - A bit mask indicating which filters to ignore.\n * @param {object} params.filter - The per-tuple filter bitmaps. Typically this\n * parameter value is a reference to a {@link CrossFilter} transform.\n */\nfunction ResolveFilter(params) {\n Transform.call(this, null, params);\n}\nResolveFilter.Definition = {\n 'type': 'ResolveFilter',\n 'metadata': {},\n 'params': [{\n 'name': 'ignore',\n 'type': 'number',\n 'required': true,\n 'description': 'A bit mask indicating which filters to ignore.'\n }, {\n 'name': 'filter',\n 'type': 'object',\n 'required': true,\n 'description': 'Per-tuple filter bitmaps from a CrossFilter transform.'\n }]\n};\ninherits(ResolveFilter, Transform, {\n transform(_, pulse) {\n const ignore = ~(_.ignore || 0),\n // bit mask where zeros -> dims to ignore\n bitmap = _.filter,\n mask = bitmap.mask;\n\n // exit early if no relevant filter changes\n if ((mask & ignore) === 0) return pulse.StopPropagation;\n const output = pulse.fork(pulse.ALL),\n data = bitmap.data(),\n curr = bitmap.curr(),\n prev = bitmap.prev(),\n pass = k => !(curr[k] & ignore) ? data[k] : null;\n\n // propagate all mod tuples that pass the filter\n output.filter(output.MOD, pass);\n\n // determine add & rem tuples via filter functions\n // for efficiency, we do *not* populate new arrays,\n // instead we add filter functions applied downstream\n\n if (!(mask & mask - 1)) {\n // only one filter changed\n output.filter(output.ADD, pass);\n output.filter(output.REM, k => (curr[k] & ignore) === mask ? data[k] : null);\n } else {\n // multiple filters changed\n output.filter(output.ADD, k => {\n const c = curr[k] & ignore,\n f = !c && c ^ prev[k] & ignore;\n return f ? data[k] : null;\n });\n output.filter(output.REM, k => {\n const c = curr[k] & ignore,\n f = c && !(c ^ (c ^ prev[k] & ignore));\n return f ? data[k] : null;\n });\n }\n\n // add filter to source data in case of reflow...\n return output.filter(output.SOURCE, t => pass(t._index));\n }\n});\n\nexport { CrossFilter as crossfilter, ResolveFilter as resolvefilter };\n", "import { error, toSet, isFunction, isString, hasOwnProperty } from 'vega-util';\n\nconst RawCode = 'RawCode';\nconst Literal = 'Literal';\nconst Property = 'Property';\nconst Identifier = 'Identifier';\nconst ArrayExpression = 'ArrayExpression';\nconst BinaryExpression = 'BinaryExpression';\nconst CallExpression = 'CallExpression';\nconst ConditionalExpression = 'ConditionalExpression';\nconst LogicalExpression = 'LogicalExpression';\nconst MemberExpression = 'MemberExpression';\nconst ObjectExpression = 'ObjectExpression';\nconst UnaryExpression = 'UnaryExpression';\nfunction ASTNode(type) {\n this.type = type;\n}\nASTNode.prototype.visit = function (visitor) {\n let c, i, n;\n if (visitor(this)) return 1;\n for (c = children(this), i = 0, n = c.length; i < n; ++i) {\n if (c[i].visit(visitor)) return 1;\n }\n};\nfunction children(node) {\n switch (node.type) {\n case ArrayExpression:\n return node.elements;\n case BinaryExpression:\n case LogicalExpression:\n return [node.left, node.right];\n case CallExpression:\n return [node.callee].concat(node.arguments);\n case ConditionalExpression:\n return [node.test, node.consequent, node.alternate];\n case MemberExpression:\n return [node.object, node.property];\n case ObjectExpression:\n return node.properties;\n case Property:\n return [node.key, node.value];\n case UnaryExpression:\n return [node.argument];\n case Identifier:\n case Literal:\n case RawCode:\n default:\n return [];\n }\n}\n\n/*\n The following expression parser is based on Esprima (http://esprima.org/).\n Original header comment and license for Esprima is included here:\n\n Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>\n Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>\n Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar TokenName, source, index, length, lookahead;\nvar TokenBooleanLiteral = 1,\n TokenEOF = 2,\n TokenIdentifier = 3,\n TokenKeyword = 4,\n TokenNullLiteral = 5,\n TokenNumericLiteral = 6,\n TokenPunctuator = 7,\n TokenStringLiteral = 8,\n TokenRegularExpression = 9;\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '<end>';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\nvar SyntaxArrayExpression = 'ArrayExpression',\n SyntaxBinaryExpression = 'BinaryExpression',\n SyntaxCallExpression = 'CallExpression',\n SyntaxConditionalExpression = 'ConditionalExpression',\n SyntaxIdentifier = 'Identifier',\n SyntaxLiteral = 'Literal',\n SyntaxLogicalExpression = 'LogicalExpression',\n SyntaxMemberExpression = 'MemberExpression',\n SyntaxObjectExpression = 'ObjectExpression',\n SyntaxProperty = 'Property',\n SyntaxUnaryExpression = 'UnaryExpression';\n\n// Error messages should be identical to V8.\nvar MessageUnexpectedToken = 'Unexpected token %0',\n MessageUnexpectedNumber = 'Unexpected number',\n MessageUnexpectedString = 'Unexpected string',\n MessageUnexpectedIdentifier = 'Unexpected identifier',\n MessageUnexpectedReserved = 'Unexpected reserved word',\n MessageUnexpectedEOS = 'Unexpected end of input',\n MessageInvalidRegExp = 'Invalid regular expression',\n MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\nvar ILLEGAL = 'ILLEGAL',\n DISABLED = 'Disabled.';\n\n// See also tools/generate-unicode-regex.py.\nvar RegexNonAsciiIdentifierStart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'),\n // eslint-disable-next-line no-misleading-character-class\n RegexNonAsciiIdentifierPart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]');\n\n// Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n /* istanbul ignore next */\n if (!condition) {\n throw new Error('ASSERT: ' + message);\n }\n}\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 && ch <= 0x39; // 0..9\n}\n\nfunction isHexDigit(ch) {\n return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\nfunction isOctalDigit(ch) {\n return '01234567'.indexOf(ch) >= 0;\n}\n\n// 7.2 White Space\n\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0;\n}\n\n// 7.3 Line Terminators\n\nfunction isLineTerminator(ch) {\n return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n}\n\n// 7.6 Identifier Names and Identifiers\n\nfunction isIdentifierStart(ch) {\n return ch === 0x24 || ch === 0x5F ||\n // $ (dollar) and _ (underscore)\n ch >= 0x41 && ch <= 0x5A ||\n // A..Z\n ch >= 0x61 && ch <= 0x7A ||\n // a..z\n ch === 0x5C ||\n // \\ (backslash)\n ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));\n}\nfunction isIdentifierPart(ch) {\n return ch === 0x24 || ch === 0x5F ||\n // $ (dollar) and _ (underscore)\n ch >= 0x41 && ch <= 0x5A ||\n // A..Z\n ch >= 0x61 && ch <= 0x7A ||\n // a..z\n ch >= 0x30 && ch <= 0x39 ||\n // 0..9\n ch === 0x5C ||\n // \\ (backslash)\n ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));\n}\n\n// 7.6.1.1 Keywords\n\nconst keywords = {\n 'if': 1,\n 'in': 1,\n 'do': 1,\n 'var': 1,\n 'for': 1,\n 'new': 1,\n 'try': 1,\n 'let': 1,\n 'this': 1,\n 'else': 1,\n 'case': 1,\n 'void': 1,\n 'with': 1,\n 'enum': 1,\n 'while': 1,\n 'break': 1,\n 'catch': 1,\n 'throw': 1,\n 'const': 1,\n 'yield': 1,\n 'class': 1,\n 'super': 1,\n 'return': 1,\n 'typeof': 1,\n 'delete': 1,\n 'switch': 1,\n 'export': 1,\n 'import': 1,\n 'public': 1,\n 'static': 1,\n 'default': 1,\n 'finally': 1,\n 'extends': 1,\n 'package': 1,\n 'private': 1,\n 'function': 1,\n 'continue': 1,\n 'debugger': 1,\n 'interface': 1,\n 'protected': 1,\n 'instanceof': 1,\n 'implements': 1\n};\nfunction skipComment() {\n while (index < length) {\n const ch = source.charCodeAt(index);\n if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n ++index;\n } else {\n break;\n }\n }\n}\nfunction scanHexEscape(prefix) {\n var i,\n len,\n ch,\n code = 0;\n len = prefix === 'u' ? 4 : 2;\n for (i = 0; i < len; ++i) {\n if (index < length && isHexDigit(source[index])) {\n ch = source[index++];\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n return String.fromCharCode(code);\n}\nfunction scanUnicodeCodePointEscape() {\n var ch, code, cu1, cu2;\n ch = source[index];\n code = 0;\n\n // At least, one hex digit is required.\n if (ch === '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n while (index < length) {\n ch = source[index++];\n if (!isHexDigit(ch)) {\n break;\n }\n code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n }\n if (code > 0x10FFFF || ch !== '}') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n // UTF-16 Encoding\n if (code <= 0xFFFF) {\n return String.fromCharCode(code);\n }\n cu1 = (code - 0x10000 >> 10) + 0xD800;\n cu2 = (code - 0x10000 & 1023) + 0xDC00;\n return String.fromCharCode(cu1, cu2);\n}\nfunction getEscapedIdentifier() {\n var ch, id;\n ch = source.charCodeAt(index++);\n id = String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n id = ch;\n }\n while (index < length) {\n ch = source.charCodeAt(index);\n if (!isIdentifierPart(ch)) {\n break;\n }\n ++index;\n id += String.fromCharCode(ch);\n\n // '\\u' (U+005C, U+0075) denotes an escaped character.\n if (ch === 0x5C) {\n id = id.substr(0, id.length - 1);\n if (source.charCodeAt(index) !== 0x75) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n ++index;\n ch = scanHexEscape('u');\n if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n id += ch;\n }\n }\n return id;\n}\nfunction getIdentifier() {\n var start, ch;\n start = index++;\n while (index < length) {\n ch = source.charCodeAt(index);\n if (ch === 0x5C) {\n // Blackslash (U+005C) marks Unicode escape sequence.\n index = start;\n return getEscapedIdentifier();\n }\n if (isIdentifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n return source.slice(start, index);\n}\nfunction scanIdentifier() {\n var start, id, type;\n start = index;\n\n // Backslash (U+005C) starts an escaped character.\n id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier();\n\n // There is no keyword or literal with only one character.\n // Thus, it must be an identifier.\n if (id.length === 1) {\n type = TokenIdentifier;\n } else if (keywords.hasOwnProperty(id)) {\n // eslint-disable-line no-prototype-builtins\n type = TokenKeyword;\n } else if (id === 'null') {\n type = TokenNullLiteral;\n } else if (id === 'true' || id === 'false') {\n type = TokenBooleanLiteral;\n } else {\n type = TokenIdentifier;\n }\n return {\n type: type,\n value: id,\n start: start,\n end: index\n };\n}\n\n// 7.7 Punctuators\n\nfunction scanPunctuator() {\n var start = index,\n code = source.charCodeAt(index),\n code2,\n ch1 = source[index],\n ch2,\n ch3,\n ch4;\n switch (code) {\n // Check for most common single-character punctuators.\n case 0x2E: // . dot\n case 0x28: // ( open bracket\n case 0x29: // ) close bracket\n case 0x3B: // ; semicolon\n case 0x2C: // , comma\n case 0x7B: // { open curly brace\n case 0x7D: // } close curly brace\n case 0x5B: // [\n case 0x5D: // ]\n case 0x3A: // :\n case 0x3F: // ?\n case 0x7E:\n // ~\n ++index;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code),\n start: start,\n end: index\n };\n default:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (U+003D) marks an assignment or comparison operator.\n if (code2 === 0x3D) {\n switch (code) {\n case 0x2B: // +\n case 0x2D: // -\n case 0x2F: // /\n case 0x3C: // <\n case 0x3E: // >\n case 0x5E: // ^\n case 0x7C: // |\n case 0x25: // %\n case 0x26: // &\n case 0x2A:\n // *\n index += 2;\n return {\n type: TokenPunctuator,\n value: String.fromCharCode(code) + String.fromCharCode(code2),\n start: start,\n end: index\n };\n case 0x21: // !\n case 0x3D:\n // =\n index += 2;\n\n // !== and ===\n if (source.charCodeAt(index) === 0x3D) {\n ++index;\n }\n return {\n type: TokenPunctuator,\n value: source.slice(start, index),\n start: start,\n end: index\n };\n }\n }\n }\n\n // 4-character punctuator: >>>=\n\n ch4 = source.substr(index, 4);\n if (ch4 === '>>>=') {\n index += 4;\n return {\n type: TokenPunctuator,\n value: ch4,\n start: start,\n end: index\n };\n }\n\n // 3-character punctuators: === !== >>> <<= >>=\n\n ch3 = ch4.substr(0, 3);\n if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n index += 3;\n return {\n type: TokenPunctuator,\n value: ch3,\n start: start,\n end: index\n };\n }\n\n // Other 2-character punctuators: ++ -- << >> && ||\n ch2 = ch3.substr(0, 2);\n if (ch1 === ch2[1] && '+-<>&|'.indexOf(ch1) >= 0 || ch2 === '=>') {\n index += 2;\n return {\n type: TokenPunctuator,\n value: ch2,\n start: start,\n end: index\n };\n }\n if (ch2 === '//') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n\n // 1-character punctuators: < > = ! + - * % & | ^ /\n\n if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n ++index;\n return {\n type: TokenPunctuator,\n value: ch1,\n start: start,\n end: index\n };\n }\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n}\n\n// 7.8.3 Numeric Literals\n\nfunction scanHexLiteral(start) {\n let number = '';\n while (index < length) {\n if (!isHexDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n if (number.length === 0) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n return {\n type: TokenNumericLiteral,\n value: parseInt('0x' + number, 16),\n start: start,\n end: index\n };\n}\nfunction scanOctalLiteral(start) {\n let number = '0' + source[index++];\n while (index < length) {\n if (!isOctalDigit(source[index])) {\n break;\n }\n number += source[index++];\n }\n if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n return {\n type: TokenNumericLiteral,\n value: parseInt(number, 8),\n octal: true,\n start: start,\n end: index\n };\n}\nfunction scanNumericLiteral() {\n var number, start, ch;\n ch = source[index];\n assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');\n start = index;\n number = '';\n if (ch !== '.') {\n number = source[index++];\n ch = source[index];\n\n // Hex number starts with '0x'.\n // Octal number starts with '0'.\n if (number === '0') {\n if (ch === 'x' || ch === 'X') {\n ++index;\n return scanHexLiteral(start);\n }\n if (isOctalDigit(ch)) {\n return scanOctalLiteral(start);\n }\n\n // decimal number starts with '0' such as '09' is illegal.\n if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n if (ch === '.') {\n number += source[index++];\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source[index];\n }\n if (ch === 'e' || ch === 'E') {\n number += source[index++];\n ch = source[index];\n if (ch === '+' || ch === '-') {\n number += source[index++];\n }\n if (isDecimalDigit(source.charCodeAt(index))) {\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n } else {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n }\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n return {\n type: TokenNumericLiteral,\n value: parseFloat(number),\n start: start,\n end: index\n };\n}\n\n// 7.8.4 String Literals\n\nfunction scanStringLiteral() {\n var str = '',\n quote,\n start,\n ch,\n code,\n octal = false;\n quote = source[index];\n assert(quote === '\\'' || quote === '\"', 'String literal must starts with a quote');\n start = index;\n ++index;\n while (index < length) {\n ch = source[index++];\n if (ch === quote) {\n quote = '';\n break;\n } else if (ch === '\\\\') {\n ch = source[index++];\n if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n switch (ch) {\n case 'u':\n case 'x':\n if (source[index] === '{') {\n ++index;\n str += scanUnicodeCodePointEscape();\n } else {\n str += scanHexEscape(ch);\n }\n break;\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\\x0B';\n break;\n default:\n if (isOctalDigit(ch)) {\n code = '01234567'.indexOf(ch);\n\n // \\0 is not octal escape sequence\n if (code !== 0) {\n octal = true;\n }\n if (index < length && isOctalDigit(source[index])) {\n octal = true;\n code = code * 8 + '01234567'.indexOf(source[index++]);\n\n // 3 digits are only allowed when string starts\n // with 0, 1, 2, 3\n if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) {\n code = code * 8 + '01234567'.indexOf(source[index++]);\n }\n }\n str += String.fromCharCode(code);\n } else {\n str += ch;\n }\n break;\n }\n } else {\n if (ch === '\\r' && source[index] === '\\n') {\n ++index;\n }\n }\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n break;\n } else {\n str += ch;\n }\n }\n if (quote !== '') {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n }\n return {\n type: TokenStringLiteral,\n value: str,\n octal: octal,\n start: start,\n end: index\n };\n}\nfunction testRegExp(pattern, flags) {\n let tmp = pattern;\n if (flags.indexOf('u') >= 0) {\n // Replace each astral symbol and every Unicode code point\n // escape sequence with a single ASCII symbol to avoid throwing on\n // regular expressions that are only valid in combination with the\n // `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it\n // would be replaced by `[x-b]` which throws an error.\n tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, ($0, $1) => {\n if (parseInt($1, 16) <= 0x10FFFF) {\n return 'x';\n }\n throwError({}, MessageInvalidRegExp);\n }).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n }\n\n // First, detect invalid regular expressions.\n try {\n new RegExp(tmp);\n } catch (e) {\n throwError({}, MessageInvalidRegExp);\n }\n\n // Return a regular expression object for this pattern-flag pair, or\n // `null` in case the current environment doesn't support the flags it\n // uses.\n try {\n return new RegExp(pattern, flags);\n } catch (exception) {\n return null;\n }\n}\nfunction scanRegExpBody() {\n var ch, str, classMarker, terminated, body;\n ch = source[index];\n assert(ch === '/', 'Regular expression literal must start with a slash');\n str = source[index++];\n classMarker = false;\n terminated = false;\n while (index < length) {\n ch = source[index++];\n str += ch;\n if (ch === '\\\\') {\n ch = source[index++];\n // ECMA-262 7.8.5\n if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n }\n str += ch;\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n throwError({}, MessageUnterminatedRegExp);\n } else if (classMarker) {\n if (ch === ']') {\n classMarker = false;\n }\n } else {\n if (ch === '/') {\n terminated = true;\n break;\n } else if (ch === '[') {\n classMarker = true;\n }\n }\n }\n if (!terminated) {\n throwError({}, MessageUnterminatedRegExp);\n }\n\n // Exclude leading and trailing slash.\n body = str.substr(1, str.length - 2);\n return {\n value: body,\n literal: str\n };\n}\nfunction scanRegExpFlags() {\n var ch, str, flags;\n str = '';\n flags = '';\n while (index < length) {\n ch = source[index];\n if (!isIdentifierPart(ch.charCodeAt(0))) {\n break;\n }\n ++index;\n if (ch === '\\\\' && index < length) {\n throwError({}, MessageUnexpectedToken, ILLEGAL);\n } else {\n flags += ch;\n str += ch;\n }\n }\n if (flags.search(/[^gimuy]/g) >= 0) {\n throwError({}, MessageInvalidRegExp, flags);\n }\n return {\n value: flags,\n literal: str\n };\n}\nfunction scanRegExp() {\n var start, body, flags, value;\n lookahead = null;\n skipComment();\n start = index;\n body = scanRegExpBody();\n flags = scanRegExpFlags();\n value = testRegExp(body.value, flags.value);\n return {\n literal: body.literal + flags.literal,\n value: value,\n regex: {\n pattern: body.value,\n flags: flags.value\n },\n start: start,\n end: index\n };\n}\nfunction isIdentifierName(token) {\n return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;\n}\nfunction advance() {\n skipComment();\n if (index >= length) {\n return {\n type: TokenEOF,\n start: index,\n end: index\n };\n }\n const ch = source.charCodeAt(index);\n if (isIdentifierStart(ch)) {\n return scanIdentifier();\n }\n\n // Very common: ( and ) and ;\n if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n return scanPunctuator();\n }\n\n // String literal starts with single quote (U+0027) or double quote (U+0022).\n if (ch === 0x27 || ch === 0x22) {\n return scanStringLiteral();\n }\n\n // Dot (.) U+002E can also start a floating-point number, hence the need\n // to check the next character.\n if (ch === 0x2E) {\n if (isDecimalDigit(source.charCodeAt(index + 1))) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n }\n if (isDecimalDigit(ch)) {\n return scanNumericLiteral();\n }\n return scanPunctuator();\n}\nfunction lex() {\n const token = lookahead;\n index = token.end;\n lookahead = advance();\n index = token.end;\n return token;\n}\nfunction peek() {\n const pos = index;\n lookahead = advance();\n index = pos;\n}\nfunction finishArrayExpression(elements) {\n const node = new ASTNode(SyntaxArrayExpression);\n node.elements = elements;\n return node;\n}\nfunction finishBinaryExpression(operator, left, right) {\n const node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n node.operator = operator;\n node.left = left;\n node.right = right;\n return node;\n}\nfunction finishCallExpression(callee, args) {\n const node = new ASTNode(SyntaxCallExpression);\n node.callee = callee;\n node.arguments = args;\n return node;\n}\nfunction finishConditionalExpression(test, consequent, alternate) {\n const node = new ASTNode(SyntaxConditionalExpression);\n node.test = test;\n node.consequent = consequent;\n node.alternate = alternate;\n return node;\n}\nfunction finishIdentifier(name) {\n const node = new ASTNode(SyntaxIdentifier);\n node.name = name;\n return node;\n}\nfunction finishLiteral(token) {\n const node = new ASTNode(SyntaxLiteral);\n node.value = token.value;\n node.raw = source.slice(token.start, token.end);\n if (token.regex) {\n if (node.raw === '//') {\n node.raw = '/(?:)/';\n }\n node.regex = token.regex;\n }\n return node;\n}\nfunction finishMemberExpression(accessor, object, property) {\n const node = new ASTNode(SyntaxMemberExpression);\n node.computed = accessor === '[';\n node.object = object;\n node.property = property;\n if (!node.computed) property.member = true;\n return node;\n}\nfunction finishObjectExpression(properties) {\n const node = new ASTNode(SyntaxObjectExpression);\n node.properties = properties;\n return node;\n}\nfunction finishProperty(kind, key, value) {\n const node = new ASTNode(SyntaxProperty);\n node.key = key;\n node.value = value;\n node.kind = kind;\n return node;\n}\nfunction finishUnaryExpression(operator, argument) {\n const node = new ASTNode(SyntaxUnaryExpression);\n node.operator = operator;\n node.argument = argument;\n node.prefix = true;\n return node;\n}\n\n// Throw an exception\n\nfunction throwError(token, messageFormat) {\n var error,\n args = Array.prototype.slice.call(arguments, 2),\n msg = messageFormat.replace(/%(\\d)/g, (whole, index) => {\n assert(index < args.length, 'Message reference must be in range');\n return args[index];\n });\n error = new Error(msg);\n error.index = index;\n error.description = msg;\n throw error;\n}\n\n// Throw an exception because of the token.\n\nfunction throwUnexpected(token) {\n if (token.type === TokenEOF) {\n throwError(token, MessageUnexpectedEOS);\n }\n if (token.type === TokenNumericLiteral) {\n throwError(token, MessageUnexpectedNumber);\n }\n if (token.type === TokenStringLiteral) {\n throwError(token, MessageUnexpectedString);\n }\n if (token.type === TokenIdentifier) {\n throwError(token, MessageUnexpectedIdentifier);\n }\n if (token.type === TokenKeyword) {\n throwError(token, MessageUnexpectedReserved);\n }\n\n // BooleanLiteral, NullLiteral, or Punctuator.\n throwError(token, MessageUnexpectedToken, token.value);\n}\n\n// Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\nfunction expect(value) {\n const token = lex();\n if (token.type !== TokenPunctuator || token.value !== value) {\n throwUnexpected(token);\n }\n}\n\n// Return true if the next token matches the specified punctuator.\n\nfunction match(value) {\n return lookahead.type === TokenPunctuator && lookahead.value === value;\n}\n\n// Return true if the next token matches the specified keyword\n\nfunction matchKeyword(keyword) {\n return lookahead.type === TokenKeyword && lookahead.value === keyword;\n}\n\n// 11.1.4 Array Initialiser\n\nfunction parseArrayInitialiser() {\n const elements = [];\n index = lookahead.start;\n expect('[');\n while (!match(']')) {\n if (match(',')) {\n lex();\n elements.push(null);\n } else {\n elements.push(parseConditionalExpression());\n if (!match(']')) {\n expect(',');\n }\n }\n }\n lex();\n return finishArrayExpression(elements);\n}\n\n// 11.1.5 Object Initialiser\n\nfunction parseObjectPropertyKey() {\n index = lookahead.start;\n const token = lex();\n\n // Note: This function is called only from parseObjectProperty(), where\n // EOF and Punctuator tokens are already filtered out.\n\n if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n if (token.octal) {\n throwError(token, MessageStrictOctalLiteral);\n }\n return finishLiteral(token);\n }\n return finishIdentifier(token.value);\n}\nfunction parseObjectProperty() {\n var token, key, id, value;\n index = lookahead.start;\n token = lookahead;\n if (token.type === TokenIdentifier) {\n id = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', id, value);\n }\n if (token.type === TokenEOF || token.type === TokenPunctuator) {\n throwUnexpected(token);\n } else {\n key = parseObjectPropertyKey();\n expect(':');\n value = parseConditionalExpression();\n return finishProperty('init', key, value);\n }\n}\nfunction parseObjectInitialiser() {\n var properties = [],\n property,\n name,\n key,\n map = {},\n toString = String;\n index = lookahead.start;\n expect('{');\n while (!match('}')) {\n property = parseObjectProperty();\n if (property.key.type === SyntaxIdentifier) {\n name = property.key.name;\n } else {\n name = toString(property.key.value);\n }\n key = '$' + name;\n if (Object.prototype.hasOwnProperty.call(map, key)) {\n throwError({}, MessageStrictDuplicateProperty);\n } else {\n map[key] = true;\n }\n properties.push(property);\n if (!match('}')) {\n expect(',');\n }\n }\n expect('}');\n return finishObjectExpression(properties);\n}\n\n// 11.1.6 The Grouping Operator\n\nfunction parseGroupExpression() {\n expect('(');\n const expr = parseExpression();\n expect(')');\n return expr;\n}\n\n// 11.1 Primary Expressions\n\nconst legalKeywords = {\n 'if': 1\n};\nfunction parsePrimaryExpression() {\n var type, token, expr;\n if (match('(')) {\n return parseGroupExpression();\n }\n if (match('[')) {\n return parseArrayInitialiser();\n }\n if (match('{')) {\n return parseObjectInitialiser();\n }\n type = lookahead.type;\n index = lookahead.start;\n if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n expr = finishIdentifier(lex().value);\n } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n if (lookahead.octal) {\n throwError(lookahead, MessageStrictOctalLiteral);\n }\n expr = finishLiteral(lex());\n } else if (type === TokenKeyword) {\n throw new Error(DISABLED);\n } else if (type === TokenBooleanLiteral) {\n token = lex();\n token.value = token.value === 'true';\n expr = finishLiteral(token);\n } else if (type === TokenNullLiteral) {\n token = lex();\n token.value = null;\n expr = finishLiteral(token);\n } else if (match('/') || match('/=')) {\n expr = finishLiteral(scanRegExp());\n peek();\n } else {\n throwUnexpected(lex());\n }\n return expr;\n}\n\n// 11.2 Left-Hand-Side Expressions\n\nfunction parseArguments() {\n const args = [];\n expect('(');\n if (!match(')')) {\n while (index < length) {\n args.push(parseConditionalExpression());\n if (match(')')) {\n break;\n }\n expect(',');\n }\n }\n expect(')');\n return args;\n}\nfunction parseNonComputedProperty() {\n index = lookahead.start;\n const token = lex();\n if (!isIdentifierName(token)) {\n throwUnexpected(token);\n }\n return finishIdentifier(token.value);\n}\nfunction parseNonComputedMember() {\n expect('.');\n return parseNonComputedProperty();\n}\nfunction parseComputedMember() {\n expect('[');\n const expr = parseExpression();\n expect(']');\n return expr;\n}\nfunction parseLeftHandSideExpressionAllowCall() {\n var expr, args, property;\n expr = parsePrimaryExpression();\n for (;;) {\n if (match('.')) {\n property = parseNonComputedMember();\n expr = finishMemberExpression('.', expr, property);\n } else if (match('(')) {\n args = parseArguments();\n expr = finishCallExpression(expr, args);\n } else if (match('[')) {\n property = parseComputedMember();\n expr = finishMemberExpression('[', expr, property);\n } else {\n break;\n }\n }\n return expr;\n}\n\n// 11.3 Postfix Expressions\n\nfunction parsePostfixExpression() {\n const expr = parseLeftHandSideExpressionAllowCall();\n if (lookahead.type === TokenPunctuator) {\n if (match('++') || match('--')) {\n throw new Error(DISABLED);\n }\n }\n return expr;\n}\n\n// 11.4 Unary Operators\n\nfunction parseUnaryExpression() {\n var token, expr;\n if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n expr = parsePostfixExpression();\n } else if (match('++') || match('--')) {\n throw new Error(DISABLED);\n } else if (match('+') || match('-') || match('~') || match('!')) {\n token = lex();\n expr = parseUnaryExpression();\n expr = finishUnaryExpression(token.value, expr);\n } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n throw new Error(DISABLED);\n } else {\n expr = parsePostfixExpression();\n }\n return expr;\n}\nfunction binaryPrecedence(token) {\n let prec = 0;\n if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n return 0;\n }\n switch (token.value) {\n case '||':\n prec = 1;\n break;\n case '&&':\n prec = 2;\n break;\n case '|':\n prec = 3;\n break;\n case '^':\n prec = 4;\n break;\n case '&':\n prec = 5;\n break;\n case '==':\n case '!=':\n case '===':\n case '!==':\n prec = 6;\n break;\n case '<':\n case '>':\n case '<=':\n case '>=':\n case 'instanceof':\n case 'in':\n prec = 7;\n break;\n case '<<':\n case '>>':\n case '>>>':\n prec = 8;\n break;\n case '+':\n case '-':\n prec = 9;\n break;\n case '*':\n case '/':\n case '%':\n prec = 11;\n break;\n }\n return prec;\n}\n\n// 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\nfunction parseBinaryExpression() {\n var marker, markers, expr, token, prec, stack, right, operator, left, i;\n marker = lookahead;\n left = parseUnaryExpression();\n token = lookahead;\n prec = binaryPrecedence(token);\n if (prec === 0) {\n return left;\n }\n token.prec = prec;\n lex();\n markers = [marker, lookahead];\n right = parseUnaryExpression();\n stack = [left, token, right];\n while ((prec = binaryPrecedence(lookahead)) > 0) {\n // Reduce: make a binary expression from the three topmost entries.\n while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {\n right = stack.pop();\n operator = stack.pop().value;\n left = stack.pop();\n markers.pop();\n expr = finishBinaryExpression(operator, left, right);\n stack.push(expr);\n }\n\n // Shift.\n token = lex();\n token.prec = prec;\n stack.push(token);\n markers.push(lookahead);\n expr = parseUnaryExpression();\n stack.push(expr);\n }\n\n // Final reduce to clean-up the stack.\n i = stack.length - 1;\n expr = stack[i];\n markers.pop();\n while (i > 1) {\n markers.pop();\n expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n i -= 2;\n }\n return expr;\n}\n\n// 11.12 Conditional Operator\n\nfunction parseConditionalExpression() {\n var expr, consequent, alternate;\n expr = parseBinaryExpression();\n if (match('?')) {\n lex();\n consequent = parseConditionalExpression();\n expect(':');\n alternate = parseConditionalExpression();\n expr = finishConditionalExpression(expr, consequent, alternate);\n }\n return expr;\n}\n\n// 11.14 Comma Operator\n\nfunction parseExpression() {\n const expr = parseConditionalExpression();\n if (match(',')) {\n throw new Error(DISABLED); // no sequence expressions\n }\n\n return expr;\n}\nfunction parser (code) {\n source = code;\n index = 0;\n length = source.length;\n lookahead = null;\n peek();\n const expr = parseExpression();\n if (lookahead.type !== TokenEOF) {\n throw new Error('Unexpect token after expression.');\n }\n return expr;\n}\n\nvar Constants = {\n NaN: 'NaN',\n E: 'Math.E',\n LN2: 'Math.LN2',\n LN10: 'Math.LN10',\n LOG2E: 'Math.LOG2E',\n LOG10E: 'Math.LOG10E',\n PI: 'Math.PI',\n SQRT1_2: 'Math.SQRT1_2',\n SQRT2: 'Math.SQRT2',\n MIN_VALUE: 'Number.MIN_VALUE',\n MAX_VALUE: 'Number.MAX_VALUE'\n};\n\nfunction Functions (codegen) {\n function fncall(name, args, cast, type) {\n let obj = codegen(args[0]);\n if (cast) {\n obj = cast + '(' + obj + ')';\n if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n }\n return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');\n }\n function fn(name, cast, type) {\n return args => fncall(name, args, cast, type);\n }\n const DATE = 'new Date',\n STRING = 'String',\n REGEXP = 'RegExp';\n return {\n // MATH functions\n isNaN: 'Number.isNaN',\n isFinite: 'Number.isFinite',\n abs: 'Math.abs',\n acos: 'Math.acos',\n asin: 'Math.asin',\n atan: 'Math.atan',\n atan2: 'Math.atan2',\n ceil: 'Math.ceil',\n cos: 'Math.cos',\n exp: 'Math.exp',\n floor: 'Math.floor',\n hypot: 'Math.hypot',\n log: 'Math.log',\n max: 'Math.max',\n min: 'Math.min',\n pow: 'Math.pow',\n random: 'Math.random',\n round: 'Math.round',\n sin: 'Math.sin',\n sqrt: 'Math.sqrt',\n tan: 'Math.tan',\n clamp: function (args) {\n if (args.length < 3) error('Missing arguments to clamp function.');\n if (args.length > 3) error('Too many arguments to clamp function.');\n const a = args.map(codegen);\n return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';\n },\n // DATE functions\n now: 'Date.now',\n utc: 'Date.UTC',\n datetime: DATE,\n date: fn('getDate', DATE, 0),\n day: fn('getDay', DATE, 0),\n year: fn('getFullYear', DATE, 0),\n month: fn('getMonth', DATE, 0),\n hours: fn('getHours', DATE, 0),\n minutes: fn('getMinutes', DATE, 0),\n seconds: fn('getSeconds', DATE, 0),\n milliseconds: fn('getMilliseconds', DATE, 0),\n time: fn('getTime', DATE, 0),\n timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n utcdate: fn('getUTCDate', DATE, 0),\n utcday: fn('getUTCDay', DATE, 0),\n utcyear: fn('getUTCFullYear', DATE, 0),\n utcmonth: fn('getUTCMonth', DATE, 0),\n utchours: fn('getUTCHours', DATE, 0),\n utcminutes: fn('getUTCMinutes', DATE, 0),\n utcseconds: fn('getUTCSeconds', DATE, 0),\n utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n // sequence functions\n length: fn('length', null, -1),\n // STRING functions\n parseFloat: 'parseFloat',\n parseInt: 'parseInt',\n upper: fn('toUpperCase', STRING, 0),\n lower: fn('toLowerCase', STRING, 0),\n substring: fn('substring', STRING),\n split: fn('split', STRING),\n trim: fn('trim', STRING, 0),\n // REGEXP functions\n regexp: REGEXP,\n test: fn('test', REGEXP),\n // Control Flow functions\n if: function (args) {\n if (args.length < 3) error('Missing arguments to if function.');\n if (args.length > 3) error('Too many arguments to if function.');\n const a = args.map(codegen);\n return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';\n }\n };\n}\n\nfunction stripQuotes(s) {\n const n = s && s.length - 1;\n return n && (s[0] === '\"' && s[n] === '\"' || s[0] === '\\'' && s[n] === '\\'') ? s.slice(1, -1) : s;\n}\nfunction codegen (opt) {\n opt = opt || {};\n const allowed = opt.allowed ? toSet(opt.allowed) : {},\n forbidden = opt.forbidden ? toSet(opt.forbidden) : {},\n constants = opt.constants || Constants,\n functions = (opt.functions || Functions)(visit),\n globalvar = opt.globalvar,\n fieldvar = opt.fieldvar,\n outputGlobal = isFunction(globalvar) ? globalvar : id => `${globalvar}[\"${id}\"]`;\n let globals = {},\n fields = {},\n memberDepth = 0;\n function visit(ast) {\n if (isString(ast)) return ast;\n const generator = Generators[ast.type];\n if (generator == null) error('Unsupported type: ' + ast.type);\n return generator(ast);\n }\n const Generators = {\n Literal: n => n.raw,\n Identifier: n => {\n const id = n.name;\n if (memberDepth > 0) {\n return id;\n } else if (hasOwnProperty(forbidden, id)) {\n return error('Illegal identifier: ' + id);\n } else if (hasOwnProperty(constants, id)) {\n return constants[id];\n } else if (hasOwnProperty(allowed, id)) {\n return id;\n } else {\n globals[id] = 1;\n return outputGlobal(id);\n }\n },\n MemberExpression: n => {\n const d = !n.computed,\n o = visit(n.object);\n if (d) memberDepth += 1;\n const p = visit(n.property);\n if (o === fieldvar) {\n // strip quotes to sanitize field name (#1653)\n fields[stripQuotes(p)] = 1;\n }\n if (d) memberDepth -= 1;\n return o + (d ? '.' + p : '[' + p + ']');\n },\n CallExpression: n => {\n if (n.callee.type !== 'Identifier') {\n error('Illegal callee type: ' + n.callee.type);\n }\n const callee = n.callee.name,\n args = n.arguments,\n fn = hasOwnProperty(functions, callee) && functions[callee];\n if (!fn) error('Unrecognized function: ' + callee);\n return isFunction(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';\n },\n ArrayExpression: n => '[' + n.elements.map(visit).join(',') + ']',\n BinaryExpression: n => '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')',\n UnaryExpression: n => '(' + n.operator + visit(n.argument) + ')',\n ConditionalExpression: n => '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')',\n LogicalExpression: n => '(' + visit(n.left) + n.operator + visit(n.right) + ')',\n ObjectExpression: n => '{' + n.properties.map(visit).join(',') + '}',\n Property: n => {\n memberDepth += 1;\n const k = visit(n.key);\n memberDepth -= 1;\n return k + ':' + visit(n.value);\n }\n };\n function codegen(ast) {\n const result = {\n code: visit(ast),\n globals: Object.keys(globals),\n fields: Object.keys(fields)\n };\n globals = {};\n fields = {};\n return result;\n }\n codegen.functions = functions;\n codegen.constants = constants;\n return codegen;\n}\n\nexport { ASTNode, ArrayExpression, BinaryExpression, CallExpression, ConditionalExpression, Identifier, Literal, LogicalExpression, MemberExpression, ObjectExpression, Property, RawCode, UnaryExpression, codegen as codegenExpression, Constants as constants, Functions as functions, parser as parseExpression };\n", "import { bisector, union, intersection } from 'd3-array';\nimport { field, isDate, toNumber, isArray, inrange, extend, array, error, peek, hasOwnProperty } from 'vega-util';\nimport { Literal } from 'vega-expression';\n\n// Registers vega-util field accessors to protect against XSS attacks\nconst SELECTION_GETTER = Symbol('vega_selection_getter');\nfunction getter(f) {\n if (!f.getter || !f.getter[SELECTION_GETTER]) {\n f.getter = field(f.field);\n f.getter[SELECTION_GETTER] = true;\n }\n return f.getter;\n}\nconst Intersect = 'intersect';\nconst Union = 'union';\nconst VlMulti = 'vlMulti';\nconst VlPoint = 'vlPoint';\nconst Or = 'or';\nconst And = 'and';\nconst SelectionId = '_vgsid_';\nconst $selectionId = field(SelectionId);\n\nconst TYPE_ENUM = 'E',\n TYPE_RANGE_INC = 'R',\n TYPE_RANGE_EXC = 'R-E',\n TYPE_RANGE_LE = 'R-LE',\n TYPE_RANGE_RE = 'R-RE',\n UNIT_INDEX = 'index:unit';\n\n// TODO: revisit date coercion?\nfunction testPoint(datum, entry) {\n var fields = entry.fields,\n values = entry.values,\n n = fields.length,\n i = 0,\n dval,\n f;\n for (; i < n; ++i) {\n f = fields[i];\n dval = getter(f)(datum);\n if (isDate(dval)) dval = toNumber(dval);\n if (isDate(values[i])) values[i] = toNumber(values[i]);\n if (isArray(values[i]) && isDate(values[i][0])) values[i] = values[i].map(toNumber);\n if (f.type === TYPE_ENUM) {\n // Enumerated fields can either specify individual values (single/multi selections)\n // or an array of values (interval selections).\n if (isArray(values[i]) ? values[i].indexOf(dval) < 0 : dval !== values[i]) {\n return false;\n }\n } else {\n if (f.type === TYPE_RANGE_INC) {\n if (!inrange(dval, values[i])) return false;\n } else if (f.type === TYPE_RANGE_RE) {\n // Discrete selection of bins test within the range [bin_start, bin_end).\n if (!inrange(dval, values[i], true, false)) return false;\n } else if (f.type === TYPE_RANGE_EXC) {\n // 'R-E'/'R-LE' included for completeness.\n if (!inrange(dval, values[i], false, false)) return false;\n } else if (f.type === TYPE_RANGE_LE) {\n if (!inrange(dval, values[i], false, true)) return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Tests if a tuple is contained within an interactive selection.\n * @param {string} name - The name of the data set representing the selection.\n * Tuples in the dataset are of the form\n * {unit: string, fields: array<fielddef>, values: array<*>}.\n * Fielddef is of the form\n * {field: string, channel: string, type: 'E' | 'R'} where\n * 'type' identifies whether tuples in the dataset enumerate\n * values for the field, or specify a continuous range.\n * @param {object} datum - The tuple to test for inclusion.\n * @param {string} op - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @return {boolean} - True if the datum is in the selection, false otherwise.\n */\nfunction selectionTest(name, datum, op) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n intersect = op === Intersect,\n n = entries.length,\n i = 0,\n entry,\n miss,\n count,\n unit,\n b;\n for (; i < n; ++i) {\n entry = entries[i];\n if (unitIdx && intersect) {\n // multi selections union within the same unit and intersect across units.\n miss = miss || {};\n count = miss[unit = entry.unit] || 0;\n\n // if we've already matched this unit, skip.\n if (count === -1) continue;\n b = testPoint(datum, entry);\n miss[unit] = b ? -1 : ++count;\n\n // if we match and there are no other units return true\n // if we've missed against all tuples in this unit return false\n if (b && unitIdx.size === 1) return true;\n if (!b && count === unitIdx.get(unit).count) return false;\n } else {\n b = testPoint(datum, entry);\n\n // if we find a miss and we do require intersection return false\n // if we find a match and we don't require intersection return true\n if (intersect ^ b) return b;\n }\n }\n\n // if intersecting and we made it here, then we saw no misses\n // if not intersecting, then we saw no matches\n // if no active selections, return false\n return n && intersect;\n}\nconst bisect = bisector($selectionId),\n bisectLeft = bisect.left,\n bisectRight = bisect.right;\nfunction selectionIdTest(name, datum, op) {\n const data = this.context.data[name],\n entries = data ? data.values.value : [],\n unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n intersect = op === Intersect,\n value = $selectionId(datum),\n index = bisectLeft(entries, value);\n if (index === entries.length) return false;\n if ($selectionId(entries[index]) !== value) return false;\n if (unitIdx && intersect) {\n if (unitIdx.size === 1) return true;\n if (bisectRight(entries, value) - index < unitIdx.size) return false;\n }\n return true;\n}\n\n/**\n * Maps an array of scene graph items to an array of selection tuples.\n * @param {string} name - The name of the dataset representing the selection.\n * @param {string} base - The base object that generated tuples extend.\n *\n * @returns {array} An array of selection entries for the given unit.\n */\nfunction selectionTuples(array, base) {\n return array.map(x => extend(base.fields ? {\n values: base.fields.map(f => getter(f)(x.datum))\n } : {\n [SelectionId]: $selectionId(x.datum)\n }, base));\n}\n\n/**\n * Resolves selection for use as a scale domain or reads via the API.\n * @param {string} name - The name of the dataset representing the selection\n * @param {string} [op='union'] - The set operation for combining selections.\n * One of 'intersect' or 'union' (default).\n * @param {boolean} isMulti - Identifies a \"multi\" selection to perform more\n * expensive resolution computation.\n * @param {boolean} vl5 - With Vega-Lite v5, \"multi\" selections are now called \"point\"\n * selections, and thus the resolved tuple should reflect this name.\n * This parameter allows us to reflect this change without triggering\n * a major version bump for Vega.\n * @returns {object} An object of selected fields and values.\n */\nfunction selectionResolve(name, op, isMulti, vl5) {\n var data = this.context.data[name],\n entries = data ? data.values.value : [],\n resolved = {},\n multiRes = {},\n types = {},\n entry,\n fields,\n values,\n unit,\n field,\n value,\n res,\n resUnit,\n type,\n union,\n n = entries.length,\n i = 0,\n j,\n m;\n\n // First union all entries within the same unit.\n for (; i < n; ++i) {\n entry = entries[i];\n unit = entry.unit;\n fields = entry.fields;\n values = entry.values;\n if (fields && values) {\n // Intentional selection stores\n for (j = 0, m = fields.length; j < m; ++j) {\n field = fields[j];\n res = resolved[field.field] || (resolved[field.field] = {});\n resUnit = res[unit] || (res[unit] = []);\n types[field.field] = type = field.type.charAt(0);\n union = ops[`${type}_union`];\n res[unit] = union(resUnit, array(values[j]));\n }\n\n // If the same multi-selection is repeated over views and projected over\n // an encoding, it may operate over different fields making it especially\n // tricky to reliably resolve it. At best, we can de-dupe identical entries\n // but doing so may be more computationally expensive than it is worth.\n // Instead, for now, we simply transform our store representation into\n // a more human-friendly one.\n if (isMulti) {\n resUnit = multiRes[unit] || (multiRes[unit] = []);\n resUnit.push(array(values).reduce((obj, curr, j) => (obj[fields[j].field] = curr, obj), {}));\n }\n } else {\n // Short circuit extensional selectionId stores which hold sorted IDs unique to each unit.\n field = SelectionId;\n value = $selectionId(entry);\n res = resolved[field] || (resolved[field] = {});\n resUnit = res[unit] || (res[unit] = []);\n resUnit.push(value);\n if (isMulti) {\n resUnit = multiRes[unit] || (multiRes[unit] = []);\n resUnit.push({\n [SelectionId]: value\n });\n }\n }\n }\n\n // Then resolve fields across units as per the op.\n op = op || Union;\n if (resolved[SelectionId]) {\n resolved[SelectionId] = ops[`${SelectionId}_${op}`](...Object.values(resolved[SelectionId]));\n } else {\n Object.keys(resolved).forEach(field => {\n resolved[field] = Object.keys(resolved[field]).map(unit => resolved[field][unit]).reduce((acc, curr) => acc === undefined ? curr : ops[`${types[field]}_${op}`](acc, curr));\n });\n }\n entries = Object.keys(multiRes);\n if (isMulti && entries.length) {\n const key = vl5 ? VlPoint : VlMulti;\n resolved[key] = op === Union ? {\n [Or]: entries.reduce((acc, k) => (acc.push(...multiRes[k]), acc), [])\n } : {\n [And]: entries.map(k => ({\n [Or]: multiRes[k]\n }))\n };\n }\n return resolved;\n}\nvar ops = {\n [`${SelectionId}_union`]: union,\n [`${SelectionId}_intersect`]: intersection,\n E_union: function (base, value) {\n if (!base.length) return value;\n var i = 0,\n n = value.length;\n for (; i < n; ++i) if (base.indexOf(value[i]) < 0) base.push(value[i]);\n return base;\n },\n E_intersect: function (base, value) {\n return !base.length ? value : base.filter(v => value.indexOf(v) >= 0);\n },\n R_union: function (base, value) {\n var lo = toNumber(value[0]),\n hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n if (!base.length) return [lo, hi];\n if (base[0] > lo) base[0] = lo;\n if (base[1] < hi) base[1] = hi;\n return base;\n },\n R_intersect: function (base, value) {\n var lo = toNumber(value[0]),\n hi = toNumber(value[1]);\n if (lo > hi) {\n lo = value[1];\n hi = value[0];\n }\n if (!base.length) return [lo, hi];\n if (hi < base[0] || base[1] < lo) {\n return [];\n } else {\n if (base[0] < lo) base[0] = lo;\n if (base[1] > hi) base[1] = hi;\n }\n return base;\n }\n};\n\nconst DataPrefix = ':',\n IndexPrefix = '@';\nfunction selectionVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to selection functions must be a string literal.');\n const data = args[0].value,\n op = args.length >= 2 && peek(args).value,\n field = 'unit',\n indexName = IndexPrefix + field,\n dataName = DataPrefix + data;\n\n // eslint-disable-next-line no-prototype-builtins\n if (op === Intersect && !hasOwnProperty(params, indexName)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n\n // eslint-disable-next-line no-prototype-builtins\n if (!hasOwnProperty(params, dataName)) {\n params[dataName] = scope.getData(data).tuplesRef();\n }\n}\n\nexport { selectionIdTest, selectionResolve, selectionTest, selectionTuples, selectionVisitor };\n", "import { truthy, error, hasOwnProperty, isFunction, isString, stringValue, extend, isArray, isObject, field, peek, identity, array as array$1, isBoolean, isDate, isNumber, isRegExp, toBoolean, toDate, toNumber, toString, flush, lerp, pad, span, inrange, truncate, quarter, utcquarter, extent, clampRange, panLinear, panLog, panPow, panSymlog, zoomLinear, zoomLog, zoomPow, zoomSymlog } from 'vega-util';\nimport { Literal, codegenExpression, constants, functions, parseExpression, CallExpression } from 'vega-expression';\nimport { isRegisteredScale, bandSpace, scale as scale$1, scaleFraction } from 'vega-scale';\nimport { geoArea as geoArea$1, geoBounds as geoBounds$1, geoCentroid as geoCentroid$1 } from 'd3-geo';\nimport { rgb, lab, hcl, hsl } from 'd3-color';\nimport { isTuple } from 'vega-dataflow';\nimport { Gradient, pathRender, pathParse, Bounds, intersect as intersect$1 } from 'vega-scenegraph';\nimport { selectionVisitor, selectionTest, selectionIdTest, selectionResolve, selectionTuples } from 'vega-selections';\nimport { random, cumulativeNormal, cumulativeLogNormal, cumulativeUniform, densityNormal, densityLogNormal, densityUniform, quantileNormal, quantileLogNormal, quantileUniform, sampleNormal, sampleLogNormal, sampleUniform } from 'vega-statistics';\nimport { utcOffset, utcSequence, timeOffset, timeSequence, timeUnitSpecifier, week, utcweek, dayofyear, utcdayofyear } from 'vega-time';\nimport { range as range$1 } from 'd3-array';\n\nfunction data(name) {\n const data = this.context.data[name];\n return data ? data.values.value : [];\n}\nfunction indata(name, field, value) {\n const index = this.context.data[name]['index:' + field],\n entry = index ? index.value.get(value) : undefined;\n return entry ? entry.count : entry;\n}\nfunction setdata(name, tuples) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input;\n df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n return 1;\n}\n\nfunction encode (item, name, retval) {\n if (item) {\n const df = this.context.dataflow,\n target = item.mark.source;\n df.pulse(target, df.changeset().encode(item, name));\n }\n return retval !== undefined ? retval : item;\n}\n\nconst wrap = method => function (value, spec) {\n const locale = this.context.dataflow.locale();\n return locale[method](spec)(value);\n};\nconst format = wrap('format');\nconst timeFormat = wrap('timeFormat');\nconst utcFormat = wrap('utcFormat');\nconst timeParse = wrap('timeParse');\nconst utcParse = wrap('utcParse');\nconst dateObj = new Date(2000, 0, 1);\nfunction time(month, day, specifier) {\n if (!Number.isInteger(month) || !Number.isInteger(day)) return '';\n dateObj.setYear(2000);\n dateObj.setMonth(month);\n dateObj.setDate(day);\n return timeFormat.call(this, dateObj, specifier);\n}\nfunction monthFormat(month) {\n return time.call(this, month, 1, '%B');\n}\nfunction monthAbbrevFormat(month) {\n return time.call(this, month, 1, '%b');\n}\nfunction dayFormat(day) {\n return time.call(this, 0, 2 + day, '%A');\n}\nfunction dayAbbrevFormat(day) {\n return time.call(this, 0, 2 + day, '%a');\n}\n\nconst DataPrefix = ':';\nconst IndexPrefix = '@';\nconst ScalePrefix = '%';\nconst SignalPrefix = '$';\n\nfunction dataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) {\n error('First argument to data functions must be a string literal.');\n }\n const data = args[0].value,\n dataName = DataPrefix + data;\n if (!hasOwnProperty(dataName, params)) {\n try {\n params[dataName] = scope.getData(data).tuplesRef();\n } catch (err) {\n // if data set does not exist, there's nothing to track\n }\n }\n}\nfunction indataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n const data = args[0].value,\n field = args[1].value,\n indexName = IndexPrefix + field;\n if (!hasOwnProperty(indexName, params)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n}\nfunction scaleVisitor(name, args, scope, params) {\n if (args[0].type === Literal) {\n // add scale dependency\n addScaleDependency(scope, params, args[0].value);\n } else {\n // indirect scale lookup; add all scales as parameters\n for (name in scope.scales) {\n addScaleDependency(scope, params, name);\n }\n }\n}\nfunction addScaleDependency(scope, params, name) {\n const scaleName = ScalePrefix + name;\n if (!hasOwnProperty(params, scaleName)) {\n try {\n params[scaleName] = scope.scaleRef(name);\n } catch (err) {\n // TODO: error handling? warning?\n }\n }\n}\n\nfunction getScale(nameOrFunction, ctx) {\n if (isFunction(nameOrFunction)) {\n return nameOrFunction;\n }\n if (isString(nameOrFunction)) {\n const maybeScale = ctx.scales[nameOrFunction];\n return maybeScale && isRegisteredScale(maybeScale.value) ? maybeScale.value : undefined;\n }\n return undefined;\n}\nfunction internalScaleFunctions(codegen, fnctx, visitors) {\n // add helper method to the 'this' expression function context\n fnctx.__bandwidth = s => s && s.bandwidth ? s.bandwidth() : 0;\n\n // register AST visitors for internal scale functions\n visitors._bandwidth = scaleVisitor;\n visitors._range = scaleVisitor;\n visitors._scale = scaleVisitor;\n\n // resolve scale reference directly to the signal hash argument\n const ref = arg => '_[' + (arg.type === Literal ? stringValue(ScalePrefix + arg.value) : stringValue(ScalePrefix) + '+' + codegen(arg)) + ']';\n\n // define and return internal scale function code generators\n // these internal functions are called by mark encoders\n return {\n _bandwidth: args => `this.__bandwidth(${ref(args[0])})`,\n _range: args => `${ref(args[0])}.range()`,\n _scale: args => `${ref(args[0])}(${codegen(args[1])})`\n };\n}\n\nfunction geoMethod(methodName, globalMethod) {\n return function (projection, geojson, group) {\n if (projection) {\n // projection defined, use it\n const p = getScale(projection, (group || this).context);\n return p && p.path[methodName](geojson);\n } else {\n // projection undefined, use global method\n return globalMethod(geojson);\n }\n };\n}\nconst geoArea = geoMethod('area', geoArea$1);\nconst geoBounds = geoMethod('bounds', geoBounds$1);\nconst geoCentroid = geoMethod('centroid', geoCentroid$1);\nfunction geoScale(projection, group) {\n const p = getScale(projection, (group || this).context);\n return p && p.scale();\n}\n\nfunction inScope (item) {\n const group = this.context.group;\n let value = false;\n if (group) while (item) {\n if (item === group) {\n value = true;\n break;\n }\n item = item.mark.group;\n }\n return value;\n}\n\nfunction log(df, method, args) {\n try {\n df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n } catch (err) {\n df.warn(err);\n }\n return args[args.length - 1];\n}\nfunction warn() {\n return log(this.context.dataflow, 'warn', arguments);\n}\nfunction info() {\n return log(this.context.dataflow, 'info', arguments);\n}\nfunction debug() {\n return log(this.context.dataflow, 'debug', arguments);\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\nfunction channel_luminance_value(channelValue) {\n const val = channelValue / 255;\n if (val <= 0.03928) {\n return val / 12.92;\n }\n return Math.pow((val + 0.055) / 1.055, 2.4);\n}\nfunction luminance(color) {\n const c = rgb(color),\n r = channel_luminance_value(c.r),\n g = channel_luminance_value(c.g),\n b = channel_luminance_value(c.b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\nfunction contrast(color1, color2) {\n const lum1 = luminance(color1),\n lum2 = luminance(color2),\n lumL = Math.max(lum1, lum2),\n lumD = Math.min(lum1, lum2);\n return (lumL + 0.05) / (lumD + 0.05);\n}\n\nfunction merge () {\n const args = [].slice.call(arguments);\n args.unshift({});\n return extend(...args);\n}\n\nfunction equal(a, b) {\n return a === b || a !== a && b !== b ? true : isArray(a) ? isArray(b) && a.length === b.length ? equalArray(a, b) : false : isObject(a) && isObject(b) ? equalObject(a, b) : false;\n}\nfunction equalArray(a, b) {\n for (let i = 0, n = a.length; i < n; ++i) {\n if (!equal(a[i], b[i])) return false;\n }\n return true;\n}\nfunction equalObject(a, b) {\n for (const key in a) {\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n}\nfunction removePredicate(props) {\n return _ => equalObject(props, _);\n}\nfunction modify (name, insert, remove, toggle, modify, values) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input,\n stamp = df.stamp();\n let changes = data.changes,\n predicate,\n key;\n if (df._trigger === false || !(input.value.length || insert || toggle)) {\n // nothing to do!\n return 0;\n }\n if (!changes || changes.stamp < stamp) {\n data.changes = changes = df.changeset();\n changes.stamp = stamp;\n df.runAfter(() => {\n data.modified = true;\n df.pulse(input, changes).run();\n }, true, 1);\n }\n if (remove) {\n predicate = remove === true ? truthy : isArray(remove) || isTuple(remove) ? remove : removePredicate(remove);\n changes.remove(predicate);\n }\n if (insert) {\n changes.insert(insert);\n }\n if (toggle) {\n predicate = removePredicate(toggle);\n if (input.value.some(predicate)) {\n changes.remove(predicate);\n } else {\n changes.insert(toggle);\n }\n }\n if (modify) {\n for (key in values) {\n changes.modify(modify, key, values[key]);\n }\n }\n return 1;\n}\n\nfunction pinchDistance(event) {\n const t = event.touches,\n dx = t[0].clientX - t[1].clientX,\n dy = t[0].clientY - t[1].clientY;\n return Math.hypot(dx, dy);\n}\nfunction pinchAngle(event) {\n const t = event.touches;\n return Math.atan2(t[0].clientY - t[1].clientY, t[0].clientX - t[1].clientX);\n}\n\n// memoize accessor functions\nconst accessors = {};\nfunction pluck (data, name) {\n const accessor = accessors[name] || (accessors[name] = field(name));\n return isArray(data) ? data.map(accessor) : accessor(data);\n}\n\nfunction array(seq) {\n return isArray(seq) || ArrayBuffer.isView(seq) ? seq : null;\n}\nfunction sequence(seq) {\n return array(seq) || (isString(seq) ? seq : null);\n}\nfunction join(seq) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return array(seq).join(...args);\n}\nfunction indexof(seq) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return sequence(seq).indexOf(...args);\n}\nfunction lastindexof(seq) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return sequence(seq).lastIndexOf(...args);\n}\nfunction slice(seq) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n return sequence(seq).slice(...args);\n}\nfunction replace(str, pattern, repl) {\n if (isFunction(repl)) error('Function argument passed to replace.');\n return String(str).replace(pattern, repl);\n}\nfunction reverse(seq) {\n return array(seq).slice().reverse();\n}\n\nfunction bandspace(count, paddingInner, paddingOuter) {\n return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\nfunction bandwidth(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.bandwidth ? s.bandwidth() : 0;\n}\nfunction copy(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.copy() : undefined;\n}\nfunction domain(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.domain() : [];\n}\nfunction invert(name, range, group) {\n const s = getScale(name, (group || this).context);\n return !s ? undefined : isArray(range) ? (s.invertRange || s.invert)(range) : (s.invert || s.invertExtent)(range);\n}\nfunction range(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.range ? s.range() : [];\n}\nfunction scale(name, value, group) {\n const s = getScale(name, (group || this).context);\n return s ? s(value) : undefined;\n}\n\nfunction scaleGradient (scale, p0, p1, count, group) {\n scale = getScale(scale, (group || this).context);\n const gradient = Gradient(p0, p1);\n let stops = scale.domain(),\n min = stops[0],\n max = peek(stops),\n fraction = identity;\n if (!(max - min)) {\n // expand scale if domain has zero span, fix #1479\n scale = (scale.interpolator ? scale$1('sequential')().interpolator(scale.interpolator()) : scale$1('linear')().interpolate(scale.interpolate()).range(scale.range())).domain([min = 0, max = 1]);\n } else {\n fraction = scaleFraction(scale, min, max);\n }\n if (scale.ticks) {\n stops = scale.ticks(+count || 15);\n if (min !== stops[0]) stops.unshift(min);\n if (max !== peek(stops)) stops.push(max);\n }\n stops.forEach(_ => gradient.stop(fraction(_), scale(_)));\n return gradient;\n}\n\nfunction geoShape(projection, geojson, group) {\n const p = getScale(projection, (group || this).context);\n return function (context) {\n return p ? p.path.context(context)(geojson) : '';\n };\n}\nfunction pathShape(path) {\n let p = null;\n return function (context) {\n return context ? pathRender(context, p = p || pathParse(path)) : path;\n };\n}\n\nconst datum = d => d.data;\nfunction treeNodes(name, context) {\n const tree = data.call(context, name);\n return tree.root && tree.root.lookup || {};\n}\nfunction treePath(name, source, target) {\n const nodes = treeNodes(name, this),\n s = nodes[source],\n t = nodes[target];\n return s && t ? s.path(t).map(datum) : undefined;\n}\nfunction treeAncestors(name, node) {\n const n = treeNodes(name, this)[node];\n return n ? n.ancestors().map(datum) : undefined;\n}\n\nconst _window = () => typeof window !== 'undefined' && window || null;\nfunction screen() {\n const w = _window();\n return w ? w.screen : {};\n}\nfunction windowSize() {\n const w = _window();\n return w ? [w.innerWidth, w.innerHeight] : [undefined, undefined];\n}\nfunction containerSize() {\n const view = this.context.dataflow,\n el = view.container && view.container();\n return el ? [el.clientWidth, el.clientHeight] : [undefined, undefined];\n}\n\nfunction intersect (b, opt, group) {\n if (!b) return [];\n const [u, v] = b,\n box = new Bounds().set(u[0], u[1], v[0], v[1]),\n scene = group || this.context.dataflow.scenegraph().root;\n return intersect$1(scene, box, filter(opt));\n}\nfunction filter(opt) {\n let p = null;\n if (opt) {\n const types = array$1(opt.marktype),\n names = array$1(opt.markname);\n p = _ => (!types.length || types.some(t => _.marktype === t)) && (!names.length || names.some(s => _.name === s));\n }\n return p;\n}\n\n/**\n * Appends a new point to the lasso\n *\n * @param {*} lasso the lasso in pixel space\n * @param {*} x the x coordinate in pixel space\n * @param {*} y the y coordinate in pixel space\n * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point\n * @returns a new array containing the lasso with the new point\n */\nfunction lassoAppend(lasso, x, y) {\n let minDist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5;\n lasso = array$1(lasso);\n const last = lasso[lasso.length - 1];\n\n // Add point to lasso if its the first point or distance to last point exceed minDist\n return last === undefined || Math.hypot(last[0] - x, last[1] - y) > minDist ? [...lasso, [x, y]] : lasso;\n}\n\n/**\n * Generates a svg path command which draws a lasso\n *\n * @param {*} lasso the lasso in pixel space in the form [[x,y], [x,y], ...]\n * @returns the svg path command that draws the lasso\n */\nfunction lassoPath(lasso) {\n return array$1(lasso).reduce((svg, _ref, i) => {\n let [x, y] = _ref;\n return svg += i == 0 ? `M ${x},${y} ` : i === lasso.length - 1 ? ' Z' : `L ${x},${y} `;\n }, '');\n}\n\n/**\n * Inverts the lasso from pixel space to an array of vega scenegraph tuples\n *\n * @param {*} data the dataset\n * @param {*} pixelLasso the lasso in pixel space, [[x,y], [x,y], ...]\n * @param {*} unit the unit where the lasso is defined\n *\n * @returns an array of vega scenegraph tuples\n */\nfunction intersectLasso(markname, pixelLasso, unit) {\n const {\n x,\n y,\n mark\n } = unit;\n const bb = new Bounds().set(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n\n // Get bounding box around lasso\n for (const [px, py] of pixelLasso) {\n if (px < bb.x1) bb.x1 = px;\n if (px > bb.x2) bb.x2 = px;\n if (py < bb.y1) bb.y1 = py;\n if (py > bb.y2) bb.y2 = py;\n }\n\n // Translate bb against unit coordinates\n bb.translate(x, y);\n const intersection = intersect([[bb.x1, bb.y1], [bb.x2, bb.y2]], markname, mark);\n\n // Check every point against the lasso\n return intersection.filter(tuple => pointInPolygon(tuple.x, tuple.y, pixelLasso));\n}\n\n/**\n * Performs a test if a point is inside a polygon based on the idea from\n * https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n *\n * This method will not need the same start/end point since it wraps around the edges of the array\n *\n * @param {*} test a point to test against\n * @param {*} polygon a polygon in the form [[x,y], [x,y], ...]\n * @returns true if the point lies inside the polygon, false otherwise\n */\nfunction pointInPolygon(testx, testy, polygon) {\n let intersections = 0;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const [prevX, prevY] = polygon[j];\n const [x, y] = polygon[i];\n\n // count intersections\n if (y > testy != prevY > testy && testx < (prevX - x) * (testy - y) / (prevY - y) + x) {\n intersections++;\n }\n }\n\n // point is in polygon if intersection count is odd\n return intersections & 1;\n}\n\n// Expression function context object\nconst functionContext = {\n random() {\n return random();\n },\n // override default\n cumulativeNormal,\n cumulativeLogNormal,\n cumulativeUniform,\n densityNormal,\n densityLogNormal,\n densityUniform,\n quantileNormal,\n quantileLogNormal,\n quantileUniform,\n sampleNormal,\n sampleLogNormal,\n sampleUniform,\n isArray,\n isBoolean,\n isDate,\n isDefined(_) {\n return _ !== undefined;\n },\n isNumber,\n isObject,\n isRegExp,\n isString,\n isTuple,\n isValid(_) {\n return _ != null && _ === _;\n },\n toBoolean,\n toDate(_) {\n return toDate(_);\n },\n // suppress extra arguments\n toNumber,\n toString,\n indexof,\n join,\n lastindexof,\n replace,\n reverse,\n slice,\n flush,\n lerp,\n merge,\n pad,\n peek,\n pluck,\n span,\n inrange,\n truncate,\n rgb,\n lab,\n hcl,\n hsl,\n luminance,\n contrast,\n sequence: range$1,\n format,\n utcFormat,\n utcParse,\n utcOffset,\n utcSequence,\n timeFormat,\n timeParse,\n timeOffset,\n timeSequence,\n timeUnitSpecifier,\n monthFormat,\n monthAbbrevFormat,\n dayFormat,\n dayAbbrevFormat,\n quarter,\n utcquarter,\n week,\n utcweek,\n dayofyear,\n utcdayofyear,\n warn,\n info,\n debug,\n extent(_) {\n return extent(_);\n },\n // suppress extra arguments\n inScope,\n intersect,\n clampRange,\n pinchDistance,\n pinchAngle,\n screen,\n containerSize,\n windowSize,\n bandspace,\n setdata,\n pathShape,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog,\n encode,\n modify,\n lassoAppend,\n lassoPath,\n intersectLasso\n};\nconst eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'],\n // event functions\n eventPrefix = 'event.vega.',\n // event function prefix\n thisPrefix = 'this.',\n // function context prefix\n astVisitors = {}; // AST visitors for dependency analysis\n\n// export code generator parameters\nconst codegenParams = {\n forbidden: ['_'],\n allowed: ['datum', 'event', 'item'],\n fieldvar: 'datum',\n globalvar: id => `_[${stringValue(SignalPrefix + id)}]`,\n functions: buildFunctions,\n constants: constants,\n visitors: astVisitors\n};\n\n// export code generator\nconst codeGenerator = codegenExpression(codegenParams);\n\n// Build expression function registry\nfunction buildFunctions(codegen) {\n const fn = functions(codegen);\n eventFunctions.forEach(name => fn[name] = eventPrefix + name);\n for (const name in functionContext) {\n fn[name] = thisPrefix + name;\n }\n extend(fn, internalScaleFunctions(codegen, functionContext, astVisitors));\n return fn;\n}\n\n// Register an expression function\nfunction expressionFunction(name, fn, visitor) {\n if (arguments.length === 1) {\n return functionContext[name];\n }\n\n // register with the functionContext\n functionContext[name] = fn;\n\n // if there is an astVisitor register that, too\n if (visitor) astVisitors[name] = visitor;\n\n // if the code generator has already been initialized,\n // we need to also register the function with it\n if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n return this;\n}\n\n// register expression functions with ast visitors\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('geoScale', geoScale, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor);\n\n// register Vega-Lite selection functions\nexpressionFunction('vlSelectionTest', selectionTest, selectionVisitor);\nexpressionFunction('vlSelectionIdTest', selectionIdTest, selectionVisitor);\nexpressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);\nexpressionFunction('vlSelectionTuples', selectionTuples);\n\nfunction parser (expr, scope) {\n const params = {};\n\n // parse the expression to an abstract syntax tree (ast)\n let ast;\n try {\n expr = isString(expr) ? expr : stringValue(expr) + '';\n ast = parseExpression(expr);\n } catch (err) {\n error('Expression parse error: ' + expr);\n }\n\n // analyze ast function calls for dependencies\n ast.visit(node => {\n if (node.type !== CallExpression) return;\n const name = node.callee.name,\n visit = codegenParams.visitors[name];\n if (visit) visit(name, node.arguments, scope, params);\n });\n\n // perform code generation\n const gen = codeGenerator(ast);\n\n // collect signal dependencies\n gen.globals.forEach(name => {\n const signalName = SignalPrefix + name;\n if (!hasOwnProperty(params, signalName) && scope.getSignal(name)) {\n params[signalName] = scope.signalRef(name);\n }\n });\n\n // return generated expression code and dependencies\n return {\n $expr: extend({\n code: gen.code\n }, scope.options.ast ? {\n ast\n } : null),\n $fields: gen.fields,\n $params: params\n };\n}\n\nexport { DataPrefix, IndexPrefix, ScalePrefix, SignalPrefix, bandspace, bandwidth, codeGenerator, codegenParams, containerSize, contrast, copy, data, dataVisitor, dayAbbrevFormat, dayFormat, debug, domain, encode, expressionFunction, format, functionContext, geoArea, geoBounds, geoCentroid, geoScale, geoShape, inScope, indata, indataVisitor, indexof, info, invert, join, lastindexof, luminance, merge, modify, monthAbbrevFormat, monthFormat, parser as parseExpression, pathShape, pinchAngle, pinchDistance, pluck, range, replace, reverse, scale, scaleGradient, scaleVisitor, screen, setdata, slice, timeFormat, timeParse, treeAncestors, treePath, utcFormat, utcParse, warn, windowSize };\n", "import { toSet, stringValue, error, isArray, isObject, hasOwnProperty, accessor, key, field, array, compare, truthy } from 'vega-util';\nimport { tupleid } from 'vega-dataflow';\n\n/**\n * Parse a serialized dataflow specification.\n */\nfunction parse (spec) {\n const ctx = this,\n operators = spec.operators || [];\n\n // parse background\n if (spec.background) {\n ctx.background = spec.background;\n }\n\n // parse event configuration\n if (spec.eventConfig) {\n ctx.eventConfig = spec.eventConfig;\n }\n\n // parse locale configuration\n if (spec.locale) {\n ctx.locale = spec.locale;\n }\n\n // parse operators\n operators.forEach(entry => ctx.parseOperator(entry));\n\n // parse operator parameters\n operators.forEach(entry => ctx.parseOperatorParameters(entry));\n\n // parse streams\n (spec.streams || []).forEach(entry => ctx.parseStream(entry));\n\n // parse updates\n (spec.updates || []).forEach(entry => ctx.parseUpdate(entry));\n return ctx.resolve();\n}\n\nconst Skip = toSet(['rule']),\n Swap = toSet(['group', 'image', 'rect']);\nfunction adjustSpatial(encode, marktype) {\n let code = '';\n if (Skip[marktype]) return code;\n if (encode.x2) {\n if (encode.x) {\n if (Swap[marktype]) {\n code += 'if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;';\n }\n code += 'o.width=o.x2-o.x;';\n } else {\n code += 'o.x=o.x2-(o.width||0);';\n }\n }\n if (encode.xc) {\n code += 'o.x=o.xc-(o.width||0)/2;';\n }\n if (encode.y2) {\n if (encode.y) {\n if (Swap[marktype]) {\n code += 'if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;';\n }\n code += 'o.height=o.y2-o.y;';\n } else {\n code += 'o.y=o.y2-(o.height||0);';\n }\n }\n if (encode.yc) {\n code += 'o.y=o.yc-(o.height||0)/2;';\n }\n return code;\n}\nfunction canonicalType(type) {\n return (type + '').toLowerCase();\n}\nfunction isOperator(type) {\n return canonicalType(type) === 'operator';\n}\nfunction isCollect(type) {\n return canonicalType(type) === 'collect';\n}\n\nfunction expression(ctx, args, code) {\n // wrap code in return statement if expression does not terminate\n if (!code.endsWith(';')) {\n code = 'return(' + code + ');';\n }\n const fn = Function(...args.concat(code));\n return ctx && ctx.functions ? fn.bind(ctx.functions) : fn;\n}\n\n// generate code for comparing a single field\nfunction _compare(u, v, lt, gt) {\n return `((u = ${u}) < (v = ${v}) || u == null) && v != null ? ${lt}\n : (u > v || v == null) && u != null ? ${gt}\n : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ${lt}\n : v !== v && u === u ? ${gt} : `;\n}\nvar expressionCodegen = {\n /**\n * Parse an expression used to update an operator value.\n */\n operator: (ctx, expr) => expression(ctx, ['_'], expr.code),\n /**\n * Parse an expression provided as an operator parameter value.\n */\n parameter: (ctx, expr) => expression(ctx, ['datum', '_'], expr.code),\n /**\n * Parse an expression applied to an event stream.\n */\n event: (ctx, expr) => expression(ctx, ['event'], expr.code),\n /**\n * Parse an expression used to handle an event-driven operator update.\n */\n handler: (ctx, expr) => {\n const code = `var datum=event.item&&event.item.datum;return ${expr.code};`;\n return expression(ctx, ['_', 'event'], code);\n },\n /**\n * Parse an expression that performs visual encoding.\n */\n encode: (ctx, encode) => {\n const {\n marktype,\n channels\n } = encode;\n let code = 'var o=item,datum=o.datum,m=0,$;';\n for (const name in channels) {\n const o = 'o[' + stringValue(name) + ']';\n code += `$=${channels[name].code};if(${o}!==$)${o}=$,m=1;`;\n }\n code += adjustSpatial(channels, marktype);\n code += 'return m;';\n return expression(ctx, ['item', '_'], code);\n },\n /**\n * Optimized code generators for access and comparison.\n */\n codegen: {\n get(path) {\n const ref = `[${path.map(stringValue).join('][')}]`;\n const get = Function('_', `return _${ref};`);\n get.path = ref;\n return get;\n },\n comparator(fields, orders) {\n let t;\n const map = (f, i) => {\n const o = orders[i];\n let u, v;\n if (f.path) {\n u = `a${f.path}`;\n v = `b${f.path}`;\n } else {\n (t = t || {})['f' + i] = f;\n u = `this.f${i}(a)`;\n v = `this.f${i}(b)`;\n }\n return _compare(u, v, -o, o);\n };\n const fn = Function('a', 'b', 'var u, v; return ' + fields.map(map).join('') + '0;');\n return t ? fn.bind(t) : fn;\n }\n }\n};\n\n/**\n * Parse a dataflow operator.\n */\nfunction parseOperator(spec) {\n const ctx = this;\n if (isOperator(spec.type) || !spec.type) {\n ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null);\n } else {\n ctx.transform(spec, spec.type);\n }\n}\n\n/**\n * Parse and assign operator parameters.\n */\nfunction parseOperatorParameters(spec) {\n const ctx = this;\n if (spec.params) {\n const op = ctx.get(spec.id);\n if (!op) error('Invalid operator id: ' + spec.id);\n ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly));\n }\n}\n\n/**\n * Parse a set of operator parameters.\n */\nfunction parseParameters(spec, params) {\n params = params || {};\n const ctx = this;\n for (const key in spec) {\n const value = spec[key];\n params[key] = isArray(value) ? value.map(v => parseParameter(v, ctx, params)) : parseParameter(value, ctx, params);\n }\n return params;\n}\n\n/**\n * Parse a single parameter.\n */\nfunction parseParameter(spec, ctx, params) {\n if (!spec || !isObject(spec)) return spec;\n for (let i = 0, n = PARSERS.length, p; i < n; ++i) {\n p = PARSERS[i];\n if (hasOwnProperty(spec, p.key)) {\n return p.parse(spec, ctx, params);\n }\n }\n return spec;\n}\n\n/** Reference parsers. */\nvar PARSERS = [{\n key: '$ref',\n parse: getOperator\n}, {\n key: '$key',\n parse: getKey\n}, {\n key: '$expr',\n parse: getExpression\n}, {\n key: '$field',\n parse: getField\n}, {\n key: '$encode',\n parse: getEncode\n}, {\n key: '$compare',\n parse: getCompare\n}, {\n key: '$context',\n parse: getContext\n}, {\n key: '$subflow',\n parse: getSubflow\n}, {\n key: '$tupleid',\n parse: getTupleId\n}];\n\n/**\n * Resolve an operator reference.\n */\nfunction getOperator(_, ctx) {\n return ctx.get(_.$ref) || error('Operator not defined: ' + _.$ref);\n}\n\n/**\n * Resolve an expression reference.\n */\nfunction getExpression(_, ctx, params) {\n if (_.$params) {\n // parse expression parameters\n ctx.parseParameters(_.$params, params);\n }\n const k = 'e:' + _.$expr.code;\n return ctx.fn[k] || (ctx.fn[k] = accessor(ctx.parameterExpression(_.$expr), _.$fields));\n}\n\n/**\n * Resolve a key accessor reference.\n */\nfunction getKey(_, ctx) {\n const k = 'k:' + _.$key + '_' + !!_.$flat;\n return ctx.fn[k] || (ctx.fn[k] = key(_.$key, _.$flat, ctx.expr.codegen));\n}\n\n/**\n * Resolve a field accessor reference.\n */\nfunction getField(_, ctx) {\n if (!_.$field) return null;\n const k = 'f:' + _.$field + '_' + _.$name;\n return ctx.fn[k] || (ctx.fn[k] = field(_.$field, _.$name, ctx.expr.codegen));\n}\n\n/**\n * Resolve a comparator function reference.\n */\nfunction getCompare(_, ctx) {\n // As of Vega 5.5.3, $tupleid sort is no longer used.\n // Keep here for now for backwards compatibility.\n const k = 'c:' + _.$compare + '_' + _.$order,\n c = array(_.$compare).map(_ => _ && _.$tupleid ? tupleid : _);\n return ctx.fn[k] || (ctx.fn[k] = compare(c, _.$order, ctx.expr.codegen));\n}\n\n/**\n * Resolve an encode operator reference.\n */\nfunction getEncode(_, ctx) {\n const spec = _.$encode,\n encode = {};\n for (const name in spec) {\n const enc = spec[name];\n encode[name] = accessor(ctx.encodeExpression(enc.$expr), enc.$fields);\n encode[name].output = enc.$output;\n }\n return encode;\n}\n\n/**\n * Resolve a context reference.\n */\nfunction getContext(_, ctx) {\n return ctx;\n}\n\n/**\n * Resolve a recursive subflow specification.\n */\nfunction getSubflow(_, ctx) {\n const spec = _.$subflow;\n return function (dataflow, key, parent) {\n const subctx = ctx.fork().parse(spec),\n op = subctx.get(spec.operators[0].id),\n p = subctx.signals.parent;\n if (p) p.set(parent);\n op.detachSubflow = () => ctx.detach(subctx);\n return op;\n };\n}\n\n/**\n * Resolve a tuple id reference.\n */\nfunction getTupleId() {\n return tupleid;\n}\n\n/**\n * Parse an event stream specification.\n */\nfunction parseStream (spec) {\n var ctx = this,\n filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined,\n stream = spec.stream != null ? ctx.get(spec.stream) : undefined,\n args;\n if (spec.source) {\n stream = ctx.events(spec.source, spec.type, filter);\n } else if (spec.merge) {\n args = spec.merge.map(_ => ctx.get(_));\n stream = args[0].merge.apply(args[0], args.slice(1));\n }\n if (spec.between) {\n args = spec.between.map(_ => ctx.get(_));\n stream = stream.between(args[0], args[1]);\n }\n if (spec.filter) {\n stream = stream.filter(filter);\n }\n if (spec.throttle != null) {\n stream = stream.throttle(+spec.throttle);\n }\n if (spec.debounce != null) {\n stream = stream.debounce(+spec.debounce);\n }\n if (stream == null) {\n error('Invalid stream definition: ' + JSON.stringify(spec));\n }\n if (spec.consume) stream.consume(true);\n ctx.stream(spec, stream);\n}\n\n/**\n * Parse an event-driven operator update.\n */\nfunction parseUpdate (spec) {\n var ctx = this,\n srcid = isObject(srcid = spec.source) ? srcid.$ref : srcid,\n source = ctx.get(srcid),\n target = null,\n update = spec.update,\n params = undefined;\n if (!source) error('Source not defined: ' + spec.source);\n target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target);\n if (update && update.$expr) {\n if (update.$params) {\n params = ctx.parseParameters(update.$params);\n }\n update = ctx.handlerExpression(update.$expr);\n }\n ctx.update(spec, source, target, update, params);\n}\n\nconst SKIP = {\n skip: true\n};\nfunction getState(options) {\n var ctx = this,\n state = {};\n if (options.signals) {\n var signals = state.signals = {};\n Object.keys(ctx.signals).forEach(key => {\n const op = ctx.signals[key];\n if (options.signals(key, op)) {\n signals[key] = op.value;\n }\n });\n }\n if (options.data) {\n var data = state.data = {};\n Object.keys(ctx.data).forEach(key => {\n const dataset = ctx.data[key];\n if (options.data(key, dataset)) {\n data[key] = dataset.input.value;\n }\n });\n }\n if (ctx.subcontext && options.recurse !== false) {\n state.subcontext = ctx.subcontext.map(ctx => ctx.getState(options));\n }\n return state;\n}\nfunction setState(state) {\n var ctx = this,\n df = ctx.dataflow,\n data = state.data,\n signals = state.signals;\n Object.keys(signals || {}).forEach(key => {\n df.update(ctx.signals[key], signals[key], SKIP);\n });\n Object.keys(data || {}).forEach(key => {\n df.pulse(ctx.data[key].input, df.changeset().remove(truthy).insert(data[key]));\n });\n (state.subcontext || []).forEach((substate, i) => {\n const subctx = ctx.subcontext[i];\n if (subctx) subctx.setState(substate);\n });\n}\n\n/**\n * Context objects store the current parse state.\n * Enables lookup of parsed operators, event streams, accessors, etc.\n * Provides a 'fork' method for creating child contexts for subflows.\n */\nfunction context (df, transforms, functions, expr) {\n return new Context(df, transforms, functions, expr);\n}\nfunction Context(df, transforms, functions, expr) {\n this.dataflow = df;\n this.transforms = transforms;\n this.events = df.events.bind(df);\n this.expr = expr || expressionCodegen, this.signals = {};\n this.scales = {};\n this.nodes = {};\n this.data = {};\n this.fn = {};\n if (functions) {\n this.functions = Object.create(functions);\n this.functions.context = this;\n }\n}\nfunction Subcontext(ctx) {\n this.dataflow = ctx.dataflow;\n this.transforms = ctx.transforms;\n this.events = ctx.events;\n this.expr = ctx.expr;\n this.signals = Object.create(ctx.signals);\n this.scales = Object.create(ctx.scales);\n this.nodes = Object.create(ctx.nodes);\n this.data = Object.create(ctx.data);\n this.fn = Object.create(ctx.fn);\n if (ctx.functions) {\n this.functions = Object.create(ctx.functions);\n this.functions.context = this;\n }\n}\nContext.prototype = Subcontext.prototype = {\n fork() {\n const ctx = new Subcontext(this);\n (this.subcontext || (this.subcontext = [])).push(ctx);\n return ctx;\n },\n detach(ctx) {\n this.subcontext = this.subcontext.filter(c => c !== ctx);\n\n // disconnect all nodes in the subcontext\n // wipe out targets first for better efficiency\n const keys = Object.keys(ctx.nodes);\n for (const key of keys) ctx.nodes[key]._targets = null;\n for (const key of keys) ctx.nodes[key].detach();\n ctx.nodes = null;\n },\n get(id) {\n return this.nodes[id];\n },\n set(id, node) {\n return this.nodes[id] = node;\n },\n add(spec, op) {\n const ctx = this,\n df = ctx.dataflow,\n data = spec.value;\n ctx.set(spec.id, op);\n if (isCollect(spec.type) && data) {\n if (data.$ingest) {\n df.ingest(op, data.$ingest, data.$format);\n } else if (data.$request) {\n df.preload(op, data.$request, data.$format);\n } else {\n df.pulse(op, df.changeset().insert(data));\n }\n }\n if (spec.root) {\n ctx.root = op;\n }\n if (spec.parent) {\n let p = ctx.get(spec.parent.$ref);\n if (p) {\n df.connect(p, [op]);\n op.targets().add(p);\n } else {\n (ctx.unresolved = ctx.unresolved || []).push(() => {\n p = ctx.get(spec.parent.$ref);\n df.connect(p, [op]);\n op.targets().add(p);\n });\n }\n }\n if (spec.signal) {\n ctx.signals[spec.signal] = op;\n }\n if (spec.scale) {\n ctx.scales[spec.scale] = op;\n }\n if (spec.data) {\n for (const name in spec.data) {\n const data = ctx.data[name] || (ctx.data[name] = {});\n spec.data[name].forEach(role => data[role] = op);\n }\n }\n },\n resolve() {\n (this.unresolved || []).forEach(fn => fn());\n delete this.unresolved;\n return this;\n },\n operator(spec, update) {\n this.add(spec, this.dataflow.add(spec.value, update));\n },\n transform(spec, type) {\n this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)]));\n },\n stream(spec, stream) {\n this.set(spec.id, stream);\n },\n update(spec, stream, target, update, params) {\n this.dataflow.on(stream, target, update, params, spec.options);\n },\n // expression parsing\n operatorExpression(expr) {\n return this.expr.operator(this, expr);\n },\n parameterExpression(expr) {\n return this.expr.parameter(this, expr);\n },\n eventExpression(expr) {\n return this.expr.event(this, expr);\n },\n handlerExpression(expr) {\n return this.expr.handler(this, expr);\n },\n encodeExpression(encode) {\n return this.expr.encode(this, encode);\n },\n // parse methods\n parse,\n parseOperator,\n parseOperatorParameters,\n parseParameters,\n parseStream,\n parseUpdate,\n // state methods\n getState,\n setState\n};\n\nexport { context };\n", "import { isString, hasOwnProperty, error, truthy, constant, extend, array, isObject, isArray, toSet, debounce, isDate, inherits, stringValue } from 'vega-util';\nimport { changeset, isChangeSet, EventStream, transforms, Dataflow, asyncCallback } from 'vega-dataflow';\nimport { point, renderModule, CanvasHandler, RenderType, Scenegraph } from 'vega-scenegraph';\nimport { tickStep } from 'd3-array';\nimport { functionContext } from 'vega-functions';\nimport { context } from 'vega-runtime';\nimport { interval } from 'd3-timer';\nimport { locale } from 'vega-format';\n\n// initialize aria role and label attributes\nfunction initializeAria(view) {\n const el = view.container();\n if (el) {\n el.setAttribute('role', 'graphics-document');\n el.setAttribute('aria-roleDescription', 'visualization');\n ariaLabel(el, view.description());\n }\n}\n\n// update aria-label if we have a DOM container element\nfunction ariaLabel(el, desc) {\n if (el) desc == null ? el.removeAttribute('aria-label') : el.setAttribute('aria-label', desc);\n}\n\nfunction background (view) {\n // respond to background signal\n view.add(null, _ => {\n view._background = _.bg;\n view._resize = 1;\n return _.bg;\n }, {\n bg: view._signals.background\n });\n}\n\nconst Default = 'default';\nfunction cursor (view) {\n // get cursor signal, add to dataflow if needed\n const cursor = view._signals.cursor || (view._signals.cursor = view.add({\n user: Default,\n item: null\n }));\n\n // evaluate cursor on each mousemove event\n view.on(view.events('view', 'mousemove'), cursor, (_, event) => {\n const value = cursor.value,\n user = value ? isString(value) ? value : value.user : Default,\n item = event.item && event.item.cursor || null;\n return value && user === value.user && item == value.item ? value : {\n user: user,\n item: item\n };\n });\n\n // when cursor signal updates, set visible cursor\n view.add(null, function (_) {\n let user = _.cursor,\n item = this.value;\n if (!isString(user)) {\n item = user.item;\n user = user.user;\n }\n setCursor(view, user && user !== Default ? user : item || user);\n return item;\n }, {\n cursor: cursor\n });\n}\nfunction setCursor(view, cursor) {\n const el = view.globalCursor() ? typeof document !== 'undefined' && document.body : view.container();\n if (el) {\n return cursor == null ? el.style.removeProperty('cursor') : el.style.cursor = cursor;\n }\n}\n\nfunction dataref(view, name) {\n var data = view._runtime.data;\n if (!hasOwnProperty(data, name)) {\n error('Unrecognized data set: ' + name);\n }\n return data[name];\n}\nfunction data(name, values) {\n return arguments.length < 2 ? dataref(this, name).values.value : change.call(this, name, changeset().remove(truthy).insert(values));\n}\nfunction change(name, changes) {\n if (!isChangeSet(changes)) {\n error('Second argument to changes must be a changeset.');\n }\n const dataset = dataref(this, name);\n dataset.modified = true;\n return this.pulse(dataset.input, changes);\n}\nfunction insert(name, _) {\n return change.call(this, name, changeset().insert(_));\n}\nfunction remove(name, _) {\n return change.call(this, name, changeset().remove(_));\n}\n\nfunction width(view) {\n var padding = view.padding();\n return Math.max(0, view._viewWidth + padding.left + padding.right);\n}\nfunction height(view) {\n var padding = view.padding();\n return Math.max(0, view._viewHeight + padding.top + padding.bottom);\n}\nfunction offset(view) {\n var padding = view.padding(),\n origin = view._origin;\n return [padding.left + origin[0], padding.top + origin[1]];\n}\nfunction resizeRenderer(view) {\n var origin = offset(view),\n w = width(view),\n h = height(view);\n view._renderer.background(view.background());\n view._renderer.resize(w, h, origin);\n view._handler.origin(origin);\n view._resizeListeners.forEach(handler => {\n try {\n handler(w, h);\n } catch (error) {\n view.error(error);\n }\n });\n}\n\n/**\n * Extend an event with additional view-specific methods.\n * Adds a new property ('vega') to an event that provides a number\n * of methods for querying information about the current interaction.\n * The vega object provides the following methods:\n * view - Returns the backing View instance.\n * item - Returns the currently active scenegraph item (if any).\n * group - Returns the currently active scenegraph group (if any).\n * This method accepts a single string-typed argument indicating the name\n * of the desired parent group. The scenegraph will be traversed from\n * the item up towards the root to search for a matching group. If no\n * argument is provided the enclosing group for the active item is\n * returned, unless the item it itself a group, in which case it is\n * returned directly.\n * xy - Returns a two-element array containing the x and y coordinates for\n * mouse or touch events. For touch events, this is based on the first\n * elements in the changedTouches array. This method accepts a single\n * argument: either an item instance or mark name that should serve as\n * the reference coordinate system. If no argument is provided the\n * top-level view coordinate system is assumed.\n * x - Returns the current x-coordinate, accepts the same arguments as xy.\n * y - Returns the current y-coordinate, accepts the same arguments as xy.\n * @param {Event} event - The input event to extend.\n * @param {Item} item - The currently active scenegraph item (if any).\n * @return {Event} - The extended input event.\n */\nfunction eventExtend (view, event, item) {\n var r = view._renderer,\n el = r && r.canvas(),\n p,\n e,\n translate;\n if (el) {\n translate = offset(view);\n e = event.changedTouches ? event.changedTouches[0] : event;\n p = point(e, el);\n p[0] -= translate[0];\n p[1] -= translate[1];\n }\n event.dataflow = view;\n event.item = item;\n event.vega = extension(view, item, p);\n return event;\n}\nfunction extension(view, item, point) {\n const itemGroup = item ? item.mark.marktype === 'group' ? item : item.mark.group : null;\n function group(name) {\n var g = itemGroup,\n i;\n if (name) for (i = item; i; i = i.mark.group) {\n if (i.mark.name === name) {\n g = i;\n break;\n }\n }\n return g && g.mark && g.mark.interactive ? g : {};\n }\n function xy(item) {\n if (!item) return point;\n if (isString(item)) item = group(item);\n const p = point.slice();\n while (item) {\n p[0] -= item.x || 0;\n p[1] -= item.y || 0;\n item = item.mark && item.mark.group;\n }\n return p;\n }\n return {\n view: constant(view),\n item: constant(item || {}),\n group: group,\n xy: xy,\n x: item => xy(item)[0],\n y: item => xy(item)[1]\n };\n}\n\nconst VIEW = 'view',\n TIMER = 'timer',\n WINDOW = 'window',\n NO_TRAP = {\n trap: false\n };\n\n/**\n * Initialize event handling configuration.\n * @param {object} config - The configuration settings.\n * @return {object}\n */\nfunction initializeEventConfig(config) {\n const events = extend({\n defaults: {}\n }, config);\n const unpack = (obj, keys) => {\n keys.forEach(k => {\n if (isArray(obj[k])) obj[k] = toSet(obj[k]);\n });\n };\n unpack(events.defaults, ['prevent', 'allow']);\n unpack(events, ['view', 'window', 'selector']);\n return events;\n}\nfunction trackEventListener(view, sources, type, handler) {\n view._eventListeners.push({\n type: type,\n sources: array(sources),\n handler: handler\n });\n}\nfunction prevent(view, type) {\n var def = view._eventConfig.defaults,\n prevent = def.prevent,\n allow = def.allow;\n return prevent === false || allow === true ? false : prevent === true || allow === false ? true : prevent ? prevent[type] : allow ? !allow[type] : view.preventDefault();\n}\nfunction permit(view, key, type) {\n const rule = view._eventConfig && view._eventConfig[key];\n if (rule === false || isObject(rule) && !rule[type]) {\n view.warn(`Blocked ${key} ${type} event listener.`);\n return false;\n }\n return true;\n}\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @return {EventStream}\n */\nfunction events(source, type, filter) {\n var view = this,\n s = new EventStream(filter),\n send = function (e, item) {\n view.runAsync(null, () => {\n if (source === VIEW && prevent(view, type)) {\n e.preventDefault();\n }\n s.receive(eventExtend(view, e, item));\n });\n },\n sources;\n if (source === TIMER) {\n if (permit(view, 'timer', type)) {\n view.timer(send, type);\n }\n } else if (source === VIEW) {\n if (permit(view, 'view', type)) {\n // send traps errors, so use {trap: false} option\n view.addEventListener(type, send, NO_TRAP);\n }\n } else {\n if (source === WINDOW) {\n if (permit(view, 'window', type) && typeof window !== 'undefined') {\n sources = [window];\n }\n } else if (typeof document !== 'undefined') {\n if (permit(view, 'selector', type)) {\n sources = Array.from(document.querySelectorAll(source));\n }\n }\n if (!sources) {\n view.warn('Can not resolve event source: ' + source);\n } else {\n for (var i = 0, n = sources.length; i < n; ++i) {\n sources[i].addEventListener(type, send);\n }\n trackEventListener(view, sources, type, send);\n }\n }\n return s;\n}\n\nfunction itemFilter(event) {\n return event.item;\n}\nfunction markTarget(event) {\n // grab upstream collector feeding the mark operator\n return event.item.mark.source;\n}\nfunction invoke(name) {\n return function (_, event) {\n return event.vega.view().changeset().encode(event.item, name);\n };\n}\nfunction hover (hoverSet, leaveSet) {\n hoverSet = [hoverSet || 'hover'];\n leaveSet = [leaveSet || 'update', hoverSet[0]];\n\n // invoke hover set upon mouseover\n this.on(this.events('view', 'mouseover', itemFilter), markTarget, invoke(hoverSet));\n\n // invoke leave set upon mouseout\n this.on(this.events('view', 'mouseout', itemFilter), markTarget, invoke(leaveSet));\n return this;\n}\n\n/**\n * Finalize a View instance that is being removed.\n * Cancel any running timers.\n * Remove all external event listeners.\n * Remove any currently displayed tooltip.\n */\nfunction finalize () {\n var tooltip = this._tooltip,\n timers = this._timers,\n listeners = this._eventListeners,\n n,\n m,\n e;\n n = timers.length;\n while (--n >= 0) {\n timers[n].stop();\n }\n n = listeners.length;\n while (--n >= 0) {\n e = listeners[n];\n m = e.sources.length;\n while (--m >= 0) {\n e.sources[m].removeEventListener(e.type, e.handler);\n }\n }\n if (tooltip) {\n tooltip.call(this, this._handler, null, null, null);\n }\n return this;\n}\n\nfunction element (tag, attr, text) {\n const el = document.createElement(tag);\n for (const key in attr) el.setAttribute(key, attr[key]);\n if (text != null) el.textContent = text;\n return el;\n}\n\nconst BindClass = 'vega-bind',\n NameClass = 'vega-bind-name',\n RadioClass = 'vega-bind-radio';\n\n/**\n * Bind a signal to an external HTML input element. The resulting two-way\n * binding will propagate input changes to signals, and propagate signal\n * changes to the input element state. If this view instance has no parent\n * element, we assume the view is headless and no bindings are created.\n * @param {Element|string} el - The parent DOM element to which the input\n * element should be appended as a child. If string-valued, this argument\n * will be treated as a CSS selector. If null or undefined, the parent\n * element of this view will be used as the element.\n * @param {object} param - The binding parameters which specify the signal\n * to bind to, the input element type, and type-specific configuration.\n * @return {View} - This view instance.\n */\nfunction bind (view, el, binding) {\n if (!el) return;\n const param = binding.param;\n let bind = binding.state;\n if (!bind) {\n bind = binding.state = {\n elements: null,\n active: false,\n set: null,\n update: value => {\n if (value != view.signal(param.signal)) {\n view.runAsync(null, () => {\n bind.source = true;\n view.signal(param.signal, value);\n });\n }\n }\n };\n if (param.debounce) {\n bind.update = debounce(param.debounce, bind.update);\n }\n }\n const create = param.input == null && param.element ? target : generate;\n create(bind, el, param, view);\n if (!bind.active) {\n view.on(view._signals[param.signal], null, () => {\n bind.source ? bind.source = false : bind.set(view.signal(param.signal));\n });\n bind.active = true;\n }\n return bind;\n}\n\n/**\n * Bind the signal to an external EventTarget.\n */\nfunction target(bind, node, param, view) {\n const type = param.event || 'input';\n const handler = () => bind.update(node.value);\n\n // initialize signal value to external input value\n view.signal(param.signal, node.value);\n\n // listen for changes on the element\n node.addEventListener(type, handler);\n\n // register with view, so we can remove it upon finalization\n trackEventListener(view, node, type, handler);\n\n // propagate change to element\n bind.set = value => {\n node.value = value;\n node.dispatchEvent(event(type));\n };\n}\nfunction event(type) {\n return typeof Event !== 'undefined' ? new Event(type) : {\n type\n };\n}\n\n/**\n * Generate an HTML input form element and bind it to a signal.\n */\nfunction generate(bind, el, param, view) {\n const value = view.signal(param.signal);\n const div = element('div', {\n 'class': BindClass\n });\n const wrapper = param.input === 'radio' ? div : div.appendChild(element('label'));\n wrapper.appendChild(element('span', {\n 'class': NameClass\n }, param.name || param.signal));\n el.appendChild(div);\n let input = form;\n switch (param.input) {\n case 'checkbox':\n input = checkbox;\n break;\n case 'select':\n input = select;\n break;\n case 'radio':\n input = radio;\n break;\n case 'range':\n input = range;\n break;\n }\n input(bind, wrapper, param, value);\n}\n\n/**\n * Generates an arbitrary input form element.\n * The input type is controlled via user-provided parameters.\n */\nfunction form(bind, el, param, value) {\n const node = element('input');\n for (const key in param) {\n if (key !== 'signal' && key !== 'element') {\n node.setAttribute(key === 'input' ? 'type' : key, param[key]);\n }\n }\n node.setAttribute('name', param.signal);\n node.value = value;\n el.appendChild(node);\n node.addEventListener('input', () => bind.update(node.value));\n bind.elements = [node];\n bind.set = value => node.value = value;\n}\n\n/**\n * Generates a checkbox input element.\n */\nfunction checkbox(bind, el, param, value) {\n const attr = {\n type: 'checkbox',\n name: param.signal\n };\n if (value) attr.checked = true;\n const node = element('input', attr);\n el.appendChild(node);\n node.addEventListener('change', () => bind.update(node.checked));\n bind.elements = [node];\n bind.set = value => node.checked = !!value || null;\n}\n\n/**\n * Generates a selection list input element.\n */\nfunction select(bind, el, param, value) {\n const node = element('select', {\n name: param.signal\n }),\n labels = param.labels || [];\n param.options.forEach((option, i) => {\n const attr = {\n value: option\n };\n if (valuesEqual(option, value)) attr.selected = true;\n node.appendChild(element('option', attr, (labels[i] || option) + ''));\n });\n el.appendChild(node);\n node.addEventListener('change', () => {\n bind.update(param.options[node.selectedIndex]);\n });\n bind.elements = [node];\n bind.set = value => {\n for (let i = 0, n = param.options.length; i < n; ++i) {\n if (valuesEqual(param.options[i], value)) {\n node.selectedIndex = i;\n return;\n }\n }\n };\n}\n\n/**\n * Generates a radio button group.\n */\nfunction radio(bind, el, param, value) {\n const group = element('span', {\n 'class': RadioClass\n }),\n labels = param.labels || [];\n el.appendChild(group);\n bind.elements = param.options.map((option, i) => {\n const attr = {\n type: 'radio',\n name: param.signal,\n value: option\n };\n if (valuesEqual(option, value)) attr.checked = true;\n const input = element('input', attr);\n input.addEventListener('change', () => bind.update(option));\n const label = element('label', {}, (labels[i] || option) + '');\n label.prepend(input);\n group.appendChild(label);\n return input;\n });\n bind.set = value => {\n const nodes = bind.elements,\n n = nodes.length;\n for (let i = 0; i < n; ++i) {\n if (valuesEqual(nodes[i].value, value)) nodes[i].checked = true;\n }\n };\n}\n\n/**\n * Generates a slider input element.\n */\nfunction range(bind, el, param, value) {\n value = value !== undefined ? value : (+param.max + +param.min) / 2;\n const max = param.max != null ? param.max : Math.max(100, +value) || 100,\n min = param.min || Math.min(0, max, +value) || 0,\n step = param.step || tickStep(min, max, 100);\n const node = element('input', {\n type: 'range',\n name: param.signal,\n min: min,\n max: max,\n step: step\n });\n node.value = value;\n const span = element('span', {}, +value);\n el.appendChild(node);\n el.appendChild(span);\n const update = () => {\n span.textContent = node.value;\n bind.update(+node.value);\n };\n\n // subscribe to both input and change\n node.addEventListener('input', update);\n node.addEventListener('change', update);\n bind.elements = [node];\n bind.set = value => {\n node.value = value;\n span.textContent = value;\n };\n}\nfunction valuesEqual(a, b) {\n return a === b || a + '' === b + '';\n}\n\nfunction initializeRenderer (view, r, el, constructor, scaleFactor, opt) {\n r = r || new constructor(view.loader());\n return r.initialize(el, width(view), height(view), offset(view), scaleFactor, opt).background(view.background());\n}\n\nfunction trap (view, fn) {\n return !fn ? null : function () {\n try {\n fn.apply(this, arguments);\n } catch (error) {\n view.error(error);\n }\n };\n}\n\nfunction initializeHandler (view, prevHandler, el, constructor) {\n // instantiate scenegraph handler\n const handler = new constructor(view.loader(), trap(view, view.tooltip())).scene(view.scenegraph().root).initialize(el, offset(view), view);\n\n // transfer event handlers\n if (prevHandler) {\n prevHandler.handlers().forEach(h => {\n handler.on(h.type, h.handler);\n });\n }\n return handler;\n}\n\nfunction initialize (el, elBind) {\n const view = this,\n type = view._renderType,\n config = view._eventConfig.bind,\n module = renderModule(type);\n\n // containing dom element\n el = view._el = el ? lookup(view, el, true) : null;\n\n // initialize aria attributes\n initializeAria(view);\n\n // select appropriate renderer & handler\n if (!module) view.error('Unrecognized renderer type: ' + type);\n const Handler = module.handler || CanvasHandler,\n Renderer = el ? module.renderer : module.headless;\n\n // initialize renderer and input handler\n view._renderer = !Renderer ? null : initializeRenderer(view, view._renderer, el, Renderer);\n view._handler = initializeHandler(view, view._handler, el, Handler);\n view._redraw = true;\n\n // initialize signal bindings\n if (el && config !== 'none') {\n elBind = elBind ? view._elBind = lookup(view, elBind, true) : el.appendChild(element('form', {\n 'class': 'vega-bindings'\n }));\n view._bind.forEach(_ => {\n if (_.param.element && config !== 'container') {\n _.element = lookup(view, _.param.element, !!_.param.input);\n }\n });\n view._bind.forEach(_ => {\n bind(view, _.element || elBind, _);\n });\n }\n return view;\n}\nfunction lookup(view, el, clear) {\n if (typeof el === 'string') {\n if (typeof document !== 'undefined') {\n el = document.querySelector(el);\n if (!el) {\n view.error('Signal bind element not found: ' + el);\n return null;\n }\n } else {\n view.error('DOM document instance not found.');\n return null;\n }\n }\n if (el && clear) {\n try {\n el.textContent = '';\n } catch (e) {\n el = null;\n view.error(e);\n }\n }\n return el;\n}\n\nconst number = _ => +_ || 0;\nconst paddingObject = _ => ({\n top: _,\n bottom: _,\n left: _,\n right: _\n});\nfunction padding (_) {\n return isObject(_) ? {\n top: number(_.top),\n bottom: number(_.bottom),\n left: number(_.left),\n right: number(_.right)\n } : paddingObject(number(_));\n}\n\n/**\n * Render the current scene in a headless fashion.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A Promise that resolves to a renderer.\n */\nasync function renderHeadless (view, type, scaleFactor, opt) {\n const module = renderModule(type),\n ctr = module && module.headless;\n if (!ctr) error('Unrecognized renderer type: ' + type);\n await view.runAsync();\n return initializeRenderer(view, null, null, ctr, scaleFactor, opt).renderAsync(view._scenegraph.root);\n}\n\n/**\n * Produce an image URL for the visualization. Depending on the type\n * parameter, the generated URL contains data for either a PNG or SVG image.\n * The URL can be used (for example) to download images of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @param {string} type - The image type. One of 'svg', 'png' or 'canvas'.\n * The 'canvas' and 'png' types are synonyms for a PNG image.\n * @return {Promise} - A promise that resolves to an image URL.\n */\nasync function renderToImageURL (type, scaleFactor) {\n if (type !== RenderType.Canvas && type !== RenderType.SVG && type !== RenderType.PNG) {\n error('Unrecognized image type: ' + type);\n }\n const r = await renderHeadless(this, type, scaleFactor);\n return type === RenderType.SVG ? toBlobURL(r.svg(), 'image/svg+xml') : r.canvas().toDataURL('image/png');\n}\nfunction toBlobURL(data, mime) {\n const blob = new Blob([data], {\n type: mime\n });\n return window.URL.createObjectURL(blob);\n}\n\n/**\n * Produce a Canvas instance containing a rendered visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to a Canvas instance.\n */\nasync function renderToCanvas (scaleFactor, opt) {\n const r = await renderHeadless(this, RenderType.Canvas, scaleFactor, opt);\n return r.canvas();\n}\n\n/**\n * Produce a rendered SVG string of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to an SVG string.\n */\nasync function renderToSVG (scaleFactor) {\n const r = await renderHeadless(this, RenderType.SVG, scaleFactor);\n return r.svg();\n}\n\nfunction runtime (view, spec, expr) {\n return context(view, transforms, functionContext, expr).parse(spec);\n}\n\nfunction scale(name) {\n var scales = this._runtime.scales;\n if (!hasOwnProperty(scales, name)) {\n error('Unrecognized scale or projection: ' + name);\n }\n return scales[name].value;\n}\n\nvar Width = 'width',\n Height = 'height',\n Padding = 'padding',\n Skip = {\n skip: true\n };\nfunction viewWidth(view, width) {\n var a = view.autosize(),\n p = view.padding();\n return width - (a && a.contains === Padding ? p.left + p.right : 0);\n}\nfunction viewHeight(view, height) {\n var a = view.autosize(),\n p = view.padding();\n return height - (a && a.contains === Padding ? p.top + p.bottom : 0);\n}\nfunction initializeResize(view) {\n var s = view._signals,\n w = s[Width],\n h = s[Height],\n p = s[Padding];\n function resetSize() {\n view._autosize = view._resize = 1;\n }\n\n // respond to width signal\n view._resizeWidth = view.add(null, _ => {\n view._width = _.size;\n view._viewWidth = viewWidth(view, _.size);\n resetSize();\n }, {\n size: w\n });\n\n // respond to height signal\n view._resizeHeight = view.add(null, _ => {\n view._height = _.size;\n view._viewHeight = viewHeight(view, _.size);\n resetSize();\n }, {\n size: h\n });\n\n // respond to padding signal\n const resizePadding = view.add(null, resetSize, {\n pad: p\n });\n\n // set rank to run immediately after source signal\n view._resizeWidth.rank = w.rank + 1;\n view._resizeHeight.rank = h.rank + 1;\n resizePadding.rank = p.rank + 1;\n}\nfunction resizeView(viewWidth, viewHeight, width, height, origin, auto) {\n this.runAfter(view => {\n let rerun = 0;\n\n // reset autosize flag\n view._autosize = 0;\n\n // width value changed: update signal, skip resize op\n if (view.width() !== width) {\n rerun = 1;\n view.signal(Width, width, Skip); // set width, skip update calc\n view._resizeWidth.skip(true); // skip width resize handler\n }\n\n // height value changed: update signal, skip resize op\n if (view.height() !== height) {\n rerun = 1;\n view.signal(Height, height, Skip); // set height, skip update calc\n view._resizeHeight.skip(true); // skip height resize handler\n }\n\n // view width changed: update view property, set resize flag\n if (view._viewWidth !== viewWidth) {\n view._resize = 1;\n view._viewWidth = viewWidth;\n }\n\n // view height changed: update view property, set resize flag\n if (view._viewHeight !== viewHeight) {\n view._resize = 1;\n view._viewHeight = viewHeight;\n }\n\n // origin changed: update view property, set resize flag\n if (view._origin[0] !== origin[0] || view._origin[1] !== origin[1]) {\n view._resize = 1;\n view._origin = origin;\n }\n\n // run dataflow on width/height signal change\n if (rerun) view.run('enter');\n if (auto) view.runAfter(v => v.resize());\n }, false, 1);\n}\n\n/**\n * Get the current view state, consisting of signal values and/or data sets.\n * @param {object} [options] - Options flags indicating which state to export.\n * If unspecified, all signals and data sets will be exported.\n * @param {function(string, Operator):boolean} [options.signals] - Optional\n * predicate function for testing if a signal should be included in the\n * exported state. If unspecified, all signals will be included, except for\n * those named 'parent' or those which refer to a Transform value.\n * @param {function(string, object):boolean} [options.data] - Optional\n * predicate function for testing if a data set's input should be included\n * in the exported state. If unspecified, all data sets that have been\n * explicitly modified will be included.\n * @param {boolean} [options.recurse=true] - Flag indicating if the exported\n * state should recursively include state from group mark sub-contexts.\n * @return {object} - An object containing the exported state values.\n */\nfunction getState(options) {\n return this._runtime.getState(options || {\n data: dataTest,\n signals: signalTest,\n recurse: true\n });\n}\nfunction dataTest(name, data) {\n return data.modified && isArray(data.input.value) && name.indexOf('_:vega:_');\n}\nfunction signalTest(name, op) {\n return !(name === 'parent' || op instanceof transforms.proxy);\n}\n\n/**\n * Sets the current view state and updates the view by invoking run.\n * @param {object} state - A state object containing signal and/or\n * data set values, following the format used by the getState method.\n * @return {View} - This view instance.\n */\nfunction setState(state) {\n this.runAsync(null, v => {\n v._trigger = false;\n v._runtime.setState(state);\n }, v => {\n v._trigger = true;\n });\n return this;\n}\n\nfunction timer (callback, delay) {\n function tick(elapsed) {\n callback({\n timestamp: Date.now(),\n elapsed: elapsed\n });\n }\n this._timers.push(interval(tick, delay));\n}\n\nfunction defaultTooltip (handler, event, item, value) {\n const el = handler.element();\n if (el) el.setAttribute('title', formatTooltip(value));\n}\nfunction formatTooltip(value) {\n return value == null ? '' : isArray(value) ? formatArray(value) : isObject(value) && !isDate(value) ? formatObject(value) : value + '';\n}\nfunction formatObject(obj) {\n return Object.keys(obj).map(key => {\n const v = obj[key];\n return key + ': ' + (isArray(v) ? formatArray(v) : formatValue(v));\n }).join('\\n');\n}\nfunction formatArray(value) {\n return '[' + value.map(formatValue).join(', ') + ']';\n}\nfunction formatValue(value) {\n return isArray(value) ? '[\\u2026]' : isObject(value) && !isDate(value) ? '{\\u2026}' : value;\n}\n\n/**\n * Create a new View instance from a Vega dataflow runtime specification.\n * The generated View will not immediately be ready for display. Callers\n * should also invoke the initialize method (e.g., to set the parent\n * DOM element in browser-based deployment) and then invoke the run\n * method to evaluate the dataflow graph. Rendering will automatically\n * be performed upon dataflow runs.\n * @constructor\n * @param {object} spec - The Vega dataflow runtime specification.\n */\nfunction View(spec, options) {\n const view = this;\n options = options || {};\n Dataflow.call(view);\n if (options.loader) view.loader(options.loader);\n if (options.logger) view.logger(options.logger);\n if (options.logLevel != null) view.logLevel(options.logLevel);\n if (options.locale || spec.locale) {\n const loc = extend({}, spec.locale, options.locale);\n view.locale(locale(loc.number, loc.time));\n }\n view._el = null;\n view._elBind = null;\n view._renderType = options.renderer || RenderType.Canvas;\n view._scenegraph = new Scenegraph();\n const root = view._scenegraph.root;\n\n // initialize renderer, handler and event management\n view._renderer = null;\n view._tooltip = options.tooltip || defaultTooltip, view._redraw = true;\n view._handler = new CanvasHandler().scene(root);\n view._globalCursor = false;\n view._preventDefault = false;\n view._timers = [];\n view._eventListeners = [];\n view._resizeListeners = [];\n\n // initialize event configuration\n view._eventConfig = initializeEventConfig(spec.eventConfig);\n view.globalCursor(view._eventConfig.globalCursor);\n\n // initialize dataflow graph\n const ctx = runtime(view, spec, options.expr);\n view._runtime = ctx;\n view._signals = ctx.signals;\n view._bind = (spec.bindings || []).map(_ => ({\n state: null,\n param: extend({}, _)\n }));\n\n // initialize scenegraph\n if (ctx.root) ctx.root.set(root);\n root.source = ctx.data.root.input;\n view.pulse(ctx.data.root.input, view.changeset().insert(root.items));\n\n // initialize view size\n view._width = view.width();\n view._height = view.height();\n view._viewWidth = viewWidth(view, view._width);\n view._viewHeight = viewHeight(view, view._height);\n view._origin = [0, 0];\n view._resize = 0;\n view._autosize = 1;\n initializeResize(view);\n\n // initialize background color\n background(view);\n\n // initialize cursor\n cursor(view);\n\n // initialize view description\n view.description(spec.description);\n\n // initialize hover proessing, if requested\n if (options.hover) view.hover();\n\n // initialize DOM container(s) and renderer\n if (options.container) view.initialize(options.container, options.bind);\n}\nfunction lookupSignal(view, name) {\n return hasOwnProperty(view._signals, name) ? view._signals[name] : error('Unrecognized signal name: ' + stringValue(name));\n}\nfunction findOperatorHandler(op, handler) {\n const h = (op._targets || []).filter(op => op._update && op._update.handler === handler);\n return h.length ? h[0] : null;\n}\nfunction addOperatorListener(view, name, op, handler) {\n let h = findOperatorHandler(op, handler);\n if (!h) {\n h = trap(view, () => handler(name, op.value));\n h.handler = handler;\n view.on(op, null, h);\n }\n return view;\n}\nfunction removeOperatorListener(view, op, handler) {\n const h = findOperatorHandler(op, handler);\n if (h) op._targets.remove(h);\n return view;\n}\ninherits(View, Dataflow, {\n // -- DATAFLOW / RENDERING ----\n\n async evaluate(encode, prerun, postrun) {\n // evaluate dataflow and prerun\n await Dataflow.prototype.evaluate.call(this, encode, prerun);\n\n // render as needed\n if (this._redraw || this._resize) {\n try {\n if (this._renderer) {\n if (this._resize) {\n this._resize = 0;\n resizeRenderer(this);\n }\n await this._renderer.renderAsync(this._scenegraph.root);\n }\n this._redraw = false;\n } catch (e) {\n this.error(e);\n }\n }\n\n // evaluate postrun\n if (postrun) asyncCallback(this, postrun);\n return this;\n },\n dirty(item) {\n this._redraw = true;\n this._renderer && this._renderer.dirty(item);\n },\n // -- GET / SET ----\n\n description(text) {\n if (arguments.length) {\n const desc = text != null ? text + '' : null;\n if (desc !== this._desc) ariaLabel(this._el, this._desc = desc);\n return this;\n }\n return this._desc;\n },\n container() {\n return this._el;\n },\n scenegraph() {\n return this._scenegraph;\n },\n origin() {\n return this._origin.slice();\n },\n signal(name, value, options) {\n const op = lookupSignal(this, name);\n return arguments.length === 1 ? op.value : this.update(op, value, options);\n },\n width(_) {\n return arguments.length ? this.signal('width', _) : this.signal('width');\n },\n height(_) {\n return arguments.length ? this.signal('height', _) : this.signal('height');\n },\n padding(_) {\n return arguments.length ? this.signal('padding', padding(_)) : padding(this.signal('padding'));\n },\n autosize(_) {\n return arguments.length ? this.signal('autosize', _) : this.signal('autosize');\n },\n background(_) {\n return arguments.length ? this.signal('background', _) : this.signal('background');\n },\n renderer(type) {\n if (!arguments.length) return this._renderType;\n if (!renderModule(type)) error('Unrecognized renderer type: ' + type);\n if (type !== this._renderType) {\n this._renderType = type;\n this._resetRenderer();\n }\n return this;\n },\n tooltip(handler) {\n if (!arguments.length) return this._tooltip;\n if (handler !== this._tooltip) {\n this._tooltip = handler;\n this._resetRenderer();\n }\n return this;\n },\n loader(loader) {\n if (!arguments.length) return this._loader;\n if (loader !== this._loader) {\n Dataflow.prototype.loader.call(this, loader);\n this._resetRenderer();\n }\n return this;\n },\n resize() {\n // set flag to perform autosize\n this._autosize = 1;\n // touch autosize signal to ensure top-level ViewLayout runs\n return this.touch(lookupSignal(this, 'autosize'));\n },\n _resetRenderer() {\n if (this._renderer) {\n this._renderer = null;\n this.initialize(this._el, this._elBind);\n }\n },\n // -- SIZING ----\n _resizeView: resizeView,\n // -- EVENT HANDLING ----\n\n addEventListener(type, handler, options) {\n let callback = handler;\n if (!(options && options.trap === false)) {\n // wrap callback in error handler\n callback = trap(this, handler);\n callback.raw = handler;\n }\n this._handler.on(type, callback);\n return this;\n },\n removeEventListener(type, handler) {\n var handlers = this._handler.handlers(type),\n i = handlers.length,\n h,\n t;\n\n // search registered handlers, remove if match found\n while (--i >= 0) {\n t = handlers[i].type;\n h = handlers[i].handler;\n if (type === t && (handler === h || handler === h.raw)) {\n this._handler.off(t, h);\n break;\n }\n }\n return this;\n },\n addResizeListener(handler) {\n const l = this._resizeListeners;\n if (l.indexOf(handler) < 0) {\n // add handler if it isn't already registered\n // note: error trapping handled elsewhere, so\n // no need to wrap handlers here\n l.push(handler);\n }\n return this;\n },\n removeResizeListener(handler) {\n var l = this._resizeListeners,\n i = l.indexOf(handler);\n if (i >= 0) {\n l.splice(i, 1);\n }\n return this;\n },\n addSignalListener(name, handler) {\n return addOperatorListener(this, name, lookupSignal(this, name), handler);\n },\n removeSignalListener(name, handler) {\n return removeOperatorListener(this, lookupSignal(this, name), handler);\n },\n addDataListener(name, handler) {\n return addOperatorListener(this, name, dataref(this, name).values, handler);\n },\n removeDataListener(name, handler) {\n return removeOperatorListener(this, dataref(this, name).values, handler);\n },\n globalCursor(_) {\n if (arguments.length) {\n if (this._globalCursor !== !!_) {\n const prev = setCursor(this, null); // clear previous cursor\n this._globalCursor = !!_;\n if (prev) setCursor(this, prev); // swap cursor\n }\n\n return this;\n } else {\n return this._globalCursor;\n }\n },\n preventDefault(_) {\n if (arguments.length) {\n this._preventDefault = _;\n return this;\n } else {\n return this._preventDefault;\n }\n },\n timer,\n events,\n finalize,\n hover,\n // -- DATA ----\n data,\n change,\n insert,\n remove,\n // -- SCALES --\n scale,\n // -- INITIALIZATION ----\n initialize,\n // -- HEADLESS RENDERING ----\n toImageURL: renderToImageURL,\n toCanvas: renderToCanvas,\n toSVG: renderToSVG,\n // -- SAVE / RESTORE STATE ----\n getState,\n setState\n});\n\nexport { View };\n", "const VIEW = 'view',\n LBRACK = '[',\n RBRACK = ']',\n LBRACE = '{',\n RBRACE = '}',\n COLON = ':',\n COMMA = ',',\n NAME = '@',\n GT = '>',\n ILLEGAL = /[[\\]{}]/,\n DEFAULT_MARKS = {\n '*': 1,\n arc: 1,\n area: 1,\n group: 1,\n image: 1,\n line: 1,\n path: 1,\n rect: 1,\n rule: 1,\n shape: 1,\n symbol: 1,\n text: 1,\n trail: 1\n };\nlet DEFAULT_SOURCE, MARKS;\n\n/**\n * Parse an event selector string.\n * Returns an array of event stream definitions.\n */\nfunction eventSelector (selector, source, marks) {\n DEFAULT_SOURCE = source || VIEW;\n MARKS = marks || DEFAULT_MARKS;\n return parseMerge(selector.trim()).map(parseSelector);\n}\nfunction isMarkType(type) {\n return MARKS[type];\n}\nfunction find(s, i, endChar, pushChar, popChar) {\n const n = s.length;\n let count = 0,\n c;\n for (; i < n; ++i) {\n c = s[i];\n if (!count && c === endChar) return i;else if (popChar && popChar.indexOf(c) >= 0) --count;else if (pushChar && pushChar.indexOf(c) >= 0) ++count;\n }\n return i;\n}\nfunction parseMerge(s) {\n const output = [],\n n = s.length;\n let start = 0,\n i = 0;\n while (i < n) {\n i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE);\n output.push(s.substring(start, i).trim());\n start = ++i;\n }\n if (output.length === 0) {\n throw 'Empty event selector: ' + s;\n }\n return output;\n}\nfunction parseSelector(s) {\n return s[0] === '[' ? parseBetween(s) : parseStream(s);\n}\nfunction parseBetween(s) {\n const n = s.length;\n let i = 1,\n b;\n i = find(s, i, RBRACK, LBRACK, RBRACK);\n if (i === n) {\n throw 'Empty between selector: ' + s;\n }\n b = parseMerge(s.substring(1, i));\n if (b.length !== 2) {\n throw 'Between selector must have two elements: ' + s;\n }\n s = s.slice(i + 1).trim();\n if (s[0] !== GT) {\n throw 'Expected \\'>\\' after between selector: ' + s;\n }\n b = b.map(parseSelector);\n const stream = parseSelector(s.slice(1).trim());\n if (stream.between) {\n return {\n between: b,\n stream: stream\n };\n } else {\n stream.between = b;\n }\n return stream;\n}\nfunction parseStream(s) {\n const stream = {\n source: DEFAULT_SOURCE\n },\n source = [];\n let throttle = [0, 0],\n markname = 0,\n start = 0,\n n = s.length,\n i = 0,\n j,\n filter;\n\n // extract throttle from end\n if (s[n - 1] === RBRACE) {\n i = s.lastIndexOf(LBRACE);\n if (i >= 0) {\n try {\n throttle = parseThrottle(s.substring(i + 1, n - 1));\n } catch (e) {\n throw 'Invalid throttle specification: ' + s;\n }\n s = s.slice(0, i).trim();\n n = s.length;\n } else throw 'Unmatched right brace: ' + s;\n i = 0;\n }\n if (!n) throw s;\n\n // set name flag based on first char\n if (s[0] === NAME) markname = ++i;\n\n // extract first part of multi-part stream selector\n j = find(s, i, COLON);\n if (j < n) {\n source.push(s.substring(start, j).trim());\n start = i = ++j;\n }\n\n // extract remaining part of stream selector\n i = find(s, i, LBRACK);\n if (i === n) {\n source.push(s.substring(start, n).trim());\n } else {\n source.push(s.substring(start, i).trim());\n filter = [];\n start = ++i;\n if (start === n) throw 'Unmatched left bracket: ' + s;\n }\n\n // extract filters\n while (i < n) {\n i = find(s, i, RBRACK);\n if (i === n) throw 'Unmatched left bracket: ' + s;\n filter.push(s.substring(start, i).trim());\n if (i < n - 1 && s[++i] !== LBRACK) throw 'Expected left bracket: ' + s;\n start = ++i;\n }\n\n // marshall event stream specification\n if (!(n = source.length) || ILLEGAL.test(source[n - 1])) {\n throw 'Invalid event selector: ' + s;\n }\n if (n > 1) {\n stream.type = source[1];\n if (markname) {\n stream.markname = source[0].slice(1);\n } else if (isMarkType(source[0])) {\n stream.marktype = source[0];\n } else {\n stream.source = source[0];\n }\n } else {\n stream.type = source[0];\n }\n if (stream.type.slice(-1) === '!') {\n stream.consume = true;\n stream.type = stream.type.slice(0, -1);\n }\n if (filter != null) stream.filter = filter;\n if (throttle[0]) stream.throttle = throttle[0];\n if (throttle[1]) stream.debounce = throttle[1];\n return stream;\n}\nfunction parseThrottle(s) {\n const a = s.split(COMMA);\n if (!s.length || a.length > 2) throw s;\n return a.map(_ => {\n const x = +_;\n if (x !== x) throw s;\n return x;\n });\n}\n\nexport { eventSelector as parseSelector };\n", "import { isObject, isArray, extend, hasOwnProperty, array, stringValue, peek, error, isString, splitAccessPath, mergeConfig } from 'vega-util';\nimport { parseExpression } from 'vega-functions';\nimport { parseSelector } from 'vega-event-selector';\nimport { isValidScaleType, isDiscrete, isQuantile, isContinuous, isDiscretizing } from 'vega-scale';\nimport { definition as definition$1 } from 'vega-dataflow';\n\nfunction parseAutosize (spec) {\n return isObject(spec) ? spec : {\n type: spec || 'pad'\n };\n}\n\nconst number = _ => +_ || 0;\nconst paddingObject = _ => ({\n top: _,\n bottom: _,\n left: _,\n right: _\n});\nfunction parsePadding (spec) {\n return !isObject(spec) ? paddingObject(number(spec)) : spec.signal ? spec : {\n top: number(spec.top),\n bottom: number(spec.bottom),\n left: number(spec.left),\n right: number(spec.right)\n };\n}\n\nconst encoder = _ => isObject(_) && !isArray(_) ? extend({}, _) : {\n value: _\n};\nfunction addEncode(object, name, value, set) {\n if (value != null) {\n const isEncoder = isObject(value) && !isArray(value) || isArray(value) && value.length && isObject(value[0]);\n\n // Always assign signal to update, even if the signal is from the enter block\n if (isEncoder) {\n object.update[name] = value;\n } else {\n object[set || 'enter'][name] = {\n value: value\n };\n }\n return 1;\n } else {\n return 0;\n }\n}\nfunction addEncoders(object, enter, update) {\n for (const name in enter) {\n addEncode(object, name, enter[name]);\n }\n for (const name in update) {\n addEncode(object, name, update[name], 'update');\n }\n}\nfunction extendEncode(encode, extra, skip) {\n for (const name in extra) {\n if (skip && hasOwnProperty(skip, name)) continue;\n encode[name] = extend(encode[name] || {}, extra[name]);\n }\n return encode;\n}\nfunction has(key, encode) {\n return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]);\n}\n\nconst MarkRole = 'mark';\nconst FrameRole = 'frame';\nconst ScopeRole = 'scope';\nconst AxisRole = 'axis';\nconst AxisDomainRole = 'axis-domain';\nconst AxisGridRole = 'axis-grid';\nconst AxisLabelRole = 'axis-label';\nconst AxisTickRole = 'axis-tick';\nconst AxisTitleRole = 'axis-title';\nconst LegendRole = 'legend';\nconst LegendBandRole = 'legend-band';\nconst LegendEntryRole = 'legend-entry';\nconst LegendGradientRole = 'legend-gradient';\nconst LegendLabelRole = 'legend-label';\nconst LegendSymbolRole = 'legend-symbol';\nconst LegendTitleRole = 'legend-title';\nconst TitleRole = 'title';\nconst TitleTextRole = 'title-text';\nconst TitleSubtitleRole = 'title-subtitle';\n\nfunction applyDefaults (encode, type, role, style, config) {\n const defaults = {},\n enter = {};\n let update, key, skip, props;\n\n // if text mark, apply global lineBreak settings (#2370)\n key = 'lineBreak';\n if (type === 'text' && config[key] != null && !has(key, encode)) {\n applyDefault(defaults, key, config[key]);\n }\n\n // ignore legend and axis roles\n if (role == 'legend' || String(role).startsWith('axis')) {\n role = null;\n }\n\n // resolve mark config\n props = role === FrameRole ? config.group : role === MarkRole ? extend({}, config.mark, config[type]) : null;\n for (key in props) {\n // do not apply defaults if relevant fields are defined\n skip = has(key, encode) || (key === 'fill' || key === 'stroke') && (has('fill', encode) || has('stroke', encode));\n if (!skip) applyDefault(defaults, key, props[key]);\n }\n\n // resolve styles, apply with increasing precedence\n array(style).forEach(name => {\n const props = config.style && config.style[name];\n for (const key in props) {\n if (!has(key, encode)) {\n applyDefault(defaults, key, props[key]);\n }\n }\n });\n encode = extend({}, encode); // defensive copy\n for (key in defaults) {\n props = defaults[key];\n if (props.signal) {\n (update = update || {})[key] = props;\n } else {\n enter[key] = props;\n }\n }\n encode.enter = extend(enter, encode.enter);\n if (update) encode.update = extend(update, encode.update);\n return encode;\n}\nfunction applyDefault(defaults, key, value) {\n defaults[key] = value && value.signal ? {\n signal: value.signal\n } : {\n value: value\n };\n}\n\nconst scaleRef = scale => isString(scale) ? stringValue(scale) : scale.signal ? `(${scale.signal})` : field(scale);\nfunction entry$1(enc) {\n if (enc.gradient != null) {\n return gradient(enc);\n }\n let value = enc.signal ? `(${enc.signal})` : enc.color ? color(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? stringValue(enc.value) : undefined;\n if (enc.scale != null) {\n value = scale(enc, value);\n }\n if (value === undefined) {\n value = null;\n }\n if (enc.exponent != null) {\n value = `pow(${value},${property(enc.exponent)})`;\n }\n if (enc.mult != null) {\n value += `*${property(enc.mult)}`;\n }\n if (enc.offset != null) {\n value += `+${property(enc.offset)}`;\n }\n if (enc.round) {\n value = `round(${value})`;\n }\n return value;\n}\nconst _color = (type, x, y, z) => `(${type}(${[x, y, z].map(entry$1).join(',')})+'')`;\nfunction color(enc) {\n return enc.c ? _color('hcl', enc.h, enc.c, enc.l) : enc.h || enc.s ? _color('hsl', enc.h, enc.s, enc.l) : enc.l || enc.a ? _color('lab', enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color('rgb', enc.r, enc.g, enc.b) : null;\n}\nfunction gradient(enc) {\n // map undefined to null; expression lang does not allow undefined\n const args = [enc.start, enc.stop, enc.count].map(_ => _ == null ? null : stringValue(_));\n\n // trim null inputs from the end\n while (args.length && peek(args) == null) args.pop();\n args.unshift(scaleRef(enc.gradient));\n return `gradient(${args.join(',')})`;\n}\nfunction property(property) {\n return isObject(property) ? '(' + entry$1(property) + ')' : property;\n}\nfunction field(ref) {\n return resolveField(isObject(ref) ? ref : {\n datum: ref\n });\n}\nfunction resolveField(ref) {\n let object, level, field;\n if (ref.signal) {\n object = 'datum';\n field = ref.signal;\n } else if (ref.group || ref.parent) {\n level = Math.max(1, ref.level || 1);\n object = 'item';\n while (level-- > 0) {\n object += '.mark.group';\n }\n if (ref.parent) {\n field = ref.parent;\n object += '.datum';\n } else {\n field = ref.group;\n }\n } else if (ref.datum) {\n object = 'datum';\n field = ref.datum;\n } else {\n error('Invalid field reference: ' + stringValue(ref));\n }\n if (!ref.signal) {\n field = isString(field) ? splitAccessPath(field).map(stringValue).join('][') : resolveField(field);\n }\n return object + '[' + field + ']';\n}\nfunction scale(enc, value) {\n const scale = scaleRef(enc.scale);\n if (enc.range != null) {\n // pull value from scale range\n value = `lerp(_range(${scale}), ${+enc.range})`;\n } else {\n // run value through scale and/or pull scale bandwidth\n if (value !== undefined) value = `_scale(${scale}, ${value})`;\n if (enc.band) {\n value = (value ? value + '+' : '') + `_bandwidth(${scale})` + (+enc.band === 1 ? '' : '*' + property(enc.band));\n if (enc.extra) {\n // include logic to handle extraneous elements\n value = `(datum.extra ? _scale(${scale}, datum.extra.value) : ${value})`;\n }\n }\n if (value == null) value = '0';\n }\n return value;\n}\n\nfunction rule (enc) {\n let code = '';\n enc.forEach(rule => {\n const value = entry$1(rule);\n code += rule.test ? `(${rule.test})?${value}:` : value;\n });\n\n // if no else clause, terminate with null (#1366)\n if (peek(code) === ':') {\n code += 'null';\n }\n return code;\n}\n\nfunction parseEncode (encode, type, role, style, scope, params) {\n const enc = {};\n params = params || {};\n params.encoders = {\n $encode: enc\n };\n encode = applyDefaults(encode, type, role, style, scope.config);\n for (const key in encode) {\n enc[key] = parseBlock(encode[key], type, params, scope);\n }\n return params;\n}\nfunction parseBlock(block, marktype, params, scope) {\n const channels = {},\n fields = {};\n for (const name in block) {\n if (block[name] != null) {\n // skip any null entries\n channels[name] = parse$1(expr(block[name]), scope, params, fields);\n }\n }\n return {\n $expr: {\n marktype,\n channels\n },\n $fields: Object.keys(fields),\n $output: Object.keys(block)\n };\n}\nfunction expr(enc) {\n return isArray(enc) ? rule(enc) : entry$1(enc);\n}\nfunction parse$1(code, scope, params, fields) {\n const expr = parseExpression(code, scope);\n expr.$fields.forEach(name => fields[name] = 1);\n extend(params, expr.$params);\n return expr.$expr;\n}\n\nconst OUTER = 'outer',\n OUTER_INVALID = ['value', 'update', 'init', 'react', 'bind'];\nfunction outerError(prefix, name) {\n error(prefix + ' for \"outer\" push: ' + stringValue(name));\n}\nfunction parseSignal (signal, scope) {\n const name = signal.name;\n if (signal.push === OUTER) {\n // signal must already be defined, raise error if not\n if (!scope.signals[name]) outerError('No prior signal definition', name);\n // signal push must not use properties reserved for standard definition\n OUTER_INVALID.forEach(prop => {\n if (signal[prop] !== undefined) outerError('Invalid property ', prop);\n });\n } else {\n // define a new signal in the current scope\n const op = scope.addSignal(name, signal.value);\n if (signal.react === false) op.react = false;\n if (signal.bind) scope.addBinding(name, signal.bind);\n }\n}\n\nfunction Entry(type, value, params, parent) {\n this.id = -1;\n this.type = type;\n this.value = value;\n this.params = params;\n if (parent) this.parent = parent;\n}\nfunction entry(type, value, params, parent) {\n return new Entry(type, value, params, parent);\n}\nfunction operator(value, params) {\n return entry('operator', value, params);\n}\n\n// -----\n\nfunction ref(op) {\n const ref = {\n $ref: op.id\n };\n // if operator not yet registered, cache ref to resolve later\n if (op.id < 0) (op.refs = op.refs || []).push(ref);\n return ref;\n}\nfunction fieldRef$1(field, name) {\n return name ? {\n $field: field,\n $name: name\n } : {\n $field: field\n };\n}\nconst keyFieldRef = fieldRef$1('key');\nfunction compareRef(fields, orders) {\n return {\n $compare: fields,\n $order: orders\n };\n}\nfunction keyRef(fields, flat) {\n const ref = {\n $key: fields\n };\n if (flat) ref.$flat = true;\n return ref;\n}\n\n// -----\n\nconst Ascending = 'ascending';\nconst Descending = 'descending';\nfunction sortKey(sort) {\n return !isObject(sort) ? '' : (sort.order === Descending ? '-' : '+') + aggrField(sort.op, sort.field);\n}\nfunction aggrField(op, field) {\n return (op && op.signal ? '$' + op.signal : op || '') + (op && field ? '_' : '') + (field && field.signal ? '$' + field.signal : field || '');\n}\n\n// -----\n\nconst Scope$1 = 'scope';\nconst View = 'view';\nfunction isSignal(_) {\n return _ && _.signal;\n}\nfunction isExpr$1(_) {\n return _ && _.expr;\n}\nfunction hasSignal(_) {\n if (isSignal(_)) return true;\n if (isObject(_)) for (const key in _) {\n if (hasSignal(_[key])) return true;\n }\n return false;\n}\nfunction value(specValue, defaultValue) {\n return specValue != null ? specValue : defaultValue;\n}\nfunction deref(v) {\n return v && v.signal || v;\n}\n\nconst Timer = 'timer';\nfunction parseStream(stream, scope) {\n const method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : error('Invalid stream specification: ' + stringValue(stream));\n return method(stream, scope);\n}\nfunction eventSource(source) {\n return source === Scope$1 ? View : source || View;\n}\nfunction mergeStream(stream, scope) {\n const list = stream.merge.map(s => parseStream(s, scope)),\n entry = streamParameters({\n merge: list\n }, stream, scope);\n return scope.addStream(entry).id;\n}\nfunction nestedStream(stream, scope) {\n const id = parseStream(stream.stream, scope),\n entry = streamParameters({\n stream: id\n }, stream, scope);\n return scope.addStream(entry).id;\n}\nfunction eventStream(stream, scope) {\n let id;\n if (stream.type === Timer) {\n id = scope.event(Timer, stream.throttle);\n stream = {\n between: stream.between,\n filter: stream.filter\n };\n } else {\n id = scope.event(eventSource(stream.source), stream.type);\n }\n const entry = streamParameters({\n stream: id\n }, stream, scope);\n return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id;\n}\nfunction streamParameters(entry, stream, scope) {\n let param = stream.between;\n if (param) {\n if (param.length !== 2) {\n error('Stream \"between\" parameter must have 2 entries: ' + stringValue(stream));\n }\n entry.between = [parseStream(param[0], scope), parseStream(param[1], scope)];\n }\n param = stream.filter ? [].concat(stream.filter) : [];\n if (stream.marktype || stream.markname || stream.markrole) {\n // add filter for mark type, name and/or role\n param.push(filterMark(stream.marktype, stream.markname, stream.markrole));\n }\n if (stream.source === Scope$1) {\n // add filter to limit events from sub-scope only\n param.push('inScope(event.item)');\n }\n if (param.length) {\n entry.filter = parseExpression('(' + param.join(')&&(') + ')', scope).$expr;\n }\n if ((param = stream.throttle) != null) {\n entry.throttle = +param;\n }\n if ((param = stream.debounce) != null) {\n entry.debounce = +param;\n }\n if (stream.consume) {\n entry.consume = true;\n }\n return entry;\n}\nfunction filterMark(type, name, role) {\n const item = 'event.item';\n return item + (type && type !== '*' ? '&&' + item + '.mark.marktype===\\'' + type + '\\'' : '') + (role ? '&&' + item + '.mark.role===\\'' + role + '\\'' : '') + (name ? '&&' + item + '.mark.name===\\'' + name + '\\'' : '');\n}\n\n// bypass expression parser for internal operator references\nconst OP_VALUE_EXPR = {\n code: '_.$value',\n ast: {\n type: 'Identifier',\n value: 'value'\n }\n};\nfunction parseUpdate (spec, scope, target) {\n const encode = spec.encode,\n entry = {\n target: target\n };\n let events = spec.events,\n update = spec.update,\n sources = [];\n if (!events) {\n error('Signal update missing events specification.');\n }\n\n // interpret as an event selector string\n if (isString(events)) {\n events = parseSelector(events, scope.isSubscope() ? Scope$1 : View);\n }\n\n // separate event streams from signal updates\n events = array(events).filter(s => s.signal || s.scale ? (sources.push(s), 0) : 1);\n\n // merge internal operator listeners\n if (sources.length > 1) {\n sources = [mergeSources(sources)];\n }\n\n // merge event streams, include as source\n if (events.length) {\n sources.push(events.length > 1 ? {\n merge: events\n } : events[0]);\n }\n if (encode != null) {\n if (update) error('Signal encode and update are mutually exclusive.');\n update = 'encode(item(),' + stringValue(encode) + ')';\n }\n\n // resolve update value\n entry.update = isString(update) ? parseExpression(update, scope) : update.expr != null ? parseExpression(update.expr, scope) : update.value != null ? update.value : update.signal != null ? {\n $expr: OP_VALUE_EXPR,\n $params: {\n $value: scope.signalRef(update.signal)\n }\n } : error('Invalid signal update specification.');\n if (spec.force) {\n entry.options = {\n force: true\n };\n }\n sources.forEach(source => scope.addUpdate(extend(streamSource(source, scope), entry)));\n}\nfunction streamSource(stream, scope) {\n return {\n source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope)\n };\n}\nfunction mergeSources(sources) {\n return {\n signal: '[' + sources.map(s => s.scale ? 'scale(\"' + s.scale + '\")' : s.signal) + ']'\n };\n}\n\nfunction parseSignalUpdates (signal, scope) {\n const op = scope.getSignal(signal.name);\n let expr = signal.update;\n if (signal.init) {\n if (expr) {\n error('Signals can not include both init and update expressions.');\n } else {\n expr = signal.init;\n op.initonly = true;\n }\n }\n if (expr) {\n expr = parseExpression(expr, scope);\n op.update = expr.$expr;\n op.params = expr.$params;\n }\n if (signal.on) {\n signal.on.forEach(_ => parseUpdate(_, scope, op.id));\n }\n}\n\nconst transform = name => (params, value, parent) => entry(name, value, params || undefined, parent);\nconst Aggregate = transform('aggregate');\nconst AxisTicks = transform('axisticks');\nconst Bound = transform('bound');\nconst Collect = transform('collect');\nconst Compare = transform('compare');\nconst DataJoin = transform('datajoin');\nconst Encode = transform('encode');\nconst Expression = transform('expression');\nconst Facet = transform('facet');\nconst Field = transform('field');\nconst Key = transform('key');\nconst LegendEntries = transform('legendentries');\nconst Load = transform('load');\nconst Mark = transform('mark');\nconst MultiExtent = transform('multiextent');\nconst MultiValues = transform('multivalues');\nconst Overlap = transform('overlap');\nconst Params = transform('params');\nconst PreFacet = transform('prefacet');\nconst Projection = transform('projection');\nconst Proxy = transform('proxy');\nconst Relay = transform('relay');\nconst Render = transform('render');\nconst Scale = transform('scale');\nconst Sieve = transform('sieve');\nconst SortItems = transform('sortitems');\nconst ViewLayout = transform('viewlayout');\nconst Values = transform('values');\n\nlet FIELD_REF_ID = 0;\nconst MULTIDOMAIN_SORT_OPS = {\n min: 'min',\n max: 'max',\n count: 'sum'\n};\nfunction initScale(spec, scope) {\n const type = spec.type || 'linear';\n if (!isValidScaleType(type)) {\n error('Unrecognized scale type: ' + stringValue(type));\n }\n scope.addScale(spec.name, {\n type,\n domain: undefined\n });\n}\nfunction parseScale(spec, scope) {\n const params = scope.getScale(spec.name).params;\n let key;\n params.domain = parseScaleDomain(spec.domain, spec, scope);\n if (spec.range != null) {\n params.range = parseScaleRange(spec, scope, params);\n }\n if (spec.interpolate != null) {\n parseScaleInterpolate(spec.interpolate, params);\n }\n if (spec.nice != null) {\n params.nice = parseScaleNice(spec.nice);\n }\n if (spec.bins != null) {\n params.bins = parseScaleBins(spec.bins, scope);\n }\n for (key in spec) {\n if (hasOwnProperty(params, key) || key === 'name') continue;\n params[key] = parseLiteral(spec[key], scope);\n }\n}\nfunction parseLiteral(v, scope) {\n return !isObject(v) ? v : v.signal ? scope.signalRef(v.signal) : error('Unsupported object: ' + stringValue(v));\n}\nfunction parseArray(v, scope) {\n return v.signal ? scope.signalRef(v.signal) : v.map(v => parseLiteral(v, scope));\n}\nfunction dataLookupError(name) {\n error('Can not find data set: ' + stringValue(name));\n}\n\n// -- SCALE DOMAIN ----\n\nfunction parseScaleDomain(domain, spec, scope) {\n if (!domain) {\n if (spec.domainMin != null || spec.domainMax != null) {\n error('No scale domain defined for domainMin/domainMax to override.');\n }\n return; // default domain\n }\n\n return domain.signal ? scope.signalRef(domain.signal) : (isArray(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope);\n}\nfunction explicitDomain(domain, spec, scope) {\n return domain.map(v => parseLiteral(v, scope));\n}\nfunction singularDomain(domain, spec, scope) {\n const data = scope.getData(domain.data);\n if (!data) dataLookupError(domain.data);\n return isDiscrete(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : isQuantile(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field);\n}\nfunction multipleDomain(domain, spec, scope) {\n const data = domain.data,\n fields = domain.fields.reduce((dom, d) => {\n d = isString(d) ? {\n data: data,\n field: d\n } : isArray(d) || d.signal ? fieldRef(d, scope) : d;\n dom.push(d);\n return dom;\n }, []);\n return (isDiscrete(spec.type) ? ordinalMultipleDomain : isQuantile(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields);\n}\nfunction fieldRef(data, scope) {\n const name = '_:vega:_' + FIELD_REF_ID++,\n coll = Collect({});\n if (isArray(data)) {\n coll.value = {\n $ingest: data\n };\n } else if (data.signal) {\n const code = 'setdata(' + stringValue(name) + ',' + data.signal + ')';\n coll.params.input = scope.signalRef(code);\n }\n scope.addDataPipeline(name, [coll, Sieve({})]);\n return {\n data: name,\n field: 'data'\n };\n}\nfunction ordinalMultipleDomain(domain, scope, fields) {\n const sort = parseSort(domain.sort, true);\n let a, v;\n\n // get value counts for each domain field\n const counts = fields.map(f => {\n const data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.countsRef(scope, f.field, sort);\n });\n\n // aggregate the results from each domain field\n const p = {\n groupby: keyFieldRef,\n pulse: counts\n };\n if (sort) {\n a = sort.op || 'count';\n v = sort.field ? aggrField(a, sort.field) : 'count';\n p.ops = [MULTIDOMAIN_SORT_OPS[a]];\n p.fields = [scope.fieldRef(v)];\n p.as = [v];\n }\n a = scope.add(Aggregate(p));\n\n // collect aggregate output\n const c = scope.add(Collect({\n pulse: ref(a)\n }));\n\n // extract values for combined domain\n v = scope.add(Values({\n field: keyFieldRef,\n sort: scope.sortRef(sort),\n pulse: ref(c)\n }));\n return ref(v);\n}\nfunction parseSort(sort, multidomain) {\n if (sort) {\n if (!sort.field && !sort.op) {\n if (isObject(sort)) sort.field = 'key';else sort = {\n field: 'key'\n };\n } else if (!sort.field && sort.op !== 'count') {\n error('No field provided for sort aggregate op: ' + sort.op);\n } else if (multidomain && sort.field) {\n if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) {\n error('Multiple domain scales can not be sorted using ' + sort.op);\n }\n }\n }\n return sort;\n}\nfunction quantileMultipleDomain(domain, scope, fields) {\n // get value arrays for each domain field\n const values = fields.map(f => {\n const data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.domainRef(scope, f.field);\n });\n\n // combine value arrays\n return ref(scope.add(MultiValues({\n values: values\n })));\n}\nfunction numericMultipleDomain(domain, scope, fields) {\n // get extents for each domain field\n const extents = fields.map(f => {\n const data = scope.getData(f.data);\n if (!data) dataLookupError(f.data);\n return data.extentRef(scope, f.field);\n });\n\n // combine extents\n return ref(scope.add(MultiExtent({\n extents: extents\n })));\n}\n\n// -- SCALE BINS -----\n\nfunction parseScaleBins(v, scope) {\n return v.signal || isArray(v) ? parseArray(v, scope) : scope.objectProperty(v);\n}\n\n// -- SCALE NICE -----\n\nfunction parseScaleNice(nice) {\n return isObject(nice) ? {\n interval: parseLiteral(nice.interval),\n step: parseLiteral(nice.step)\n } : parseLiteral(nice);\n}\n\n// -- SCALE INTERPOLATION -----\n\nfunction parseScaleInterpolate(interpolate, params) {\n params.interpolate = parseLiteral(interpolate.type || interpolate);\n if (interpolate.gamma != null) {\n params.interpolateGamma = parseLiteral(interpolate.gamma);\n }\n}\n\n// -- SCALE RANGE -----\n\nfunction parseScaleRange(spec, scope, params) {\n const config = scope.config.range;\n let range = spec.range;\n if (range.signal) {\n return scope.signalRef(range.signal);\n } else if (isString(range)) {\n if (config && hasOwnProperty(config, range)) {\n spec = extend({}, spec, {\n range: config[range]\n });\n return parseScaleRange(spec, scope, params);\n } else if (range === 'width') {\n range = [0, {\n signal: 'width'\n }];\n } else if (range === 'height') {\n range = isDiscrete(spec.type) ? [0, {\n signal: 'height'\n }] : [{\n signal: 'height'\n }, 0];\n } else {\n error('Unrecognized scale range value: ' + stringValue(range));\n }\n } else if (range.scheme) {\n params.scheme = isArray(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope);\n if (range.extent) params.schemeExtent = parseArray(range.extent, scope);\n if (range.count) params.schemeCount = parseLiteral(range.count, scope);\n return;\n } else if (range.step) {\n params.rangeStep = parseLiteral(range.step, scope);\n return;\n } else if (isDiscrete(spec.type) && !isArray(range)) {\n return parseScaleDomain(range, spec, scope);\n } else if (!isArray(range)) {\n error('Unsupported range type: ' + stringValue(range));\n }\n return range.map(v => (isArray(v) ? parseArray : parseLiteral)(v, scope));\n}\n\nfunction parseProjection (proj, scope) {\n const config = scope.config.projection || {},\n params = {};\n for (const name in proj) {\n if (name === 'name') continue;\n params[name] = parseParameter$1(proj[name], name, scope);\n }\n\n // apply projection defaults from config\n for (const name in config) {\n if (params[name] == null) {\n params[name] = parseParameter$1(config[name], name, scope);\n }\n }\n scope.addProjection(proj.name, params);\n}\nfunction parseParameter$1(_, name, scope) {\n return isArray(_) ? _.map(_ => parseParameter$1(_, name, scope)) : !isObject(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === 'fit' ? _ : error('Unsupported parameter object: ' + stringValue(_));\n}\n\nconst Top = 'top';\nconst Left = 'left';\nconst Right = 'right';\nconst Bottom = 'bottom';\nconst Center = 'center';\nconst Vertical = 'vertical';\nconst Start = 'start';\nconst Middle = 'middle';\nconst End = 'end';\nconst Index = 'index';\nconst Label = 'label';\nconst Offset = 'offset';\nconst Perc = 'perc';\nconst Perc2 = 'perc2';\nconst Value = 'value';\nconst GuideLabelStyle = 'guide-label';\nconst GuideTitleStyle = 'guide-title';\nconst GroupTitleStyle = 'group-title';\nconst GroupSubtitleStyle = 'group-subtitle';\nconst Symbols = 'symbol';\nconst Gradient = 'gradient';\nconst Discrete = 'discrete';\nconst Size = 'size';\nconst Shape = 'shape';\nconst Fill = 'fill';\nconst Stroke = 'stroke';\nconst StrokeWidth = 'strokeWidth';\nconst StrokeDash = 'strokeDash';\nconst Opacity = 'opacity';\n\n// Encoding channels supported by legends\n// In priority order of 'canonical' scale\nconst LegendScales = [Size, Shape, Fill, Stroke, StrokeWidth, StrokeDash, Opacity];\nconst Skip = {\n name: 1,\n style: 1,\n interactive: 1\n};\nconst zero = {\n value: 0\n};\nconst one = {\n value: 1\n};\n\nconst GroupMark = 'group';\nconst RectMark = 'rect';\nconst RuleMark = 'rule';\nconst SymbolMark = 'symbol';\nconst TextMark = 'text';\n\nfunction guideGroup (mark) {\n mark.type = GroupMark;\n mark.interactive = mark.interactive || false;\n return mark;\n}\n\nfunction lookup(spec, config) {\n const _ = (name, dflt) => value(spec[name], value(config[name], dflt));\n _.isVertical = s => Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection));\n _.gradientLength = () => value(spec.gradientLength, config.gradientLength || config.gradientWidth);\n _.gradientThickness = () => value(spec.gradientThickness, config.gradientThickness || config.gradientHeight);\n _.entryColumns = () => value(spec.columns, value(config.columns, +_.isVertical(true)));\n return _;\n}\nfunction getEncoding(name, encode) {\n const v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]);\n return v && v.signal ? v : v ? v.value : null;\n}\nfunction getStyle(name, scope, style) {\n const s = scope.config.style[style];\n return s && s[name];\n}\nfunction anchorExpr(s, e, m) {\n return `item.anchor === '${Start}' ? ${s} : item.anchor === '${End}' ? ${e} : ${m}`;\n}\nconst alignExpr$1 = anchorExpr(stringValue(Left), stringValue(Right), stringValue(Center));\nfunction tickBand(_) {\n const v = _('tickBand');\n let offset = _('tickOffset'),\n band,\n extra;\n if (!v) {\n // if no tick band entry, fall back on other properties\n band = _('bandPosition');\n extra = _('tickExtra');\n } else if (v.signal) {\n // if signal, augment code to interpret values\n band = {\n signal: `(${v.signal}) === 'extent' ? 1 : 0.5`\n };\n extra = {\n signal: `(${v.signal}) === 'extent'`\n };\n if (!isObject(offset)) {\n offset = {\n signal: `(${v.signal}) === 'extent' ? 0 : ${offset}`\n };\n }\n } else if (v === 'extent') {\n // if constant, simply set values\n band = 1;\n extra = true;\n offset = 0;\n } else {\n band = 0.5;\n extra = false;\n }\n return {\n extra,\n band,\n offset\n };\n}\nfunction extendOffset(value, offset) {\n return !offset ? value : !value ? offset : !isObject(value) ? {\n value,\n offset\n } : Object.assign({}, value, {\n offset: extendOffset(value.offset, offset)\n });\n}\n\nfunction guideMark (mark, extras) {\n if (extras) {\n mark.name = extras.name;\n mark.style = extras.style || mark.style;\n mark.interactive = !!extras.interactive;\n mark.encode = extendEncode(mark.encode, extras, Skip);\n } else {\n mark.interactive = false;\n }\n return mark;\n}\n\nfunction legendGradient (spec, scale, config, userEncode) {\n const _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = _.gradientThickness(),\n length = _.gradientLength();\n let enter, start, stop, width, height;\n if (vertical) {\n start = [0, 1];\n stop = [0, 0];\n width = thickness;\n height = length;\n } else {\n start = [0, 0];\n stop = [1, 0];\n width = length;\n height = thickness;\n }\n const encode = {\n enter: enter = {\n opacity: zero,\n x: zero,\n y: zero,\n width: encoder(width),\n height: encoder(height)\n },\n update: extend({}, enter, {\n opacity: one,\n fill: {\n gradient: scale,\n start: start,\n stop: stop\n }\n }),\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('gradientStrokeColor'),\n strokeWidth: _('gradientStrokeWidth')\n }, {\n // update\n opacity: _('gradientOpacity')\n });\n return guideMark({\n type: RectMark,\n role: LegendGradientRole,\n encode\n }, userEncode);\n}\n\nfunction legendGradientDiscrete (spec, scale, config, userEncode, dataRef) {\n const _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = _.gradientThickness(),\n length = _.gradientLength();\n let u,\n v,\n uu,\n vv,\n adjust = '';\n vertical ? (u = 'y', uu = 'y2', v = 'x', vv = 'width', adjust = '1-') : (u = 'x', uu = 'x2', v = 'y', vv = 'height');\n const enter = {\n opacity: zero,\n fill: {\n scale: scale,\n field: Value\n }\n };\n enter[u] = {\n signal: adjust + 'datum.' + Perc,\n mult: length\n };\n enter[v] = zero;\n enter[uu] = {\n signal: adjust + 'datum.' + Perc2,\n mult: length\n };\n enter[vv] = encoder(thickness);\n const encode = {\n enter: enter,\n update: extend({}, enter, {\n opacity: one\n }),\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('gradientStrokeColor'),\n strokeWidth: _('gradientStrokeWidth')\n }, {\n // update\n opacity: _('gradientOpacity')\n });\n return guideMark({\n type: RectMark,\n role: LegendBandRole,\n key: Value,\n from: dataRef,\n encode\n }, userEncode);\n}\n\nconst alignExpr = `datum.${Perc}<=0?\"${Left}\":datum.${Perc}>=1?\"${Right}\":\"${Center}\"`,\n baselineExpr = `datum.${Perc}<=0?\"${Bottom}\":datum.${Perc}>=1?\"${Top}\":\"${Middle}\"`;\nfunction legendGradientLabels (spec, config, userEncode, dataRef) {\n const _ = lookup(spec, config),\n vertical = _.isVertical(),\n thickness = encoder(_.gradientThickness()),\n length = _.gradientLength();\n let overlap = _('labelOverlap'),\n enter,\n update,\n u,\n v,\n adjust = '';\n const encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one,\n text: {\n field: Label\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontStyle: _('labelFontStyle'),\n fontWeight: _('labelFontWeight'),\n limit: value(spec.labelLimit, config.gradientLabelLimit)\n });\n if (vertical) {\n enter.align = {\n value: 'left'\n };\n enter.baseline = update.baseline = {\n signal: baselineExpr\n };\n u = 'y';\n v = 'x';\n adjust = '1-';\n } else {\n enter.align = update.align = {\n signal: alignExpr\n };\n enter.baseline = {\n value: 'top'\n };\n u = 'x';\n v = 'y';\n }\n enter[u] = update[u] = {\n signal: adjust + 'datum.' + Perc,\n mult: length\n };\n enter[v] = update[v] = thickness;\n thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0;\n overlap = overlap ? {\n separation: _('labelSeparation'),\n method: overlap,\n order: 'datum.' + Index\n } : undefined;\n\n // type, role, style, key, dataRef, encode, extras\n return guideMark({\n type: TextMark,\n role: LegendLabelRole,\n style: GuideLabelStyle,\n key: Value,\n from: dataRef,\n encode,\n overlap\n }, userEncode);\n}\n\n// userEncode is top-level, includes entries, symbols, labels\nfunction legendSymbolGroups (spec, config, userEncode, dataRef, columns) {\n const _ = lookup(spec, config),\n entries = userEncode.entries,\n interactive = !!(entries && entries.interactive),\n name = entries ? entries.name : undefined,\n height = _('clipHeight'),\n symbolOffset = _('symbolOffset'),\n valueRef = {\n data: 'value'\n },\n xSignal = `(${columns}) ? datum.${Offset} : datum.${Size}`,\n yEncode = height ? encoder(height) : {\n field: Size\n },\n index = `datum.${Index}`,\n ncols = `max(1, ${columns})`;\n let encode, enter, update, nrows, sort;\n yEncode.mult = 0.5;\n\n // -- LEGEND SYMBOLS --\n encode = {\n enter: enter = {\n opacity: zero,\n x: {\n signal: xSignal,\n mult: 0.5,\n offset: symbolOffset\n },\n y: yEncode\n },\n update: update = {\n opacity: one,\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero\n }\n };\n let baseFill = null,\n baseStroke = null;\n if (!spec.fill) {\n baseFill = config.symbolBaseFillColor;\n baseStroke = config.symbolBaseStrokeColor;\n }\n addEncoders(encode, {\n fill: _('symbolFillColor', baseFill),\n shape: _('symbolType'),\n size: _('symbolSize'),\n stroke: _('symbolStrokeColor', baseStroke),\n strokeDash: _('symbolDash'),\n strokeDashOffset: _('symbolDashOffset'),\n strokeWidth: _('symbolStrokeWidth')\n }, {\n // update\n opacity: _('symbolOpacity')\n });\n LegendScales.forEach(scale => {\n if (spec[scale]) {\n update[scale] = enter[scale] = {\n scale: spec[scale],\n field: Value\n };\n }\n });\n const symbols = guideMark({\n type: SymbolMark,\n role: LegendSymbolRole,\n key: Value,\n from: valueRef,\n clip: height ? true : undefined,\n encode\n }, userEncode.symbols);\n\n // -- LEGEND LABELS --\n const labelOffset = encoder(symbolOffset);\n labelOffset.offset = _('labelOffset');\n encode = {\n enter: enter = {\n opacity: zero,\n x: {\n signal: xSignal,\n offset: labelOffset\n },\n y: yEncode\n },\n update: update = {\n opacity: one,\n text: {\n field: Label\n },\n x: enter.x,\n y: enter.y\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n align: _('labelAlign'),\n baseline: _('labelBaseline'),\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontStyle: _('labelFontStyle'),\n fontWeight: _('labelFontWeight'),\n limit: _('labelLimit')\n });\n const labels = guideMark({\n type: TextMark,\n role: LegendLabelRole,\n style: GuideLabelStyle,\n key: Value,\n from: valueRef,\n encode\n }, userEncode.labels);\n\n // -- LEGEND ENTRY GROUPS --\n encode = {\n enter: {\n noBound: {\n value: !height\n },\n // ignore width/height in bounds calc\n width: zero,\n height: height ? encoder(height) : zero,\n opacity: zero\n },\n exit: {\n opacity: zero\n },\n update: update = {\n opacity: one,\n row: {\n signal: null\n },\n column: {\n signal: null\n }\n }\n };\n\n // annotate and sort groups to ensure correct ordering\n if (_.isVertical(true)) {\n nrows = `ceil(item.mark.items.length / ${ncols})`;\n update.row.signal = `${index}%${nrows}`;\n update.column.signal = `floor(${index} / ${nrows})`;\n sort = {\n field: ['row', index]\n };\n } else {\n update.row.signal = `floor(${index} / ${ncols})`;\n update.column.signal = `${index} % ${ncols}`;\n sort = {\n field: index\n };\n }\n // handle zero column case (implies infinite columns)\n update.column.signal = `(${columns})?${update.column.signal}:${index}`;\n\n // facet legend entries into sub-groups\n dataRef = {\n facet: {\n data: dataRef,\n name: 'value',\n groupby: Index\n }\n };\n return guideGroup({\n role: ScopeRole,\n from: dataRef,\n encode: extendEncode(encode, entries, Skip),\n marks: [symbols, labels],\n name,\n interactive,\n sort\n });\n}\nfunction legendSymbolLayout(spec, config) {\n const _ = lookup(spec, config);\n\n // layout parameters for legend entries\n return {\n align: _('gridAlign'),\n columns: _.entryColumns(),\n center: {\n row: true,\n column: false\n },\n padding: {\n row: _('rowPadding'),\n column: _('columnPadding')\n }\n };\n}\n\n// expression logic for align, anchor, angle, and baseline calculation\nconst isL = 'item.orient === \"left\"',\n isR = 'item.orient === \"right\"',\n isLR = `(${isL} || ${isR})`,\n isVG = `datum.vgrad && ${isLR}`,\n baseline = anchorExpr('\"top\"', '\"bottom\"', '\"middle\"'),\n alignFlip = anchorExpr('\"right\"', '\"left\"', '\"center\"'),\n exprAlign = `datum.vgrad && ${isR} ? (${alignFlip}) : (${isLR} && !(datum.vgrad && ${isL})) ? \"left\" : ${alignExpr$1}`,\n exprAnchor = `item._anchor || (${isLR} ? \"middle\" : \"start\")`,\n exprAngle = `${isVG} ? (${isL} ? -90 : 90) : 0`,\n exprBaseline = `${isLR} ? (datum.vgrad ? (${isR} ? \"bottom\" : \"top\") : ${baseline}) : \"top\"`;\nfunction legendTitle (spec, config, userEncode, dataRef) {\n const _ = lookup(spec, config);\n const encode = {\n enter: {\n opacity: zero\n },\n update: {\n opacity: one,\n x: {\n field: {\n group: 'padding'\n }\n },\n y: {\n field: {\n group: 'padding'\n }\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n orient: _('titleOrient'),\n _anchor: _('titleAnchor'),\n anchor: {\n signal: exprAnchor\n },\n angle: {\n signal: exprAngle\n },\n align: {\n signal: exprAlign\n },\n baseline: {\n signal: exprBaseline\n },\n text: spec.title,\n fill: _('titleColor'),\n fillOpacity: _('titleOpacity'),\n font: _('titleFont'),\n fontSize: _('titleFontSize'),\n fontStyle: _('titleFontStyle'),\n fontWeight: _('titleFontWeight'),\n limit: _('titleLimit'),\n lineHeight: _('titleLineHeight')\n }, {\n // require update\n align: _('titleAlign'),\n baseline: _('titleBaseline')\n });\n return guideMark({\n type: TextMark,\n role: LegendTitleRole,\n style: GuideTitleStyle,\n from: dataRef,\n encode\n }, userEncode);\n}\n\nfunction clip (clip, scope) {\n let expr;\n if (isObject(clip)) {\n if (clip.signal) {\n expr = clip.signal;\n } else if (clip.path) {\n expr = 'pathShape(' + param(clip.path) + ')';\n } else if (clip.sphere) {\n expr = 'geoShape(' + param(clip.sphere) + ', {type: \"Sphere\"})';\n }\n }\n return expr ? scope.signalRef(expr) : !!clip;\n}\nfunction param(value) {\n return isObject(value) && value.signal ? value.signal : stringValue(value);\n}\n\nfunction getRole (spec) {\n const role = spec.role || '';\n return !role.indexOf('axis') || !role.indexOf('legend') || !role.indexOf('title') ? role : spec.type === GroupMark ? ScopeRole : role || MarkRole;\n}\n\nfunction definition (spec) {\n return {\n marktype: spec.type,\n name: spec.name || undefined,\n role: spec.role || getRole(spec),\n zindex: +spec.zindex || undefined,\n aria: spec.aria,\n description: spec.description\n };\n}\n\nfunction interactive (spec, scope) {\n return spec && spec.signal ? scope.signalRef(spec.signal) : spec === false ? false : true;\n}\n\n/**\n * Parse a data transform specification.\n */\nfunction parseTransform (spec, scope) {\n const def = definition$1(spec.type);\n if (!def) error('Unrecognized transform type: ' + stringValue(spec.type));\n const t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope));\n if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t));\n t.metadata = def.metadata || {};\n return t;\n}\n\n/**\n * Parse all parameters of a data transform.\n */\nfunction parseParameters(def, spec, scope) {\n const params = {},\n n = def.params.length;\n for (let i = 0; i < n; ++i) {\n const pdef = def.params[i];\n params[pdef.name] = parseParameter(pdef, spec, scope);\n }\n return params;\n}\n\n/**\n * Parse a data transform parameter.\n */\nfunction parseParameter(def, spec, scope) {\n const type = def.type,\n value = spec[def.name];\n if (type === 'index') {\n return parseIndexParameter(def, spec, scope);\n } else if (value === undefined) {\n if (def.required) {\n error('Missing required ' + stringValue(spec.type) + ' parameter: ' + stringValue(def.name));\n }\n return;\n } else if (type === 'param') {\n return parseSubParameters(def, spec, scope);\n } else if (type === 'projection') {\n return scope.projectionRef(spec[def.name]);\n }\n return def.array && !isSignal(value) ? value.map(v => parameterValue(def, v, scope)) : parameterValue(def, value, scope);\n}\n\n/**\n * Parse a single parameter value.\n */\nfunction parameterValue(def, value, scope) {\n const type = def.type;\n if (isSignal(value)) {\n return isExpr(type) ? error('Expression references can not be signals.') : isField(type) ? scope.fieldRef(value) : isCompare(type) ? scope.compareRef(value) : scope.signalRef(value.signal);\n } else {\n const expr = def.expr || isField(type);\n return expr && outerExpr(value) ? scope.exprRef(value.expr, value.as) : expr && outerField(value) ? fieldRef$1(value.field, value.as) : isExpr(type) ? parseExpression(value, scope) : isData(type) ? ref(scope.getData(value).values) : isField(type) ? fieldRef$1(value) : isCompare(type) ? scope.compareRef(value) : value;\n }\n}\n\n/**\n * Parse parameter for accessing an index of another data set.\n */\nfunction parseIndexParameter(def, spec, scope) {\n if (!isString(spec.from)) {\n error('Lookup \"from\" parameter must be a string literal.');\n }\n return scope.getData(spec.from).lookupRef(scope, spec.key);\n}\n\n/**\n * Parse a parameter that contains one or more sub-parameter objects.\n */\nfunction parseSubParameters(def, spec, scope) {\n const value = spec[def.name];\n if (def.array) {\n if (!isArray(value)) {\n // signals not allowed!\n error('Expected an array of sub-parameters. Instead: ' + stringValue(value));\n }\n return value.map(v => parseSubParameter(def, v, scope));\n } else {\n return parseSubParameter(def, value, scope);\n }\n}\n\n/**\n * Parse a sub-parameter object.\n */\nfunction parseSubParameter(def, value, scope) {\n const n = def.params.length;\n let pdef;\n\n // loop over defs to find matching key\n for (let i = 0; i < n; ++i) {\n pdef = def.params[i];\n for (const k in pdef.key) {\n if (pdef.key[k] !== value[k]) {\n pdef = null;\n break;\n }\n }\n if (pdef) break;\n }\n // raise error if matching key not found\n if (!pdef) error('Unsupported parameter: ' + stringValue(value));\n\n // parse params, create Params transform, return ref\n const params = extend(parseParameters(pdef, value, scope), pdef.key);\n return ref(scope.add(Params(params)));\n}\n\n// -- Utilities -----\n\nconst outerExpr = _ => _ && _.expr;\nconst outerField = _ => _ && _.field;\nconst isData = _ => _ === 'data';\nconst isExpr = _ => _ === 'expr';\nconst isField = _ => _ === 'field';\nconst isCompare = _ => _ === 'compare';\n\nfunction parseData$1 (from, group, scope) {\n let facet, key, op, dataRef, parent;\n\n // if no source data, generate singleton datum\n if (!from) {\n dataRef = ref(scope.add(Collect(null, [{}])));\n }\n\n // if faceted, process facet specification\n else if (facet = from.facet) {\n if (!group) error('Only group marks can be faceted.');\n\n // use pre-faceted source data, if available\n if (facet.field != null) {\n dataRef = parent = getDataRef(facet, scope);\n } else {\n // generate facet aggregates if no direct data specification\n if (!from.data) {\n op = parseTransform(extend({\n type: 'aggregate',\n groupby: array(facet.groupby)\n }, facet.aggregate), scope);\n op.params.key = scope.keyRef(facet.groupby);\n op.params.pulse = getDataRef(facet, scope);\n dataRef = parent = ref(scope.add(op));\n } else {\n parent = ref(scope.getData(from.data).aggregate);\n }\n key = scope.keyRef(facet.groupby, true);\n }\n }\n\n // if not yet defined, get source data reference\n if (!dataRef) {\n dataRef = getDataRef(from, scope);\n }\n return {\n key: key,\n pulse: dataRef,\n parent: parent\n };\n}\nfunction getDataRef(from, scope) {\n return from.$ref ? from : from.data && from.data.$ref ? from.data : ref(scope.getData(from.data).output);\n}\n\nfunction DataScope(scope, input, output, values, aggr) {\n this.scope = scope; // parent scope object\n this.input = input; // first operator in pipeline (tuple input)\n this.output = output; // last operator in pipeline (tuple output)\n this.values = values; // operator for accessing tuples (but not tuple flow)\n\n // last aggregate in transform pipeline\n this.aggregate = aggr;\n\n // lookup table of field indices\n this.index = {};\n}\nDataScope.fromEntries = function (scope, entries) {\n const n = entries.length,\n values = entries[n - 1],\n output = entries[n - 2];\n let input = entries[0],\n aggr = null,\n i = 1;\n if (input && input.type === 'load') {\n input = entries[1];\n }\n\n // add operator entries to this scope, wire up pulse chain\n scope.add(entries[0]);\n for (; i < n; ++i) {\n entries[i].params.pulse = ref(entries[i - 1]);\n scope.add(entries[i]);\n if (entries[i].type === 'aggregate') aggr = entries[i];\n }\n return new DataScope(scope, input, output, values, aggr);\n};\nfunction fieldKey(field) {\n return isString(field) ? field : null;\n}\nfunction addSortField(scope, p, sort) {\n const as = aggrField(sort.op, sort.field);\n let s;\n if (p.ops) {\n for (let i = 0, n = p.as.length; i < n; ++i) {\n if (p.as[i] === as) return;\n }\n } else {\n p.ops = ['count'];\n p.fields = [null];\n p.as = ['count'];\n }\n if (sort.op) {\n p.ops.push((s = sort.op.signal) ? scope.signalRef(s) : sort.op);\n p.fields.push(scope.fieldRef(sort.field));\n p.as.push(as);\n }\n}\nfunction cache(scope, ds, name, optype, field, counts, index) {\n const cache = ds[name] || (ds[name] = {}),\n sort = sortKey(counts);\n let k = fieldKey(field),\n v,\n op;\n if (k != null) {\n scope = ds.scope;\n k = k + (sort ? '|' + sort : '');\n v = cache[k];\n }\n if (!v) {\n const params = counts ? {\n field: keyFieldRef,\n pulse: ds.countsRef(scope, field, counts)\n } : {\n field: scope.fieldRef(field),\n pulse: ref(ds.output)\n };\n if (sort) params.sort = scope.sortRef(counts);\n op = scope.add(entry(optype, undefined, params));\n if (index) ds.index[field] = op;\n v = ref(op);\n if (k != null) cache[k] = v;\n }\n return v;\n}\nDataScope.prototype = {\n countsRef(scope, field, sort) {\n const ds = this,\n cache = ds.counts || (ds.counts = {}),\n k = fieldKey(field);\n let v, a, p;\n if (k != null) {\n scope = ds.scope;\n v = cache[k];\n }\n if (!v) {\n p = {\n groupby: scope.fieldRef(field, 'key'),\n pulse: ref(ds.output)\n };\n if (sort && sort.field) addSortField(scope, p, sort);\n a = scope.add(Aggregate(p));\n v = scope.add(Collect({\n pulse: ref(a)\n }));\n v = {\n agg: a,\n ref: ref(v)\n };\n if (k != null) cache[k] = v;\n } else if (sort && sort.field) {\n addSortField(scope, v.agg.params, sort);\n }\n return v.ref;\n },\n tuplesRef() {\n return ref(this.values);\n },\n extentRef(scope, field) {\n return cache(scope, this, 'extent', 'extent', field, false);\n },\n domainRef(scope, field) {\n return cache(scope, this, 'domain', 'values', field, false);\n },\n valuesRef(scope, field, sort) {\n return cache(scope, this, 'vals', 'values', field, sort || true);\n },\n lookupRef(scope, field) {\n return cache(scope, this, 'lookup', 'tupleindex', field, false);\n },\n indataRef(scope, field) {\n return cache(scope, this, 'indata', 'tupleindex', field, true, true);\n }\n};\n\nfunction parseFacet (spec, scope, group) {\n const facet = spec.from.facet,\n name = facet.name,\n data = getDataRef(facet, scope);\n let op;\n if (!facet.name) {\n error('Facet must have a name: ' + stringValue(facet));\n }\n if (!facet.data) {\n error('Facet must reference a data set: ' + stringValue(facet));\n }\n if (facet.field) {\n op = scope.add(PreFacet({\n field: scope.fieldRef(facet.field),\n pulse: data\n }));\n } else if (facet.groupby) {\n op = scope.add(Facet({\n key: scope.keyRef(facet.groupby),\n group: ref(scope.proxy(group.parent)),\n pulse: data\n }));\n } else {\n error('Facet must specify groupby or field: ' + stringValue(facet));\n }\n\n // initialize facet subscope\n const subscope = scope.fork(),\n source = subscope.add(Collect()),\n values = subscope.add(Sieve({\n pulse: ref(source)\n }));\n subscope.addData(name, new DataScope(subscope, source, source, values));\n subscope.addSignal('parent', null);\n\n // parse faceted subflow\n op.params.subflow = {\n $subflow: subscope.parse(spec).toRuntime()\n };\n}\n\nfunction parseSubflow (spec, scope, input) {\n const op = scope.add(PreFacet({\n pulse: input.pulse\n })),\n subscope = scope.fork();\n subscope.add(Sieve());\n subscope.addSignal('parent', null);\n\n // parse group mark subflow\n op.params.subflow = {\n $subflow: subscope.parse(spec).toRuntime()\n };\n}\n\nfunction parseTrigger (spec, scope, name) {\n const remove = spec.remove,\n insert = spec.insert,\n toggle = spec.toggle,\n modify = spec.modify,\n values = spec.values,\n op = scope.add(operator());\n const update = 'if(' + spec.trigger + ',modify(\"' + name + '\",' + [insert, remove, toggle, modify, values].map(_ => _ == null ? 'null' : _).join(',') + '),0)';\n const expr = parseExpression(update, scope);\n op.update = expr.$expr;\n op.params = expr.$params;\n}\n\nfunction parseMark (spec, scope) {\n const role = getRole(spec),\n group = spec.type === GroupMark,\n facet = spec.from && spec.from.facet,\n overlap = spec.overlap;\n let layout = spec.layout || role === ScopeRole || role === FrameRole,\n ops,\n op,\n store,\n enc,\n name,\n layoutRef,\n boundRef;\n const nested = role === MarkRole || layout || facet;\n\n // resolve input data\n const input = parseData$1(spec.from, group, scope);\n\n // data join to map tuples to visual items\n op = scope.add(DataJoin({\n key: input.key || (spec.key ? fieldRef$1(spec.key) : undefined),\n pulse: input.pulse,\n clean: !group\n }));\n const joinRef = ref(op);\n\n // collect visual items\n op = store = scope.add(Collect({\n pulse: joinRef\n }));\n\n // connect visual items to scenegraph\n op = scope.add(Mark({\n markdef: definition(spec),\n interactive: interactive(spec.interactive, scope),\n clip: clip(spec.clip, scope),\n context: {\n $context: true\n },\n groups: scope.lookup(),\n parent: scope.signals.parent ? scope.signalRef('parent') : null,\n index: scope.markpath(),\n pulse: ref(op)\n }));\n const markRef = ref(op);\n\n // add visual encoders\n op = enc = scope.add(Encode(parseEncode(spec.encode, spec.type, role, spec.style, scope, {\n mod: false,\n pulse: markRef\n })));\n\n // monitor parent marks to propagate changes\n op.params.parent = scope.encode();\n\n // add post-encoding transforms, if defined\n if (spec.transform) {\n spec.transform.forEach(_ => {\n const tx = parseTransform(_, scope),\n md = tx.metadata;\n if (md.generates || md.changes) {\n error('Mark transforms should not generate new data.');\n }\n if (!md.nomod) enc.params.mod = true; // update encode mod handling\n tx.params.pulse = ref(op);\n scope.add(op = tx);\n });\n }\n\n // if item sort specified, perform post-encoding\n if (spec.sort) {\n op = scope.add(SortItems({\n sort: scope.compareRef(spec.sort),\n pulse: ref(op)\n }));\n }\n const encodeRef = ref(op);\n\n // add view layout operator if needed\n if (facet || layout) {\n layout = scope.add(ViewLayout({\n layout: scope.objectProperty(spec.layout),\n legends: scope.legends,\n mark: markRef,\n pulse: encodeRef\n }));\n layoutRef = ref(layout);\n }\n\n // compute bounding boxes\n const bound = scope.add(Bound({\n mark: markRef,\n pulse: layoutRef || encodeRef\n }));\n boundRef = ref(bound);\n\n // if group mark, recurse to parse nested content\n if (group) {\n // juggle layout & bounds to ensure they run *after* any faceting transforms\n if (nested) {\n ops = scope.operators;\n ops.pop();\n if (layout) ops.pop();\n }\n scope.pushState(encodeRef, layoutRef || boundRef, joinRef);\n facet ? parseFacet(spec, scope, input) // explicit facet\n : nested ? parseSubflow(spec, scope, input) // standard mark group\n : scope.parse(spec); // guide group, we can avoid nested scopes\n scope.popState();\n if (nested) {\n if (layout) ops.push(layout);\n ops.push(bound);\n }\n }\n\n // if requested, add overlap removal transform\n if (overlap) {\n boundRef = parseOverlap(overlap, boundRef, scope);\n }\n\n // render / sieve items\n const render = scope.add(Render({\n pulse: boundRef\n })),\n sieve = scope.add(Sieve({\n pulse: ref(render)\n }, undefined, scope.parent()));\n\n // if mark is named, make accessible as reactive geometry\n // add trigger updates if defined\n if (spec.name != null) {\n name = spec.name;\n scope.addData(name, new DataScope(scope, store, render, sieve));\n if (spec.on) spec.on.forEach(on => {\n if (on.insert || on.remove || on.toggle) {\n error('Marks only support modify triggers.');\n }\n parseTrigger(on, scope, name);\n });\n }\n}\nfunction parseOverlap(overlap, source, scope) {\n const method = overlap.method,\n bound = overlap.bound,\n sep = overlap.separation;\n const params = {\n separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep,\n method: isSignal(method) ? scope.signalRef(method.signal) : method,\n pulse: source\n };\n if (overlap.order) {\n params.sort = scope.compareRef({\n field: overlap.order\n });\n }\n if (bound) {\n const tol = bound.tolerance;\n params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol;\n params.boundScale = scope.scaleRef(bound.scale);\n params.boundOrient = bound.orient;\n }\n return ref(scope.add(Overlap(params)));\n}\n\nfunction parseLegend (spec, scope) {\n const config = scope.config.legend,\n encode = spec.encode || {},\n _ = lookup(spec, config),\n legendEncode = encode.legend || {},\n name = legendEncode.name || undefined,\n interactive = legendEncode.interactive,\n style = legendEncode.style,\n scales = {};\n let scale = 0,\n entryLayout,\n params,\n children;\n\n // resolve scales and 'canonical' scale name\n LegendScales.forEach(s => spec[s] ? (scales[s] = spec[s], scale = scale || spec[s]) : 0);\n if (!scale) error('Missing valid scale for legend.');\n\n // resolve legend type (symbol, gradient, or discrete gradient)\n const type = legendType(spec, scope.scaleType(scale));\n\n // single-element data source for legend group\n const datum = {\n title: spec.title != null,\n scales: scales,\n type: type,\n vgrad: type !== 'symbol' && _.isVertical()\n };\n const dataRef = ref(scope.add(Collect(null, [datum])));\n\n // encoding properties for legend entry sub-group\n const entryEncode = {\n enter: {\n x: {\n value: 0\n },\n y: {\n value: 0\n }\n }\n };\n\n // data source for legend values\n const entryRef = ref(scope.add(LegendEntries(params = {\n type: type,\n scale: scope.scaleRef(scale),\n count: scope.objectProperty(_('tickCount')),\n limit: scope.property(_('symbolLimit')),\n values: scope.objectProperty(spec.values),\n minstep: scope.property(spec.tickMinStep),\n formatType: scope.property(spec.formatType),\n formatSpecifier: scope.property(spec.format)\n })));\n\n // continuous gradient legend\n if (type === Gradient) {\n children = [legendGradient(spec, scale, config, encode.gradient), legendGradientLabels(spec, config, encode.labels, entryRef)];\n // adjust default tick count based on the gradient length\n params.count = params.count || scope.signalRef(`max(2,2*floor((${deref(_.gradientLength())})/100))`);\n }\n\n // discrete gradient legend\n else if (type === Discrete) {\n children = [legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef), legendGradientLabels(spec, config, encode.labels, entryRef)];\n }\n\n // symbol legend\n else {\n // determine legend symbol group layout\n entryLayout = legendSymbolLayout(spec, config);\n children = [legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns))];\n // pass symbol size information to legend entry generator\n params.size = sizeExpression(spec, scope, children[0].marks);\n }\n\n // generate legend marks\n children = [guideGroup({\n role: LegendEntryRole,\n from: dataRef,\n encode: entryEncode,\n marks: children,\n layout: entryLayout,\n interactive\n })];\n\n // include legend title if defined\n if (datum.title) {\n children.push(legendTitle(spec, config, encode.title, dataRef));\n }\n\n // parse legend specification\n return parseMark(guideGroup({\n role: LegendRole,\n from: dataRef,\n encode: extendEncode(buildLegendEncode(_, spec, config), legendEncode, Skip),\n marks: children,\n aria: _('aria'),\n description: _('description'),\n zindex: _('zindex'),\n name,\n interactive,\n style\n }), scope);\n}\nfunction legendType(spec, scaleType) {\n let type = spec.type || Symbols;\n if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) {\n type = isContinuous(scaleType) ? Gradient : isDiscretizing(scaleType) ? Discrete : Symbols;\n }\n return type !== Gradient ? type : isDiscretizing(scaleType) ? Discrete : Gradient;\n}\nfunction scaleCount(spec) {\n return LegendScales.reduce((count, type) => count + (spec[type] ? 1 : 0), 0);\n}\nfunction buildLegendEncode(_, spec, config) {\n const encode = {\n enter: {},\n update: {}\n };\n addEncoders(encode, {\n orient: _('orient'),\n offset: _('offset'),\n padding: _('padding'),\n titlePadding: _('titlePadding'),\n cornerRadius: _('cornerRadius'),\n fill: _('fillColor'),\n stroke: _('strokeColor'),\n strokeWidth: config.strokeWidth,\n strokeDash: config.strokeDash,\n x: _('legendX'),\n y: _('legendY'),\n // accessibility support\n format: spec.format,\n formatType: spec.formatType\n });\n return encode;\n}\nfunction sizeExpression(spec, scope, marks) {\n const size = deref(getChannel('size', spec, marks)),\n strokeWidth = deref(getChannel('strokeWidth', spec, marks)),\n fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle));\n return parseExpression(`max(ceil(sqrt(${size})+${strokeWidth}),${fontSize})`, scope);\n}\nfunction getChannel(name, spec, marks) {\n return spec[name] ? `scale(\"${spec[name]}\",datum)` : getEncoding(name, marks[0].encode);\n}\nfunction getFontSize(encode, scope, style) {\n return getEncoding('fontSize', encode) || getStyle('fontSize', scope, style);\n}\n\nconst angleExpr = `item.orient===\"${Left}\"?-90:item.orient===\"${Right}\"?90:0`;\nfunction parseTitle (spec, scope) {\n spec = isString(spec) ? {\n text: spec\n } : spec;\n const _ = lookup(spec, scope.config.title),\n encode = spec.encode || {},\n userEncode = encode.group || {},\n name = userEncode.name || undefined,\n interactive = userEncode.interactive,\n style = userEncode.style,\n children = [];\n\n // single-element data source for group title\n const datum = {},\n dataRef = ref(scope.add(Collect(null, [datum])));\n\n // include title text\n children.push(buildTitle(spec, _, titleEncode(spec), dataRef));\n\n // include subtitle text\n if (spec.subtitle) {\n children.push(buildSubTitle(spec, _, encode.subtitle, dataRef));\n }\n\n // parse title specification\n return parseMark(guideGroup({\n role: TitleRole,\n from: dataRef,\n encode: groupEncode(_, userEncode),\n marks: children,\n aria: _('aria'),\n description: _('description'),\n zindex: _('zindex'),\n name,\n interactive,\n style\n }), scope);\n}\n\n// provide backwards-compatibility for title custom encode;\n// the top-level encode block has been *deprecated*.\nfunction titleEncode(spec) {\n const encode = spec.encode;\n return encode && encode.title || extend({\n name: spec.name,\n interactive: spec.interactive,\n style: spec.style\n }, encode);\n}\nfunction groupEncode(_, userEncode) {\n const encode = {\n enter: {},\n update: {}\n };\n addEncoders(encode, {\n orient: _('orient'),\n anchor: _('anchor'),\n align: {\n signal: alignExpr$1\n },\n angle: {\n signal: angleExpr\n },\n limit: _('limit'),\n frame: _('frame'),\n offset: _('offset') || 0,\n padding: _('subtitlePadding')\n });\n return extendEncode(encode, userEncode, Skip);\n}\nfunction buildTitle(spec, _, userEncode, dataRef) {\n const zero = {\n value: 0\n },\n text = spec.text,\n encode = {\n enter: {\n opacity: zero\n },\n update: {\n opacity: {\n value: 1\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n text: text,\n align: {\n signal: 'item.mark.group.align'\n },\n angle: {\n signal: 'item.mark.group.angle'\n },\n limit: {\n signal: 'item.mark.group.limit'\n },\n baseline: 'top',\n dx: _('dx'),\n dy: _('dy'),\n fill: _('color'),\n font: _('font'),\n fontSize: _('fontSize'),\n fontStyle: _('fontStyle'),\n fontWeight: _('fontWeight'),\n lineHeight: _('lineHeight')\n }, {\n // update\n align: _('align'),\n angle: _('angle'),\n baseline: _('baseline')\n });\n return guideMark({\n type: TextMark,\n role: TitleTextRole,\n style: GroupTitleStyle,\n from: dataRef,\n encode\n }, userEncode);\n}\nfunction buildSubTitle(spec, _, userEncode, dataRef) {\n const zero = {\n value: 0\n },\n text = spec.subtitle,\n encode = {\n enter: {\n opacity: zero\n },\n update: {\n opacity: {\n value: 1\n }\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n text: text,\n align: {\n signal: 'item.mark.group.align'\n },\n angle: {\n signal: 'item.mark.group.angle'\n },\n limit: {\n signal: 'item.mark.group.limit'\n },\n baseline: 'top',\n dx: _('dx'),\n dy: _('dy'),\n fill: _('subtitleColor'),\n font: _('subtitleFont'),\n fontSize: _('subtitleFontSize'),\n fontStyle: _('subtitleFontStyle'),\n fontWeight: _('subtitleFontWeight'),\n lineHeight: _('subtitleLineHeight')\n }, {\n // update\n align: _('align'),\n angle: _('angle'),\n baseline: _('baseline')\n });\n return guideMark({\n type: TextMark,\n role: TitleSubtitleRole,\n style: GroupSubtitleStyle,\n from: dataRef,\n encode\n }, userEncode);\n}\n\nfunction parseData(data, scope) {\n const transforms = [];\n if (data.transform) {\n data.transform.forEach(tx => {\n transforms.push(parseTransform(tx, scope));\n });\n }\n if (data.on) {\n data.on.forEach(on => {\n parseTrigger(on, scope, data.name);\n });\n }\n scope.addDataPipeline(data.name, analyze(data, scope, transforms));\n}\n\n/**\n * Analyze a data pipeline, add needed operators.\n */\nfunction analyze(data, scope, ops) {\n const output = [];\n let source = null,\n modify = false,\n generate = false,\n upstream,\n i,\n n,\n t,\n m;\n if (data.values) {\n // hard-wired input data set\n if (isSignal(data.values) || hasSignal(data.format)) {\n // if either values is signal or format has signal, use dynamic loader\n output.push(load(scope, data));\n output.push(source = collect());\n } else {\n // otherwise, ingest upon dataflow init\n output.push(source = collect({\n $ingest: data.values,\n $format: data.format\n }));\n }\n } else if (data.url) {\n // load data from external source\n if (hasSignal(data.url) || hasSignal(data.format)) {\n // if either url or format has signal, use dynamic loader\n output.push(load(scope, data));\n output.push(source = collect());\n } else {\n // otherwise, request load upon dataflow init\n output.push(source = collect({\n $request: data.url,\n $format: data.format\n }));\n }\n } else if (data.source) {\n // derives from one or more other data sets\n source = upstream = array(data.source).map(d => ref(scope.getData(d).output));\n output.push(null); // populate later\n }\n\n // scan data transforms, add collectors as needed\n for (i = 0, n = ops.length; i < n; ++i) {\n t = ops[i];\n m = t.metadata;\n if (!source && !m.source) {\n output.push(source = collect());\n }\n output.push(t);\n if (m.generates) generate = true;\n if (m.modifies && !generate) modify = true;\n if (m.source) source = t;else if (m.changes) source = null;\n }\n if (upstream) {\n n = upstream.length - 1;\n output[0] = Relay({\n derive: modify,\n pulse: n ? upstream : upstream[0]\n });\n if (modify || n) {\n // collect derived and multi-pulse tuples\n output.splice(1, 0, collect());\n }\n }\n if (!source) output.push(collect());\n output.push(Sieve({}));\n return output;\n}\nfunction collect(values) {\n const s = Collect({}, values);\n s.metadata = {\n source: true\n };\n return s;\n}\nfunction load(scope, data) {\n return Load({\n url: data.url ? scope.property(data.url) : undefined,\n async: data.async ? scope.property(data.async) : undefined,\n values: data.values ? scope.property(data.values) : undefined,\n format: scope.objectProperty(data.format)\n });\n}\n\nconst isX = orient => orient === Bottom || orient === Top;\n\n// get sign coefficient based on axis orient\nconst getSign = (orient, a, b) => isSignal(orient) ? ifLeftTopExpr(orient.signal, a, b) : orient === Left || orient === Top ? a : b;\n\n// condition on axis x-direction\nconst ifX = (orient, a, b) => isSignal(orient) ? ifXEnc(orient.signal, a, b) : isX(orient) ? a : b;\n\n// condition on axis y-direction\nconst ifY = (orient, a, b) => isSignal(orient) ? ifYEnc(orient.signal, a, b) : isX(orient) ? b : a;\nconst ifTop = (orient, a, b) => isSignal(orient) ? ifTopExpr(orient.signal, a, b) : orient === Top ? {\n value: a\n} : {\n value: b\n};\nconst ifRight = (orient, a, b) => isSignal(orient) ? ifRightExpr(orient.signal, a, b) : orient === Right ? {\n value: a\n} : {\n value: b\n};\nconst ifXEnc = ($orient, a, b) => ifEnc(`${$orient} === '${Top}' || ${$orient} === '${Bottom}'`, a, b);\nconst ifYEnc = ($orient, a, b) => ifEnc(`${$orient} !== '${Top}' && ${$orient} !== '${Bottom}'`, a, b);\nconst ifLeftTopExpr = ($orient, a, b) => ifExpr(`${$orient} === '${Left}' || ${$orient} === '${Top}'`, a, b);\nconst ifTopExpr = ($orient, a, b) => ifExpr(`${$orient} === '${Top}'`, a, b);\nconst ifRightExpr = ($orient, a, b) => ifExpr(`${$orient} === '${Right}'`, a, b);\nconst ifEnc = (test, a, b) => {\n // ensure inputs are encoder objects (or null)\n a = a != null ? encoder(a) : a;\n b = b != null ? encoder(b) : b;\n if (isSimple(a) && isSimple(b)) {\n // if possible generate simple signal expression\n a = a ? a.signal || stringValue(a.value) : null;\n b = b ? b.signal || stringValue(b.value) : null;\n return {\n signal: `${test} ? (${a}) : (${b})`\n };\n } else {\n // otherwise generate rule set\n return [extend({\n test\n }, a)].concat(b || []);\n }\n};\nconst isSimple = enc => enc == null || Object.keys(enc).length === 1;\nconst ifExpr = (test, a, b) => ({\n signal: `${test} ? (${toExpr(a)}) : (${toExpr(b)})`\n});\nconst ifOrient = ($orient, t, b, l, r) => ({\n signal: (l != null ? `${$orient} === '${Left}' ? (${toExpr(l)}) : ` : '') + (b != null ? `${$orient} === '${Bottom}' ? (${toExpr(b)}) : ` : '') + (r != null ? `${$orient} === '${Right}' ? (${toExpr(r)}) : ` : '') + (t != null ? `${$orient} === '${Top}' ? (${toExpr(t)}) : ` : '') + '(null)'\n});\nconst toExpr = v => isSignal(v) ? v.signal : v == null ? null : stringValue(v);\nconst mult = (sign, value) => value === 0 ? 0 : isSignal(sign) ? {\n signal: `(${sign.signal}) * ${value}`\n} : {\n value: sign * value\n};\nconst patch = (value, base) => {\n const s = value.signal;\n return s && s.endsWith('(null)') ? {\n signal: s.slice(0, -6) + base.signal\n } : value;\n};\n\nfunction fallback(prop, config, axisConfig, style) {\n let styleProp;\n if (config && hasOwnProperty(config, prop)) {\n return config[prop];\n } else if (hasOwnProperty(axisConfig, prop)) {\n return axisConfig[prop];\n } else if (prop.startsWith('title')) {\n switch (prop) {\n case 'titleColor':\n styleProp = 'fill';\n break;\n case 'titleFont':\n case 'titleFontSize':\n case 'titleFontWeight':\n styleProp = prop[5].toLowerCase() + prop.slice(6);\n }\n return style[GuideTitleStyle][styleProp];\n } else if (prop.startsWith('label')) {\n switch (prop) {\n case 'labelColor':\n styleProp = 'fill';\n break;\n case 'labelFont':\n case 'labelFontSize':\n styleProp = prop[5].toLowerCase() + prop.slice(6);\n }\n return style[GuideLabelStyle][styleProp];\n }\n return null;\n}\nfunction keys(objects) {\n const map = {};\n for (const obj of objects) {\n if (!obj) continue;\n for (const key in obj) map[key] = 1;\n }\n return Object.keys(map);\n}\nfunction axisConfig (spec, scope) {\n var config = scope.config,\n style = config.style,\n axis = config.axis,\n band = scope.scaleType(spec.scale) === 'band' && config.axisBand,\n orient = spec.orient,\n xy,\n or,\n key;\n if (isSignal(orient)) {\n const xyKeys = keys([config.axisX, config.axisY]),\n orientKeys = keys([config.axisTop, config.axisBottom, config.axisLeft, config.axisRight]);\n xy = {};\n for (key of xyKeys) {\n xy[key] = ifX(orient, fallback(key, config.axisX, axis, style), fallback(key, config.axisY, axis, style));\n }\n or = {};\n for (key of orientKeys) {\n or[key] = ifOrient(orient.signal, fallback(key, config.axisTop, axis, style), fallback(key, config.axisBottom, axis, style), fallback(key, config.axisLeft, axis, style), fallback(key, config.axisRight, axis, style));\n }\n } else {\n xy = orient === Top || orient === Bottom ? config.axisX : config.axisY;\n or = config['axis' + orient[0].toUpperCase() + orient.slice(1)];\n }\n const result = xy || or || band ? extend({}, axis, xy, or, band) : axis;\n return result;\n}\n\nfunction axisDomain (spec, config, userEncode, dataRef) {\n const _ = lookup(spec, config),\n orient = spec.orient;\n let enter, update;\n const encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one\n },\n exit: {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('domainColor'),\n strokeCap: _('domainCap'),\n strokeDash: _('domainDash'),\n strokeDashOffset: _('domainDashOffset'),\n strokeWidth: _('domainWidth'),\n strokeOpacity: _('domainOpacity')\n });\n const pos0 = position(spec, 0);\n const pos1 = position(spec, 1);\n enter.x = update.x = ifX(orient, pos0, zero);\n enter.x2 = update.x2 = ifX(orient, pos1);\n enter.y = update.y = ifY(orient, pos0, zero);\n enter.y2 = update.y2 = ifY(orient, pos1);\n return guideMark({\n type: RuleMark,\n role: AxisDomainRole,\n from: dataRef,\n encode\n }, userEncode);\n}\nfunction position(spec, pos) {\n return {\n scale: spec.scale,\n range: pos\n };\n}\n\nfunction axisGrid (spec, config, userEncode, dataRef, band) {\n const _ = lookup(spec, config),\n orient = spec.orient,\n vscale = spec.gridScale,\n sign = getSign(orient, 1, -1),\n offset = offsetValue(spec.offset, sign);\n let enter, exit, update;\n const encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one\n },\n exit: exit = {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('gridColor'),\n strokeCap: _('gridCap'),\n strokeDash: _('gridDash'),\n strokeDashOffset: _('gridDashOffset'),\n strokeOpacity: _('gridOpacity'),\n strokeWidth: _('gridWidth')\n });\n const tickPos = {\n scale: spec.scale,\n field: Value,\n band: band.band,\n extra: band.extra,\n offset: band.offset,\n round: _('tickRound')\n };\n const sz = ifX(orient, {\n signal: 'height'\n }, {\n signal: 'width'\n });\n const gridStart = vscale ? {\n scale: vscale,\n range: 0,\n mult: sign,\n offset: offset\n } : {\n value: 0,\n offset: offset\n };\n const gridEnd = vscale ? {\n scale: vscale,\n range: 1,\n mult: sign,\n offset: offset\n } : extend(sz, {\n mult: sign,\n offset: offset\n });\n enter.x = update.x = ifX(orient, tickPos, gridStart);\n enter.y = update.y = ifY(orient, tickPos, gridStart);\n enter.x2 = update.x2 = ifY(orient, gridEnd);\n enter.y2 = update.y2 = ifX(orient, gridEnd);\n exit.x = ifX(orient, tickPos);\n exit.y = ifY(orient, tickPos);\n return guideMark({\n type: RuleMark,\n role: AxisGridRole,\n key: Value,\n from: dataRef,\n encode\n }, userEncode);\n}\nfunction offsetValue(offset, sign) {\n if (sign === 1) ; else if (!isObject(offset)) {\n offset = isSignal(sign) ? {\n signal: `(${sign.signal}) * (${offset || 0})`\n } : sign * (offset || 0);\n } else {\n let entry = offset = extend({}, offset);\n while (entry.mult != null) {\n if (!isObject(entry.mult)) {\n entry.mult = isSignal(sign) // no offset if sign === 1\n ? {\n signal: `(${entry.mult}) * (${sign.signal})`\n } : entry.mult * sign;\n return offset;\n } else {\n entry = entry.mult = extend({}, entry.mult);\n }\n }\n entry.mult = sign;\n }\n return offset;\n}\n\nfunction axisTicks (spec, config, userEncode, dataRef, size, band) {\n const _ = lookup(spec, config),\n orient = spec.orient,\n sign = getSign(orient, -1, 1);\n let enter, exit, update;\n const encode = {\n enter: enter = {\n opacity: zero\n },\n update: update = {\n opacity: one\n },\n exit: exit = {\n opacity: zero\n }\n };\n addEncoders(encode, {\n stroke: _('tickColor'),\n strokeCap: _('tickCap'),\n strokeDash: _('tickDash'),\n strokeDashOffset: _('tickDashOffset'),\n strokeOpacity: _('tickOpacity'),\n strokeWidth: _('tickWidth')\n });\n const tickSize = encoder(size);\n tickSize.mult = sign;\n const tickPos = {\n scale: spec.scale,\n field: Value,\n band: band.band,\n extra: band.extra,\n offset: band.offset,\n round: _('tickRound')\n };\n update.y = enter.y = ifX(orient, zero, tickPos);\n update.y2 = enter.y2 = ifX(orient, tickSize);\n exit.x = ifX(orient, tickPos);\n update.x = enter.x = ifY(orient, zero, tickPos);\n update.x2 = enter.x2 = ifY(orient, tickSize);\n exit.y = ifY(orient, tickPos);\n return guideMark({\n type: RuleMark,\n role: AxisTickRole,\n key: Value,\n from: dataRef,\n encode\n }, userEncode);\n}\n\nfunction flushExpr(scale, threshold, a, b, c) {\n return {\n signal: 'flush(range(\"' + scale + '\"), ' + 'scale(\"' + scale + '\", datum.value), ' + threshold + ',' + a + ',' + b + ',' + c + ')'\n };\n}\nfunction axisLabels (spec, config, userEncode, dataRef, size, band) {\n const _ = lookup(spec, config),\n orient = spec.orient,\n scale = spec.scale,\n sign = getSign(orient, -1, 1),\n flush = deref(_('labelFlush')),\n flushOffset = deref(_('labelFlushOffset')),\n labelAlign = _('labelAlign'),\n labelBaseline = _('labelBaseline');\n let flushOn = flush === 0 || !!flush,\n update;\n const tickSize = encoder(size);\n tickSize.mult = sign;\n tickSize.offset = encoder(_('labelPadding') || 0);\n tickSize.offset.mult = sign;\n const tickPos = {\n scale: scale,\n field: Value,\n band: 0.5,\n offset: extendOffset(band.offset, _('labelOffset'))\n };\n const align = ifX(orient, flushOn ? flushExpr(scale, flush, '\"left\"', '\"right\"', '\"center\"') : {\n value: 'center'\n }, ifRight(orient, 'left', 'right'));\n const baseline = ifX(orient, ifTop(orient, 'bottom', 'top'), flushOn ? flushExpr(scale, flush, '\"top\"', '\"bottom\"', '\"middle\"') : {\n value: 'middle'\n });\n const offsetExpr = flushExpr(scale, flush, `-(${flushOffset})`, flushOffset, 0);\n flushOn = flushOn && flushOffset;\n const enter = {\n opacity: zero,\n x: ifX(orient, tickPos, tickSize),\n y: ifY(orient, tickPos, tickSize)\n };\n const encode = {\n enter: enter,\n update: update = {\n opacity: one,\n text: {\n field: Label\n },\n x: enter.x,\n y: enter.y,\n align,\n baseline\n },\n exit: {\n opacity: zero,\n x: enter.x,\n y: enter.y\n }\n };\n addEncoders(encode, {\n dx: !labelAlign && flushOn ? ifX(orient, offsetExpr) : null,\n dy: !labelBaseline && flushOn ? ifY(orient, offsetExpr) : null\n });\n addEncoders(encode, {\n angle: _('labelAngle'),\n fill: _('labelColor'),\n fillOpacity: _('labelOpacity'),\n font: _('labelFont'),\n fontSize: _('labelFontSize'),\n fontWeight: _('labelFontWeight'),\n fontStyle: _('labelFontStyle'),\n limit: _('labelLimit'),\n lineHeight: _('labelLineHeight')\n }, {\n align: labelAlign,\n baseline: labelBaseline\n });\n const bound = _('labelBound');\n let overlap = _('labelOverlap');\n\n // if overlap method or bound defined, request label overlap removal\n overlap = overlap || bound ? {\n separation: _('labelSeparation'),\n method: overlap,\n order: 'datum.index',\n bound: bound ? {\n scale,\n orient,\n tolerance: bound\n } : null\n } : undefined;\n if (update.align !== align) {\n update.align = patch(update.align, align);\n }\n if (update.baseline !== baseline) {\n update.baseline = patch(update.baseline, baseline);\n }\n return guideMark({\n type: TextMark,\n role: AxisLabelRole,\n style: GuideLabelStyle,\n key: Value,\n from: dataRef,\n encode,\n overlap\n }, userEncode);\n}\n\nfunction axisTitle (spec, config, userEncode, dataRef) {\n const _ = lookup(spec, config),\n orient = spec.orient,\n sign = getSign(orient, -1, 1);\n let enter, update;\n const encode = {\n enter: enter = {\n opacity: zero,\n anchor: encoder(_('titleAnchor', null)),\n align: {\n signal: alignExpr$1\n }\n },\n update: update = extend({}, enter, {\n opacity: one,\n text: encoder(spec.title)\n }),\n exit: {\n opacity: zero\n }\n };\n const titlePos = {\n signal: `lerp(range(\"${spec.scale}\"), ${anchorExpr(0, 1, 0.5)})`\n };\n update.x = ifX(orient, titlePos);\n update.y = ifY(orient, titlePos);\n enter.angle = ifX(orient, zero, mult(sign, 90));\n enter.baseline = ifX(orient, ifTop(orient, Bottom, Top), {\n value: Bottom\n });\n update.angle = enter.angle;\n update.baseline = enter.baseline;\n addEncoders(encode, {\n fill: _('titleColor'),\n fillOpacity: _('titleOpacity'),\n font: _('titleFont'),\n fontSize: _('titleFontSize'),\n fontStyle: _('titleFontStyle'),\n fontWeight: _('titleFontWeight'),\n limit: _('titleLimit'),\n lineHeight: _('titleLineHeight')\n }, {\n // require update\n align: _('titleAlign'),\n angle: _('titleAngle'),\n baseline: _('titleBaseline')\n });\n autoLayout(_, orient, encode, userEncode);\n encode.update.align = patch(encode.update.align, enter.align);\n encode.update.angle = patch(encode.update.angle, enter.angle);\n encode.update.baseline = patch(encode.update.baseline, enter.baseline);\n return guideMark({\n type: TextMark,\n role: AxisTitleRole,\n style: GuideTitleStyle,\n from: dataRef,\n encode\n }, userEncode);\n}\nfunction autoLayout(_, orient, encode, userEncode) {\n const auto = (value, dim) => value != null ? (encode.update[dim] = patch(encoder(value), encode.update[dim]), false) : !has(dim, userEncode) ? true : false;\n const autoY = auto(_('titleX'), 'x'),\n autoX = auto(_('titleY'), 'y');\n encode.enter.auto = autoX === autoY ? encoder(autoX) : ifX(orient, encoder(autoX), encoder(autoY));\n}\n\nfunction parseAxis (spec, scope) {\n const config = axisConfig(spec, scope),\n encode = spec.encode || {},\n axisEncode = encode.axis || {},\n name = axisEncode.name || undefined,\n interactive = axisEncode.interactive,\n style = axisEncode.style,\n _ = lookup(spec, config),\n band = tickBand(_);\n\n // single-element data source for axis group\n const datum = {\n scale: spec.scale,\n ticks: !!_('ticks'),\n labels: !!_('labels'),\n grid: !!_('grid'),\n domain: !!_('domain'),\n title: spec.title != null\n };\n const dataRef = ref(scope.add(Collect({}, [datum])));\n\n // data source for axis ticks\n const ticksRef = ref(scope.add(AxisTicks({\n scale: scope.scaleRef(spec.scale),\n extra: scope.property(band.extra),\n count: scope.objectProperty(spec.tickCount),\n values: scope.objectProperty(spec.values),\n minstep: scope.property(spec.tickMinStep),\n formatType: scope.property(spec.formatType),\n formatSpecifier: scope.property(spec.format)\n })));\n\n // generate axis marks\n const children = [];\n let size;\n\n // include axis gridlines if requested\n if (datum.grid) {\n children.push(axisGrid(spec, config, encode.grid, ticksRef, band));\n }\n\n // include axis ticks if requested\n if (datum.ticks) {\n size = _('tickSize');\n children.push(axisTicks(spec, config, encode.ticks, ticksRef, size, band));\n }\n\n // include axis labels if requested\n if (datum.labels) {\n size = datum.ticks ? size : 0;\n children.push(axisLabels(spec, config, encode.labels, ticksRef, size, band));\n }\n\n // include axis domain path if requested\n if (datum.domain) {\n children.push(axisDomain(spec, config, encode.domain, dataRef));\n }\n\n // include axis title if defined\n if (datum.title) {\n children.push(axisTitle(spec, config, encode.title, dataRef));\n }\n\n // parse axis specification\n return parseMark(guideGroup({\n role: AxisRole,\n from: dataRef,\n encode: extendEncode(buildAxisEncode(_, spec), axisEncode, Skip),\n marks: children,\n aria: _('aria'),\n description: _('description'),\n zindex: _('zindex'),\n name,\n interactive,\n style\n }), scope);\n}\nfunction buildAxisEncode(_, spec) {\n const encode = {\n enter: {},\n update: {}\n };\n addEncoders(encode, {\n orient: _('orient'),\n offset: _('offset') || 0,\n position: value(spec.position, 0),\n titlePadding: _('titlePadding'),\n minExtent: _('minExtent'),\n maxExtent: _('maxExtent'),\n range: {\n signal: `abs(span(range(\"${spec.scale}\")))`\n },\n translate: _('translate'),\n // accessibility support\n format: spec.format,\n formatType: spec.formatType\n });\n return encode;\n}\n\nfunction parseScope (spec, scope, preprocessed) {\n const signals = array(spec.signals),\n scales = array(spec.scales);\n\n // parse signal definitions, if not already preprocessed\n if (!preprocessed) signals.forEach(_ => parseSignal(_, scope));\n\n // parse cartographic projection definitions\n array(spec.projections).forEach(_ => parseProjection(_, scope));\n\n // initialize scale references\n scales.forEach(_ => initScale(_, scope));\n\n // parse data sources\n array(spec.data).forEach(_ => parseData(_, scope));\n\n // parse scale definitions\n scales.forEach(_ => parseScale(_, scope));\n\n // parse signal updates\n (preprocessed || signals).forEach(_ => parseSignalUpdates(_, scope));\n\n // parse axis definitions\n array(spec.axes).forEach(_ => parseAxis(_, scope));\n\n // parse mark definitions\n array(spec.marks).forEach(_ => parseMark(_, scope));\n\n // parse legend definitions\n array(spec.legends).forEach(_ => parseLegend(_, scope));\n\n // parse title, if defined\n if (spec.title) parseTitle(spec.title, scope);\n\n // parse collected lambda (anonymous) expressions\n scope.parseLambdas();\n return scope;\n}\n\nconst rootEncode = spec => extendEncode({\n enter: {\n x: {\n value: 0\n },\n y: {\n value: 0\n }\n },\n update: {\n width: {\n signal: 'width'\n },\n height: {\n signal: 'height'\n }\n }\n}, spec);\nfunction parseView(spec, scope) {\n const config = scope.config;\n\n // add scenegraph root\n const root = ref(scope.root = scope.add(operator()));\n\n // parse top-level signal definitions\n const signals = collectSignals(spec, config);\n signals.forEach(_ => parseSignal(_, scope));\n\n // assign description, event, legend, and locale configuration\n scope.description = spec.description || config.description;\n scope.eventConfig = config.events;\n scope.legends = scope.objectProperty(config.legend && config.legend.layout);\n scope.locale = config.locale;\n\n // store root group item\n const input = scope.add(Collect());\n\n // encode root group item\n const encode = scope.add(Encode(parseEncode(rootEncode(spec.encode), GroupMark, FrameRole, spec.style, scope, {\n pulse: ref(input)\n })));\n\n // perform view layout\n const parent = scope.add(ViewLayout({\n layout: scope.objectProperty(spec.layout),\n legends: scope.legends,\n autosize: scope.signalRef('autosize'),\n mark: root,\n pulse: ref(encode)\n }));\n scope.operators.pop();\n\n // parse remainder of specification\n scope.pushState(ref(encode), ref(parent), null);\n parseScope(spec, scope, signals);\n scope.operators.push(parent);\n\n // bound / render / sieve root item\n let op = scope.add(Bound({\n mark: root,\n pulse: ref(parent)\n }));\n op = scope.add(Render({\n pulse: ref(op)\n }));\n op = scope.add(Sieve({\n pulse: ref(op)\n }));\n\n // track metadata for root item\n scope.addData('root', new DataScope(scope, input, input, op));\n return scope;\n}\nfunction signalObject(name, value) {\n return value && value.signal ? {\n name,\n update: value.signal\n } : {\n name,\n value\n };\n}\n\n/**\n * Collect top-level signals, merging values as needed. Signals\n * defined in the config signals arrays are added only if that\n * signal is not explicitly defined in the specification.\n * Built-in signals (autosize, background, padding, width, height)\n * receive special treatment. They are initialized using the\n * top-level spec property, or, if undefined in the spec, using\n * the corresponding top-level config property. If this property\n * is a signal reference object, the signal expression maps to the\n * signal 'update' property. If the spec's top-level signal array\n * contains an entry that matches a built-in signal, that entry\n * will be merged with the built-in specification, potentially\n * overwriting existing 'value' or 'update' properties.\n */\nfunction collectSignals(spec, config) {\n const _ = name => value(spec[name], config[name]),\n signals = [signalObject('background', _('background')), signalObject('autosize', parseAutosize(_('autosize'))), signalObject('padding', parsePadding(_('padding'))), signalObject('width', _('width') || 0), signalObject('height', _('height') || 0)],\n pre = signals.reduce((p, s) => (p[s.name] = s, p), {}),\n map = {};\n\n // add spec signal array\n array(spec.signals).forEach(s => {\n if (hasOwnProperty(pre, s.name)) {\n // merge if built-in signal\n s = extend(pre[s.name], s);\n } else {\n // otherwise add to signal list\n signals.push(s);\n }\n map[s.name] = s;\n });\n\n // add config signal array\n array(config.signals).forEach(s => {\n if (!hasOwnProperty(map, s.name) && !hasOwnProperty(pre, s.name)) {\n // add to signal list if not already defined\n signals.push(s);\n }\n });\n return signals;\n}\n\nfunction Scope(config, options) {\n this.config = config || {};\n this.options = options || {};\n this.bindings = [];\n this.field = {};\n this.signals = {};\n this.lambdas = {};\n this.scales = {};\n this.events = {};\n this.data = {};\n this.streams = [];\n this.updates = [];\n this.operators = [];\n this.eventConfig = null;\n this.locale = null;\n this._id = 0;\n this._subid = 0;\n this._nextsub = [0];\n this._parent = [];\n this._encode = [];\n this._lookup = [];\n this._markpath = [];\n}\nfunction Subscope(scope) {\n this.config = scope.config;\n this.options = scope.options;\n this.legends = scope.legends;\n this.field = Object.create(scope.field);\n this.signals = Object.create(scope.signals);\n this.lambdas = Object.create(scope.lambdas);\n this.scales = Object.create(scope.scales);\n this.events = Object.create(scope.events);\n this.data = Object.create(scope.data);\n this.streams = [];\n this.updates = [];\n this.operators = [];\n this._id = 0;\n this._subid = ++scope._nextsub[0];\n this._nextsub = scope._nextsub;\n this._parent = scope._parent.slice();\n this._encode = scope._encode.slice();\n this._lookup = scope._lookup.slice();\n this._markpath = scope._markpath;\n}\nScope.prototype = Subscope.prototype = {\n parse(spec) {\n return parseScope(spec, this);\n },\n fork() {\n return new Subscope(this);\n },\n isSubscope() {\n return this._subid > 0;\n },\n toRuntime() {\n this.finish();\n return {\n description: this.description,\n operators: this.operators,\n streams: this.streams,\n updates: this.updates,\n bindings: this.bindings,\n eventConfig: this.eventConfig,\n locale: this.locale\n };\n },\n id() {\n return (this._subid ? this._subid + ':' : 0) + this._id++;\n },\n add(op) {\n this.operators.push(op);\n op.id = this.id();\n // if pre-registration references exist, resolve them now\n if (op.refs) {\n op.refs.forEach(ref => {\n ref.$ref = op.id;\n });\n op.refs = null;\n }\n return op;\n },\n proxy(op) {\n const vref = op instanceof Entry ? ref(op) : op;\n return this.add(Proxy({\n value: vref\n }));\n },\n addStream(stream) {\n this.streams.push(stream);\n stream.id = this.id();\n return stream;\n },\n addUpdate(update) {\n this.updates.push(update);\n return update;\n },\n // Apply metadata\n finish() {\n let name, ds;\n\n // annotate root\n if (this.root) this.root.root = true;\n\n // annotate signals\n for (name in this.signals) {\n this.signals[name].signal = name;\n }\n\n // annotate scales\n for (name in this.scales) {\n this.scales[name].scale = name;\n }\n\n // annotate data sets\n function annotate(op, name, type) {\n let data, list;\n if (op) {\n data = op.data || (op.data = {});\n list = data[name] || (data[name] = []);\n list.push(type);\n }\n }\n for (name in this.data) {\n ds = this.data[name];\n annotate(ds.input, name, 'input');\n annotate(ds.output, name, 'output');\n annotate(ds.values, name, 'values');\n for (const field in ds.index) {\n annotate(ds.index[field], name, 'index:' + field);\n }\n }\n return this;\n },\n // ----\n\n pushState(encode, parent, lookup) {\n this._encode.push(ref(this.add(Sieve({\n pulse: encode\n }))));\n this._parent.push(parent);\n this._lookup.push(lookup ? ref(this.proxy(lookup)) : null);\n this._markpath.push(-1);\n },\n popState() {\n this._encode.pop();\n this._parent.pop();\n this._lookup.pop();\n this._markpath.pop();\n },\n parent() {\n return peek(this._parent);\n },\n encode() {\n return peek(this._encode);\n },\n lookup() {\n return peek(this._lookup);\n },\n markpath() {\n const p = this._markpath;\n return ++p[p.length - 1];\n },\n // ----\n\n fieldRef(field, name) {\n if (isString(field)) return fieldRef$1(field, name);\n if (!field.signal) {\n error('Unsupported field reference: ' + stringValue(field));\n }\n const s = field.signal;\n let f = this.field[s];\n if (!f) {\n const params = {\n name: this.signalRef(s)\n };\n if (name) params.as = name;\n this.field[s] = f = ref(this.add(Field(params)));\n }\n return f;\n },\n compareRef(cmp) {\n let signal = false;\n const check = _ => isSignal(_) ? (signal = true, this.signalRef(_.signal)) : isExpr$1(_) ? (signal = true, this.exprRef(_.expr)) : _;\n const fields = array(cmp.field).map(check),\n orders = array(cmp.order).map(check);\n return signal ? ref(this.add(Compare({\n fields: fields,\n orders: orders\n }))) : compareRef(fields, orders);\n },\n keyRef(fields, flat) {\n let signal = false;\n const check = _ => isSignal(_) ? (signal = true, ref(sig[_.signal])) : _;\n const sig = this.signals;\n fields = array(fields).map(check);\n return signal ? ref(this.add(Key({\n fields: fields,\n flat: flat\n }))) : keyRef(fields, flat);\n },\n sortRef(sort) {\n if (!sort) return sort;\n\n // including id ensures stable sorting\n const a = aggrField(sort.op, sort.field),\n o = sort.order || Ascending;\n return o.signal ? ref(this.add(Compare({\n fields: a,\n orders: this.signalRef(o.signal)\n }))) : compareRef(a, o);\n },\n // ----\n\n event(source, type) {\n const key = source + ':' + type;\n if (!this.events[key]) {\n const id = this.id();\n this.streams.push({\n id: id,\n source: source,\n type: type\n });\n this.events[key] = id;\n }\n return this.events[key];\n },\n // ----\n\n hasOwnSignal(name) {\n return hasOwnProperty(this.signals, name);\n },\n addSignal(name, value) {\n if (this.hasOwnSignal(name)) {\n error('Duplicate signal name: ' + stringValue(name));\n }\n const op = value instanceof Entry ? value : this.add(operator(value));\n return this.signals[name] = op;\n },\n getSignal(name) {\n if (!this.signals[name]) {\n error('Unrecognized signal name: ' + stringValue(name));\n }\n return this.signals[name];\n },\n signalRef(s) {\n if (this.signals[s]) {\n return ref(this.signals[s]);\n } else if (!hasOwnProperty(this.lambdas, s)) {\n this.lambdas[s] = this.add(operator(null));\n }\n return ref(this.lambdas[s]);\n },\n parseLambdas() {\n const code = Object.keys(this.lambdas);\n for (let i = 0, n = code.length; i < n; ++i) {\n const s = code[i],\n e = parseExpression(s, this),\n op = this.lambdas[s];\n op.params = e.$params;\n op.update = e.$expr;\n }\n },\n property(spec) {\n return spec && spec.signal ? this.signalRef(spec.signal) : spec;\n },\n objectProperty(spec) {\n return !spec || !isObject(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec));\n },\n exprRef(code, name) {\n const params = {\n expr: parseExpression(code, this)\n };\n if (name) params.expr.$name = name;\n return ref(this.add(Expression(params)));\n },\n addBinding(name, bind) {\n if (!this.bindings) {\n error('Nested signals do not support binding: ' + stringValue(name));\n }\n this.bindings.push(extend({\n signal: name\n }, bind));\n },\n // ----\n\n addScaleProj(name, transform) {\n if (hasOwnProperty(this.scales, name)) {\n error('Duplicate scale or projection name: ' + stringValue(name));\n }\n this.scales[name] = this.add(transform);\n },\n addScale(name, params) {\n this.addScaleProj(name, Scale(params));\n },\n addProjection(name, params) {\n this.addScaleProj(name, Projection(params));\n },\n getScale(name) {\n if (!this.scales[name]) {\n error('Unrecognized scale name: ' + stringValue(name));\n }\n return this.scales[name];\n },\n scaleRef(name) {\n return ref(this.getScale(name));\n },\n scaleType(name) {\n return this.getScale(name).params.type;\n },\n projectionRef(name) {\n return this.scaleRef(name);\n },\n projectionType(name) {\n return this.scaleType(name);\n },\n // ----\n\n addData(name, dataScope) {\n if (hasOwnProperty(this.data, name)) {\n error('Duplicate data set name: ' + stringValue(name));\n }\n return this.data[name] = dataScope;\n },\n getData(name) {\n if (!this.data[name]) {\n error('Undefined data set name: ' + stringValue(name));\n }\n return this.data[name];\n },\n addDataPipeline(name, entries) {\n if (hasOwnProperty(this.data, name)) {\n error('Duplicate data set name: ' + stringValue(name));\n }\n return this.addData(name, DataScope.fromEntries(this, entries));\n }\n};\nfunction propertyLambda(spec) {\n return (isArray(spec) ? arrayLambda : objectLambda)(spec);\n}\nfunction arrayLambda(array) {\n const n = array.length;\n let code = '[';\n for (let i = 0; i < n; ++i) {\n const value = array[i];\n code += (i > 0 ? ',' : '') + (isObject(value) ? value.signal || propertyLambda(value) : stringValue(value));\n }\n return code + ']';\n}\nfunction objectLambda(obj) {\n let code = '{',\n i = 0,\n key,\n value;\n for (key in obj) {\n value = obj[key];\n code += (++i > 1 ? ',' : '') + stringValue(key) + ':' + (isObject(value) ? value.signal || propertyLambda(value) : stringValue(value));\n }\n return code + '}';\n}\n\n/**\n * Standard configuration defaults for Vega specification parsing.\n * Users can provide their own (sub-)set of these default values\n * by passing in a config object to the top-level parse method.\n */\nfunction defaults () {\n const defaultFont = 'sans-serif',\n defaultSymbolSize = 30,\n defaultStrokeWidth = 2,\n defaultColor = '#4c78a8',\n black = '#000',\n gray = '#888',\n lightGray = '#ddd';\n return {\n // default visualization description\n description: 'Vega visualization',\n // default padding around visualization\n padding: 0,\n // default for automatic sizing; options: 'none', 'pad', 'fit'\n // or provide an object (e.g., {'type': 'pad', 'resize': true})\n autosize: 'pad',\n // default view background color\n // covers the entire view component\n background: null,\n // default event handling configuration\n // preventDefault for view-sourced event types except 'wheel'\n events: {\n defaults: {\n allow: ['wheel']\n }\n },\n // defaults for top-level group marks\n // accepts mark properties (fill, stroke, etc)\n // covers the data rectangle within group width/height\n group: null,\n // defaults for basic mark types\n // each subset accepts mark properties (fill, stroke, etc)\n mark: null,\n arc: {\n fill: defaultColor\n },\n area: {\n fill: defaultColor\n },\n image: null,\n line: {\n stroke: defaultColor,\n strokeWidth: defaultStrokeWidth\n },\n path: {\n stroke: defaultColor\n },\n rect: {\n fill: defaultColor\n },\n rule: {\n stroke: black\n },\n shape: {\n stroke: defaultColor\n },\n symbol: {\n fill: defaultColor,\n size: 64\n },\n text: {\n fill: black,\n font: defaultFont,\n fontSize: 11\n },\n trail: {\n fill: defaultColor,\n size: defaultStrokeWidth\n },\n // style definitions\n style: {\n // axis & legend labels\n 'guide-label': {\n fill: black,\n font: defaultFont,\n fontSize: 10\n },\n // axis & legend titles\n 'guide-title': {\n fill: black,\n font: defaultFont,\n fontSize: 11,\n fontWeight: 'bold'\n },\n // headers, including chart title\n 'group-title': {\n fill: black,\n font: defaultFont,\n fontSize: 13,\n fontWeight: 'bold'\n },\n // chart subtitle\n 'group-subtitle': {\n fill: black,\n font: defaultFont,\n fontSize: 12\n },\n // defaults for styled point marks in Vega-Lite\n point: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'circle'\n },\n circle: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth\n },\n square: {\n size: defaultSymbolSize,\n strokeWidth: defaultStrokeWidth,\n shape: 'square'\n },\n // defaults for styled group marks in Vega-Lite\n cell: {\n fill: 'transparent',\n stroke: lightGray\n },\n view: {\n fill: 'transparent'\n }\n },\n // defaults for title\n title: {\n orient: 'top',\n anchor: 'middle',\n offset: 4,\n subtitlePadding: 3\n },\n // defaults for axes\n axis: {\n minExtent: 0,\n maxExtent: 200,\n bandPosition: 0.5,\n domain: true,\n domainWidth: 1,\n domainColor: gray,\n grid: false,\n gridWidth: 1,\n gridColor: lightGray,\n labels: true,\n labelAngle: 0,\n labelLimit: 180,\n labelOffset: 0,\n labelPadding: 2,\n ticks: true,\n tickColor: gray,\n tickOffset: 0,\n tickRound: true,\n tickSize: 5,\n tickWidth: 1,\n titlePadding: 4\n },\n // correction for centering bias\n axisBand: {\n tickOffset: -0.5\n },\n // defaults for cartographic projection\n projection: {\n type: 'mercator'\n },\n // defaults for legends\n legend: {\n orient: 'right',\n padding: 0,\n gridAlign: 'each',\n columnPadding: 10,\n rowPadding: 2,\n symbolDirection: 'vertical',\n gradientDirection: 'vertical',\n gradientLength: 200,\n gradientThickness: 16,\n gradientStrokeColor: lightGray,\n gradientStrokeWidth: 0,\n gradientLabelOffset: 2,\n labelAlign: 'left',\n labelBaseline: 'middle',\n labelLimit: 160,\n labelOffset: 4,\n labelOverlap: true,\n symbolLimit: 30,\n symbolType: 'circle',\n symbolSize: 100,\n symbolOffset: 0,\n symbolStrokeWidth: 1.5,\n symbolBaseFillColor: 'transparent',\n symbolBaseStrokeColor: gray,\n titleLimit: 180,\n titleOrient: 'top',\n titlePadding: 5,\n layout: {\n offset: 18,\n direction: 'horizontal',\n left: {\n direction: 'vertical'\n },\n right: {\n direction: 'vertical'\n }\n }\n },\n // defaults for scale ranges\n range: {\n category: {\n scheme: 'tableau10'\n },\n ordinal: {\n scheme: 'blues'\n },\n heatmap: {\n scheme: 'yellowgreenblue'\n },\n ramp: {\n scheme: 'blues'\n },\n diverging: {\n scheme: 'blueorange',\n extent: [1, 0]\n },\n symbol: ['circle', 'square', 'triangle-up', 'cross', 'diamond', 'triangle-right', 'triangle-down', 'triangle-left']\n }\n };\n}\n\nfunction parse (spec, config, options) {\n if (!isObject(spec)) {\n error('Input Vega specification must be an object.');\n }\n config = mergeConfig(defaults(), config, spec.config);\n return parseView(spec, new Scope(config, options)).toRuntime();\n}\n\nexport { AxisDomainRole, AxisGridRole, AxisLabelRole, AxisRole, AxisTickRole, AxisTitleRole, DataScope, FrameRole, LegendEntryRole, LegendLabelRole, LegendRole, LegendSymbolRole, LegendTitleRole, MarkRole, Scope, ScopeRole, defaults as config, parse, parseSignal as signal, parseSignalUpdates as signalUpdates, parseStream as stream };\n", "function adjustSpatial (item, encode, swap) {\n let t;\n if (encode.x2) {\n if (encode.x) {\n if (swap && item.x > item.x2) {\n t = item.x;\n item.x = item.x2;\n item.x2 = t;\n }\n item.width = item.x2 - item.x;\n } else {\n item.x = item.x2 - (item.width || 0);\n }\n }\n if (encode.xc) {\n item.x = item.xc - (item.width || 0) / 2;\n }\n if (encode.y2) {\n if (encode.y) {\n if (swap && item.y > item.y2) {\n t = item.y;\n item.y = item.y2;\n item.y2 = t;\n }\n item.height = item.y2 - item.y;\n } else {\n item.y = item.y2 - (item.height || 0);\n }\n }\n if (encode.yc) {\n item.y = item.yc - (item.height || 0) / 2;\n }\n}\n\nvar Constants = {\n NaN: NaN,\n E: Math.E,\n LN2: Math.LN2,\n LN10: Math.LN10,\n LOG2E: Math.LOG2E,\n LOG10E: Math.LOG10E,\n PI: Math.PI,\n SQRT1_2: Math.SQRT1_2,\n SQRT2: Math.SQRT2,\n MIN_VALUE: Number.MIN_VALUE,\n MAX_VALUE: Number.MAX_VALUE\n};\n\nvar Ops = {\n '*': (a, b) => a * b,\n '+': (a, b) => a + b,\n '-': (a, b) => a - b,\n '/': (a, b) => a / b,\n '%': (a, b) => a % b,\n '>': (a, b) => a > b,\n '<': (a, b) => a < b,\n '<=': (a, b) => a <= b,\n '>=': (a, b) => a >= b,\n '==': (a, b) => a == b,\n '!=': (a, b) => a != b,\n '===': (a, b) => a === b,\n '!==': (a, b) => a !== b,\n '&': (a, b) => a & b,\n '|': (a, b) => a | b,\n '^': (a, b) => a ^ b,\n '<<': (a, b) => a << b,\n '>>': (a, b) => a >> b,\n '>>>': (a, b) => a >>> b\n};\n\nvar Unary = {\n '+': a => +a,\n '-': a => -a,\n '~': a => ~a,\n '!': a => !a\n};\n\nconst slice = Array.prototype.slice;\nconst apply = (m, args, cast) => {\n const obj = cast ? cast(args[0]) : args[0];\n return obj[m].apply(obj, slice.call(args, 1));\n};\nconst datetime = (y, m, d, H, M, S, ms) => new Date(y, m || 0, d != null ? d : 1, H || 0, M || 0, S || 0, ms || 0);\nvar Functions = {\n // math functions\n isNaN: Number.isNaN,\n isFinite: Number.isFinite,\n abs: Math.abs,\n acos: Math.acos,\n asin: Math.asin,\n atan: Math.atan,\n atan2: Math.atan2,\n ceil: Math.ceil,\n cos: Math.cos,\n exp: Math.exp,\n floor: Math.floor,\n log: Math.log,\n max: Math.max,\n min: Math.min,\n pow: Math.pow,\n random: Math.random,\n round: Math.round,\n sin: Math.sin,\n sqrt: Math.sqrt,\n tan: Math.tan,\n clamp: (a, b, c) => Math.max(b, Math.min(c, a)),\n // date functions\n now: Date.now,\n utc: Date.UTC,\n datetime: datetime,\n date: d => new Date(d).getDate(),\n day: d => new Date(d).getDay(),\n year: d => new Date(d).getFullYear(),\n month: d => new Date(d).getMonth(),\n hours: d => new Date(d).getHours(),\n minutes: d => new Date(d).getMinutes(),\n seconds: d => new Date(d).getSeconds(),\n milliseconds: d => new Date(d).getMilliseconds(),\n time: d => new Date(d).getTime(),\n timezoneoffset: d => new Date(d).getTimezoneOffset(),\n utcdate: d => new Date(d).getUTCDate(),\n utcday: d => new Date(d).getUTCDay(),\n utcyear: d => new Date(d).getUTCFullYear(),\n utcmonth: d => new Date(d).getUTCMonth(),\n utchours: d => new Date(d).getUTCHours(),\n utcminutes: d => new Date(d).getUTCMinutes(),\n utcseconds: d => new Date(d).getUTCSeconds(),\n utcmilliseconds: d => new Date(d).getUTCMilliseconds(),\n // sequence functions\n length: x => x.length,\n join: function () {\n return apply('join', arguments);\n },\n indexof: function () {\n return apply('indexOf', arguments);\n },\n lastindexof: function () {\n return apply('lastIndexOf', arguments);\n },\n slice: function () {\n return apply('slice', arguments);\n },\n reverse: x => x.slice().reverse(),\n // string functions\n parseFloat: parseFloat,\n parseInt: parseInt,\n upper: x => String(x).toUpperCase(),\n lower: x => String(x).toLowerCase(),\n substring: function () {\n return apply('substring', arguments, String);\n },\n split: function () {\n return apply('split', arguments, String);\n },\n replace: function () {\n return apply('replace', arguments, String);\n },\n trim: x => String(x).trim(),\n // regexp functions\n regexp: RegExp,\n test: (r, t) => RegExp(r).test(t)\n};\n\nconst EventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'];\nconst DisallowedMethods = new Set([Function, eval, setTimeout, setInterval]);\nif (typeof setImmediate === 'function') DisallowedMethods.add(setImmediate);\nconst Visitors = {\n Literal: ($, n) => n.value,\n Identifier: ($, n) => {\n const id = n.name;\n return $.memberDepth > 0 ? id : id === 'datum' ? $.datum : id === 'event' ? $.event : id === 'item' ? $.item : Constants[id] || $.params['$' + id];\n },\n MemberExpression: ($, n) => {\n const d = !n.computed,\n o = $(n.object);\n if (d) $.memberDepth += 1;\n const p = $(n.property);\n if (d) $.memberDepth -= 1;\n if (DisallowedMethods.has(o[p])) {\n // eslint-disable-next-line no-console\n console.error(`Prevented interpretation of member \"${p}\" which could lead to insecure code execution`);\n return;\n }\n return o[p];\n },\n CallExpression: ($, n) => {\n const args = n.arguments;\n let name = n.callee.name;\n\n // handle special internal functions used by encoders\n // re-route to corresponding standard function\n if (name.startsWith('_')) {\n name = name.slice(1);\n }\n\n // special case \"if\" due to conditional evaluation of branches\n return name === 'if' ? $(args[0]) ? $(args[1]) : $(args[2]) : ($.fn[name] || Functions[name]).apply($.fn, args.map($));\n },\n ArrayExpression: ($, n) => n.elements.map($),\n BinaryExpression: ($, n) => Ops[n.operator]($(n.left), $(n.right)),\n UnaryExpression: ($, n) => Unary[n.operator]($(n.argument)),\n ConditionalExpression: ($, n) => $(n.test) ? $(n.consequent) : $(n.alternate),\n LogicalExpression: ($, n) => n.operator === '&&' ? $(n.left) && $(n.right) : $(n.left) || $(n.right),\n ObjectExpression: ($, n) => n.properties.reduce((o, p) => {\n $.memberDepth += 1;\n const k = $(p.key);\n $.memberDepth -= 1;\n if (DisallowedMethods.has($(p.value))) {\n // eslint-disable-next-line no-console\n console.error(`Prevented interpretation of property \"${k}\" which could lead to insecure code execution`);\n } else {\n o[k] = $(p.value);\n }\n return o;\n }, {})\n};\nfunction interpret (ast, fn, params, datum, event, item) {\n const $ = n => Visitors[n.type]($, n);\n $.memberDepth = 0;\n $.fn = Object.create(fn);\n $.params = params;\n $.datum = datum;\n $.event = event;\n $.item = item;\n\n // route event functions to annotated vega event context\n EventFunctions.forEach(f => $.fn[f] = function () {\n return event.vega[f](...arguments);\n });\n return $(ast);\n}\n\nvar expression = {\n /**\n * Parse an expression used to update an operator value.\n */\n operator(ctx, expr) {\n const ast = expr.ast,\n fn = ctx.functions;\n return _ => interpret(ast, fn, _);\n },\n /**\n * Parse an expression provided as an operator parameter value.\n */\n parameter(ctx, expr) {\n const ast = expr.ast,\n fn = ctx.functions;\n return (datum, _) => interpret(ast, fn, _, datum);\n },\n /**\n * Parse an expression applied to an event stream.\n */\n event(ctx, expr) {\n const ast = expr.ast,\n fn = ctx.functions;\n return event => interpret(ast, fn, undefined, undefined, event);\n },\n /**\n * Parse an expression used to handle an event-driven operator update.\n */\n handler(ctx, expr) {\n const ast = expr.ast,\n fn = ctx.functions;\n return (_, event) => {\n const datum = event.item && event.item.datum;\n return interpret(ast, fn, _, datum, event);\n };\n },\n /**\n * Parse an expression that performs visual encoding.\n */\n encode(ctx, encode) {\n const {\n marktype,\n channels\n } = encode,\n fn = ctx.functions,\n swap = marktype === 'group' || marktype === 'image' || marktype === 'rect';\n return (item, _) => {\n const datum = item.datum;\n let m = 0,\n v;\n for (const name in channels) {\n v = interpret(channels[name].ast, fn, _, datum, undefined, item);\n if (item[name] !== v) {\n item[name] = v;\n m = 1;\n }\n }\n if (marktype !== 'rule') {\n adjustSpatial(item, channels, swap);\n }\n return m;\n };\n }\n};\n\nexport { expression as expressionInterpreter };\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "/**\n * Parse a vega schema url into library and version.\n */\nexport default function(url: string) {\n const regex = /schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g;\n const [library, version] = regex.exec(url)!.slice(1, 3);\n return {library: library as 'vega' | 'vega-lite', version};\n}\n", "var name = \"vega-themes\";\nvar version$1 = \"2.14.0\";\nvar description = \"Themes for stylized Vega and Vega-Lite visualizations.\";\nvar keywords = [\"vega\", \"vega-lite\", \"themes\", \"style\"];\nvar license = \"BSD-3-Clause\";\nvar author = {\n name: \"UW Interactive Data Lab\",\n url: \"https://idl.cs.washington.edu\"\n};\nvar contributors = [{\n name: \"Emily Gu\",\n url: \"https://github.com/emilygu\"\n}, {\n name: \"Arvind Satyanarayan\",\n url: \"http://arvindsatya.com\"\n}, {\n name: \"Jeffrey Heer\",\n url: \"https://idl.cs.washington.edu\"\n}, {\n name: \"Dominik Moritz\",\n url: \"https://www.domoritz.de\"\n}];\nvar main = \"build/vega-themes.js\";\nvar module = \"build/vega-themes.module.js\";\nvar unpkg = \"build/vega-themes.min.js\";\nvar jsdelivr = \"build/vega-themes.min.js\";\nvar types = \"build/vega-themes.module.d.ts\";\nvar repository = {\n type: \"git\",\n url: \"https://github.com/vega/vega-themes.git\"\n};\nvar files = [\"src\", \"build\"];\nvar scripts = {\n prebuild: \"yarn clean\",\n build: \"rollup -c\",\n clean: \"rimraf build && rimraf examples/build\",\n \"copy:data\": \"rsync -r node_modules/vega-datasets/data/* examples/data\",\n \"copy:build\": \"rsync -r build/* examples/build\",\n \"deploy:gh\": \"yarn build && mkdir -p examples/build && rsync -r build/* examples/build && gh-pages -d examples\",\n preversion: \"yarn lint\",\n serve: \"browser-sync start -s -f build examples --serveStatic examples\",\n start: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n format: \"eslint . --fix\",\n lint: \"eslint .\",\n release: \"release-it\"\n};\nvar devDependencies = {\n \"@babel/core\": \"^7.22.9\",\n \"@babel/plugin-proposal-async-generator-functions\": \"^7.20.7\",\n \"@babel/plugin-proposal-json-strings\": \"^7.18.6\",\n \"@babel/plugin-proposal-object-rest-spread\": \"^7.20.7\",\n \"@babel/plugin-proposal-optional-catch-binding\": \"^7.18.6\",\n \"@babel/plugin-transform-runtime\": \"^7.22.9\",\n \"@babel/preset-env\": \"^7.22.9\",\n \"@babel/preset-typescript\": \"^7.22.5\",\n \"@release-it/conventional-changelog\": \"^7.0.0\",\n \"@rollup/plugin-json\": \"^6.0.0\",\n \"@rollup/plugin-node-resolve\": \"^15.1.0\",\n \"@rollup/plugin-terser\": \"^0.4.3\",\n \"@typescript-eslint/eslint-plugin\": \"^6.0.0\",\n \"@typescript-eslint/parser\": \"^6.0.0\",\n \"browser-sync\": \"^2.29.3\",\n concurrently: \"^8.2.0\",\n eslint: \"^8.45.0\",\n \"eslint-config-prettier\": \"^8.8.0\",\n \"eslint-plugin-prettier\": \"^5.0.0\",\n \"gh-pages\": \"^5.0.0\",\n prettier: \"^3.0.0\",\n \"release-it\": \"^16.1.0\",\n rollup: \"^3.26.2\",\n \"rollup-plugin-bundle-size\": \"^1.0.3\",\n \"rollup-plugin-ts\": \"^3.2.0\",\n typescript: \"^5.1.6\",\n vega: \"^5.25.0\",\n \"vega-lite\": \"^5.9.3\"\n};\nvar peerDependencies = {\n vega: \"*\",\n \"vega-lite\": \"*\"\n};\nvar dependencies = {};\nvar pkg = {\n name: name,\n version: version$1,\n description: description,\n keywords: keywords,\n license: license,\n author: author,\n contributors: contributors,\n main: main,\n module: module,\n unpkg: unpkg,\n jsdelivr: jsdelivr,\n types: types,\n repository: repository,\n files: files,\n scripts: scripts,\n devDependencies: devDependencies,\n peerDependencies: peerDependencies,\n dependencies: dependencies\n};\n\nconst lightColor = '#fff';\nconst medColor = '#888';\nconst darkTheme = {\n background: '#333',\n view: {\n stroke: medColor\n },\n title: {\n color: lightColor,\n subtitleColor: lightColor\n },\n style: {\n 'guide-label': {\n fill: lightColor\n },\n 'guide-title': {\n fill: lightColor\n }\n },\n axis: {\n domainColor: lightColor,\n gridColor: medColor,\n tickColor: lightColor\n }\n};\n\nconst markColor$7 = '#4572a7';\nconst excelTheme = {\n background: '#fff',\n arc: {\n fill: markColor$7\n },\n area: {\n fill: markColor$7\n },\n line: {\n stroke: markColor$7,\n strokeWidth: 2\n },\n path: {\n stroke: markColor$7\n },\n rect: {\n fill: markColor$7\n },\n shape: {\n stroke: markColor$7\n },\n symbol: {\n fill: markColor$7,\n strokeWidth: 1.5,\n size: 50\n },\n axis: {\n bandPosition: 0.5,\n grid: true,\n gridColor: '#000000',\n gridOpacity: 1,\n gridWidth: 0.5,\n labelPadding: 10,\n tickSize: 5,\n tickWidth: 0.5\n },\n axisBand: {\n grid: false,\n tickExtra: true\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 50,\n symbolType: 'square'\n },\n range: {\n category: ['#4572a7', '#aa4643', '#8aa453', '#71598e', '#4598ae', '#d98445', '#94aace', '#d09393', '#b9cc98', '#a99cbc']\n }\n};\n\nconst markColor$6 = '#30a2da';\nconst axisColor$2 = '#cbcbcb';\nconst guideLabelColor = '#999';\nconst guideTitleColor = '#333';\nconst backgroundColor$2 = '#f0f0f0';\nconst blackTitle = '#333';\nconst fiveThirtyEightTheme = {\n arc: {\n fill: markColor$6\n },\n area: {\n fill: markColor$6\n },\n axis: {\n domainColor: axisColor$2,\n grid: true,\n gridColor: axisColor$2,\n gridWidth: 1,\n labelColor: guideLabelColor,\n labelFontSize: 10,\n titleColor: guideTitleColor,\n tickColor: axisColor$2,\n tickSize: 10,\n titleFontSize: 14,\n titlePadding: 10,\n labelPadding: 4\n },\n axisBand: {\n grid: false\n },\n background: backgroundColor$2,\n group: {\n fill: backgroundColor$2\n },\n legend: {\n labelColor: blackTitle,\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square',\n titleColor: blackTitle,\n titleFontSize: 14,\n titlePadding: 10\n },\n line: {\n stroke: markColor$6,\n strokeWidth: 2\n },\n path: {\n stroke: markColor$6,\n strokeWidth: 0.5\n },\n rect: {\n fill: markColor$6\n },\n range: {\n category: ['#30a2da', '#fc4f30', '#e5ae38', '#6d904f', '#8b8b8b', '#b96db8', '#ff9e27', '#56cc60', '#52d2ca', '#52689e', '#545454', '#9fe4f8'],\n diverging: ['#cc0020', '#e77866', '#f6e7e1', '#d6e8ed', '#91bfd9', '#1d78b5'],\n heatmap: ['#d6e8ed', '#cee0e5', '#91bfd9', '#549cc6', '#1d78b5']\n },\n point: {\n filled: true,\n shape: 'circle'\n },\n shape: {\n stroke: markColor$6\n },\n bar: {\n binSpacing: 2,\n fill: markColor$6,\n stroke: null\n },\n title: {\n anchor: 'start',\n fontSize: 24,\n fontWeight: 600,\n offset: 20\n }\n};\n\nconst markColor$5 = '#000';\nconst ggplot2Theme = {\n group: {\n fill: '#e5e5e5'\n },\n arc: {\n fill: markColor$5\n },\n area: {\n fill: markColor$5\n },\n line: {\n stroke: markColor$5\n },\n path: {\n stroke: markColor$5\n },\n rect: {\n fill: markColor$5\n },\n shape: {\n stroke: markColor$5\n },\n symbol: {\n fill: markColor$5,\n size: 40\n },\n axis: {\n domain: false,\n grid: true,\n gridColor: '#FFFFFF',\n gridOpacity: 1,\n labelColor: '#7F7F7F',\n labelPadding: 4,\n tickColor: '#7F7F7F',\n tickSize: 5.67,\n titleFontSize: 16,\n titleFontWeight: 'normal'\n },\n legend: {\n labelBaseline: 'middle',\n labelFontSize: 11,\n symbolSize: 40\n },\n range: {\n category: ['#000000', '#7F7F7F', '#1A1A1A', '#999999', '#333333', '#B0B0B0', '#4D4D4D', '#C9C9C9', '#666666', '#DCDCDC']\n }\n};\n\nconst headlineFontSize = 22;\nconst headlineFontWeight = 'normal';\nconst labelFont$1 = 'Benton Gothic, sans-serif';\nconst labelFontSize = 11.5;\nconst labelFontWeight = 'normal';\nconst markColor$4 = '#82c6df';\n// const markHighlight = '#006d8f';\n// const markDemocrat = '#5789b8';\n// const markRepublican = '#d94f54';\nconst titleFont = 'Benton Gothic Bold, sans-serif';\nconst titleFontWeight = 'normal';\nconst titleFontSize$1 = 13;\nconst colorSchemes$1 = {\n 'category-6': ['#ec8431', '#829eb1', '#c89d29', '#3580b1', '#adc839', '#ab7fb4'],\n 'fire-7': ['#fbf2c7', '#f9e39c', '#f8d36e', '#f4bb6a', '#e68a4f', '#d15a40', '#ab4232'],\n 'fireandice-6': ['#e68a4f', '#f4bb6a', '#f9e39c', '#dadfe2', '#a6b7c6', '#849eae'],\n 'ice-7': ['#edefee', '#dadfe2', '#c4ccd2', '#a6b7c6', '#849eae', '#607785', '#47525d']\n};\nconst latimesTheme = {\n background: '#ffffff',\n title: {\n anchor: 'start',\n color: '#000000',\n font: titleFont,\n fontSize: headlineFontSize,\n fontWeight: headlineFontWeight\n },\n arc: {\n fill: markColor$4\n },\n area: {\n fill: markColor$4\n },\n line: {\n stroke: markColor$4,\n strokeWidth: 2\n },\n path: {\n stroke: markColor$4\n },\n rect: {\n fill: markColor$4\n },\n shape: {\n stroke: markColor$4\n },\n symbol: {\n fill: markColor$4,\n size: 30\n },\n axis: {\n labelFont: labelFont$1,\n labelFontSize,\n labelFontWeight,\n titleFont,\n titleFontSize: titleFontSize$1,\n titleFontWeight\n },\n axisX: {\n labelAngle: 0,\n labelPadding: 4,\n tickSize: 3\n },\n axisY: {\n labelBaseline: 'middle',\n maxExtent: 45,\n minExtent: 45,\n tickSize: 2,\n titleAlign: 'left',\n titleAngle: 0,\n titleX: -45,\n titleY: -11\n },\n legend: {\n labelFont: labelFont$1,\n labelFontSize,\n symbolType: 'square',\n titleFont,\n titleFontSize: titleFontSize$1,\n titleFontWeight\n },\n range: {\n category: colorSchemes$1['category-6'],\n diverging: colorSchemes$1['fireandice-6'],\n heatmap: colorSchemes$1['fire-7'],\n ordinal: colorSchemes$1['fire-7'],\n ramp: colorSchemes$1['fire-7']\n }\n};\n\nconst markColor$3 = '#ab5787';\nconst axisColor$1 = '#979797';\nconst quartzTheme = {\n background: '#f9f9f9',\n arc: {\n fill: markColor$3\n },\n area: {\n fill: markColor$3\n },\n line: {\n stroke: markColor$3\n },\n path: {\n stroke: markColor$3\n },\n rect: {\n fill: markColor$3\n },\n shape: {\n stroke: markColor$3\n },\n symbol: {\n fill: markColor$3,\n size: 30\n },\n axis: {\n domainColor: axisColor$1,\n domainWidth: 0.5,\n gridWidth: 0.2,\n labelColor: axisColor$1,\n tickColor: axisColor$1,\n tickWidth: 0.2,\n titleColor: axisColor$1\n },\n axisBand: {\n grid: false\n },\n axisX: {\n grid: true,\n tickSize: 10\n },\n axisY: {\n domain: false,\n grid: true,\n tickSize: 0\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolSize: 30,\n symbolType: 'square'\n },\n range: {\n category: ['#ab5787', '#51b2e5', '#703c5c', '#168dd9', '#d190b6', '#00609f', '#d365ba', '#154866', '#666666', '#c4c4c4']\n }\n};\n\nconst markColor$2 = '#3e5c69';\nconst voxTheme = {\n background: '#fff',\n arc: {\n fill: markColor$2\n },\n area: {\n fill: markColor$2\n },\n line: {\n stroke: markColor$2\n },\n path: {\n stroke: markColor$2\n },\n rect: {\n fill: markColor$2\n },\n shape: {\n stroke: markColor$2\n },\n symbol: {\n fill: markColor$2\n },\n axis: {\n domainWidth: 0.5,\n grid: true,\n labelPadding: 2,\n tickSize: 5,\n tickWidth: 0.5,\n titleFontWeight: 'normal'\n },\n axisBand: {\n grid: false\n },\n axisX: {\n gridWidth: 0.2\n },\n axisY: {\n gridDash: [3],\n gridWidth: 0.4\n },\n legend: {\n labelFontSize: 11,\n padding: 1,\n symbolType: 'square'\n },\n range: {\n category: ['#3e5c69', '#6793a6', '#182429', '#0570b0', '#3690c0', '#74a9cf', '#a6bddb', '#e2ddf2']\n }\n};\n\nconst markColor$1 = '#1696d2';\nconst axisColor = '#000000';\nconst backgroundColor$1 = '#FFFFFF';\nconst font = 'Lato';\nconst labelFont = 'Lato';\nconst sourceFont = 'Lato';\nconst gridColor$1 = '#DEDDDD';\nconst titleFontSize = 18;\nconst colorSchemes = {\n 'main-colors': ['#1696d2', '#d2d2d2', '#000000', '#fdbf11', '#ec008b', '#55b748', '#5c5859', '#db2b27'],\n 'shades-blue': ['#CFE8F3', '#A2D4EC', '#73BFE2', '#46ABDB', '#1696D2', '#12719E', '#0A4C6A', '#062635'],\n 'shades-gray': ['#F5F5F5', '#ECECEC', '#E3E3E3', '#DCDBDB', '#D2D2D2', '#9D9D9D', '#696969', '#353535'],\n 'shades-yellow': ['#FFF2CF', '#FCE39E', '#FDD870', '#FCCB41', '#FDBF11', '#E88E2D', '#CA5800', '#843215'],\n 'shades-magenta': ['#F5CBDF', '#EB99C2', '#E46AA7', '#E54096', '#EC008B', '#AF1F6B', '#761548', '#351123'],\n 'shades-green': ['#DCEDD9', '#BCDEB4', '#98CF90', '#78C26D', '#55B748', '#408941', '#2C5C2D', '#1A2E19'],\n 'shades-black': ['#D5D5D4', '#ADABAC', '#848081', '#5C5859', '#332D2F', '#262223', '#1A1717', '#0E0C0D'],\n 'shades-red': ['#F8D5D4', '#F1AAA9', '#E9807D', '#E25552', '#DB2B27', '#A4201D', '#6E1614', '#370B0A'],\n 'one-group': ['#1696d2', '#000000'],\n 'two-groups-cat-1': ['#1696d2', '#000000'],\n 'two-groups-cat-2': ['#1696d2', '#fdbf11'],\n 'two-groups-cat-3': ['#1696d2', '#db2b27'],\n 'two-groups-seq': ['#a2d4ec', '#1696d2'],\n 'three-groups-cat': ['#1696d2', '#fdbf11', '#000000'],\n 'three-groups-seq': ['#a2d4ec', '#1696d2', '#0a4c6a'],\n 'four-groups-cat-1': ['#000000', '#d2d2d2', '#fdbf11', '#1696d2'],\n 'four-groups-cat-2': ['#1696d2', '#ec0008b', '#fdbf11', '#5c5859'],\n 'four-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a'],\n 'five-groups-cat-1': ['#1696d2', '#fdbf11', '#d2d2d2', '#ec008b', '#000000'],\n 'five-groups-cat-2': ['#1696d2', '#0a4c6a', '#d2d2d2', '#fdbf11', '#332d2f'],\n 'five-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a', '#000000'],\n 'six-groups-cat-1': ['#1696d2', '#ec008b', '#fdbf11', '#000000', '#d2d2d2', '#55b748'],\n 'six-groups-cat-2': ['#1696d2', '#d2d2d2', '#ec008b', '#fdbf11', '#332d2f', '#0a4c6a'],\n 'six-groups-seq': ['#cfe8f3', '#a2d4ec', '#73bfe2', '#46abdb', '#1696d2', '#12719e'],\n 'diverging-colors': ['#ca5800', '#fdbf11', '#fdd870', '#fff2cf', '#cfe8f3', '#73bfe2', '#1696d2', '#0a4c6a']\n};\nconst urbanInstituteTheme = {\n background: backgroundColor$1,\n title: {\n anchor: 'start',\n fontSize: titleFontSize,\n font: font\n },\n axisX: {\n domain: true,\n domainColor: axisColor,\n domainWidth: 1,\n grid: false,\n labelFontSize: 12,\n labelFont: labelFont,\n labelAngle: 0,\n tickColor: axisColor,\n tickSize: 5,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font\n },\n axisY: {\n domain: false,\n domainWidth: 1,\n grid: true,\n gridColor: gridColor$1,\n gridWidth: 1,\n labelFontSize: 12,\n labelFont: labelFont,\n labelPadding: 8,\n ticks: false,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n titleAngle: 0,\n titleY: -10,\n titleX: 18\n },\n legend: {\n labelFontSize: 12,\n labelFont: labelFont,\n symbolSize: 100,\n titleFontSize: 12,\n titlePadding: 10,\n titleFont: font,\n orient: 'right',\n offset: 10\n },\n view: {\n stroke: 'transparent'\n },\n range: {\n category: colorSchemes['six-groups-cat-1'],\n diverging: colorSchemes['diverging-colors'],\n heatmap: colorSchemes['diverging-colors'],\n ordinal: colorSchemes['six-groups-seq'],\n ramp: colorSchemes['shades-blue']\n },\n area: {\n fill: markColor$1\n },\n rect: {\n fill: markColor$1\n },\n line: {\n color: markColor$1,\n stroke: markColor$1,\n strokeWidth: 5\n },\n trail: {\n color: markColor$1,\n stroke: markColor$1,\n strokeWidth: 0,\n size: 1\n },\n path: {\n stroke: markColor$1,\n strokeWidth: 0.5\n },\n point: {\n filled: true\n },\n text: {\n font: sourceFont,\n color: markColor$1,\n fontSize: 11,\n align: 'center',\n fontWeight: 400,\n size: 11\n },\n style: {\n bar: {\n fill: markColor$1,\n stroke: null\n }\n },\n arc: {\n fill: markColor$1\n },\n shape: {\n stroke: markColor$1\n },\n symbol: {\n fill: markColor$1,\n size: 30\n }\n};\n\n/**\n * Copyright 2020 Google LLC.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file or at\n * https://developers.google.com/open-source/licenses/bsd\n */\n\nconst markColor = '#3366CC';\nconst gridColor = '#ccc';\nconst defaultFont$1 = 'Arial, sans-serif';\nconst googlechartsTheme = {\n arc: {\n fill: markColor\n },\n area: {\n fill: markColor\n },\n path: {\n stroke: markColor\n },\n rect: {\n fill: markColor\n },\n shape: {\n stroke: markColor\n },\n symbol: {\n stroke: markColor\n },\n circle: {\n fill: markColor\n },\n background: '#fff',\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10\n },\n style: {\n 'guide-label': {\n font: defaultFont$1,\n fontSize: 12\n },\n 'guide-title': {\n font: defaultFont$1,\n fontSize: 12\n },\n 'group-title': {\n font: defaultFont$1,\n fontSize: 12\n }\n },\n title: {\n font: defaultFont$1,\n fontSize: 14,\n fontWeight: 'bold',\n dy: -3,\n anchor: 'start'\n },\n axis: {\n gridColor: gridColor,\n tickColor: gridColor,\n domain: false,\n grid: true\n },\n range: {\n category: ['#4285F4', '#DB4437', '#F4B400', '#0F9D58', '#AB47BC', '#00ACC1', '#FF7043', '#9E9D24', '#5C6BC0', '#F06292', '#00796B', '#C2185B'],\n heatmap: ['#c6dafc', '#5e97f6', '#2a56c6']\n }\n};\n\nconst ptToPx = value => value * (1 / 3 + 1);\nconst fontSmallPx = ptToPx(9);\nconst legendFontPx = ptToPx(10);\nconst fontLargePx = ptToPx(12);\nconst fontStandard = 'Segoe UI';\nconst fontTitle = 'wf_standard-font, helvetica, arial, sans-serif';\nconst firstLevelElementColor = '#252423';\nconst secondLevelElementColor = '#605E5C';\nconst backgroundColor = 'transparent';\nconst backgroundSecondaryColor = '#C8C6C4';\nconst paletteColor1 = '#118DFF';\nconst paletteColor2 = '#12239E';\nconst paletteColor3 = '#E66C37';\nconst paletteColor4 = '#6B007B';\nconst paletteColor5 = '#E044A7';\nconst paletteColor6 = '#744EC2';\nconst paletteColor7 = '#D9B300';\nconst paletteColor8 = '#D64550';\nconst divergentColorMax = paletteColor1;\nconst divergentColorMin = '#DEEFFF';\nconst divergentPalette = [divergentColorMin, divergentColorMax];\nconst ordinalPalette = [divergentColorMin, '#c7e4ff', '#b0d9ff', '#9aceff', '#83c3ff', '#6cb9ff', '#55aeff', '#3fa3ff', '#2898ff', divergentColorMax];\nconst powerbiTheme = {\n view: {\n stroke: backgroundColor\n },\n background: backgroundColor,\n font: fontStandard,\n header: {\n titleFont: fontTitle,\n titleFontSize: fontLargePx,\n titleColor: firstLevelElementColor,\n labelFont: fontStandard,\n labelFontSize: legendFontPx,\n labelColor: secondLevelElementColor\n },\n axis: {\n ticks: false,\n grid: false,\n domain: false,\n labelColor: secondLevelElementColor,\n labelFontSize: fontSmallPx,\n titleFont: fontTitle,\n titleColor: firstLevelElementColor,\n titleFontSize: fontLargePx,\n titleFontWeight: 'normal'\n },\n axisQuantitative: {\n tickCount: 3,\n grid: true,\n gridColor: backgroundSecondaryColor,\n gridDash: [1, 5],\n labelFlush: false\n },\n axisBand: {\n tickExtra: true\n },\n axisX: {\n labelPadding: 5\n },\n axisY: {\n labelPadding: 10\n },\n bar: {\n fill: paletteColor1\n },\n line: {\n stroke: paletteColor1,\n strokeWidth: 3,\n strokeCap: 'round',\n strokeJoin: 'round'\n },\n text: {\n font: fontStandard,\n fontSize: fontSmallPx,\n fill: secondLevelElementColor\n },\n arc: {\n fill: paletteColor1\n },\n area: {\n fill: paletteColor1,\n line: true,\n opacity: 0.6\n },\n path: {\n stroke: paletteColor1\n },\n rect: {\n fill: paletteColor1\n },\n point: {\n fill: paletteColor1,\n filled: true,\n size: 75\n },\n shape: {\n stroke: paletteColor1\n },\n symbol: {\n fill: paletteColor1,\n strokeWidth: 1.5,\n size: 50\n },\n legend: {\n titleFont: fontStandard,\n titleFontWeight: 'bold',\n titleColor: secondLevelElementColor,\n labelFont: fontStandard,\n labelFontSize: legendFontPx,\n labelColor: secondLevelElementColor,\n symbolType: 'circle',\n symbolSize: 75\n },\n range: {\n category: [paletteColor1, paletteColor2, paletteColor3, paletteColor4, paletteColor5, paletteColor6, paletteColor7, paletteColor8],\n diverging: divergentPalette,\n heatmap: divergentPalette,\n ordinal: ordinalPalette\n }\n};\n\nconst defaultFont = 'IBM Plex Sans,system-ui,-apple-system,BlinkMacSystemFont,\".sfnstext-regular\",sans-serif';\nconst fontWeight = 400;\nconst darkCategories = ['#8a3ffc', '#33b1ff', '#007d79', '#ff7eb6', '#fa4d56', '#fff1f1', '#6fdc8c', '#4589ff', '#d12771', '#d2a106', '#08bdba', '#bae6ff', '#ba4e00', '#d4bbff'];\nconst lightCategories = ['#6929c4', '#1192e8', '#005d5d', '#9f1853', '#fa4d56', '#570408', '#198038', '#002d9c', '#ee538b', '#b28600', '#009d9a', '#012749', '#8a3800', '#a56eff'];\nfunction genCarbonConfig({\n type,\n background\n}) {\n const viewbg = type === 'dark' ? '#161616' : '#ffffff';\n const textColor = type === 'dark' ? '#f4f4f4' : '#161616';\n const category = type === 'dark' ? darkCategories : lightCategories;\n const markColor = type === 'dark' ? '#d4bbff' : '#6929c4';\n return {\n background,\n arc: {\n fill: markColor\n },\n area: {\n fill: markColor\n },\n path: {\n stroke: markColor\n },\n rect: {\n fill: markColor\n },\n shape: {\n stroke: markColor\n },\n symbol: {\n stroke: markColor\n },\n circle: {\n fill: markColor\n },\n view: {\n fill: viewbg,\n stroke: viewbg\n },\n group: {\n fill: viewbg\n },\n title: {\n color: textColor,\n anchor: 'start',\n dy: -15,\n fontSize: 16,\n font: defaultFont,\n fontWeight: 600\n },\n axis: {\n labelColor: textColor,\n labelFontSize: 12,\n grid: true,\n gridColor: '#525252',\n titleColor: textColor,\n labelAngle: 0\n },\n style: {\n 'guide-label': {\n font: defaultFont,\n fill: textColor,\n fontWeight: fontWeight\n },\n 'guide-title': {\n font: defaultFont,\n fill: textColor,\n fontWeight: fontWeight\n }\n },\n range: {\n category,\n diverging: ['#750e13', '#a2191f', '#da1e28', '#fa4d56', '#ff8389', '#ffb3b8', '#ffd7d9', '#fff1f1', '#e5f6ff', '#bae6ff', '#82cfff', '#33b1ff', '#1192e8', '#0072c3', '#00539a', '#003a6d'],\n heatmap: ['#f6f2ff', '#e8daff', '#d4bbff', '#be95ff', '#a56eff', '#8a3ffc', '#6929c4', '#491d8b', '#31135e', '#1c0f30']\n }\n };\n}\n\nconst carbonwhite = genCarbonConfig({\n type: 'light',\n background: '#ffffff'\n});\n\nconst carbong10 = genCarbonConfig({\n type: 'light',\n background: '#f4f4f4'\n});\n\nconst carbong90 = genCarbonConfig({\n type: 'dark',\n background: '#262626'\n});\n\nconst carbong100 = genCarbonConfig({\n type: 'dark',\n background: '#161616'\n});\n\nconst version = pkg.version;\n\nexport { carbong10, carbong100, carbong90, carbonwhite, darkTheme as dark, excelTheme as excel, fiveThirtyEightTheme as fivethirtyeight, ggplot2Theme as ggplot2, googlechartsTheme as googlecharts, latimesTheme as latimes, powerbiTheme as powerbi, quartzTheme as quartz, urbanInstituteTheme as urbaninstitute, version, voxTheme as vox };\n", "import {isArray, isObject, isString} from 'vega-util';\n\n/**\n * Format the value to be shown in the tooltip.\n *\n * @param value The value to show in the tooltip.\n * @param valueToHtml Function to convert a single cell value to an HTML string\n */\nexport function formatValue(value: any, valueToHtml: (value: any) => string, maxDepth: number): string {\n if (isArray(value)) {\n return `[${value.map((v) => valueToHtml(isString(v) ? v : stringify(v, maxDepth))).join(', ')}]`;\n }\n\n if (isObject(value)) {\n let content = '';\n\n const {title, image, ...rest} = value as any;\n\n if (title) {\n content += `<h2>${valueToHtml(title)}</h2>`;\n }\n\n if (image) {\n content += `<img src=\"${valueToHtml(image)}\">`;\n }\n\n const keys = Object.keys(rest);\n if (keys.length > 0) {\n content += '<table>';\n for (const key of keys) {\n let val = (rest as any)[key];\n\n // ignore undefined properties\n if (val === undefined) {\n continue;\n }\n\n if (isObject(val)) {\n val = stringify(val, maxDepth);\n }\n\n content += `<tr><td class=\"key\">${valueToHtml(key)}</td><td class=\"value\">${valueToHtml(val)}</td></tr>`;\n }\n content += `</table>`;\n }\n\n return content || '{}'; // show empty object if there are no properties\n }\n\n return valueToHtml(value);\n}\n\nexport function replacer(maxDepth: number) {\n const stack: any[] = [];\n\n return function (this: any, key: string, value: any) {\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n const pos = stack.indexOf(this) + 1;\n stack.length = pos;\n if (stack.length > maxDepth) {\n return '[Object]';\n }\n if (stack.indexOf(value) >= 0) {\n return '[Circular]';\n }\n stack.push(value);\n return value;\n };\n}\n\n/**\n * Stringify any JS object to valid JSON\n */\nexport function stringify(obj: any, maxDepth: number) {\n return JSON.stringify(obj, replacer(maxDepth));\n}\n", "// generated with build-style.sh\nexport default `#vg-tooltip-element {\n visibility: hidden;\n padding: 8px;\n position: fixed;\n z-index: 1000;\n font-family: sans-serif;\n font-size: 11px;\n border-radius: 3px;\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\n /* The default theme is the light theme. */\n background-color: rgba(255, 255, 255, 0.95);\n border: 1px solid #d9d9d9;\n color: black;\n}\n#vg-tooltip-element.visible {\n visibility: visible;\n}\n#vg-tooltip-element h2 {\n margin-top: 0;\n margin-bottom: 10px;\n font-size: 13px;\n}\n#vg-tooltip-element table {\n border-spacing: 0;\n}\n#vg-tooltip-element table tr {\n border: none;\n}\n#vg-tooltip-element table tr td {\n overflow: hidden;\n text-overflow: ellipsis;\n padding-top: 2px;\n padding-bottom: 2px;\n}\n#vg-tooltip-element table tr td.key {\n color: #808080;\n max-width: 150px;\n text-align: right;\n padding-right: 4px;\n}\n#vg-tooltip-element table tr td.value {\n display: block;\n max-width: 300px;\n max-height: 7em;\n text-align: left;\n}\n#vg-tooltip-element.dark-theme {\n background-color: rgba(32, 32, 32, 0.9);\n border: 1px solid #f5f5f5;\n color: white;\n}\n#vg-tooltip-element.dark-theme td.key {\n color: #bfbfbf;\n}\n`;\n", "import {formatValue} from './formatValue';\nimport defaultStyle from './style';\n\nconst EL_ID = 'vg-tooltip-element';\n\nexport const DEFAULT_OPTIONS = {\n /**\n * X offset.\n */\n offsetX: 10,\n\n /**\n * Y offset.\n */\n offsetY: 10,\n\n /**\n * ID of the tooltip element.\n */\n id: EL_ID,\n\n /**\n * ID of the tooltip CSS style.\n */\n styleId: 'vega-tooltip-style',\n\n /**\n * The name of the theme. You can use the CSS class called [THEME]-theme to style the tooltips.\n *\n * There are two predefined themes: \"light\" (default) and \"dark\".\n */\n theme: 'light',\n\n /**\n * Do not use the default styles provided by Vega Tooltip. If you enable this option, you need to use your own styles. It is not necessary to disable the default style when using a custom theme.\n */\n disableDefaultStyle: false,\n\n /**\n * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n *\n * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n */\n sanitize: escapeHTML,\n\n /**\n * The maximum recursion depth when printing objects in the tooltip.\n */\n maxDepth: 2,\n\n /**\n * A function to customize the rendered HTML of the tooltip.\n * @param value A value string, or object of value strings keyed by field\n * @param sanitize The `sanitize` function from `options.sanitize`\n * @returns {string} The returned string will become the `innerHTML` of the tooltip element\n */\n formatTooltip: formatValue,\n};\n\nexport type Options = Partial<typeof DEFAULT_OPTIONS>;\n\n/**\n * Escape special HTML characters.\n *\n * @param value A value to convert to string and HTML-escape.\n */\nexport function escapeHTML(value: any): string {\n return String(value).replace(/&/g, '&').replace(/</g, '<');\n}\n\nexport function createDefaultStyle(id: string): string {\n // Just in case this id comes from a user, ensure these is no security issues\n if (!/^[A-Za-z]+[-:.\\w]*$/.test(id)) {\n throw new Error('Invalid HTML ID');\n }\n\n return defaultStyle.toString().replace(EL_ID, id);\n}\n", "/**\n * Position the tooltip\n *\n * @param event The mouse event.\n * @param tooltipBox\n * @param offsetX Horizontal offset.\n * @param offsetY Vertical offset.\n */\nexport function calculatePosition(\n event: MouseEvent,\n tooltipBox: {width: number; height: number},\n offsetX: number,\n offsetY: number,\n) {\n let x = event.clientX + offsetX;\n if (x + tooltipBox.width > window.innerWidth) {\n x = +event.clientX - offsetX - tooltipBox.width;\n }\n\n let y = event.clientY + offsetY;\n if (y + tooltipBox.height > window.innerHeight) {\n y = +event.clientY - offsetY - tooltipBox.height;\n }\n\n return {x, y};\n}\n", "import {TooltipHandler} from 'vega-typings';\n\nimport {createDefaultStyle, DEFAULT_OPTIONS, Options} from './defaults';\nimport {calculatePosition} from './position';\n\n/**\n * The tooltip handler class.\n */\nexport class Handler {\n /**\n * The handler function. We bind this to this function in the constructor.\n */\n public call: TooltipHandler;\n\n /**\n * Complete tooltip options.\n */\n private options: Required<Options>;\n\n /**\n * The tooltip html element.\n */\n private el: HTMLElement | null;\n\n /**\n * Create the tooltip handler and initialize the element and style.\n *\n * @param options Tooltip Options\n */\n constructor(options?: Options) {\n this.options = {...DEFAULT_OPTIONS, ...options};\n const elementId = this.options.id;\n this.el = null;\n\n // bind this to call\n this.call = this.tooltipHandler.bind(this);\n\n // prepend a default stylesheet for tooltips to the head\n if (!this.options.disableDefaultStyle && !document.getElementById(this.options.styleId)) {\n const style = document.createElement('style');\n style.setAttribute('id', this.options.styleId);\n style.innerHTML = createDefaultStyle(elementId);\n\n const head = document.head;\n if (head.childNodes.length > 0) {\n head.insertBefore(style, head.childNodes[0]);\n } else {\n head.appendChild(style);\n }\n }\n }\n\n /**\n * The tooltip handler function.\n */\n private tooltipHandler(handler: any, event: MouseEvent, item: any, value: any) {\n // console.log(handler, event, item, value);\n\n // append a div element that we use as a tooltip unless it already exists\n this.el = document.getElementById(this.options.id);\n if (!this.el) {\n this.el = document.createElement('div');\n this.el.setAttribute('id', this.options.id);\n this.el.classList.add('vg-tooltip');\n\n const tooltipContainer = document.fullscreenElement ?? document.body;\n tooltipContainer.appendChild(this.el);\n }\n\n // hide tooltip for null, undefined, or empty string values\n if (value == null || value === '') {\n this.el.classList.remove('visible', `${this.options.theme}-theme`);\n return;\n }\n\n // set the tooltip content\n this.el.innerHTML = this.options.formatTooltip(value, this.options.sanitize, this.options.maxDepth);\n\n // make the tooltip visible\n this.el.classList.add('visible', `${this.options.theme}-theme`);\n\n const {x, y} = calculatePosition(\n event,\n this.el.getBoundingClientRect(),\n this.options.offsetX,\n this.options.offsetY,\n );\n\n this.el.style.top = `${y}px`;\n this.el.style.left = `${x}px`;\n }\n}\n", "import pkg from '../package.json';\nimport {View} from 'vega-typings';\n\nimport {Options} from './defaults';\nimport {Handler} from './Handler';\n\nconst version = pkg.version;\n\nexport * from './defaults';\nexport * from './formatValue';\nexport * from './position';\nexport * from './Handler';\nexport {version};\n\n/**\n * Create a tooltip handler and register it with the provided view.\n *\n * @param view The Vega view.\n * @param opt Tooltip options.\n */\nexport default function (view: View, opt?: Options) {\n const handler = new Handler(opt);\n\n view.tooltip(handler.call).run();\n\n return handler;\n}\n", "export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}", "import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}", "import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n", "const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "import {MessageData} from './types';\n\n/**\n * Open editor url in a new window, and pass a message.\n */\nexport default function (window: Window, url: string, data: MessageData) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const editor = window.open(url)!;\n const wait = 10_000;\n const step = 250;\n const {origin} = new URL(url);\n // eslint-disable-next-line no-bitwise\n let count = ~~(wait / step);\n\n function listen(evt: MessageEvent) {\n if (evt.source === editor) {\n count = 0;\n window.removeEventListener('message', listen, false);\n }\n }\n window.addEventListener('message', listen, false);\n\n // send message\n // periodically resend until ack received or timeout\n function send() {\n if (count <= 0) {\n return;\n }\n editor.postMessage(data, origin);\n setTimeout(send, step);\n count -= 1;\n }\n setTimeout(send, step);\n}\n", "// generated with build-style.sh\nexport default `.vega-embed {\n position: relative;\n display: inline-block;\n box-sizing: border-box;\n}\n.vega-embed.has-actions {\n padding-right: 38px;\n}\n.vega-embed details:not([open]) > :not(summary) {\n display: none !important;\n}\n.vega-embed summary {\n list-style: none;\n position: absolute;\n top: 0;\n right: 0;\n padding: 6px;\n z-index: 1000;\n background: white;\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\n color: #1b1e23;\n border: 1px solid #aaa;\n border-radius: 999px;\n opacity: 0.2;\n transition: opacity 0.4s ease-in;\n cursor: pointer;\n line-height: 0px;\n}\n.vega-embed summary::-webkit-details-marker {\n display: none;\n}\n.vega-embed summary:active {\n box-shadow: #aaa 0px 0px 0px 1px inset;\n}\n.vega-embed summary svg {\n width: 14px;\n height: 14px;\n}\n.vega-embed details[open] summary {\n opacity: 0.7;\n}\n.vega-embed:hover summary, .vega-embed:focus-within summary {\n opacity: 1 !important;\n transition: opacity 0.2s ease;\n}\n.vega-embed .vega-actions {\n position: absolute;\n z-index: 1001;\n top: 35px;\n right: -9px;\n display: flex;\n flex-direction: column;\n padding-bottom: 8px;\n padding-top: 8px;\n border-radius: 4px;\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\n border: 1px solid #d9d9d9;\n background: white;\n animation-duration: 0.15s;\n animation-name: scale-in;\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\n text-align: left;\n}\n.vega-embed .vega-actions a {\n padding: 8px 16px;\n font-family: sans-serif;\n font-size: 14px;\n font-weight: 600;\n white-space: nowrap;\n color: #434a56;\n text-decoration: none;\n}\n.vega-embed .vega-actions a:hover, .vega-embed .vega-actions a:focus {\n background-color: #f7f7f9;\n color: black;\n}\n.vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\n content: \"\";\n display: inline-block;\n position: absolute;\n}\n.vega-embed .vega-actions::before {\n left: auto;\n right: 14px;\n top: -16px;\n border: 8px solid rgba(0, 0, 0, 0);\n border-bottom-color: #d9d9d9;\n}\n.vega-embed .vega-actions::after {\n left: auto;\n right: 15px;\n top: -14px;\n border: 7px solid rgba(0, 0, 0, 0);\n border-bottom-color: #fff;\n}\n.vega-embed .chart-wrapper.fit-x {\n width: 100%;\n}\n.vega-embed .chart-wrapper.fit-y {\n height: 100%;\n}\n\n.vega-embed-wrapper {\n max-width: 100%;\n overflow: auto;\n padding-right: 14px;\n}\n\n@keyframes scale-in {\n from {\n opacity: 0;\n transform: scale(0.6);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n`;\n", "import {writeConfig} from 'vega';\n\nexport function isURL(s: string): boolean {\n return s.startsWith('http://') || s.startsWith('https://') || s.startsWith('//');\n}\n\nexport type DeepPartial<T> = {[P in keyof T]?: P extends unknown ? unknown : DeepPartial<T[P]>};\n\nexport function mergeDeep<T>(dest: T, ...src: readonly DeepPartial<T>[]): T {\n for (const s of src) {\n deepMerge_(dest, s);\n }\n return dest;\n}\n\nfunction deepMerge_(dest: any, src: any) {\n for (const property of Object.keys(src)) {\n writeConfig(dest, property, src[property], true);\n }\n}\n", "import {applyPatch, Operation} from 'fast-json-patch';\nimport stringify from 'json-stringify-pretty-compact';\n// need this import because of https://github.com/npm/node-semver/issues/381\nimport satisfies from 'semver/functions/satisfies';\nimport * as vegaImport from 'vega';\nimport {\n AutoSize,\n Config as VgConfig,\n EncodeEntryName,\n isBoolean,\n isObject,\n isString,\n Loader,\n LoaderOptions,\n mergeConfig,\n Renderers,\n Spec as VgSpec,\n TooltipHandler,\n View,\n} from 'vega';\nimport {expressionInterpreter} from 'vega-interpreter';\nimport * as vegaLiteImport from 'vega-lite';\nimport {Config as VlConfig, TopLevelSpec as VlSpec} from 'vega-lite';\nimport schemaParser from 'vega-schema-url-parser';\nimport * as themes from 'vega-themes';\nimport {Handler, Options as TooltipOptions} from 'vega-tooltip';\nimport post from './post';\nimport embedStyle from './style';\nimport {Config, ExpressionFunction, Mode} from './types';\nimport {mergeDeep} from './util';\nimport pkg from '../package.json';\n\nexport const version = pkg.version;\n\nexport * from './types';\n\nexport const vega = vegaImport;\nexport let vegaLite = vegaLiteImport;\n\n// For backwards compatibility with Vega-Lite before v4.\nconst w = (typeof window !== 'undefined' ? window : undefined) as any;\nif (vegaLite === undefined && w?.vl?.compile) {\n vegaLite = w.vl;\n}\n\nexport interface Actions {\n export?: boolean | {svg?: boolean; png?: boolean};\n source?: boolean;\n compiled?: boolean;\n editor?: boolean;\n}\n\nexport const DEFAULT_ACTIONS = {export: {svg: true, png: true}, source: true, compiled: true, editor: true};\n\nexport interface Hover {\n hoverSet?: EncodeEntryName;\n updateSet?: EncodeEntryName;\n}\n\nexport type PatchFunc = (spec: VgSpec) => VgSpec;\n\nconst I18N = {\n CLICK_TO_VIEW_ACTIONS: 'Click to view actions',\n COMPILED_ACTION: 'View Compiled Vega',\n EDITOR_ACTION: 'Open in Vega Editor',\n PNG_ACTION: 'Save as PNG',\n SOURCE_ACTION: 'View Source',\n SVG_ACTION: 'Save as SVG',\n};\n\nexport interface EmbedOptions<S = string, R = Renderers> {\n bind?: HTMLElement | string;\n actions?: boolean | Actions;\n mode?: Mode;\n theme?: 'excel' | 'ggplot2' | 'quartz' | 'vox' | 'dark';\n defaultStyle?: boolean | string;\n logLevel?: number;\n loader?: Loader | LoaderOptions;\n renderer?: R;\n tooltip?: TooltipHandler | TooltipOptions | boolean;\n patch?: S | PatchFunc | Operation[];\n width?: number;\n height?: number;\n padding?: number | {left?: number; right?: number; top?: number; bottom?: number};\n scaleFactor?: number | {svg?: number; png?: number};\n config?: S | Config;\n sourceHeader?: string;\n sourceFooter?: string;\n editorUrl?: string;\n hover?: boolean | Hover;\n i18n?: Partial<typeof I18N>;\n downloadFileName?: string;\n formatLocale?: Record<string, unknown>;\n timeFormatLocale?: Record<string, unknown>;\n expressionFunctions?: ExpressionFunction;\n ast?: boolean;\n expr?: typeof expressionInterpreter;\n viewClass?: typeof View;\n forceActionsMenu?: boolean;\n}\n\nconst NAMES: {[key in Mode]: string} = {\n vega: 'Vega',\n 'vega-lite': 'Vega-Lite',\n};\n\nconst VERSION = {\n vega: vega.version,\n 'vega-lite': vegaLite ? vegaLite.version : 'not available',\n};\n\nconst PREPROCESSOR: {[mode in Mode]: (spec: any, config?: Config) => VgSpec} = {\n vega: (vgSpec: VgSpec) => vgSpec,\n 'vega-lite': (vlSpec, config) => vegaLite.compile(vlSpec as VlSpec, {config: config as VlConfig}).spec,\n};\n\nconst SVG_CIRCLES = `\n<svg viewBox=\"0 0 16 16\" fill=\"currentColor\" stroke=\"none\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle r=\"2\" cy=\"8\" cx=\"2\"></circle>\n <circle r=\"2\" cy=\"8\" cx=\"8\"></circle>\n <circle r=\"2\" cy=\"8\" cx=\"14\"></circle>\n</svg>`;\n\nconst CHART_WRAPPER_CLASS = 'chart-wrapper';\n\nexport type VisualizationSpec = VlSpec | VgSpec;\n\nexport interface Result {\n /** The Vega view. */\n view: View;\n\n /** The input specification. */\n spec: VisualizationSpec;\n\n /** The compiled and patched Vega specification. */\n vgSpec: VgSpec;\n\n /** The Vega-Embed options. */\n embedOptions: EmbedOptions;\n\n /** Removes references to unwanted behaviors and memory leaks. Calls Vega's `view.finalize`. */\n finalize: () => void;\n}\n\nfunction isTooltipHandler(h?: boolean | TooltipOptions | TooltipHandler): h is TooltipHandler {\n return typeof h === 'function';\n}\n\nfunction viewSource(source: string, sourceHeader: string, sourceFooter: string, mode: Mode) {\n const header = `<html><head>${sourceHeader}</head><body><pre><code class=\"json\">`;\n const footer = `</code></pre>${sourceFooter}</body></html>`;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const win = window.open('')!;\n win.document.write(header + source + footer);\n win.document.title = `${NAMES[mode]} JSON Source`;\n}\n\n/**\n * Try to guess the type of spec.\n *\n * @param spec Vega or Vega-Lite spec.\n */\nexport function guessMode(spec: VisualizationSpec, providedMode?: Mode): Mode {\n // Decide mode\n if (spec.$schema) {\n const parsed = schemaParser(spec.$schema);\n if (providedMode && providedMode !== parsed.library) {\n console.warn(\n `The given visualization spec is written in ${NAMES[parsed.library]}, but mode argument sets ${\n NAMES[providedMode] ?? providedMode\n }.`,\n );\n }\n\n const mode = parsed.library as Mode;\n\n if (!satisfies(VERSION[mode], `^${parsed.version.slice(1)}`)) {\n console.warn(\n `The input spec uses ${NAMES[mode]} ${parsed.version}, but the current version of ${NAMES[mode]} is v${VERSION[mode]}.`,\n );\n }\n\n return mode;\n }\n\n // try to guess from the provided spec\n if (\n 'mark' in spec ||\n 'encoding' in spec ||\n 'layer' in spec ||\n 'hconcat' in spec ||\n 'vconcat' in spec ||\n 'facet' in spec ||\n 'repeat' in spec\n ) {\n return 'vega-lite';\n }\n\n if ('marks' in spec || 'signals' in spec || 'scales' in spec || 'axes' in spec) {\n return 'vega';\n }\n\n return providedMode ?? 'vega';\n}\n\nfunction isLoader(o?: LoaderOptions | Loader): o is Loader {\n return !!(o && 'load' in o);\n}\n\nfunction createLoader(opts?: Loader | LoaderOptions) {\n return isLoader(opts) ? opts : vega.loader(opts);\n}\n\nfunction embedOptionsFromUsermeta(parsedSpec: VisualizationSpec) {\n const opts = (parsedSpec.usermeta as any)?.embedOptions ?? {};\n if (isString(opts.defaultStyle)) {\n // we don't allow styles set via usermeta since it would allow injection of logic (we set the style via innerHTML)\n opts.defaultStyle = false;\n }\n return opts;\n}\n\n/**\n * Embed a Vega visualization component in a web page. This function returns a promise.\n *\n * @param el DOM element in which to place component (DOM node or CSS selector).\n * @param spec String : A URL string from which to load the Vega specification.\n * Object : The Vega/Vega-Lite specification as a parsed JSON object.\n * @param opts A JavaScript object containing options for embedding.\n */\nexport default async function embed(\n el: HTMLElement | string,\n spec: VisualizationSpec | string,\n opts: EmbedOptions = {},\n): Promise<Result> {\n let parsedSpec: VisualizationSpec;\n let loader: Loader | undefined;\n\n if (isString(spec)) {\n loader = createLoader(opts.loader);\n parsedSpec = JSON.parse(await loader.load(spec));\n } else {\n parsedSpec = spec;\n }\n\n const loadedEmbedOptions = embedOptionsFromUsermeta(parsedSpec);\n const usermetaLoader = loadedEmbedOptions.loader;\n\n // either create the loader for the first time or create a new loader if the spec has new loader options\n if (!loader || usermetaLoader) {\n loader = createLoader(opts.loader ?? usermetaLoader);\n }\n\n const usermetaOpts = await loadOpts(loadedEmbedOptions, loader);\n const parsedOpts = await loadOpts(opts, loader);\n\n const mergedOpts = {\n ...mergeDeep(parsedOpts, usermetaOpts),\n config: mergeConfig(parsedOpts.config ?? {}, usermetaOpts.config ?? {}),\n };\n\n return await _embed(el, parsedSpec, mergedOpts, loader);\n}\n\nasync function loadOpts(opt: EmbedOptions, loader: Loader): Promise<EmbedOptions<never>> {\n const config: Config = isString(opt.config) ? JSON.parse(await loader.load(opt.config)) : opt.config ?? {};\n const patch: PatchFunc | Operation[] = isString(opt.patch) ? JSON.parse(await loader.load(opt.patch)) : opt.patch;\n return {\n ...(opt as any),\n ...(patch ? {patch} : {}),\n ...(config ? {config} : {}),\n };\n}\n\nfunction getRoot(el: Element) {\n const possibleRoot = el.getRootNode ? el.getRootNode() : document;\n return possibleRoot instanceof ShadowRoot\n ? {root: possibleRoot, rootContainer: possibleRoot}\n : {root: document, rootContainer: document.head ?? document.body};\n}\n\nasync function _embed(\n el: HTMLElement | string,\n spec: VisualizationSpec,\n opts: EmbedOptions<never> = {},\n loader: Loader,\n): Promise<Result> {\n const config = opts.theme ? mergeConfig(themes[opts.theme], opts.config ?? {}) : opts.config;\n\n const actions = isBoolean(opts.actions) ? opts.actions : mergeDeep<Actions>({}, DEFAULT_ACTIONS, opts.actions ?? {});\n const i18n = {...I18N, ...opts.i18n};\n\n const renderer = opts.renderer ?? 'canvas';\n const logLevel = opts.logLevel ?? vega.Warn;\n const downloadFileName = opts.downloadFileName ?? 'visualization';\n\n const element = typeof el === 'string' ? document.querySelector(el) : el;\n if (!element) {\n throw new Error(`${el} does not exist`);\n }\n\n if (opts.defaultStyle !== false) {\n const ID = 'vega-embed-style';\n const {root, rootContainer} = getRoot(element);\n if (!root.getElementById(ID)) {\n const style = document.createElement('style');\n style.id = ID;\n style.innerHTML =\n opts.defaultStyle === undefined || opts.defaultStyle === true\n ? (embedStyle ?? '').toString()\n : opts.defaultStyle;\n rootContainer.appendChild(style);\n }\n }\n\n const mode = guessMode(spec, opts.mode);\n\n let vgSpec: VgSpec = PREPROCESSOR[mode](spec, config);\n\n if (mode === 'vega-lite') {\n if (vgSpec.$schema) {\n const parsed = schemaParser(vgSpec.$schema);\n\n if (!satisfies(VERSION.vega, `^${parsed.version.slice(1)}`)) {\n console.warn(`The compiled spec uses Vega ${parsed.version}, but current version is v${VERSION.vega}.`);\n }\n }\n }\n\n element.classList.add('vega-embed');\n if (actions) {\n element.classList.add('has-actions');\n }\n element.innerHTML = ''; // clear container\n\n let container = element;\n if (actions) {\n const chartWrapper = document.createElement('div');\n chartWrapper.classList.add(CHART_WRAPPER_CLASS);\n element.appendChild(chartWrapper);\n container = chartWrapper;\n }\n\n const patch = opts.patch;\n if (patch) {\n vgSpec = patch instanceof Function ? patch(vgSpec) : applyPatch(vgSpec, patch, true, false).newDocument;\n }\n\n // Set locale. Note that this is a global setting.\n if (opts.formatLocale) {\n vega.formatLocale(opts.formatLocale);\n }\n\n if (opts.timeFormatLocale) {\n vega.timeFormatLocale(opts.timeFormatLocale);\n }\n\n // Set custom expression functions\n if (opts.expressionFunctions) {\n for (const name in opts.expressionFunctions) {\n const expressionFunction = opts.expressionFunctions[name];\n if ('fn' in expressionFunction) {\n vega.expressionFunction(name, expressionFunction.fn, expressionFunction['visitor']);\n } else if (expressionFunction instanceof Function) {\n vega.expressionFunction(name, expressionFunction);\n }\n }\n }\n\n const {ast} = opts;\n\n // Do not apply the config to Vega when we have already applied it to Vega-Lite.\n // This call may throw an Error if parsing fails.\n const runtime = vega.parse(vgSpec, mode === 'vega-lite' ? {} : (config as VgConfig), {ast});\n\n const view = new (opts.viewClass || vega.View)(runtime, {\n loader,\n logLevel,\n renderer,\n ...(ast ? {expr: (vega as any).expressionInterpreter ?? opts.expr ?? expressionInterpreter} : {}),\n });\n\n view.addSignalListener('autosize', (_, autosize: Exclude<AutoSize, string>) => {\n const {type} = autosize;\n if (type == 'fit-x') {\n container.classList.add('fit-x');\n container.classList.remove('fit-y');\n } else if (type == 'fit-y') {\n container.classList.remove('fit-x');\n container.classList.add('fit-y');\n } else if (type == 'fit') {\n container.classList.add('fit-x', 'fit-y');\n } else {\n container.classList.remove('fit-x', 'fit-y');\n }\n });\n\n if (opts.tooltip !== false) {\n const handler = isTooltipHandler(opts.tooltip)\n ? opts.tooltip\n : // user provided boolean true or tooltip options\n new Handler(opts.tooltip === true ? {} : opts.tooltip).call;\n\n view.tooltip(handler);\n }\n\n let {hover} = opts;\n\n if (hover === undefined) {\n hover = mode === 'vega';\n }\n\n if (hover) {\n const {hoverSet, updateSet} = (typeof hover === 'boolean' ? {} : hover) as Hover;\n\n view.hover(hoverSet, updateSet);\n }\n\n if (opts) {\n if (opts.width != null) {\n view.width(opts.width);\n }\n if (opts.height != null) {\n view.height(opts.height);\n }\n if (opts.padding != null) {\n view.padding(opts.padding);\n }\n }\n\n await view.initialize(container, opts.bind).runAsync();\n\n let documentClickHandler: ((this: Document, ev: MouseEvent) => void) | undefined;\n\n if (actions !== false) {\n let wrapper = element;\n\n if (opts.defaultStyle !== false || opts.forceActionsMenu) {\n const details = document.createElement('details');\n details.title = i18n.CLICK_TO_VIEW_ACTIONS;\n element.append(details);\n\n wrapper = details;\n const summary = document.createElement('summary');\n summary.innerHTML = SVG_CIRCLES;\n\n details.append(summary);\n\n documentClickHandler = (ev: MouseEvent) => {\n if (!details.contains(ev.target as any)) {\n details.removeAttribute('open');\n }\n };\n document.addEventListener('click', documentClickHandler);\n }\n\n const ctrl = document.createElement('div');\n wrapper.append(ctrl);\n ctrl.classList.add('vega-actions');\n\n // add 'Export' action\n if (actions === true || actions.export !== false) {\n for (const ext of ['svg', 'png'] as const) {\n if (actions === true || actions.export === true || (actions.export as {svg?: boolean; png?: boolean})[ext]) {\n const i18nExportAction = (i18n as {[key: string]: string})[`${ext.toUpperCase()}_ACTION`];\n const exportLink = document.createElement('a');\n const scaleFactor = isObject(opts.scaleFactor) ? opts.scaleFactor[ext] : opts.scaleFactor;\n\n exportLink.text = i18nExportAction;\n exportLink.href = '#';\n exportLink.target = '_blank';\n exportLink.download = `${downloadFileName}.${ext}`;\n // add link on mousedown so that it's correct when the click happens\n exportLink.addEventListener('mousedown', async function (this, e) {\n e.preventDefault();\n const url = await view.toImageURL(ext, scaleFactor);\n this.href = url;\n });\n\n ctrl.append(exportLink);\n }\n }\n }\n\n // add 'View Source' action\n if (actions === true || actions.source !== false) {\n const viewSourceLink = document.createElement('a');\n\n viewSourceLink.text = i18n.SOURCE_ACTION;\n viewSourceLink.href = '#';\n viewSourceLink.addEventListener('click', function (this, e) {\n viewSource(stringify(spec), opts.sourceHeader ?? '', opts.sourceFooter ?? '', mode);\n e.preventDefault();\n });\n\n ctrl.append(viewSourceLink);\n }\n\n // add 'View Compiled' action\n if (mode === 'vega-lite' && (actions === true || actions.compiled !== false)) {\n const compileLink = document.createElement('a');\n\n compileLink.text = i18n.COMPILED_ACTION;\n compileLink.href = '#';\n compileLink.addEventListener('click', function (this, e) {\n viewSource(stringify(vgSpec), opts.sourceHeader ?? '', opts.sourceFooter ?? '', 'vega');\n e.preventDefault();\n });\n\n ctrl.append(compileLink);\n }\n\n // add 'Open in Vega Editor' action\n if (actions === true || actions.editor !== false) {\n const editorUrl = opts.editorUrl ?? 'https://vega.github.io/editor/';\n const editorLink = document.createElement('a');\n\n editorLink.text = i18n.EDITOR_ACTION;\n editorLink.href = '#';\n editorLink.addEventListener('click', function (this, e) {\n post(window, editorUrl, {\n config: config as Config,\n mode,\n renderer,\n spec: stringify(spec),\n });\n e.preventDefault();\n });\n\n ctrl.append(editorLink);\n }\n }\n\n function finalize() {\n if (documentClickHandler) {\n document.removeEventListener('click', documentClickHandler);\n }\n view.finalize();\n }\n\n return {view, spec, vgSpec, finalize, embedOptions: opts};\n}\n", "var sparkMd5 = {\n exports: {}\n};\n\n(function(module, exports) {\n (function(factory) {\n {\n module.exports = factory();\n }\n })((function(undefined$1) {\n var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined$1) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function(str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function(str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function() {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n }));\n})(sparkMd5);\n\nvar SparkMD5 = sparkMd5.exports;\n\nconst fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\nclass FileChecksum {\n static create(file, callback) {\n const instance = new FileChecksum(file);\n instance.create(callback);\n }\n constructor(file) {\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n create(callback) {\n this.callback = callback;\n this.md5Buffer = new SparkMD5.ArrayBuffer;\n this.fileReader = new FileReader;\n this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n this.readNextChunk();\n }\n fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n const binaryDigest = this.md5Buffer.end(true);\n const base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n fileReaderDidError(event) {\n this.callback(`Error reading ${this.file.name}`);\n }\n readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n const start = this.chunkIndex * this.chunkSize;\n const end = Math.min(start + this.chunkSize, this.file.size);\n const bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n}\n\nfunction getMetaValue(name) {\n const element = findElement(document.head, `meta[name=\"${name}\"]`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nfunction findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n const elements = root.querySelectorAll(selector);\n return toArray(elements);\n}\n\nfunction findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n}\n\nfunction dispatchEvent(element, type, eventInit = {}) {\n const {disabled: disabled} = element;\n const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n const event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n}\n\nfunction toArray(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n}\n\nclass BlobRecord {\n constructor(file, checksum, url, customHeaders = {}) {\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n Object.keys(customHeaders).forEach((headerKey => {\n this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n }));\n const csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n get status() {\n return this.xhr.status;\n }\n get response() {\n const {responseType: responseType, response: response} = this.xhr;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n const {response: response} = this;\n const {direct_upload: direct_upload} = response;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n }\n toJSON() {\n const result = {};\n for (const key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n}\n\nclass BlobUpload {\n constructor(blob) {\n this.blob = blob;\n this.file = blob.file;\n const {url: url, headers: headers} = blob.directUploadData;\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (const key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n requestDidLoad(event) {\n const {status: status, response: response} = this.xhr;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n }\n}\n\nlet id = 0;\n\nclass DirectUpload {\n constructor(file, url, delegate, customHeaders = {}) {\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n this.customHeaders = customHeaders;\n }\n create(callback) {\n FileChecksum.create(this.file, ((error, checksum) => {\n if (error) {\n callback(error);\n return;\n }\n const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create((error => {\n if (error) {\n callback(error);\n } else {\n const upload = new BlobUpload(blob);\n notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create((error => {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n }));\n }\n }));\n }));\n }\n}\n\nfunction notify(object, methodName, ...messages) {\n if (object && typeof object[methodName] == \"function\") {\n return object[methodName](...messages);\n }\n}\n\nclass DirectUploadController {\n constructor(input, file) {\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n start(callback) {\n const hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(((error, attributes) => {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n this.dispatch(\"end\");\n callback(error);\n }));\n }\n uploadRequestDidProgress(event) {\n const progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n get url() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n dispatch(name, detail = {}) {\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, `direct-upload:${name}`, {\n detail: detail\n });\n }\n dispatchError(error) {\n const event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n directUploadWillStoreFileWithXHR(xhr) {\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n }\n}\n\nconst inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\nclass DirectUploadsController {\n constructor(form) {\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n }\n start(callback) {\n const controllers = this.createDirectUploadControllers();\n const startNextController = () => {\n const controller = controllers.shift();\n if (controller) {\n controller.start((error => {\n if (error) {\n callback(error);\n this.dispatch(\"end\");\n } else {\n startNextController();\n }\n }));\n } else {\n callback();\n this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n createDirectUploadControllers() {\n const controllers = [];\n this.inputs.forEach((input => {\n toArray(input.files).forEach((file => {\n const controller = new DirectUploadController(input, file);\n controllers.push(controller);\n }));\n }));\n return controllers;\n }\n dispatch(name, detail = {}) {\n return dispatchEvent(this.form, `direct-uploads:${name}`, {\n detail: detail\n });\n }\n}\n\nconst processingAttribute = \"data-direct-uploads-processing\";\n\nconst submitButtonsByForm = new WeakMap;\n\nlet started = false;\n\nfunction start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm, true);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n}\n\nfunction didClick(event) {\n const button = event.target.closest(\"button, input\");\n if (button && button.type === \"submit\" && button.form) {\n submitButtonsByForm.set(button.form, button);\n }\n}\n\nfunction didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n}\n\nfunction didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n}\n\nfunction handleFormSubmissionEvent(event) {\n const form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n const controller = new DirectUploadsController(form);\n const {inputs: inputs} = controller;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start((error => {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n }));\n }\n}\n\nfunction submitForm(form) {\n let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n const {disabled: disabled} = button;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n}\n\nfunction disable(input) {\n input.disabled = true;\n}\n\nfunction enable(input) {\n input.disabled = false;\n}\n\nfunction autostart() {\n if (window.ActiveStorage) {\n start();\n }\n}\n\nsetTimeout(autostart, 1);\n\nexport { DirectUpload, DirectUploadController, DirectUploadsController, start };\n"], "mappings": "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,EACA,CACI,EAAK,UACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,CACI,EAAK,WACL,EAAK,SACT,CACJ,CACJ,EACA,CACI,KAAQ,oBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,OACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,uBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,SACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,oBACR,MAAS,CACL,CACI,EAAK,YACL,EAAK,WACT,EACA,CACI,EAAK,YACL,EAAK,WACT,EACA,CACI,EAAK,YACL,EAAK,WACT,EACA,CACI,EAAK,WACL,EAAK,WACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,iBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,sBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,uBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,SACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,oBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,aACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,gBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,QACT,EACA,CACI,EAAK,SACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,aACR,MAAS,CACL,GACA,GACA,GACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,YACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,WACT,EACA,CACI,EAAK,UACL,EAAK,WACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,eACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,iBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,SACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,iBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,YACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,QACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,QACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,eACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,QACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,qBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,eACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,sBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,SACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,kBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,kBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,eACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,gBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,eACR,MAAS,CACL,GACA,GACA,GACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CAC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AAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,O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,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EACrf,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAC5f,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EA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EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EA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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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